diff --git a/docs/oM/Adapter/Adapters/GSA/MaterialFragments/Fabric.md b/docs/oM/Adapter/Adapters/GSA/MaterialFragments/Fabric.md
index e2dd05ddce..9ab4ae4056 100644
--- a/docs/oM/Adapter/Adapters/GSA/MaterialFragments/Fabric.md
+++ b/docs/oM/Adapter/Adapters/GSA/MaterialFragments/Fabric.md
@@ -62,6 +62,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
## Code and Schema
diff --git a/docs/oM/Adapter/Adapters/GSA/SurfaceProperties/FabricPanelProperty.md b/docs/oM/Adapter/Adapters/GSA/SurfaceProperties/FabricPanelProperty.md
index d3cc98819a..3961503ad2 100644
--- a/docs/oM/Adapter/Adapters/GSA/SurfaceProperties/FabricPanelProperty.md
+++ b/docs/oM/Adapter/Adapters/GSA/SurfaceProperties/FabricPanelProperty.md
@@ -59,11 +59,11 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
diff --git a/docs/oM/Adapter/LadybugTools/Collections/HourlyContinuousCollection.md b/docs/oM/Adapter/LadybugTools/Collections/HourlyContinuousCollection.md
index 68d07bc1b6..eede37ca6e 100644
--- a/docs/oM/Adapter/LadybugTools/Collections/HourlyContinuousCollection.md
+++ b/docs/oM/Adapter/LadybugTools/Collections/HourlyContinuousCollection.md
@@ -30,6 +30,7 @@ The following properties are defined on the class
|------------------|------------------|------------------|------------------|
| Header | [Header](/api/oM/Adapter/LadybugTools/MetaData/Header) | An approximation of a Ladybug Header object. | - |
| Values | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Nullable](https://learn.microsoft.com/en-us/dotnet/api/System.Nullable-1?view=netstandard-2.0)<[double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)>> | A list of values. | - |
+| Type | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
### Inherited properties
diff --git a/docs/oM/Adapter/LadybugTools/Constructions/EnergyMaterial.md b/docs/oM/Adapter/LadybugTools/Constructions/EnergyMaterial.md
index 8cc86ec291..6b8738891a 100644
--- a/docs/oM/Adapter/LadybugTools/Constructions/EnergyMaterial.md
+++ b/docs/oM/Adapter/LadybugTools/Constructions/EnergyMaterial.md
@@ -29,7 +29,7 @@ The following properties are defined on the class
| Name | Type | Description | Quantity |
|------------------|------------------|------------------|------------------|
-| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The name of this EnergyMaterial. | - |
+| Identifier | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The name of this EnergyMaterial. | - |
| Thickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Thickness of material (m). | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] |
| Conductivity | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Conductivity of material (W/mK). | - |
| Density | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Density of material (kg/m3). | [Density](/api/oM/Dimensional/Quantities/Attributes/Density) [kg/m³] |
@@ -38,6 +38,7 @@ The following properties are defined on the class
| ThermalAbsorptance | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Thermal absorptivity (emissivity) of material (0-1). | - |
| SolarAbsorptance | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Solar absorptivity of material (0-1). | - |
| VisibleAbsorptance | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Light absorptivity (1 - albedo) of material (0-1). | - |
+| Type | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
### Inherited properties
@@ -46,6 +47,7 @@ The following properties are inherited from the base class of the object
| Name | Type | Description | Quantity |
|------------------|------------------|------------------|------------------|
| BHoM_Guid | [Guid](https://learn.microsoft.com/en-us/dotnet/api/System.Guid?view=netstandard-2.0) | - | - |
+| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
| Fragments | [FragmentSet](/api/oM/Framework/Base/FragmentSet) | - | - |
| Tags | [HashSet](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.HashSet-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | - | - |
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
diff --git a/docs/oM/Adapter/LadybugTools/Constructions/EnergyMaterialVegetation.md b/docs/oM/Adapter/LadybugTools/Constructions/EnergyMaterialVegetation.md
index 1af70aa9f7..c620394106 100644
--- a/docs/oM/Adapter/LadybugTools/Constructions/EnergyMaterialVegetation.md
+++ b/docs/oM/Adapter/LadybugTools/Constructions/EnergyMaterialVegetation.md
@@ -29,7 +29,7 @@ The following properties are defined on the class
| Name | Type | Description | Quantity |
|------------------|------------------|------------------|------------------|
-| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The name of this EnergyMaterialVegetation. | - |
+| Identifier | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The name of this EnergyMaterialVegetation. | - |
| Thickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Thickness of material (m). | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] |
| Conductivity | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Conductivity of material (W/mK). | - |
| Density | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Density of material (kg/m3). | [Density](/api/oM/Dimensional/Quantities/Attributes/Density) [kg/m³] |
@@ -43,6 +43,7 @@ The following properties are defined on the class
| LeafReflectivity | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | A number between 0.05 and 0.5 for the fraction of incident solar radiation that is reflected by the leaf surfaces. Solar radiation includes the visible spectrum as well as infrared and ultraviolet wavelengths. Typical values are 0.18 to 0.25. | - |
| LeafEmissivity | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | A number between 0.8 and 1.0 for the ratio of thermal radiation emitted from leaf surfaces to that emitted by an ideal black body at the same temperature. | - |
| MinimumStomatalResistance | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | A number between 50 and 300 for the resistance of the plants to moisture transport [s/m]. Plants with low values of stomatal resistance will result in higher evapotranspiration rates than plants with high resistance. | - |
+| Type | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
### Inherited properties
@@ -51,6 +52,7 @@ The following properties are inherited from the base class of the object
| Name | Type | Description | Quantity |
|------------------|------------------|------------------|------------------|
| BHoM_Guid | [Guid](https://learn.microsoft.com/en-us/dotnet/api/System.Guid?view=netstandard-2.0) | - | - |
+| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
| Fragments | [FragmentSet](/api/oM/Framework/Base/FragmentSet) | - | - |
| Tags | [HashSet](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.HashSet-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | - | - |
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
diff --git a/docs/oM/Adapter/LadybugTools/Constructions/IEnergyMaterialOpaque.md b/docs/oM/Adapter/LadybugTools/Constructions/IEnergyMaterialOpaque.md
index 112ff48204..2e191dafcf 100644
--- a/docs/oM/Adapter/LadybugTools/Constructions/IEnergyMaterialOpaque.md
+++ b/docs/oM/Adapter/LadybugTools/Constructions/IEnergyMaterialOpaque.md
@@ -27,6 +27,17 @@ An interface for opaque energy materials.
## Properties
+
+
+### Defining properties
+
+The following properties are defined on the interface
+
+| Name | Type | Description | Quantity |
+|------------------|------------------|------------------|------------------|
+| Identifier | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Unique identifier for this material. | - |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Adapter/LadybugTools/MetaData/AnalysisPeriod.md b/docs/oM/Adapter/LadybugTools/MetaData/AnalysisPeriod.md
index 5b19864abf..6394775df5 100644
--- a/docs/oM/Adapter/LadybugTools/MetaData/AnalysisPeriod.md
+++ b/docs/oM/Adapter/LadybugTools/MetaData/AnalysisPeriod.md
@@ -35,7 +35,8 @@ The following properties are defined on the class
| EndDay | [int](https://learn.microsoft.com/en-us/dotnet/api/System.Int32?view=netstandard-2.0) | The end day. | - |
| EndHour | [int](https://learn.microsoft.com/en-us/dotnet/api/System.Int32?view=netstandard-2.0) | The end hour. | - |
| IsLeapYear | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Boolean flag for whether this represents a leap year. | - |
-| TimeStep | [int](https://learn.microsoft.com/en-us/dotnet/api/System.Int32?view=netstandard-2.0) | The number of timesteps per hour. | - |
+| Timestep | [int](https://learn.microsoft.com/en-us/dotnet/api/System.Int32?view=netstandard-2.0) | The number of timesteps per hour. | - |
+| Type | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
### Inherited properties
diff --git a/docs/oM/Adapter/LadybugTools/MetaData/DataType.md b/docs/oM/Adapter/LadybugTools/MetaData/DataType.md
index f968cd837a..298ec7b5a5 100644
--- a/docs/oM/Adapter/LadybugTools/MetaData/DataType.md
+++ b/docs/oM/Adapter/LadybugTools/MetaData/DataType.md
@@ -31,6 +31,7 @@ The following properties are defined on the class
| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The name of this data type. | - |
| Data_Type | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The data type of this data type. | - |
| BaseUnit | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The base type of this data type. This is used if Data_Type is set to "GenericDataType". | - |
+| Type | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
### Inherited properties
diff --git a/docs/oM/Adapter/LadybugTools/MetaData/Header.md b/docs/oM/Adapter/LadybugTools/MetaData/Header.md
index 0924f8d3c1..e0061eda42 100644
--- a/docs/oM/Adapter/LadybugTools/MetaData/Header.md
+++ b/docs/oM/Adapter/LadybugTools/MetaData/Header.md
@@ -32,6 +32,7 @@ The following properties are defined on the class
| Unit | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The unit for this header object. | - |
| AnalysisPeriod | [AnalysisPeriod](/api/oM/Adapter/LadybugTools/MetaData/AnalysisPeriod) | The analysis period associated with this header object. | - |
| Metadata | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | The metadata associated with this header object. | - |
+| Type | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
### Inherited properties
diff --git a/docs/oM/Adapter/LadybugTools/Simulation/SimulationResult.md b/docs/oM/Adapter/LadybugTools/Simulation/SimulationResult.md
index 9c5066136f..c9e38dca57 100644
--- a/docs/oM/Adapter/LadybugTools/Simulation/SimulationResult.md
+++ b/docs/oM/Adapter/LadybugTools/Simulation/SimulationResult.md
@@ -32,7 +32,7 @@ The following properties are defined on the class
| EpwFile | [FileSettings](/api/oM/Framework/Adapter/FileSettings) | The EPW file associated with this object. | - |
| GroundMaterial | [IEnergyMaterialOpaque](/api/oM/Adapter/LadybugTools/Constructions/IEnergyMaterialOpaque) | The ground material used in the processing of this object. | - |
| ShadeMaterial | [IEnergyMaterialOpaque](/api/oM/Adapter/LadybugTools/Constructions/IEnergyMaterialOpaque) | The shade material used in the processing of this object. | - |
-| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The identifier used to distinguish existing results for this object. | - |
+| Identifier | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The identifier used to distinguish existing results for this object. | - |
| ShadedDownTemperature | [HourlyContinuousCollection](/api/oM/Adapter/LadybugTools/Collections/HourlyContinuousCollection) | The Shaded Down Temperature used in the processing of this object | - |
| ShadedUpTemperature | [HourlyContinuousCollection](/api/oM/Adapter/LadybugTools/Collections/HourlyContinuousCollection) | The Shaded Up Temperature used in the processing of this object | - |
| ShadedRadiantTemperature | [HourlyContinuousCollection](/api/oM/Adapter/LadybugTools/Collections/HourlyContinuousCollection) | The Shaded Radiant Temperature used in the processing of this object | - |
@@ -53,6 +53,7 @@ The following properties are inherited from the base class of the object
| Name | Type | Description | Quantity |
|------------------|------------------|------------------|------------------|
| BHoM_Guid | [Guid](https://learn.microsoft.com/en-us/dotnet/api/System.Guid?view=netstandard-2.0) | - | - |
+| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
| Fragments | [FragmentSet](/api/oM/Framework/Base/FragmentSet) | - | - |
| Tags | [HashSet](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.HashSet-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | - | - |
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
diff --git a/docs/oM/Analytical/Analytical/Results/ICasedResult.md b/docs/oM/Analytical/Analytical/Results/ICasedResult.md
index 23e6c7a006..716a0e2b65 100644
--- a/docs/oM/Analytical/Analytical/Results/ICasedResult.md
+++ b/docs/oM/Analytical/Analytical/Results/ICasedResult.md
@@ -82,6 +82,7 @@ Interface for results that correspond to a particular case.
- BH.oM.Structure.Results.[NodeReaction](/api/oM/Analytical/Structure/Results/Nodal Results/NodeReaction)
- BH.oM.Structure.Results.[NodeResult](/api/oM/Analytical/Structure/Results/Nodal Results/NodeResult)
- BH.oM.Structure.Results.[NodeVelocity](/api/oM/Analytical/Structure/Results/Nodal Results/NodeVelocity)
+ - BH.oM.Structure.Design.[DesignResult](/api/oM/Analytical/Structure/Design/DesignResult)
- BH.oM.Test.Results.[InputOutputComparisonDiffing](/api/oM/Framework/Test/Results/InputOutputComparisonDiffing)
- BH.oM.Test.Results.[InputOutputComparisonSummary](/api/oM/Framework/Test/Results/InputOutputComparisonSummary)
- BH.oM.Test.Results.[InputOutputDifference](/api/oM/Framework/Test/Results/InputOutputDifference)
diff --git a/docs/oM/Analytical/Analytical/Results/IObjectIdResult.md b/docs/oM/Analytical/Analytical/Results/IObjectIdResult.md
index b75476d25d..a4d5fd0c43 100644
--- a/docs/oM/Analytical/Analytical/Results/IObjectIdResult.md
+++ b/docs/oM/Analytical/Analytical/Results/IObjectIdResult.md
@@ -105,6 +105,7 @@ Interface for Results belonging to a particular object. The owning object is ide
- BH.oM.Structure.Results.[NodeReaction](/api/oM/Analytical/Structure/Results/Nodal Results/NodeReaction)
- BH.oM.Structure.Results.[NodeResult](/api/oM/Analytical/Structure/Results/Nodal Results/NodeResult)
- BH.oM.Structure.Results.[NodeVelocity](/api/oM/Analytical/Structure/Results/Nodal Results/NodeVelocity)
+ - BH.oM.Structure.Design.[DesignResult](/api/oM/Analytical/Structure/Design/DesignResult)
- BH.oM.Test.Results.[InputOutputComparisonDiffing](/api/oM/Framework/Test/Results/InputOutputComparisonDiffing)
- BH.oM.Test.Results.[InputOutputComparisonSummary](/api/oM/Framework/Test/Results/InputOutputComparisonSummary)
- BH.oM.Test.Results.[InputOutputDifference](/api/oM/Framework/Test/Results/InputOutputDifference)
diff --git a/docs/oM/Analytical/Analytical/Results/IResult.md b/docs/oM/Analytical/Analytical/Results/IResult.md
index faa8541754..0417f94f75 100644
--- a/docs/oM/Analytical/Analytical/Results/IResult.md
+++ b/docs/oM/Analytical/Analytical/Results/IResult.md
@@ -133,6 +133,7 @@ For expanded functionality, a result class should generally either implement the
- BH.oM.Structure.Results.[NodeReaction](/api/oM/Analytical/Structure/Results/Nodal Results/NodeReaction)
- BH.oM.Structure.Results.[NodeResult](/api/oM/Analytical/Structure/Results/Nodal Results/NodeResult)
- BH.oM.Structure.Results.[NodeVelocity](/api/oM/Analytical/Structure/Results/Nodal Results/NodeVelocity)
+ - BH.oM.Structure.Design.[DesignResult](/api/oM/Analytical/Structure/Design/DesignResult)
- BH.oM.Test.Results.[InputOutputComparison](/api/oM/Framework/Test/Results/InputOutputComparison)
- BH.oM.Test.Results.[InputOutputComparisonDiffing](/api/oM/Framework/Test/Results/InputOutputComparisonDiffing)
- BH.oM.Test.Results.[InputOutputComparisonSummary](/api/oM/Framework/Test/Results/InputOutputComparisonSummary)
diff --git a/docs/oM/Analytical/Analytical/Results/IResultItem.md b/docs/oM/Analytical/Analytical/Results/IResultItem.md
index 1db16c33ed..2bd5a3e159 100644
--- a/docs/oM/Analytical/Analytical/Results/IResultItem.md
+++ b/docs/oM/Analytical/Analytical/Results/IResultItem.md
@@ -104,6 +104,7 @@ For instance, a class implementing this interface could be represented as a sing
- BH.oM.Structure.Results.[NodeModeShape](/api/oM/Analytical/Structure/Results/Nodal Results/NodeModeShape)
- BH.oM.Structure.Results.[NodeReaction](/api/oM/Analytical/Structure/Results/Nodal Results/NodeReaction)
- BH.oM.Structure.Results.[NodeVelocity](/api/oM/Analytical/Structure/Results/Nodal Results/NodeVelocity)
+ - BH.oM.Structure.Design.[DesignResult](/api/oM/Analytical/Structure/Design/DesignResult)
## Properties
diff --git a/docs/oM/Analytical/Analytical/Results/ITimeStepResult.md b/docs/oM/Analytical/Analytical/Results/ITimeStepResult.md
index e89c2e5574..2c7d682fc1 100644
--- a/docs/oM/Analytical/Analytical/Results/ITimeStepResult.md
+++ b/docs/oM/Analytical/Analytical/Results/ITimeStepResult.md
@@ -79,6 +79,7 @@ Interface for results that correspond to a particular time step, for example a d
- BH.oM.Structure.Results.[NodeReaction](/api/oM/Analytical/Structure/Results/Nodal Results/NodeReaction)
- BH.oM.Structure.Results.[NodeResult](/api/oM/Analytical/Structure/Results/Nodal Results/NodeResult)
- BH.oM.Structure.Results.[NodeVelocity](/api/oM/Analytical/Structure/Results/Nodal Results/NodeVelocity)
+ - BH.oM.Structure.Design.[DesignResult](/api/oM/Analytical/Structure/Design/DesignResult)
- BH.oM.Test.Results.[InputOutputComparisonDiffing](/api/oM/Framework/Test/Results/InputOutputComparisonDiffing)
- BH.oM.Test.Results.[InputOutputComparisonSummary](/api/oM/Framework/Test/Results/InputOutputComparisonSummary)
- BH.oM.Test.Results.[InputOutputDifference](/api/oM/Framework/Test/Results/InputOutputDifference)
diff --git a/docs/oM/Analytical/Environment/MaterialFragments/GasMaterial.md b/docs/oM/Analytical/Environment/MaterialFragments/GasMaterial.md
index 9548df2db7..d96f6adc2d 100644
--- a/docs/oM/Analytical/Environment/MaterialFragments/GasMaterial.md
+++ b/docs/oM/Analytical/Environment/MaterialFragments/GasMaterial.md
@@ -54,6 +54,15 @@ The following properties are inherited from the base class of the object
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/Environment/MaterialFragments/IEnvironmentMaterial.md b/docs/oM/Analytical/Environment/MaterialFragments/IEnvironmentMaterial.md
index 577b52f1ad..e19c8719e0 100644
--- a/docs/oM/Analytical/Environment/MaterialFragments/IEnvironmentMaterial.md
+++ b/docs/oM/Analytical/Environment/MaterialFragments/IEnvironmentMaterial.md
@@ -45,6 +45,15 @@ The following properties are defined on the interface
| Refraction | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | - | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/Environment/MaterialFragments/SolidMaterial.md b/docs/oM/Analytical/Environment/MaterialFragments/SolidMaterial.md
index 92c3a1b729..aeb97fc36f 100644
--- a/docs/oM/Analytical/Environment/MaterialFragments/SolidMaterial.md
+++ b/docs/oM/Analytical/Environment/MaterialFragments/SolidMaterial.md
@@ -64,6 +64,15 @@ The following properties are inherited from the base class of the object
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/CombinedLifeCycleAssessmentFactors.md b/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/CombinedLifeCycleAssessmentFactors.md
index 3bc5b2ea08..2f37c561ab 100644
--- a/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/CombinedLifeCycleAssessmentFactors.md
+++ b/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/CombinedLifeCycleAssessmentFactors.md
@@ -55,6 +55,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| Name | Type | Description | Quantity | Engine |
|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialEndOfLifeTreatment | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Returns End of Life processing information contained within an EPD dataset. | - | LifeCycleAssessment_Engine |
diff --git a/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/EnvironmentalProductDeclaration.md b/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/EnvironmentalProductDeclaration.md
index 2d94a10dce..f6daea89a5 100644
--- a/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/EnvironmentalProductDeclaration.md
+++ b/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/EnvironmentalProductDeclaration.md
@@ -56,6 +56,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| Name | Type | Description | Quantity | Engine |
|------------------|------------------|------------------|------------------|------------------|
| FilteredFactors | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IEnvironmentalMetric](/api/oM/Analytical/LifeCycleAssessment/MaterialFragments/EnvironmentalMetrics/IEnvironmentalMetric)> | Filters out the metrics on the EPD based on the provided metric types. If no types are provided, then all metrics on the EPD are returned. | - | LifeCycleAssessment_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialEndOfLifeTreatment | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Returns End of Life processing information contained within an EPD dataset. | - | LifeCycleAssessment_Engine |
diff --git a/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/IEnvironmentalFactorsProvider.md b/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/IEnvironmentalFactorsProvider.md
index 6d938360c9..7f37fe03dd 100644
--- a/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/IEnvironmentalFactorsProvider.md
+++ b/docs/oM/Analytical/LifeCycleAssessment/MaterialFragments/IEnvironmentalFactorsProvider.md
@@ -14,6 +14,7 @@ Base interface for all classes able to used to evaluate LCA, namly the Environme
- BH.oM.Base.[IBHoMObject](/api/oM/Framework/Base/Interface/IBHoMObject)
- BH.oM.Base.[IObject](/api/oM/Framework/Base/Interface/IObject)
+ - BH.oM.Physical.Materials.[IMaterialProperties](/api/oM/Physical/Physical/Materials/IMaterialProperties)
### Classes implementing this interface
@@ -32,6 +33,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| Name | Type | Description | Quantity | Engine |
|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialEndOfLifeTreatment | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Returns End of Life processing information contained within an EPD dataset. | - | LifeCycleAssessment_Engine |
@@ -40,7 +42,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
### C# implementation
``` C# title="C#"
-public interface IEnvironmentalFactorsProvider : BH.oM.Base.IBHoMObject, BH.oM.Base.IObject
+public interface IEnvironmentalFactorsProvider : BH.oM.Base.IBHoMObject, BH.oM.Base.IObject, BH.oM.Physical.Materials.IMaterialProperties
```
Assembly: LifeCycleAssessment_oM.dll
diff --git a/docs/oM/Analytical/MEP/System/MaterialFragments/DuctMaterial.md b/docs/oM/Analytical/MEP/System/MaterialFragments/DuctMaterial.md
index d6c031ad03..b8b1488629 100644
--- a/docs/oM/Analytical/MEP/System/MaterialFragments/DuctMaterial.md
+++ b/docs/oM/Analytical/MEP/System/MaterialFragments/DuctMaterial.md
@@ -44,6 +44,15 @@ The following properties are inherited from the base class of the object
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/MEP/System/MaterialFragments/IInsulationMaterial.md b/docs/oM/Analytical/MEP/System/MaterialFragments/IInsulationMaterial.md
index 120b1ebeca..84fbde1e08 100644
--- a/docs/oM/Analytical/MEP/System/MaterialFragments/IInsulationMaterial.md
+++ b/docs/oM/Analytical/MEP/System/MaterialFragments/IInsulationMaterial.md
@@ -40,6 +40,15 @@ The following properties are defined on the interface
| KValue | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | KValue is the measure of the insulation material's ability to conduct heat (W/m*K), the lower the KValue the better the ability to conduct heat. | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/MEP/System/MaterialFragments/InsulationMaterial.md b/docs/oM/Analytical/MEP/System/MaterialFragments/InsulationMaterial.md
index 80339e8c29..561fa463a0 100644
--- a/docs/oM/Analytical/MEP/System/MaterialFragments/InsulationMaterial.md
+++ b/docs/oM/Analytical/MEP/System/MaterialFragments/InsulationMaterial.md
@@ -47,6 +47,15 @@ The following properties are inherited from the base class of the object
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/MEP/System/MaterialFragments/LiningMaterial.md b/docs/oM/Analytical/MEP/System/MaterialFragments/LiningMaterial.md
index 519d43399a..ea4a98ffed 100644
--- a/docs/oM/Analytical/MEP/System/MaterialFragments/LiningMaterial.md
+++ b/docs/oM/Analytical/MEP/System/MaterialFragments/LiningMaterial.md
@@ -48,6 +48,15 @@ The following properties are inherited from the base class of the object
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/MEP/System/MaterialFragments/PipeMaterial.md b/docs/oM/Analytical/MEP/System/MaterialFragments/PipeMaterial.md
index ca0d993505..f96da508b4 100644
--- a/docs/oM/Analytical/MEP/System/MaterialFragments/PipeMaterial.md
+++ b/docs/oM/Analytical/MEP/System/MaterialFragments/PipeMaterial.md
@@ -44,6 +44,15 @@ The following properties are inherited from the base class of the object
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/MEP/System/MaterialFragments/WireMaterial.md b/docs/oM/Analytical/MEP/System/MaterialFragments/WireMaterial.md
index a387d8f2d8..63eef18958 100644
--- a/docs/oM/Analytical/MEP/System/MaterialFragments/WireMaterial.md
+++ b/docs/oM/Analytical/MEP/System/MaterialFragments/WireMaterial.md
@@ -44,6 +44,15 @@ The following properties are inherited from the base class of the object
| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Analytical/Structure/Design/DesignResult.md b/docs/oM/Analytical/Structure/Design/DesignResult.md
new file mode 100644
index 0000000000..2ebfe0a96d
--- /dev/null
+++ b/docs/oM/Analytical/Structure/Design/DesignResult.md
@@ -0,0 +1,92 @@
+---
+title: DesignResult
+---
+
+# BH.oM.Structure.Design.**DesignResult**
+
+Base class for structural design check results that can be implemented for specific design codes and actions.
+
+## Class structure
+
+### Implemented interfaces and base types
+
+???+ bhom "The DesignResult is inheriting from the following base type(s) and implements the following interfaces:"
+
+ - BH.oM.Structure.Results.[IStructuralResult](/api/oM/Analytical/Structure/Results/IStructuralResult)
+ - BH.oM.Analytical.Results.[IObjectIdResult](/api/oM/Analytical/Analytical/Results/IObjectIdResult)
+ - BH.oM.Analytical.Results.[IResult](/api/oM/Analytical/Analytical/Results/IResult)
+ - BH.oM.Base.[IObject](/api/oM/Framework/Base/Interface/IObject)
+ - [IComparable](https://learn.microsoft.com/en-us/dotnet/api/System.IComparable-1?view=netstandard-2.0)<BH.oM.Analytical.Results.[IResult](/api/oM/Analytical/Analytical/Results/IResult)>
+ - BH.oM.Base.[IImmutable](/api/oM/Framework/Base/Interface/IImmutable)
+ - BH.oM.Analytical.Results.[ICasedResult](/api/oM/Analytical/Analytical/Results/ICasedResult)
+ - BH.oM.Analytical.Results.[ITimeStepResult](/api/oM/Analytical/Analytical/Results/ITimeStepResult)
+ - BH.oM.Analytical.Results.[IResultItem](/api/oM/Analytical/Analytical/Results/IResultItem)
+
+
+## Properties
+
+
+
+### Defining properties
+
+The following properties are defined on the class
+
+| Name | Type | Description | Quantity |
+|------------------|------------------|------------------|------------------|
+| ObjectId | [IComparable](https://learn.microsoft.com/en-us/dotnet/api/System.IComparable?view=netstandard-2.0) | Id of the structure. Unused for many results. | - |
+| ResultCase | [IComparable](https://learn.microsoft.com/en-us/dotnet/api/System.IComparable?view=netstandard-2.0) | Identifier for the Loadcase or LoadCombination that the result belongs to. Is generally name or number of the loadcase, depending on the analysis package. | - |
+| ModeNumber | [int](https://learn.microsoft.com/en-us/dotnet/api/System.Int32?view=netstandard-2.0) | Positive index, starting at one. Only set for cases with modal outputs such as dynamic cases. | - |
+| TimeStep | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Time step for time history results. | - |
+| Utilisation | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | The utilisation of the design check. | - |
+
+
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| AllIdentifierProperties | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets the name of all properties of the result that are of identifier types. This is all properties tagged with any IdentifierAttribute. | - | Results_Engine |
+| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a Result is null and outputs relevant error message. | - | Results_Engine |
+| ObjectIdentifierProperties | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets the name of all properties of the result that are of ObjectIdentifier types. This is all properties tagged with the ObjectIdentifierAttribute. | - | Results_Engine |
+| ResultPropertyKeys | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Returns the result value carrying properties available for the result type provided. Currently only supported for IResultItem and IResultCollection<IResultItem> type results. | - | Results_Engine |
+| ResultValuePropertiesItem | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [Tuple](https://learn.microsoft.com/en-us/dotnet/api/System.Tuple-2?view=netstandard-2.0)<[Func](https://learn.microsoft.com/en-us/dotnet/api/System.Func-2?view=netstandard-2.0)<T, [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)>, [QuantityAttribute](/api/oM/Dimensional/Quantities/Attributes/Abstract/QuantityAttribute)>> | Extract all potential result carrying property getters from a result class, i.e. properties of type double that is defined on the class. Properties defined on a base class are ignored.
Also extracts methods returning a double that has the result type as the only argument.
Func<T,double> returned together with corresponding QuantityAttribute in a Dictionary with the property or method name as the Key. | - | Results_Engine |
+| ScenarioIdentifierProperties | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets the name of all properties of the result that are of Scenario types. This is all properties tagged with the ScenarioIdentifierAttribute. | - | Results_Engine |
+
+
+## Code and Schema
+
+### C# implementation
+
+``` C# title="C#"
+public abstract class DesignResult : BH.oM.Structure.Results.IStructuralResult,
+BH.oM.Analytical.Results.IObjectIdResult,
+BH.oM.Analytical.Results.IResult,
+BH.oM.Base.IObject,
+System.IComparable,
+BH.oM.Base.IImmutable,
+BH.oM.Analytical.Results.ICasedResult,
+BH.oM.Analytical.Results.ITimeStepResult,
+BH.oM.Analytical.Results.IResultItem
+```
+
+Assembly: Structure_oM.dll
+
+The C# abstract class definition is available on github:
+
+- [DesignResult.cs](https://github.com/BHoM/BHoM/blob/develop/Structure_oM/Design\DesignResult.cs)
+
+All history and changes of the class can be found by inspection the history.
+### JSON Schema implementation
+
+The object is defined as a JSON schema. You can validate a JSON instance against this schema by reference. To do this, use the schema reference below in a validator like [this one](https://www.jsonschemavalidator.net/).
+
+``` json title="JSON Schema"
+{
+ "$ref" : "https://raw.githubusercontent.com/BHoM/BHoM_JSONSchema/develop/Structure_oM/Design/DesignResult.json"
+}
+```
+
+The JSON Schema is available on github here:
+
+- [DesignResult.json](https://github.com/BHoM/BHoM_JSONSchema/blob/develop/Structure_oM/Design/DesignResult.json)
diff --git a/docs/oM/Analytical/Structure/Elements/Bar.md b/docs/oM/Analytical/Structure/Elements/Bar.md
index d8a394362d..87025bcd27 100644
--- a/docs/oM/Analytical/Structure/Elements/Bar.md
+++ b/docs/oM/Analytical/Structure/Elements/Bar.md
@@ -82,6 +82,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementVertices | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Point](/api/oM/Dimensional/Geometry/Vector/Point)> | Returns the discontinuity points from the defining ICurve of the IElement1D. | - | Spatial_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
| Extrude | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry)> | Computes an extrusion of the section along the Bar centreline. | - | Structure_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns a Bar's GeneralMaterialTakeoff which contains information about the Bar's materiality and corresponding quantities. | - | Structure_Engine |
| Geometry | [Line](/api/oM/Dimensional/Geometry/Curve/Line) | Gets the geometry of a ILink as its centreline. Method required for automatic display in UI packages. | - | Analytical_Engine |
| Geometry3D | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets the BH.oM.Geometry.Extrusion out of the Bar as its Geometry3D. | - | Structure_Engine |
| HasReinforcement | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Returns true if the Bar has a ConcreteSection with BarRebarIntent defined with at least one IBarReinforcement in it. False if the Bar, ConcreteSection or BarRebarIntent is null or the IBarReinforcement count is zero. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/FEMesh.md b/docs/oM/Analytical/Structure/Elements/FEMesh.md
index 7dba15a1d2..c9f47a6b87 100644
--- a/docs/oM/Analytical/Structure/Elements/FEMesh.md
+++ b/docs/oM/Analytical/Structure/Elements/FEMesh.md
@@ -60,6 +60,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementMaterialNames | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Query the element's MaterialComposition to form a Material Hint to aid in EPD-Material Mapping. | - | LifeCycleAssessment_Engine |
| ElementScope | [ScopeType](/api/oM/Analytical/LifeCycleAssessment/Enums/ScopeType) | Returns the enumerable type of the scope found on an element. | - | LifeCycleAssessment_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns an Area Element's (Panel, FEMesh, Surface etc.) GeneralMaterialTakeoff which contains information about the element's materiality and corresponding quantities. | - | Structure_Engine |
| Geometry | [Mesh](/api/oM/Dimensional/Geometry/Mesh/Mesh) | Gets the geometry of a analytical IMesh as a geometrical Mesh. A geometrical mesh only supports 3 and 4 nodes faces, while a FEMesh does not have this limitation. For FEMeshFaces with more than 4 nodes or less than 3 this operation is therefore not possible. Method required for automatic display in UI packages. | - | Analytical_Engine |
| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of an IAreaElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
| IEdges | [IEnumerable](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.IEnumerable-1?view=netstandard-2.0)<[ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve)> | Extracts all the edge curves from an AreaElement. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/IAreaElement.md b/docs/oM/Analytical/Structure/Elements/IAreaElement.md
index 9d6dc4c0d6..e63d88d5b1 100644
--- a/docs/oM/Analytical/Structure/Elements/IAreaElement.md
+++ b/docs/oM/Analytical/Structure/Elements/IAreaElement.md
@@ -50,6 +50,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementMaterialNames | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Query the element's MaterialComposition to form a Material Hint to aid in EPD-Material Mapping. | - | LifeCycleAssessment_Engine |
| ElementScope | [ScopeType](/api/oM/Analytical/LifeCycleAssessment/Enums/ScopeType) | Returns the enumerable type of the scope found on an element. | - | LifeCycleAssessment_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns an Area Element's (Panel, FEMesh, Surface etc.) GeneralMaterialTakeoff which contains information about the element's materiality and corresponding quantities. | - | Structure_Engine |
| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of an IAreaElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
| IEdges | [IEnumerable](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.IEnumerable-1?view=netstandard-2.0)<[ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve)> | Extracts all the edge curves from an AreaElement. | - | Structure_Engine |
| IGeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Gets the unique Materials along with their volumes defining an object's make-up. | - | Matter_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/PadFoundation.md b/docs/oM/Analytical/Structure/Elements/PadFoundation.md
index 201af12b40..a9aaac1923 100644
--- a/docs/oM/Analytical/Structure/Elements/PadFoundation.md
+++ b/docs/oM/Analytical/Structure/Elements/PadFoundation.md
@@ -69,6 +69,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementVertices | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Point](/api/oM/Dimensional/Geometry/Vector/Point)> | Returns the discontinuity points from the defining ICurves of the IElement2D. | - | Spatial_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
| ExternalElementCurves | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve)> | Queries the geometrically defining external curves of the IElement2Ds surface. | - | Spatial_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns an Area Element's (Panel, FEMesh, Surface etc.) GeneralMaterialTakeoff which contains information about the element's materiality and corresponding quantities. | - | Structure_Engine |
| Geometry | [ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve) | Gets the geometry of a IRegion as its Perimeter curve. Method required for automatic display in UI packages. | - | Analytical_Engine |
| Geometry3D | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets a CompositeGeometry made of the boundary surfaces of the PadFoundation, or only its central Surface. | - | Structure_Engine |
| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Queries the area of the geometrical representation of an IElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Spatial_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/Panel.md b/docs/oM/Analytical/Structure/Elements/Panel.md
index 5c6615c8f0..7d4ce1f66f 100644
--- a/docs/oM/Analytical/Structure/Elements/Panel.md
+++ b/docs/oM/Analytical/Structure/Elements/Panel.md
@@ -73,10 +73,11 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
| ExternalElementCurves | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve)> | Queries the geometrically defining external curves of the IElement2Ds surface. | - | Spatial_Engine |
| ExternalPolyCurve | [PolyCurve](/api/oM/Dimensional/Geometry/Curve/PolyCurve) | Gets the polycurve that defines the outline of the panel and checks for a single continuous linear curve | - | Analytical_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns an Area Element's (Panel, FEMesh, Surface etc.) GeneralMaterialTakeoff which contains information about the element's materiality and corresponding quantities. | - | Structure_Engine |
| Geometry | [PlanarSurface](/api/oM/Dimensional/Geometry/Surface/PlanarSurface) | Gets the geometry of a analytical IPanel at its centre. Method required for automatic display in UI packages. | - | Analytical_Engine |
| Geometry3D | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets a CompositeGeometry made of the boundary surfaces of the Panel envelope, or only its central Surface. | - | Structure_Engine |
-| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of an IAreaElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Queries the area of the geometrical representation of an IElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Spatial_Engine |
+| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of an IAreaElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
| IBounds | [BoundingBox](/api/oM/Dimensional/Geometry/Misc/BoundingBox) | Queries the IElements BoundingBox. Acts on the elements geometrical definition of the IElement through the Geometry_Engine. | - | Spatial_Engine |
| ICentroid | [Point](/api/oM/Dimensional/Geometry/Vector/Point) | Queries the centre of weight for the homogeneous geometrical representation of an IElement. | - | Spatial_Engine |
| IControlPoints | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Point](/api/oM/Dimensional/Geometry/Vector/Point)> | Queries the control points of the geometrical representation of an IElement. | - | Spatial_Engine |
@@ -109,8 +110,8 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IsVertical | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if the IPanel is aligned with any vertical plane. | - | Analytical_Engine |
| IVolumetricMaterialTakeoff | [VolumetricMaterialTakeoff](/api/oM/Physical/Physical/Materials/VolumetricMaterialTakeoff) | Gets the unique Materials along with their volumes defining an object's make-up. | - | Matter_Engine |
| LocalOrientation | [Basis](/api/oM/Dimensional/Geometry/Vector/Basis) | Get the Vector basis system descibring the local axis orientation of the Panel in the global coordinate system where the z-axis is the normal of the panel and the x and y axes are the directions of the local in-plane axes. | - | Structure_Engine |
-| Mass | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass of a Panel as its area times mass per area. The mass per area is for a constant thickness calculated as thickness multiplied by the density. | [Mass](/api/oM/Dimensional/Quantities/Attributes/Mass) [kg] | Structure_Engine |
| Mass | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Evaluates the mass of an object based its VolumetricMaterialTakeoff and Density. | [Mass](/api/oM/Dimensional/Quantities/Attributes/Mass) [kg] | Matter_Engine |
+| Mass | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass of a Panel as its area times mass per area. The mass per area is for a constant thickness calculated as thickness multiplied by the density. | [Mass](/api/oM/Dimensional/Quantities/Attributes/Mass) [kg] | Structure_Engine |
| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns an AreaElement's homogeneous MaterialComposition. | - | Structure_Engine |
| NewInternalElement2D | [IElement2D](/api/oM/Dimensional/Dimensional/IElement2D) | Creates a new Element2D, appropriate to the input type. For this case the appropriate type for the Panel will be a new Opening, in the position provided.
Method required for any IElement2D that contians internal IElement2Ds. | - | Analytical_Engine |
| Normal | [Vector](/api/oM/Dimensional/Geometry/Vector/Vector) | Returns the normal to the IElement2D which is perpendicular to its plane and oriented according to the right hand rule in relation to the outline curve. | - | Spatial_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/Pile.md b/docs/oM/Analytical/Structure/Elements/Pile.md
index f10cb25db7..41177b46c5 100644
--- a/docs/oM/Analytical/Structure/Elements/Pile.md
+++ b/docs/oM/Analytical/Structure/Elements/Pile.md
@@ -66,6 +66,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementScope | [ScopeType](/api/oM/Analytical/LifeCycleAssessment/Enums/ScopeType) | Returns the enumerable type of the scope found on an element. | - | LifeCycleAssessment_Engine |
| ElementVertices | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Point](/api/oM/Dimensional/Geometry/Vector/Point)> | Returns the discontinuity points from the defining ICurve of the IElement1D. | - | Spatial_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns a Pile's GeneralMaterialTakeoff which contains information about the Pile's materiality and corresponding quantities. | - | Structure_Engine |
| Geometry | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets the geometry of a Pile as a single line. Method required for automatic display in UI packages. | - | Structure_Engine |
| Geometry3D | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets the BH.oM.Geometry.Extrusion out of the Pile as its Geometry3D. | - | Structure_Engine |
| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Queries the area of the geometrical representation of an IElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Spatial_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/PileFoundation.md b/docs/oM/Analytical/Structure/Elements/PileFoundation.md
index b15309fe68..3ce660794b 100644
--- a/docs/oM/Analytical/Structure/Elements/PileFoundation.md
+++ b/docs/oM/Analytical/Structure/Elements/PileFoundation.md
@@ -55,6 +55,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementMaterialNames | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Query the element's MaterialComposition to form a Material Hint to aid in EPD-Material Mapping. | - | LifeCycleAssessment_Engine |
| ElementScope | [ScopeType](/api/oM/Analytical/LifeCycleAssessment/Enums/ScopeType) | Returns the enumerable type of the scope found on an element. | - | LifeCycleAssessment_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns a PileFoundation's GeneralMaterialTakeoff, aggregating pile cap and piles. The takeoff contains information about the materiality and corresponding quantities of all the elements in the PileFoundation. | - | Structure_Engine |
| Geometry | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets the geometry of a PileFoundation. Method required for automatic display in UI packages. | - | Structure_Engine |
| Geometry3D | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets a CompositeGeometry made of the PileCap and Piles of a PileFoundation. | - | Structure_Engine |
| IGeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Gets the unique Materials along with their volumes defining an object's make-up. | - | Matter_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/RetainingWall.md b/docs/oM/Analytical/Structure/Elements/RetainingWall.md
index 63c506dd32..c344f08744 100644
--- a/docs/oM/Analytical/Structure/Elements/RetainingWall.md
+++ b/docs/oM/Analytical/Structure/Elements/RetainingWall.md
@@ -58,6 +58,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementMaterialNames | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Query the element's MaterialComposition to form a Material Hint to aid in EPD-Material Mapping. | - | LifeCycleAssessment_Engine |
| ElementScope | [ScopeType](/api/oM/Analytical/LifeCycleAssessment/Enums/ScopeType) | Returns the enumerable type of the scope found on an element. | - | LifeCycleAssessment_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns a RetainingWall's GeneralMaterialTakeoff by aggregating its stem and footing takeoffs. The takeoff contains information about the materiality and corresponding quantities of all the elements in the RetainingWall. | - | Structure_Engine |
| Geometry | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets the geometry of a RetainingWall. Method required for automatic display in UI packages. | - | Structure_Engine |
| Geometry3D | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets a CompositeGeometry made of the Stem and Footing of a RetainingWall. | - | Structure_Engine |
| IGeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Gets the unique Materials along with their volumes defining an object's make-up. | - | Matter_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/Stem.md b/docs/oM/Analytical/Structure/Elements/Stem.md
index d0df122ed8..2a6319f6fb 100644
--- a/docs/oM/Analytical/Structure/Elements/Stem.md
+++ b/docs/oM/Analytical/Structure/Elements/Stem.md
@@ -69,6 +69,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementVertices | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Point](/api/oM/Dimensional/Geometry/Vector/Point)> | Returns the discontinuity points from the defining ICurves of the IElement2D. | - | Spatial_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
| ExternalElementCurves | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve)> | Queries the geometrically defining external curves of the IElement2Ds surface. | - | Spatial_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns a Stem's GeneralMaterialTakeoff using the stem solid volume and material. The takeoff contains information about the materiality and corresponding quantities of the Stem. | - | Structure_Engine |
| Geometry | [ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve) | Gets the geometry of a IRegion as its Perimeter curve. Method required for automatic display in UI packages. | - | Analytical_Engine |
| Geometry3D | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets a CompositeGeometry made of boundary surfaces of the Stem based on its outline, thicknesses and orientation. | - | Structure_Engine |
| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Queries the area of the geometrical representation of an IElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Spatial_Engine |
diff --git a/docs/oM/Analytical/Structure/Elements/Surface.md b/docs/oM/Analytical/Structure/Elements/Surface.md
index 8d74d2c6f4..f88f8c49f0 100644
--- a/docs/oM/Analytical/Structure/Elements/Surface.md
+++ b/docs/oM/Analytical/Structure/Elements/Surface.md
@@ -61,6 +61,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ElementMaterialNames | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Query the element's MaterialComposition to form a Material Hint to aid in EPD-Material Mapping. | - | LifeCycleAssessment_Engine |
| ElementScope | [ScopeType](/api/oM/Analytical/LifeCycleAssessment/Enums/ScopeType) | Returns the enumerable type of the scope found on an element. | - | LifeCycleAssessment_Engine |
| EnvironmentalResults | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElementResult](/api/oM/Analytical/LifeCycleAssessment/Results/IElementResult)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)>> | Evaluates the EnvironmentalMetrics for the provided element and returns an ElementResult for each evaluated metric type.
Evaluation is done by extracting the material takeoff for the provided element, giving quantities and Materiality.
Each Material in the takeoff is then evaluated by finding the EnvironmentalProductDeclaration (EPD), either stored on the material or from the list of template materials.
Each metric, or filtered chosen metrics, on the EPD is then evaluated.
Finally, an element result is returned per metric type. Each element result being the sum result of all metrics of the same type. | - | LifeCycleAssessment_Engine |
+| GeneralMaterialTakeoff | [GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff) | Returns an Area Element's (Panel, FEMesh, Surface etc.) GeneralMaterialTakeoff which contains information about the element's materiality and corresponding quantities. | - | Structure_Engine |
| Geometry | [IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry) | Gets the geometry of a analytical ISurface at its centre. Method required for automatic display in UI packages. | - | Analytical_Engine |
| IArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of an IAreaElement. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
| IEdges | [IEnumerable](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.IEnumerable-1?view=netstandard-2.0)<[ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve)> | Extracts all the edge curves from an AreaElement. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/Fragments/ConnectionAllowance.md b/docs/oM/Analytical/Structure/Fragments/ConnectionAllowance.md
new file mode 100644
index 0000000000..fb9b21ad6d
--- /dev/null
+++ b/docs/oM/Analytical/Structure/Fragments/ConnectionAllowance.md
@@ -0,0 +1,48 @@
+---
+title: ConnectionAllowance
+---
+
+# BH.oM.Structure.Fragments.**ConnectionAllowance**
+
+The connection allowance of an element. Used when evaluating takeoffs to account for additional mass due to connections of the element.
+
+## Class structure
+
+### Implemented interfaces and base types
+
+???+ bhom "The ConnectionAllowance is inheriting from the following base type(s) and implements the following interfaces:"
+
+ - BH.oM.Base.[IFragment](/api/oM/Framework/Base/Interface/IFragment)
+ - BH.oM.Base.[IObject](/api/oM/Framework/Base/Interface/IObject)
+
+
+## Properties
+
+
+
+### Defining properties
+
+The following properties are defined on the class
+
+| Name | Type | Description | Quantity |
+|------------------|------------------|------------------|------------------|
+| Allowance | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Additional connection allowance expressed as a ratio of the mass of the element. For example, a value of 0.1 means a connection allowance equal to 10% of the mass of the element to which this fragment is applied. | [Ratio](/api/oM/Dimensional/Quantities/Attributes/Ratio) [-] |
+| Material | [IMaterialFragment](/api/oM/Analytical/Structure/MaterialFragments/IMaterialFragment) | Optional material to be used for the connection. If null, the material of the element will be assumed. | - |
+| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Optional name for the connection allowance. It will be assigned as the name of the takeoff material. If left empty, the name of the material (or the name of the material of the element) will be used instead.
This can be useful if one wants to differentiate between connection and element contributions in the takeoff. | - |
+
+
+## Code and Schema
+
+### C# implementation
+
+``` C# title="C#"
+public class ConnectionAllowance : BH.oM.Base.IFragment, BH.oM.Base.IObject
+```
+
+Assembly: Structure_oM.dll
+
+The C# class definition is available on github:
+
+- [ConnectionAllowance.cs](https://github.com/BHoM/BHoM/blob/develop/Structure_oM/Fragments\ConnectionAllowance.cs)
+
+All history and changes of the class can be found by inspection the history.
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/Aluminium.md b/docs/oM/Analytical/Structure/MaterialFragments/Aluminium.md
index 8ddd1a910a..4cacb0ee0f 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/Aluminium.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/Aluminium.md
@@ -63,6 +63,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. For a Aluminium material this will always return type Aluminium. | - | Structure_Engine |
| ShearModulus | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Shear modulus of the isotropic material fragment. Evaluated based on YoungsModulus and PoissonsRatio as G = E/2(1+ν). | [ShearModulus](/api/oM/Dimensional/Quantities/Attributes/ShearModulus) [Pa] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/Concrete.md b/docs/oM/Analytical/Structure/MaterialFragments/Concrete.md
index 6cdd10543d..0141b78aa7 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/Concrete.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/Concrete.md
@@ -65,6 +65,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. For a Concrete material this will always return type Concrete. | - | Structure_Engine |
| ShearModulus | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Shear modulus of the isotropic material fragment. Evaluated based on YoungsModulus and PoissonsRatio as G = E/2(1+ν). | [ShearModulus](/api/oM/Dimensional/Quantities/Attributes/ShearModulus) [Pa] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/GenericIsotropicMaterial.md b/docs/oM/Analytical/Structure/MaterialFragments/GenericIsotropicMaterial.md
index e0e7ce774d..eb4fd7d82d 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/GenericIsotropicMaterial.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/GenericIsotropicMaterial.md
@@ -63,6 +63,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. For a GenericIsotropicMaterial material this will always return type Undefined. | - | Structure_Engine |
| ShearModulus | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Shear modulus of the isotropic material fragment. Evaluated based on YoungsModulus and PoissonsRatio as G = E/2(1+ν). | [ShearModulus](/api/oM/Dimensional/Quantities/Attributes/ShearModulus) [Pa] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/GenericOrthotropicMaterial.md b/docs/oM/Analytical/Structure/MaterialFragments/GenericOrthotropicMaterial.md
index 9f0cd6108b..d54b79eda0 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/GenericOrthotropicMaterial.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/GenericOrthotropicMaterial.md
@@ -64,6 +64,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. For a GenericOrthotropicMaterial material this will always return type Undefined. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/Glulam.md b/docs/oM/Analytical/Structure/MaterialFragments/Glulam.md
index 9d4ded9c0d..2c97f9e932 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/Glulam.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/Glulam.md
@@ -82,6 +82,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a ITimber is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
## Code and Schema
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/IIsotropic.md b/docs/oM/Analytical/Structure/MaterialFragments/IIsotropic.md
index 430cd22eb7..ff23e2d91a 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/IIsotropic.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/IIsotropic.md
@@ -56,6 +56,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| ShearModulus | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Shear modulus of the isotropic material fragment. Evaluated based on YoungsModulus and PoissonsRatio as G = E/2(1+ν). | [ShearModulus](/api/oM/Dimensional/Quantities/Attributes/ShearModulus) [Pa] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/IMaterialFragment.md b/docs/oM/Analytical/Structure/MaterialFragments/IMaterialFragment.md
index 959181953d..8845ef437f 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/IMaterialFragment.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/IMaterialFragment.md
@@ -69,6 +69,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
## Code and Schema
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/IOrthotropic.md b/docs/oM/Analytical/Structure/MaterialFragments/IOrthotropic.md
index fd71152006..e9c08e35f5 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/IOrthotropic.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/IOrthotropic.md
@@ -66,6 +66,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
## Code and Schema
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/ITimber.md b/docs/oM/Analytical/Structure/MaterialFragments/ITimber.md
index fe02fa2ada..df271e1115 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/ITimber.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/ITimber.md
@@ -58,6 +58,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a ITimber is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
## Code and Schema
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/LaminatedVeneerLumberCrossbands.md b/docs/oM/Analytical/Structure/MaterialFragments/LaminatedVeneerLumberCrossbands.md
index e80444374a..209726989d 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/LaminatedVeneerLumberCrossbands.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/LaminatedVeneerLumberCrossbands.md
@@ -95,6 +95,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a ITimber is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
## Code and Schema
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/LaminatedVeneerLumberParallel.md b/docs/oM/Analytical/Structure/MaterialFragments/LaminatedVeneerLumberParallel.md
index 70ccde859e..38413a32b6 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/LaminatedVeneerLumberParallel.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/LaminatedVeneerLumberParallel.md
@@ -94,6 +94,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a ITimber is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
## Code and Schema
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/SawnTimber.md b/docs/oM/Analytical/Structure/MaterialFragments/SawnTimber.md
index 64f94da102..ffcfaf60df 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/SawnTimber.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/SawnTimber.md
@@ -77,6 +77,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a ITimber is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
## Code and Schema
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/Steel.md b/docs/oM/Analytical/Structure/MaterialFragments/Steel.md
index eadedd3187..440849ec31 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/Steel.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/Steel.md
@@ -65,6 +65,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. For a Steel material this will always return type Steel. | - | Structure_Engine |
| ShearModulus | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Shear modulus of the isotropic material fragment. Evaluated based on YoungsModulus and PoissonsRatio as G = E/2(1+ν). | [ShearModulus](/api/oM/Dimensional/Quantities/Attributes/ShearModulus) [Pa] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/MaterialFragments/Timber.md b/docs/oM/Analytical/Structure/MaterialFragments/Timber.md
index 64a97f8057..2b4b0d76af 100644
--- a/docs/oM/Analytical/Structure/MaterialFragments/Timber.md
+++ b/docs/oM/Analytical/Structure/MaterialFragments/Timber.md
@@ -77,6 +77,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IMaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a MaterialFragment is null and outputs relevant error message. | - | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a ITimber is null and outputs relevant error message. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| MaterialType | [MaterialType](/api/oM/Analytical/Structure/MaterialFragments/Enums/MaterialType) | Gets the material type from the MaterialFragment. For a Timber material this will always return type Timber. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/Reinforcement/IBarReinforcement.md b/docs/oM/Analytical/Structure/Reinforcement/IBarReinforcement.md
index ae31fb2a09..4ab3180113 100644
--- a/docs/oM/Analytical/Structure/Reinforcement/IBarReinforcement.md
+++ b/docs/oM/Analytical/Structure/Reinforcement/IBarReinforcement.md
@@ -46,6 +46,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| Name | Type | Description | Quantity | Engine |
|------------------|------------------|------------------|------------------|------------------|
+| BarArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of a single rebar in the IBarReinforcement. To get the total reinforcement area for the reinforcement layout please call the Area method. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a BarReinforcement is null and outputs relevant error message. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/Reinforcement/LongitudinalReinforcement.md b/docs/oM/Analytical/Structure/Reinforcement/LongitudinalReinforcement.md
index be71b29976..c87e1d750c 100644
--- a/docs/oM/Analytical/Structure/Reinforcement/LongitudinalReinforcement.md
+++ b/docs/oM/Analytical/Structure/Reinforcement/LongitudinalReinforcement.md
@@ -54,6 +54,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| Name | Type | Description | Quantity | Engine |
|------------------|------------------|------------------|------------------|------------------|
| Area | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the total section area of all rebars in the reinforcement object. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
+| BarArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of a single rebar in the IBarReinforcement. To get the total reinforcement area for the reinforcement layout please call the Area method. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a BarReinforcement is null and outputs relevant error message. | - | Structure_Engine |
| ReinforcingBarCount | [int](https://learn.microsoft.com/en-us/dotnet/api/System.Int32?view=netstandard-2.0) | Return the number of reinforcing bars in one a LongtudinalReinforcement object. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/Reinforcement/PanelReinforcement.md b/docs/oM/Analytical/Structure/Reinforcement/PanelReinforcement.md
index 954e41dda3..df9b9ea135 100644
--- a/docs/oM/Analytical/Structure/Reinforcement/PanelReinforcement.md
+++ b/docs/oM/Analytical/Structure/Reinforcement/PanelReinforcement.md
@@ -58,6 +58,8 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| Name | Type | Description | Quantity | Engine |
|------------------|------------------|------------------|------------------|------------------|
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a PanelReinforcement is null and outputs relevant error message. | - | Structure_Engine |
+| LongitudinalBarArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of a single rebar in the PanelReinforcement in the logitudinal direction. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
+| TransversalBarArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of a single rebar in the PanelReinforcement in the logitudinal direction. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
## Code and Schema
diff --git a/docs/oM/Analytical/Structure/Reinforcement/TransverseReinforcement.md b/docs/oM/Analytical/Structure/Reinforcement/TransverseReinforcement.md
index 1f1daeb59e..249f33c953 100644
--- a/docs/oM/Analytical/Structure/Reinforcement/TransverseReinforcement.md
+++ b/docs/oM/Analytical/Structure/Reinforcement/TransverseReinforcement.md
@@ -55,6 +55,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| Name | Type | Description | Quantity | Engine |
|------------------|------------------|------------------|------------------|------------------|
+| BarArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the area of a single rebar in the IBarReinforcement. To get the total reinforcement area for the reinforcement layout please call the Area method. | [Area](/api/oM/Dimensional/Quantities/Attributes/Area) [m²] | Structure_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a BarReinforcement is null and outputs relevant error message. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/Results/IStructuralResult.md b/docs/oM/Analytical/Structure/Results/IStructuralResult.md
index c060b2af72..1e9b5b09a3 100644
--- a/docs/oM/Analytical/Structure/Results/IStructuralResult.md
+++ b/docs/oM/Analytical/Structure/Results/IStructuralResult.md
@@ -73,6 +73,7 @@ Base interface for all structural results. Adds ModeNumber as a property in addi
- BH.oM.Structure.Results.[NodeReaction](/api/oM/Analytical/Structure/Results/Nodal Results/NodeReaction)
- BH.oM.Structure.Results.[NodeResult](/api/oM/Analytical/Structure/Results/Nodal Results/NodeResult)
- BH.oM.Structure.Results.[NodeVelocity](/api/oM/Analytical/Structure/Results/Nodal Results/NodeVelocity)
+ - BH.oM.Structure.Design.[DesignResult](/api/oM/Analytical/Structure/Design/DesignResult)
## Properties
diff --git a/docs/oM/Analytical/Structure/SectionProperties/ConcreteSection.md b/docs/oM/Analytical/Structure/SectionProperties/ConcreteSection.md
index 8a23c97ffb..55f21d8475 100644
--- a/docs/oM/Analytical/Structure/SectionProperties/ConcreteSection.md
+++ b/docs/oM/Analytical/Structure/SectionProperties/ConcreteSection.md
@@ -89,7 +89,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IVolumePerLength | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the volume per length for the section, generally as its area mulitplied by the density. General dispatch method that calls the correct method based on type. | [MassPerUnitLength](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitLength) [kg/m] | Structure_Engine |
| LongitudinalReinforcementLayout | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Point](/api/oM/Dimensional/Geometry/Vector/Point)> | Gets the LongitudinalReinforcement positions in the ConcreteSection as a list of Points. | - | Structure_Engine |
| MassPerMetre | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per length for the section as its area times density. Does not take any reinforcement into acount. | [MassPerUnitLength](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitLength) [kg/m] | Structure_Engine |
-| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a ConcreteSection's MaterialComposition, taking into account any LongitudinalReinforcement. | - | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a ConcreteSection's MaterialComposition, taking into account any Reinfrocement. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a section as an array of doubles. The modifiers are used to scale one or more of the section constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: Area, Iy, Iz, J, Asy, Asz. Method returns null if no modifiers are found. | - | Structure_Engine |
| ReinforcementLayout | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IGeometry](/api/oM/Dimensional/Geometry/Interface/IGeometry)> | Gets the IBarReinforcement positions in the ConcreteSection as a list of points (centers) and curves (centerlines). | - | Structure_Engine |
| ReinforcementTransitionPoints | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)> | Returns a list of the normalised locations (0 means start, 1 means end) in the cross section where the reinforcement changes. If section is null or does not contain any reinforcement, an empty list will be returned. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/BiDirectionalVoided.md b/docs/oM/Analytical/Structure/SurfaceProperties/BiDirectionalVoided.md
index 891590092e..7a3aa29485 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/BiDirectionalVoided.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/BiDirectionalVoided.md
@@ -65,11 +65,11 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
| TotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| VolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/BuiltUpDoubleRibbed.md b/docs/oM/Analytical/Structure/SurfaceProperties/BuiltUpDoubleRibbed.md
index 0f6adc8e86..2c2f9134b4 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/BuiltUpDoubleRibbed.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/BuiltUpDoubleRibbed.md
@@ -63,10 +63,9 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| DescriptionOrName | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Gets the name from a IProperty. If null or empty, a default description name is provided instead. | - | Structure_Engine |
| HasModifiers | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty has any modifiers by first checking if any modifiers has been assigned, and if any of them are set to a value different than 1. | - | Structure_Engine |
| IConstruction | [Construction](/api/oM/Physical/Physical/Constructions/Construction) | Creates a physical Construction from a structural ISurfaceProperty. Extracts the Structural MaterialFragment and creates a physical material with the same name. | - | Structure_Engine |
-| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
+| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/BuiltUpRibbed.md b/docs/oM/Analytical/Structure/SurfaceProperties/BuiltUpRibbed.md
index 31aca0b69c..becb063bdd 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/BuiltUpRibbed.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/BuiltUpRibbed.md
@@ -62,10 +62,9 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| DescriptionOrName | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Gets the name from a IProperty. If null or empty, a default description name is provided instead. | - | Structure_Engine |
| HasModifiers | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty has any modifiers by first checking if any modifiers has been assigned, and if any of them are set to a value different than 1. | - | Structure_Engine |
| IConstruction | [Construction](/api/oM/Physical/Physical/Constructions/Construction) | Creates a physical Construction from a structural ISurfaceProperty. Extracts the Structural MaterialFragment and creates a physical material with the same name. | - | Structure_Engine |
-| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
+| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/Cassette.md b/docs/oM/Analytical/Structure/SurfaceProperties/Cassette.md
index 6e2646e13a..90c777a3b0 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/Cassette.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/Cassette.md
@@ -64,10 +64,9 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| DescriptionOrName | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Gets the name from a IProperty. If null or empty, a default description name is provided instead. | - | Structure_Engine |
| HasModifiers | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty has any modifiers by first checking if any modifiers has been assigned, and if any of them are set to a value different than 1. | - | Structure_Engine |
| IConstruction | [Construction](/api/oM/Physical/Physical/Constructions/Construction) | Creates a physical Construction from a structural ISurfaceProperty. Extracts the Structural MaterialFragment and creates a physical material with the same name. | - | Structure_Engine |
-| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
+| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/ConstantThickness.md b/docs/oM/Analytical/Structure/SurfaceProperties/ConstantThickness.md
index 30eb517490..7d5105ee09 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/ConstantThickness.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/ConstantThickness.md
@@ -61,12 +61,12 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| MassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property as its thickness mutiplied by the density. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
| TotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| VolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/CorrugatedDeck.md b/docs/oM/Analytical/Structure/SurfaceProperties/CorrugatedDeck.md
index d1846779be..b6965b078c 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/CorrugatedDeck.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/CorrugatedDeck.md
@@ -63,10 +63,9 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| DescriptionOrName | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Gets the name from a IProperty. If null or empty, a default description name is provided instead. | - | Structure_Engine |
| HasModifiers | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty has any modifiers by first checking if any modifiers has been assigned, and if any of them are set to a value different than 1. | - | Structure_Engine |
| IConstruction | [Construction](/api/oM/Physical/Physical/Constructions/Construction) | Creates a physical Construction from a structural ISurfaceProperty. Extracts the Structural MaterialFragment and creates a physical material with the same name. | - | Structure_Engine |
-| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
+| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/HollowCore.md b/docs/oM/Analytical/Structure/SurfaceProperties/HollowCore.md
index 41d85a076f..cbbe8789b9 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/HollowCore.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/HollowCore.md
@@ -61,11 +61,11 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
| TotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| VoidZoneHeight | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the height of the hollow core zone of the hollow core property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/ISurfaceProperty.md b/docs/oM/Analytical/Structure/SurfaceProperties/ISurfaceProperty.md
index dc6e019a74..8080e49a87 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/ISurfaceProperty.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/ISurfaceProperty.md
@@ -64,11 +64,11 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/Layered.md b/docs/oM/Analytical/Structure/SurfaceProperties/Layered.md
index 66186a34fd..5dda06c95c 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/Layered.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/Layered.md
@@ -61,7 +61,6 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/LoadingPanelProperty.md b/docs/oM/Analytical/Structure/SurfaceProperties/LoadingPanelProperty.md
index dc1d147c22..7700ea111a 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/LoadingPanelProperty.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/LoadingPanelProperty.md
@@ -60,12 +60,12 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| MassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the mass per area for a LoadingPanelProperty. This will always return 0. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
| TotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| VolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/OneDirectionalVoided.md b/docs/oM/Analytical/Structure/SurfaceProperties/OneDirectionalVoided.md
index 70a9386bd6..510f8547d6 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/OneDirectionalVoided.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/OneDirectionalVoided.md
@@ -64,11 +64,11 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
| TotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| VolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/Ribbed.md b/docs/oM/Analytical/Structure/SurfaceProperties/Ribbed.md
index 7137cb9635..aff2597ede 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/Ribbed.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/Ribbed.md
@@ -64,12 +64,12 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| MassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property as its average thickness mutiplied by the density. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
| TotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| VolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/SlabOnDeck.md b/docs/oM/Analytical/Structure/SurfaceProperties/SlabOnDeck.md
index dc3a0fd34f..bfbb42e0f1 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/SlabOnDeck.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/SlabOnDeck.md
@@ -66,10 +66,9 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| DescriptionOrName | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Gets the name from a IProperty. If null or empty, a default description name is provided instead. | - | Structure_Engine |
| HasModifiers | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty has any modifiers by first checking if any modifiers has been assigned, and if any of them are set to a value different than 1. | - | Structure_Engine |
| IConstruction | [Construction](/api/oM/Physical/Physical/Constructions/Construction) | Creates a physical Construction from a structural ISurfaceProperty. Extracts the Structural MaterialFragment and creates a physical material with the same name. | - | Structure_Engine |
-| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
+| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/ToppedSlab.md b/docs/oM/Analytical/Structure/SurfaceProperties/ToppedSlab.md
index 60979de3aa..eeaf2d05af 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/ToppedSlab.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/ToppedSlab.md
@@ -60,7 +60,6 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Analytical/Structure/SurfaceProperties/Waffle.md b/docs/oM/Analytical/Structure/SurfaceProperties/Waffle.md
index 5301ce2975..387c241b94 100644
--- a/docs/oM/Analytical/Structure/SurfaceProperties/Waffle.md
+++ b/docs/oM/Analytical/Structure/SurfaceProperties/Waffle.md
@@ -66,12 +66,12 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the SurfaceProperty, based on type, dimensions and material. | - | Structure_Engine |
| IDescription | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | Generates a default description for the IProperty, based on its properties. | - | Structure_Engine |
| IMassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
-| IMaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| InvalidSurfaceProperty | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks whether a surface property is unsupported in Lusas. Only ConstantThickness is currently supported. | - | Lusas_Engine |
| IsNull | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a SurfaceProperty is null and outputs relevant error message. | - | Structure_Engine |
| ITotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| IVolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| MassPerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Calculates the mass per area for the property as its average thickness mutiplied by the density. | [MassPerUnitArea](/api/oM/Dimensional/Quantities/Attributes/MassPerUnitArea) [kg/m²] | Structure_Engine |
+| MaterialComposition | [MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition) | Returns a SurfaceProperty's MaterialComposition. | - | Structure_Engine |
| Modifiers | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)[] | Gets any modifiers from a property as an array of doubles. The modifiers are used to scale one or more of the property constants for analysis. Constants are multiplied with the modifiers, hence a modifier value of 1 means no change.
The values returned are in the following order: FXX, FXY, FYY, MXX, MXY, MYY, VXZ, VYZ, Mass, Weight. Method returns null if no modifiers are found. | - | Structure_Engine |
| TotalThickness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the total thickness of the surface property. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
| VolumePerArea | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Gets the volume per area of the property for the purpose of calculating solid volume. | [Length](/api/oM/Dimensional/Quantities/Attributes/Length) [m] | Structure_Engine |
diff --git a/docs/oM/Framework/Base/BHoMObject.md b/docs/oM/Framework/Base/BHoMObject.md
index 3a87157279..c5cb5ea489 100644
--- a/docs/oM/Framework/Base/BHoMObject.md
+++ b/docs/oM/Framework/Base/BHoMObject.md
@@ -385,6 +385,7 @@ title: BHoMObject
- BH.oM.Physical.Reinforcement.BS8666.[ShapeCode99](/api/oM/Physical/Physical/Reinforcement/BS8666/ShapeCode99)
- BH.oM.Physical.Materials.[GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff)
- BH.oM.Physical.Materials.[Material](/api/oM/Physical/Physical/Materials/Material)
+ - BH.oM.Physical.Materials.[MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification)
- BH.oM.Physical.Materials.[MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition)
- BH.oM.Physical.Materials.[VolumetricMaterialTakeoff](/api/oM/Physical/Physical/Materials/VolumetricMaterialTakeoff)
- BH.oM.Physical.FramingProperties.[ConstantFramingProperty](/api/oM/Physical/Physical/FramingProperties/ConstantFramingProperty)
diff --git a/docs/oM/Framework/Base/FragmentSet.md b/docs/oM/Framework/Base/FragmentSet.md
index dfedf05e2d..cf1465dc5c 100644
--- a/docs/oM/Framework/Base/FragmentSet.md
+++ b/docs/oM/Framework/Base/FragmentSet.md
@@ -48,26 +48,35 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| AbsoluteMaxEnvelopeByCase | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce)> | - | - | Results_Engine |
| AbsoluteMaxEnvelopeByObject | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce)> | - | - | Results_Engine |
| AbsoluteMaxForces | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce)> | - | - | Results_Engine |
+| AvailableCategories | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets all distinct non-empty categories from the material classifications in a collection of materials, optionally filtered by type, grade, and constituent. | - | Matter_Engine |
+| AvailableCategories | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets all distinct non-empty categories from the material classifications in a collection of material properties, optionally filtered by type, grade, and constituent. | - | Matter_Engine |
+| AvailableConstituents | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets all distinct non-empty constituents from the material classifications in a collection of material properties, optionally filtered by category, type, and grade. | - | Matter_Engine |
+| AvailableConstituents | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets all distinct non-empty constituents from the material classifications in a collection of materials, optionally filtered by category, type, and grade. | - | Matter_Engine |
+| AvailableGrades | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets all distinct non-empty grades from the material classifications in a collection of materials, optionally filtered by category, type, and constituent. | - | Matter_Engine |
+| AvailableGrades | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets all distinct non-empty grades from the material classifications in a collection of material properties, optionally filtered by category, type, and constituent. | - | Matter_Engine |
+| AvailableTypes | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets all distinct non-empty types from the material classifications in a collection of materials, optionally filtered by category, grade, and constituent. | - | Matter_Engine |
+| AvailableTypes | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | Gets all distinct non-empty types from the material classifications in a collection of material properties, optionally filtered by category, grade, and constituent. | - | Matter_Engine |
| Average | [Point](/api/oM/Dimensional/Geometry/Vector/Point) | Calculates the average (centroid) Point from a collection of Points. | - | Geometry_Engine |
| Bounds | [BoundingBox](/api/oM/Dimensional/Geometry/Misc/BoundingBox) | Queries the IElements BoundingBox. Acts on the elements geometrical definition of the IElement through the Geometry_Engine. | - | Spatial_Engine |
| Centroid | [Point](/api/oM/Dimensional/Geometry/Vector/Point) | Queries the combined centre of area enclosed by a set of ICurves with an optional set of openings.
To give a correct result all input curves must be planar, coplanar, closed and non-self-intersecting.
Opening curves should also be inside of outline curves. | - | Geometry_Engine |
| ElementCurves | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[ICurve](/api/oM/Dimensional/Geometry/Curve/ICurve)> | Queries the geometrically defining curves of the IElements geometries. | - | Spatial_Engine |
| ElementVertices | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Point](/api/oM/Dimensional/Geometry/Vector/Point)> | Returns the discontinuity points from the defining ICurves of the IElements. | - | Spatial_Engine |
| ExternalEdges | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IElement1D](/api/oM/Dimensional/Dimensional/IElement1D)> | Returns external edges from a collection of 2D elements. | - | Facade_Engine |
+| FilterByClassification | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Material](/api/oM/Physical/Physical/Materials/Material)> | Filters a collection of Material by classification properties. Requires the provided Materials to contain a MaterialClassification as one of its properties to be able to filter. The filtering is done by matching all non-empty provided properties, e.g. if the category and type are provided, but grade and constituent are empty, then all materials with the same category and type will be returned. | - | Matter_Engine |
| FilterUniqueRevitElements | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[IBHoMObject](/api/oM/Framework/Base/Interface/IBHoMObject)> | Filters the given collection of BHoM objects to return only unique Revit elements based on their UniqueId. | - | Revit_Engine |
| GetDistinctEdges | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Edge](/api/oM/Analytical/Structure/Elements/Edge)> | Returns a distinct list of edges by comparing the midpoint of each edge's curve, rounded to 3 decimal places. | - | Lusas_Engine |
| GetDistinctPoints | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Point](/api/oM/Dimensional/Geometry/Vector/Point)> | Returns a distinct list of points by comparing their X, Y, and Z coordinates, rounded to 3 decimal places. | - | Lusas_Engine |
| MaxBarRequiredArea | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarRequiredArea](/api/oM/Analytical/Structure/Results/Bar Results/BarRequiredArea)> | Returns a list of BarRequiredArea results, one for each component, that contain the maximum value for each required area and its concurrent required areas. | - | Results_Engine |
-| MaxEnvelope | [MeshRequiredArea](/api/oM/Analytical/Structure/Results/Mesh/MeshRequiredArea) | Determines the maximum required in each component of the MeshRequiredArea and returns a single MeshRequiredArea object with the enveloped required areas. | - | Results_Engine |
-| MaxEnvelope | [BarRequiredArea](/api/oM/Analytical/Structure/Results/Bar Results/BarRequiredArea) | Determines the maximum required in each component of the BarRequiredArea and returns a single BarRequiredArea object with the enveloped required areas. | - | Results_Engine |
| MaxEnvelope | [BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce) | Determines the maximum force in each component of the BarForce and returns a single BarForce object with the enveloped forces. | - | Results_Engine |
+| MaxEnvelope | [BarRequiredArea](/api/oM/Analytical/Structure/Results/Bar Results/BarRequiredArea) | Determines the maximum required in each component of the BarRequiredArea and returns a single BarRequiredArea object with the enveloped required areas. | - | Results_Engine |
+| MaxEnvelope | [MeshRequiredArea](/api/oM/Analytical/Structure/Results/Mesh/MeshRequiredArea) | Determines the maximum required in each component of the MeshRequiredArea and returns a single MeshRequiredArea object with the enveloped required areas. | - | Results_Engine |
| MaxEnvelopeByCase | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce)> | Groups the BarForces by case and finds the maximum envelope returning a single enveloped BarForce for each case. The resulting BarForce will not contain concurrent forces. | - | Results_Engine |
| MaxEnvelopeByObject | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce)> | Groups the BarForces by id and finds the maximum envelope returning a single enveloped BarForce for each id. The resulting BarForce will not contain concurrent forces. | - | Results_Engine |
| MaxForces | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce)> | Returns a list of BarForces, one for each component, that contain the maximum value for each components and its concurrent forces. | - | Results_Engine |
| MaxMeshRequiredArea | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[MeshRequiredArea](/api/oM/Analytical/Structure/Results/Mesh/MeshRequiredArea)> | Returns a list of MeshRequiredAreas results, one for each component, that contain the maximum value for each required area and its concurrent required areas. | - | Results_Engine |
| MinBarRequiredArea | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarRequiredArea](/api/oM/Analytical/Structure/Results/Bar Results/BarRequiredArea)> | Returns a list of BarRequiredArea results, one for each component, that contain the minimum value for each required area and its concurrent required areas. | - | Results_Engine |
-| MinEnvelope | [MeshRequiredArea](/api/oM/Analytical/Structure/Results/Mesh/MeshRequiredArea) | Determines the minimum required in each component of the MeshRequiredArea and returns a single MeshRequiredArea object with the enveloped required areas. | - | Results_Engine |
| MinEnvelope | [BarRequiredArea](/api/oM/Analytical/Structure/Results/Bar Results/BarRequiredArea) | Determines the minimum required in each component of the BarRequiredArea and returns a single BarRequiredArea object with the enveloped required areas. | - | Results_Engine |
+| MinEnvelope | [MeshRequiredArea](/api/oM/Analytical/Structure/Results/Mesh/MeshRequiredArea) | Determines the minimum required in each component of the MeshRequiredArea and returns a single MeshRequiredArea object with the enveloped required areas. | - | Results_Engine |
| MinEnvelope | [BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce) | Determines the minimum force in each component of the BarForce and returns a single BarForce object with the enveloped forces. | - | Results_Engine |
| MinEnvelopeByCase | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce)> | Groups the BarForces by case and finds the minimum envelope returning a single enveloped BarForce for each case. The resulting BarForce will not contain concurrent forces. | - | Results_Engine |
| MinEnvelopeByObject | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[BarForce](/api/oM/Analytical/Structure/Results/Bar Results/BarForce)> | Groups the BarForces by id and finds the minimum envelope returning a single enveloped BarForce for each id. The resulting BarForce will not contain concurrent forces. | - | Results_Engine |
@@ -77,8 +86,8 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| ObjectsByType | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[Type](https://learn.microsoft.com/en-us/dotnet/api/System.Type?view=netstandard-2.0), [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)>> | - | - | Reflection_Engine |
| Sum | [Vector](/api/oM/Dimensional/Geometry/Vector/Vector) | Calculates the sum of a collection of vectors by adding all vector components together. | - | Geometry_Engine |
| SumModuleDataValues | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[Module](/api/oM/Analytical/LifeCycleAssessment/Enums/Module), [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0)> | Gets a list of doubles corresponding to the sum of values for each property of the provided ILifeCycleAssessmentPhaseData, i.e. the first value will be the sum of A1 for all the provided ILifeCycleAssessmentPhaseDatas. | - | LifeCycleAssessment_Engine |
-| TotalMaterialBreakdown | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)> | Gets total MaterialResults from list of individual material results grouped by MaterialName, EPDName and Type, and returns a single MaterialResult for each group containing the total evaluated. | - | LifeCycleAssessment_Engine |
| TotalMaterialBreakdown | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)> | Gets total MaterialResults for all provided element results grouped by MaterialName, EPDName and Metric, and returns a single MaterialResult for each group containing the total evaluated. | - | LifeCycleAssessment_Engine |
+| TotalMaterialBreakdown | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[MaterialResult](/api/oM/Analytical/LifeCycleAssessment/Results/MaterialResults/MaterialResult)> | Gets total MaterialResults from list of individual material results grouped by MaterialName, EPDName and Type, and returns a single MaterialResult for each group containing the total evaluated. | - | LifeCycleAssessment_Engine |
## Code and Schema
diff --git a/docs/oM/Framework/Base/Interface/IBHoMObject.md b/docs/oM/Framework/Base/Interface/IBHoMObject.md
index f966dbf3f7..e632ad69a0 100644
--- a/docs/oM/Framework/Base/Interface/IBHoMObject.md
+++ b/docs/oM/Framework/Base/Interface/IBHoMObject.md
@@ -496,6 +496,7 @@ title: IBHoMObject
- BH.oM.Physical.Reinforcement.BS8666.[ShapeCode99](/api/oM/Physical/Physical/Reinforcement/BS8666/ShapeCode99)
- BH.oM.Physical.Materials.[GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff)
- BH.oM.Physical.Materials.[Material](/api/oM/Physical/Physical/Materials/Material)
+ - BH.oM.Physical.Materials.[MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification)
- BH.oM.Physical.Materials.[MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition)
- BH.oM.Physical.Materials.[VolumetricMaterialTakeoff](/api/oM/Physical/Physical/Materials/VolumetricMaterialTakeoff)
- BH.oM.Physical.FramingProperties.[ConstantFramingProperty](/api/oM/Physical/Physical/FramingProperties/ConstantFramingProperty)
diff --git a/docs/oM/Framework/Base/Interface/IFragment.md b/docs/oM/Framework/Base/Interface/IFragment.md
index b4fc8b0ec3..bc07c13b78 100644
--- a/docs/oM/Framework/Base/Interface/IFragment.md
+++ b/docs/oM/Framework/Base/Interface/IFragment.md
@@ -110,6 +110,7 @@ Describes objects that can exist independently or can be attached to other BHoM
- BH.oM.Adapters.MidasCivil.[MidasCivilId](/api/oM/Adapter/Adapters/MidasCivil/Fragments/MidasCivilId)
- BH.oM.Adapters.MidasCivil.[TimeHistorySettings](/api/oM/Adapter/Adapters/MidasCivil/Fragments/TimeHistorySettings)
- BH.oM.Physical.Reinforcement.[ReinforcementFragment](/api/oM/Physical/Physical/Reinforcement/ReinforcementFragment)
+ - BH.oM.Physical.Materials.[MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification)
- BH.oM.Physical.Materials.[VolumetricMaterialTakeoff](/api/oM/Physical/Physical/Materials/VolumetricMaterialTakeoff)
- BH.oM.Adapters.RAM.[RAMDeckData](/api/oM/Adapter/Adapters/RAM/Fragments/RAMDeckData)
- BH.oM.Adapters.RAM.[RAMFrameData](/api/oM/Adapter/Adapters/RAM/Fragments/RAMFrameData)
@@ -162,6 +163,7 @@ Describes objects that can exist independently or can be attached to other BHoM
- BH.oM.Structure.MaterialFragments.[SawnTimber](/api/oM/Analytical/Structure/MaterialFragments/SawnTimber)
- BH.oM.Structure.MaterialFragments.[Steel](/api/oM/Analytical/Structure/MaterialFragments/Steel)
- BH.oM.Structure.MaterialFragments.[Timber](/api/oM/Analytical/Structure/MaterialFragments/Timber)
+ - BH.oM.Structure.Fragments.[ConnectionAllowance](/api/oM/Analytical/Structure/Fragments/ConnectionAllowance)
- BH.oM.Structure.Fragments.[ReinforcementDensity](/api/oM/Analytical/Structure/Fragments/ReinforcementDensity)
- BH.oM.Structure.Fragments.[SectionModifier](/api/oM/Analytical/Structure/Fragments/SectionModifier)
- BH.oM.Structure.Fragments.[SurfacePropertyModifier](/api/oM/Analytical/Structure/Fragments/SurfacePropertyModifier)
diff --git a/docs/oM/Framework/Base/Interface/IImmutable.md b/docs/oM/Framework/Base/Interface/IImmutable.md
index 65370a219f..1e5ffd9196 100644
--- a/docs/oM/Framework/Base/Interface/IImmutable.md
+++ b/docs/oM/Framework/Base/Interface/IImmutable.md
@@ -347,6 +347,7 @@ title: IImmutable
- BH.oM.Structure.Results.[NodeReaction](/api/oM/Analytical/Structure/Results/Nodal Results/NodeReaction)
- BH.oM.Structure.Results.[NodeResult](/api/oM/Analytical/Structure/Results/Nodal Results/NodeResult)
- BH.oM.Structure.Results.[NodeVelocity](/api/oM/Analytical/Structure/Results/Nodal Results/NodeVelocity)
+ - BH.oM.Structure.Design.[DesignResult](/api/oM/Analytical/Structure/Design/DesignResult)
- BH.oM.Test.UnitTests.[TestData](/api/oM/Framework/Test/UnitTests/TestData)
- BH.oM.Test.Results.[InputOutputComparison](/api/oM/Framework/Test/Results/InputOutputComparison)
- BH.oM.Test.Results.[InputOutputComparisonDiffing](/api/oM/Framework/Test/Results/InputOutputComparisonDiffing)
diff --git a/docs/oM/Framework/Base/Interface/IObject.md b/docs/oM/Framework/Base/Interface/IObject.md
index 56eb3c519a..2681f599e2 100644
--- a/docs/oM/Framework/Base/Interface/IObject.md
+++ b/docs/oM/Framework/Base/Interface/IObject.md
@@ -1033,6 +1033,7 @@ title: IObject
- BH.oM.Physical.Reinforcement.BS8666.[ShapeCode99](/api/oM/Physical/Physical/Reinforcement/BS8666/ShapeCode99)
- BH.oM.Physical.Materials.[GeneralMaterialTakeoff](/api/oM/Physical/Physical/Materials/GeneralMaterialTakeoff)
- BH.oM.Physical.Materials.[Material](/api/oM/Physical/Physical/Materials/Material)
+ - BH.oM.Physical.Materials.[MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification)
- BH.oM.Physical.Materials.[MaterialComposition](/api/oM/Physical/Physical/Materials/MaterialComposition)
- BH.oM.Physical.Materials.[TakeoffItem](/api/oM/Physical/Physical/Materials/TakeoffItem)
- BH.oM.Physical.Materials.[VolumetricMaterialTakeoff](/api/oM/Physical/Physical/Materials/VolumetricMaterialTakeoff)
@@ -1539,6 +1540,7 @@ title: IObject
- BH.oM.Structure.Loads.[TimeHistoryLoadcase](/api/oM/Analytical/Structure/Loads/TimeHistoryLoadcase)
- BH.oM.Structure.Loads.[UniformLoadSet](/api/oM/Analytical/Structure/Loads/UniformLoadSet)
- BH.oM.Structure.Loads.[UniformLoadSetRecord](/api/oM/Analytical/Structure/Loads/UniformLoadSetRecord)
+ - BH.oM.Structure.Fragments.[ConnectionAllowance](/api/oM/Analytical/Structure/Fragments/ConnectionAllowance)
- BH.oM.Structure.Fragments.[ReinforcementDensity](/api/oM/Analytical/Structure/Fragments/ReinforcementDensity)
- BH.oM.Structure.Fragments.[SectionModifier](/api/oM/Analytical/Structure/Fragments/SectionModifier)
- BH.oM.Structure.Fragments.[SurfacePropertyModifier](/api/oM/Analytical/Structure/Fragments/SurfacePropertyModifier)
@@ -1557,6 +1559,7 @@ title: IObject
- BH.oM.Structure.Elements.[Stem](/api/oM/Analytical/Structure/Elements/Stem)
- BH.oM.Structure.Elements.[Surface](/api/oM/Analytical/Structure/Elements/Surface)
- BH.oM.Structure.Design.[DesignGroup](/api/oM/Analytical/Structure/Design/DesignGroup)
+ - BH.oM.Structure.Design.[DesignResult](/api/oM/Analytical/Structure/Design/DesignResult)
- BH.oM.Structure.Design.[Span](/api/oM/Analytical/Structure/Design/Span)
- BH.oM.Structure.Design.[StructuralLayout](/api/oM/Analytical/Structure/Design/StructuralLayout)
- BH.oM.Structure.Constraints.[BarRelease](/api/oM/Analytical/Structure/Constraints/BarRelease)
diff --git a/docs/oM/Framework/Units/Enums/WarpingMomentOfInertiaUnit.md b/docs/oM/Framework/Units/Enums/WarpingMomentOfInertiaUnit.md
new file mode 100644
index 0000000000..889d24e2c4
--- /dev/null
+++ b/docs/oM/Framework/Units/Enums/WarpingMomentOfInertiaUnit.md
@@ -0,0 +1,49 @@
+---
+title: WarpingMomentOfInertiaUnit
+---
+
+# BH.oM.Units.**WarpingMomentOfInertiaUnit**
+
+
+
+## Enum values
+
+| Name | Description |
+|-----------------|----------------------------------------------------------------|
+| Undefined | - |
+| MillimeterToTheSixth | - |
+| CentimeterToTheSixth | - |
+| DecimeterToTheSixth | - |
+| MeterToTheSixth | - |
+| InchToTheSixth | - |
+| FootToTheSixth | - |
+
+
+## Code and Schema
+
+### C# implementation
+
+``` C# title="C#"
+public enum WarpingMomentOfInertiaUnit : System.Enum, System.ValueType, System.IComparable, System.ISpanFormattable, System.IFormattable, System.IConvertible
+```
+
+Assembly: Units_oM.dll
+
+The C# enum definition is available on github:
+
+- [WarpingMomentOfInertiaUnit.cs](https://github.com/BHoM/Localisation_Toolkit/blob/develop/Units_oM/Enums\WarpingMomentOfInertiaUnit.cs)
+
+All history and changes of the class can be found by inspection the history.
+### JSON Schema implementation
+
+The object is defined as a JSON schema. You can validate a JSON instance against this schema by reference. To do this, use the schema reference below in a validator like [this one](https://www.jsonschemavalidator.net/).
+
+``` json title="JSON Schema"
+{
+ "$ref" : "https://raw.githubusercontent.com/BHoM/BHoM_JSONSchema/develop/Units_oM/WarpingMomentOfInertiaUnit.json"
+}
+```
+
+The JSON Schema is available on github here:
+
+- [WarpingMomentOfInertiaUnit.json](https://github.com/BHoM/BHoM_JSONSchema/blob/develop/Units_oM/WarpingMomentOfInertiaUnit.json)
diff --git a/docs/oM/Physical/Physical/Materials/IDensityProvider.md b/docs/oM/Physical/Physical/Materials/IDensityProvider.md
index 1dfa00605a..f79b46e438 100644
--- a/docs/oM/Physical/Physical/Materials/IDensityProvider.md
+++ b/docs/oM/Physical/Physical/Materials/IDensityProvider.md
@@ -60,6 +60,15 @@ The following properties are defined on the interface
| Density | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | - | [Density](/api/oM/Dimensional/Quantities/Attributes/Density) [kg/m³] |
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Physical/Physical/Materials/IMaterialProperties.md b/docs/oM/Physical/Physical/Materials/IMaterialProperties.md
index e138c8c09c..893ba6a5f9 100644
--- a/docs/oM/Physical/Physical/Materials/IMaterialProperties.md
+++ b/docs/oM/Physical/Physical/Materials/IMaterialProperties.md
@@ -21,6 +21,7 @@ title: IMaterialProperties
???+ bhom "The following interfaces are implementing this interface:"
- BH.oM.Environment.MaterialFragments.[IEnvironmentMaterial](/api/oM/Analytical/Environment/MaterialFragments/IEnvironmentMaterial)
+ - BH.oM.LifeCycleAssessment.MaterialFragments.[IEnvironmentalFactorsProvider](/api/oM/Analytical/LifeCycleAssessment/MaterialFragments/IEnvironmentalFactorsProvider)
- BH.oM.MEP.System.MaterialFragments.[IInsulationMaterial](/api/oM/Analytical/MEP/System/MaterialFragments/IInsulationMaterial)
- BH.oM.Physical.Materials.[IDensityProvider](/api/oM/Physical/Physical/Materials/IDensityProvider)
- BH.oM.Structure.MaterialFragments.[IIsotropic](/api/oM/Analytical/Structure/MaterialFragments/IIsotropic)
@@ -43,6 +44,7 @@ title: IMaterialProperties
- BH.oM.MEP.System.MaterialFragments.[LiningMaterial](/api/oM/Analytical/MEP/System/MaterialFragments/LiningMaterial)
- BH.oM.MEP.System.MaterialFragments.[PipeMaterial](/api/oM/Analytical/MEP/System/MaterialFragments/PipeMaterial)
- BH.oM.MEP.System.MaterialFragments.[WireMaterial](/api/oM/Analytical/MEP/System/MaterialFragments/WireMaterial)
+ - BH.oM.Physical.Materials.[MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification)
- BH.oM.Structure.MaterialFragments.[Aluminium](/api/oM/Analytical/Structure/MaterialFragments/Aluminium)
- BH.oM.Structure.MaterialFragments.[Concrete](/api/oM/Analytical/Structure/MaterialFragments/Concrete)
- BH.oM.Structure.MaterialFragments.[GenericIsotropicMaterial](/api/oM/Analytical/Structure/MaterialFragments/GenericIsotropicMaterial)
@@ -57,6 +59,15 @@ title: IMaterialProperties
## Properties
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
## Code and Schema
### C# implementation
diff --git a/docs/oM/Physical/Physical/Materials/Material.md b/docs/oM/Physical/Physical/Materials/Material.md
index 0045c50cbc..7970ce7fa3 100644
--- a/docs/oM/Physical/Physical/Materials/Material.md
+++ b/docs/oM/Physical/Physical/Materials/Material.md
@@ -57,6 +57,7 @@ The following properties are defined as extension methods in one of the BHoM_Eng
| InternalPolyline | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Polyline](/api/oM/Dimensional/Geometry/Curve/Polyline)> | Returns the Internal Polyline representation of a physical object (e.g. wall or window). | - | Physical_Engine |
| IsTransparent | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Determines whether a material is transparent or not | - | Environment_Engine |
| IsValidStructural | [bool](https://learn.microsoft.com/en-us/dotnet/api/System.Boolean?view=netstandard-2.0) | Checks if a physical Material contains exactly one structural material fragment, i.e. checks if the Material contains structural data. | - | Structure_Engine |
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
| Polyline | [List](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.List-1?view=netstandard-2.0)<[Polyline](/api/oM/Dimensional/Geometry/Curve/Polyline)> | Returns a Polyline representation of a physical object (e.g. wall or window). | - | Physical_Engine |
| Roughness | [double](https://learn.microsoft.com/en-us/dotnet/api/System.Double?view=netstandard-2.0) | Returns the numerical roughness of a material. | - | Environment_Engine |
| StructuralMaterialFragment | [IMaterialFragment](/api/oM/Analytical/Structure/MaterialFragments/IMaterialFragment) | Checks if the physical Material contains a single structural MaterialFragment, and if it does returns this fragment, containing all relevant structural material data. Returns null if not exactly one structural MaterialFragment is found. | - | Structure_Engine |
diff --git a/docs/oM/Physical/Physical/Materials/MaterialClassification.md b/docs/oM/Physical/Physical/Materials/MaterialClassification.md
new file mode 100644
index 0000000000..b84120bed0
--- /dev/null
+++ b/docs/oM/Physical/Physical/Materials/MaterialClassification.md
@@ -0,0 +1,91 @@
+---
+title: MaterialClassification
+---
+
+# BH.oM.Physical.Materials.**MaterialClassification**
+
+Represents a generic material by its category, type, grade, and constituent. This classification can be used to identify and group materials for various purposes, such as material selection, specification, and analysis.
+The classification can be put on a phsyical Material as a IMaterialProeprties or on a MaterialFragment as a IFragment.
+
+## Class structure
+
+### Implemented interfaces and base types
+
+???+ bhom "The MaterialClassification is inheriting from the following base type(s) and implements the following interfaces:"
+
+ - BH.oM.Base.[BHoMObject](/api/oM/Framework/Base/BHoMObject)
+ - BH.oM.Base.[IBHoMObject](/api/oM/Framework/Base/Interface/IBHoMObject)
+ - BH.oM.Base.[IObject](/api/oM/Framework/Base/Interface/IObject)
+ - BH.oM.Physical.Materials.[IMaterialProperties](/api/oM/Physical/Physical/Materials/IMaterialProperties)
+ - BH.oM.Base.[IFragment](/api/oM/Framework/Base/Interface/IFragment)
+
+
+## Properties
+
+
+
+### Defining properties
+
+The following properties are defined on the class
+
+| Name | Type | Description | Quantity |
+|------------------|------------------|------------------|------------------|
+| Category | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The category of the material, e.g., 'Concrete', 'Steel', 'Wood', etc. | - |
+| Type | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The type of the material, e.g., 'Reinforced', 'Prestressed', etc. | - |
+| Grade | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The grade of the material, e.g., 'C30/37', 'S420', 'F175', etc. | - |
+| Constituent | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | The constituent of the material, e.g., Fly Ash, GGBS, etc. | - |
+
+
+### Inherited properties
+The following properties are inherited from the base class of the object
+
+| Name | Type | Description | Quantity |
+|------------------|------------------|------------------|------------------|
+| BHoM_Guid | [Guid](https://learn.microsoft.com/en-us/dotnet/api/System.Guid?view=netstandard-2.0) | - | - |
+| Name | [string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0) | - | - |
+| Fragments | [FragmentSet](/api/oM/Framework/Base/FragmentSet) | - | - |
+| Tags | [HashSet](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.HashSet-1?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0)> | - | - |
+| CustomData | [Dictionary](https://learn.microsoft.com/en-us/dotnet/api/System.Collections.Generic.Dictionary-2?view=netstandard-2.0)<[string](https://learn.microsoft.com/en-us/dotnet/api/System.String?view=netstandard-2.0), [object](https://learn.microsoft.com/en-us/dotnet/api/System.Object?view=netstandard-2.0)> | - | - |
+
+
+### Derived properties
+
+The following properties are defined as extension methods in one of the BHoM_Engines
+
+| Name | Type | Description | Quantity | Engine |
+|------------------|------------------|------------------|------------------|------------------|
+| MaterialClassification | [MaterialClassification](/api/oM/Physical/Physical/Materials/MaterialClassification) | Evaluates the material classification of a material. | - | Matter_Engine |
+
+
+## Code and Schema
+
+### C# implementation
+
+``` C# title="C#"
+public class MaterialClassification : BH.oM.Base.BHoMObject,
+BH.oM.Base.IBHoMObject,
+BH.oM.Base.IObject,
+BH.oM.Physical.Materials.IMaterialProperties,
+BH.oM.Base.IFragment
+```
+
+Assembly: Physical_oM.dll
+
+The C# class definition is available on github:
+
+- [MaterialClassification.cs](https://github.com/BHoM/BHoM/blob/develop/Physical_oM/Materials\MaterialClassification.cs)
+
+All history and changes of the class can be found by inspection the history.
+### JSON Schema implementation
+
+The object is defined as a JSON schema. You can validate a JSON instance against this schema by reference. To do this, use the schema reference below in a validator like [this one](https://www.jsonschemavalidator.net/).
+
+``` json title="JSON Schema"
+{
+ "$ref" : "https://raw.githubusercontent.com/BHoM/BHoM_JSONSchema/develop/Physical_oM/Materials/MaterialClassification.json"
+}
+```
+
+The JSON Schema is available on github here:
+
+- [MaterialClassification.json](https://github.com/BHoM/BHoM_JSONSchema/blob/develop/Physical_oM/Materials/MaterialClassification.json)