From b5d790ed2ec60ac9dd488334595610a366dea979 Mon Sep 17 00:00:00 2001 From: kpne Date: Tue, 26 Nov 2024 14:58:54 +0100 Subject: [PATCH] Move Grade down the hierachy to avoid inheriting from Enum --- .../EN/IENConcreteMaterial.cs | 3 ++- .../StandardMaterials/EN/IENMaterial.cs | 5 ++--- .../StandardMaterials/EN/IENRebarMaterial.cs | 4 +++- .../StandardMaterials/EN/IENSteelMaterial.cs | 3 ++- .../StandardMaterials/IStandardMaterial.cs | 10 ++++------ .../LinearElasticMaterialFactory.cs | 18 +++++++++--------- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/Materials/IMaterials/StandardMaterials/EN/IENConcreteMaterial.cs b/Materials/IMaterials/StandardMaterials/EN/IENConcreteMaterial.cs index a6c91e2..ce01cfc 100644 --- a/Materials/IMaterials/StandardMaterials/EN/IENConcreteMaterial.cs +++ b/Materials/IMaterials/StandardMaterials/EN/IENConcreteMaterial.cs @@ -3,8 +3,9 @@ namespace MagmaWorks.Taxonomy.Materials { - public interface IEnConcreteMaterial : IEnMaterial + public interface IEnConcreteMaterial : IEnMaterial { + EnConcreteGrade Grade { get; } IList ExposureClasses { get; } EnCementClass CementClass { get; } Length MaximumAggregateSize { get; } diff --git a/Materials/IMaterials/StandardMaterials/EN/IENMaterial.cs b/Materials/IMaterials/StandardMaterials/EN/IENMaterial.cs index 39e1c2f..e9673aa 100644 --- a/Materials/IMaterials/StandardMaterials/EN/IENMaterial.cs +++ b/Materials/IMaterials/StandardMaterials/EN/IENMaterial.cs @@ -1,7 +1,6 @@ -using System; -using MagmaWorks.Taxonomy.Standards.Eurocode; +using MagmaWorks.Taxonomy.Standards.Eurocode; namespace MagmaWorks.Taxonomy.Materials { - public interface IEnMaterial : IStandardMaterial where Grd : Enum { } + public interface IEnMaterial : IStandardMaterial { } } diff --git a/Materials/IMaterials/StandardMaterials/EN/IENRebarMaterial.cs b/Materials/IMaterials/StandardMaterials/EN/IENRebarMaterial.cs index e9ec0db..ce41b0c 100644 --- a/Materials/IMaterials/StandardMaterials/EN/IENRebarMaterial.cs +++ b/Materials/IMaterials/StandardMaterials/EN/IENRebarMaterial.cs @@ -2,8 +2,10 @@ namespace MagmaWorks.Taxonomy.Materials { - public interface IEnRebarMaterial : IEnMaterial + public interface IEnRebarMaterial : IEnMaterial { + EnRebarGrade Grade { get; } + /// /// γs partial factor for reinforcement in Persistent and Transient design situations /// diff --git a/Materials/IMaterials/StandardMaterials/EN/IENSteelMaterial.cs b/Materials/IMaterials/StandardMaterials/EN/IENSteelMaterial.cs index 4bba9f9..0faabd3 100644 --- a/Materials/IMaterials/StandardMaterials/EN/IENSteelMaterial.cs +++ b/Materials/IMaterials/StandardMaterials/EN/IENSteelMaterial.cs @@ -3,8 +3,9 @@ namespace MagmaWorks.Taxonomy.Materials { - public interface IEnSteelMaterial : IEnMaterial + public interface IEnSteelMaterial : IEnMaterial { + EnSteelGrade Grade { get; } EnExecutionClass ExecutionClassforStaticOrLowSeismicLoading { get; } EnExecutionClass ExecutionClassforFatigueOrHighSeismicLoading { get; } /// diff --git a/Materials/IMaterials/StandardMaterials/IStandardMaterial.cs b/Materials/IMaterials/StandardMaterials/IStandardMaterial.cs index 46064a4..8c51a90 100644 --- a/Materials/IMaterials/StandardMaterials/IStandardMaterial.cs +++ b/Materials/IMaterials/StandardMaterials/IStandardMaterial.cs @@ -1,12 +1,10 @@ -using System; -using MagmaWorks.Taxonomy.Standards; +using MagmaWorks.Taxonomy.Standards; namespace MagmaWorks.Taxonomy.Materials { - public interface IStandardMaterial : IMaterial - where Grd : Enum where Std : IStandard + public interface IStandardMaterial : IMaterial + where TStandard : IStandard { - Std Standard { get; } - Grd Grade { get; } + TStandard Standard { get; } } } diff --git a/Materials/Materials/AnalysisMaterials/AnalysisMaterialFactory/LinearElasticMaterialFactory.cs b/Materials/Materials/AnalysisMaterials/AnalysisMaterialFactory/LinearElasticMaterialFactory.cs index 8bf377d..581af31 100644 --- a/Materials/Materials/AnalysisMaterials/AnalysisMaterialFactory/LinearElasticMaterialFactory.cs +++ b/Materials/Materials/AnalysisMaterials/AnalysisMaterialFactory/LinearElasticMaterialFactory.cs @@ -7,22 +7,22 @@ namespace MagmaWorks.Taxonomy.Materials { public static partial class AnalysisMaterialFactory { - public static ILinearElasticMaterial CreateLinearElastic(IStandardMaterial material) - where Std : IStandard where Grd : Enum + public static ILinearElasticMaterial CreateLinearElastic(IStandardMaterial material) + where Std : IStandard { switch (material.Standard) { case IEurocode: - switch (material.Type) + switch (material) { - case MaterialType.Concrete: - return EnConcreteFactory.CreateLinearElastic(material.Grade); + case IEnConcreteMaterial enConcrete: + return EnConcreteFactory.CreateLinearElastic(enConcrete.Grade); - case MaterialType.Reinforcement: - return EnRebarFactory.CreateLinearElastic(material.Grade); + case IEnRebarMaterial enRebar: + return EnRebarFactory.CreateLinearElastic(enRebar.Grade); - case MaterialType.Steel: - return EnSteelFactory.CreateLinearElastic(material.Grade); + case IEnSteelMaterial enSteel: + return EnSteelFactory.CreateLinearElastic(enSteel.Grade); default: throw new ArgumentException($"{material.Type} material type not implemented for Eurocode");