using LoaderCalculator.Data.Materials; using StructureHelperCommon.Infrastructures.Enums; using StructureHelperCommon.Models.Materials.Libraries; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace StructureHelperLogics.Models.Materials.Logics { internal class FunctionMaterialLogic : IFunctionMaterialLogic { private List parameters; private IFunctionMaterial functionMaterial; public IMaterial GetLoaderMaterial(IFunctionMaterial functionMaterial, LimitStates limitState, CalcTerms calcTerm, double factor = 1d) { IMaterial material = new Material(); material.InitModulus = functionMaterial.Modulus; IFactorLogic factorLogic = new FactorLogic(functionMaterial.SafetyFactors); var factors = factorLogic.GetTotalFactor(limitState, calcTerm); this.functionMaterial = functionMaterial; parameters = new List() { functionMaterial.Modulus, functionMaterial.CompressiveStrength * factors.Compressive * factor, functionMaterial.TensileStrength * factors.Tensile * factor }; material.DiagramParameters = parameters; material.Diagram = GetStressByStrain; return material; } private double GetStressByStrain(IEnumerable parameters1, double strain) { return functionMaterial.Function.GetByX(strain); } } }