The Material Facet

Lesson 11 of 16 • ~4 min

Try it yourself!

Practice the concepts from this lesson in the interactive playground.

Try in Playground

Overview

The Material Facet targets material assignments for elements, which are crucial for structural, architectural, and construction analysis. IFC supports various material configurations, and the Material facet provides a unified way to check them.

Why Materials Matter

Materials are essential for:

  • Structural analysis - Load calculations, strength properties
  • Cost estimation - Material quantities and pricing
  • Sustainability - Environmental impact assessment
  • Code compliance - Fire ratings, thermal properties

IFC Material Structure

IFC supports multiple material assignment methods:

Material Type Description Example
Single Material Element made of one material Column = "Concrete"
Layered Materials Multiple layers (walls, slabs) Wall = Insulation + Concrete + Finish
Profiled Materials Different materials in profiles Steel beam with different flange/web materials
Constituent Materials Composite materials Window = Glass + Aluminum frame

IFC Implementation

  • IfcMaterialLayerSet - For layered assemblies
  • IfcMaterialConstituentSet - For composite materials
  • IfcMaterialProfileSet - For profiled elements

Key Point: Material facet abstracts these complexities - if any material matches your criteria, the check passes.

Parameters

Value (Optional)

Purpose: Specifies the material name or category to match

Options:

  • Specific name: "concrete", "steel", "wood"
  • Material category: Broad groupings for flexibility
  • Pattern: Regex for naming conventions
  • Omitted: Any material (just checks material exists)

Recommended Categories:

concrete, steel, aluminium, block, brick, stone, 
wood, glass, gypsum, plastic, earth

URI (Optional)

Purpose: Reference link to material definition (informational only)

Use Cases:

  • Link to material database entry
  • Reference to standard specifications
  • buildingSMART Data Dictionary reference

Note: Not used in model checking, documentation only

How Material Checking Works

Matching Logic

The Material facet searches through all material assignments on an element:

For Layered Materials: Checks each layer's material
For Constituents: Checks each constituent's material
For Profiles: Checks profile materials
For Simple Materials: Checks the single material

Matching Types

1. Exact Name Match

Value: "concrete" → Matches material named "concrete"

2. Category Match

Value: "steel" → Matches "Steel, ASTM A992", "structural steel", etc.

3. Pattern Match

Value: "CON[0-9]{2}" → Matches "CON01", "CON02", etc.

4. Existence Check

(no Value) → Element must have any material assigned

Important Notes

  • "At Least One" Logic: If any material matches, the check passes
  • Free Text Names: Material names are not standardized in IFC
  • Project Conventions: Effective use requires consistent naming
  • Layer Limitation: Cannot specify which specific layer must have material

Material Facet parameter summary:

  • Value – Optional. The material name or category to match. Supports restrictions (lists, patterns). If omitted, any material (just existence of a material) satisfies it . Allowed values can be any string (since material names in IFC are text). The IDS user manual suggests using general categories like “wood”, “brick”, etc. if using categories . Meaning: the element must have a material whose name exactly matches, is one of the listed, or fits the regex/pattern provided.
  • URI – Optional. A Uniform Resource Identifier linking to a material definition (for example, an entry in a material library or standard) . Not used in checking the model; just reference. For instance, a URI pointing to a specific concrete definition in some database. (The example given is a bSDD URI for “Plywood”) .

Practical Examples

1. Material Existence Check

Requirement: "All physical elements must have a material assigned"

(no Value parameter)

Result: Ensures no elements are left without material assignments

2. Specific Material

Requirement: "Structural columns must be made of concrete"

Value: "concrete"

Result: Elements must have material named "concrete"

3. Multiple Acceptable Materials

Requirement: "Foundation elements must be concrete or steel"

Value: ["concrete", "steel"]

Result: Element must have at least one material from the list

4. Material Category

Requirement: "Exterior walls must include wood materials"

Value: "wood"

Result: Matches "wood", "timber", "hardwood", etc.

5. Naming Convention

Requirement: "Concrete mixes must follow CON## naming pattern"

Value: "CON[0-9]{2}"

Result: Matches "CON01", "CON02", "CON15", etc.

Usage Summary

Use Case Configuration Result
Any material (no Value) Element has material assigned
Wood elements Value="wood" Contains wood material
Masonry elements Value="brick" Contains brick material
Structural materials Value=["concrete", "steel"] Contains concrete OR steel
Coded materials Value="CON[0-9]{2}" Material code like CON01

Important Considerations

Material Naming:

  • IFC material names are free-text (not standardized)
  • Effective use requires project naming conventions
  • Consider case sensitivity in matching

Complex Materials:

  • Facet checks "at least one" material matches
  • Cannot specify requirements for specific layers
  • Good for general material presence, limited for detailed composition

Project Strategy:

  • Establish material naming standards early
  • Use categories for flexibility
  • Combine with Entity facets for specific element types