Skip to content

Commit

Permalink
Merge pull request #52 from MagmaWorks/task/refactor-standard-materia…
Browse files Browse the repository at this point in the history
…l-to-remove-grade-enum

Avoid Grade Enum
  • Loading branch information
kpne authored Nov 27, 2024
2 parents ffb949b + b5d790e commit 990cc96
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@

namespace MagmaWorks.Taxonomy.Materials
{
public interface IEnConcreteMaterial : IEnMaterial<EnConcreteGrade>
public interface IEnConcreteMaterial : IEnMaterial
{
EnConcreteGrade Grade { get; }
IList<EnConcreteExposureClass> ExposureClasses { get; }
EnCementClass CementClass { get; }
Length MaximumAggregateSize { get; }
Expand Down
5 changes: 2 additions & 3 deletions Materials/IMaterials/StandardMaterials/EN/IENMaterial.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using MagmaWorks.Taxonomy.Standards.Eurocode;
using MagmaWorks.Taxonomy.Standards.Eurocode;

namespace MagmaWorks.Taxonomy.Materials
{
public interface IEnMaterial<Grd> : IStandardMaterial<IEurocode, Grd> where Grd : Enum { }
public interface IEnMaterial : IStandardMaterial<IEurocode> { }
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

namespace MagmaWorks.Taxonomy.Materials
{
public interface IEnRebarMaterial : IEnMaterial<EnRebarGrade>
public interface IEnRebarMaterial : IEnMaterial
{
EnRebarGrade Grade { get; }

/// <summary>
/// γs partial factor for reinforcement in Persistent and Transient design situations
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@

namespace MagmaWorks.Taxonomy.Materials
{
public interface IEnSteelMaterial : IEnMaterial<EnSteelGrade>
public interface IEnSteelMaterial : IEnMaterial
{
EnSteelGrade Grade { get; }
EnExecutionClass ExecutionClassforStaticOrLowSeismicLoading { get; }
EnExecutionClass ExecutionClassforFatigueOrHighSeismicLoading { get; }
/// <summary>
Expand Down
10 changes: 4 additions & 6 deletions Materials/IMaterials/StandardMaterials/IStandardMaterial.cs
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
using System;
using MagmaWorks.Taxonomy.Standards;
using MagmaWorks.Taxonomy.Standards;

namespace MagmaWorks.Taxonomy.Materials
{
public interface IStandardMaterial<Std, Grd> : IMaterial
where Grd : Enum where Std : IStandard
public interface IStandardMaterial<TStandard> : IMaterial
where TStandard : IStandard
{
Std Standard { get; }
Grd Grade { get; }
TStandard Standard { get; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,22 @@ namespace MagmaWorks.Taxonomy.Materials
{
public static partial class AnalysisMaterialFactory
{
public static ILinearElasticMaterial CreateLinearElastic<Std, Grd>(IStandardMaterial<Std, Grd> material)
where Std : IStandard where Grd : Enum
public static ILinearElasticMaterial CreateLinearElastic<Std>(IStandardMaterial<Std> 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");
Expand Down

0 comments on commit 990cc96

Please sign in to comment.