Files
StructureHelper/StructureHelperLogics/Models/Materials/Logics/FunctionMaterialLogic.cs
2025-03-04 14:11:41 +05:00

55 lines
2.2 KiB
C#

using LoaderCalculator.Data.Materials;
using StructureHelperCommon.Infrastructures.Enums;
using StructureHelperCommon.Models.Materials.Libraries;
namespace StructureHelperLogics.Models.Materials.Logics
{
internal class FunctionMaterialLogic : IFunctionMaterialLogic
{
private List<double> parameters;
private IFunctionMaterial functionMaterial;
public IMaterial GetLoaderMaterial(IFunctionMaterial functionMaterial, LimitStates limitState, CalcTerms calcTerm, double factor = 1d)
{
IMaterial material = new Material();
material.InitModulus = functionMaterial.Modulus;
if (calcTerm == CalcTerms.ShortTerm)
{
if (limitState == LimitStates.ULS)
{
functionMaterial.Function = functionMaterial.FunctionStorage.Func_ST_ULS;
}
else if (limitState == LimitStates.SLS)
{
functionMaterial.Function = functionMaterial.FunctionStorage.Func_ST_SLS;
}
else if (limitState == LimitStates.Special)
{
functionMaterial.Function = functionMaterial.FunctionStorage.Func_ST_Special;
}
}
else if (calcTerm == CalcTerms.LongTerm)
{
if (limitState == LimitStates.ULS)
{
functionMaterial.Function = functionMaterial.FunctionStorage.Func_LT_ULS;
}
else if (limitState == LimitStates.SLS)
{
functionMaterial.Function = functionMaterial.FunctionStorage.Func_LT_SLS;
}
else if (limitState == LimitStates.Special)
{
functionMaterial.Function = functionMaterial.FunctionStorage.Func_LT_Special;
}
}
this.functionMaterial = functionMaterial;
material.Diagram = GetStressByStrain;
return material;
}
private double GetStressByStrain(IEnumerable<double> parameters1, double strain)
{
return functionMaterial.Function.GetByX(strain);
}
}
}