39 lines
1.5 KiB
C#
39 lines
1.5 KiB
C#
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<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;
|
|
IFactorLogic factorLogic = new FactorLogic(functionMaterial.SafetyFactors);
|
|
var factors = factorLogic.GetTotalFactor(limitState, calcTerm);
|
|
this.functionMaterial = functionMaterial;
|
|
parameters = new List<double>()
|
|
{
|
|
functionMaterial.Modulus,
|
|
functionMaterial.CompressiveStrength * factors.Compressive * factor,
|
|
functionMaterial.TensileStrength * factors.Tensile * factor
|
|
};
|
|
material.DiagramParameters = parameters;
|
|
material.Diagram = GetStressByStrain;
|
|
return material;
|
|
}
|
|
private double GetStressByStrain(IEnumerable<double> parameters1, double strain)
|
|
{
|
|
return functionMaterial.Function.GetByX(strain);
|
|
}
|
|
}
|
|
}
|