Files
StructureHelper/StructureHelperLogics/Models/BeamShears/Logics/ShearForceLogic.cs
2025-11-29 21:43:00 +05:00

59 lines
2.3 KiB
C#

using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models.Forces.Logics;
using StructureHelperCommon.Models.Loggers;
using StructureHelperCommon.Services.Forces;
namespace StructureHelperLogics.Models.BeamShears
{
public class ShearForceLogic : IShearForceLogic
{
private IGetLoadFactor getFactorLogic;
private IGetDirectShearForceLogic getDirectShearForceLogic;
private IForceTupleServiceLogic forceTupleServiceLogic;
private IForceTupleServiceLogic ForceTupleServiceLogic => forceTupleServiceLogic ??= new ForceTupleServiceLogic();
public IShearForceLogicInputData InputData { get;}
public IShiftTraceLogger? TraceLogger { get; set; }
public ShearForceLogic(IShearForceLogicInputData inputData, IShiftTraceLogger? traceLogger)
{
InputData = inputData;
TraceLogger = traceLogger;
}
public ShearForceLogic(
IShearForceLogicInputData inputData,
IShiftTraceLogger? traceLogger,
IGetLoadFactor getFactorLogic,
IGetDirectShearForceLogic getDirectShearForceLogic)
{
InputData = inputData;
TraceLogger = traceLogger;
this.getFactorLogic = getFactorLogic;
this.getDirectShearForceLogic = getDirectShearForceLogic;
}
public IForceTuple GetShearForce()
{
TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Service);
InitializeStrategies();
double factor = getFactorLogic.GetFactor();
IForceTuple directShearForce = getDirectShearForceLogic.CalculateShearForceTuple();
IForceTuple shearForce = ForceTupleServiceLogic.MultiplyTupleByFactor(directShearForce,factor);
return shearForce;
}
private void InitializeStrategies()
{
getFactorLogic ??= new GetFactorByFactoredCombinationProperty()
{
CombinationProperty = InputData.AxisAction.SupportForce.CombinationProperty,
LimitState = InputData.LimitState,
CalcTerm = InputData.CalcTerm
};
//getDirectShearForceLogic ??= new GetDirectShearForceLogic(InputData.AxisAction, InputData.InclinedSection, TraceLogger);
}
}
}