Files
StructureHelper/StructureHelperLogics/Models/BeamShears/Logics/ShearForceLogic.cs
2025-03-22 15:02:20 +05:00

56 lines
2.0 KiB
C#

using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Forces;
using StructureHelperCommon.Models.Forces.Logics;
using StructureHelperCommon.Models.Loggers;
namespace StructureHelperLogics.Models.BeamShears
{
public class ShearForceLogic : IShearForceLogic
{
private IGetLoadFactor getFactorLogic;
private IGetDirectShearForceLogic getDirectShearForceLogic;
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 double GetShearForce()
{
TraceLogger?.AddMessage(LoggerStrings.LogicType(this), TraceLogStatuses.Service);
InitializeStrategies();
double factor = getFactorLogic.GetFactor();
double directShearForce = getDirectShearForceLogic.CalculateShearForce();
double shearForce = directShearForce * factor;
return shearForce;
}
private void InitializeStrategies()
{
getFactorLogic ??= new GetFactorByFactoredCombinationProperty()
{
CombinationProperty = InputData.AxisAction.FactoredCombinationProperty,
LimitState = InputData.LimitState,
CalcTerm = InputData.CalcTerm
};
getDirectShearForceLogic ??= new GetDirectShearForceLogic(InputData.AxisAction, InputData.InclinedSection, TraceLogger);
}
}
}