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

57 lines
2.1 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;
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 = ForceTupleService.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);
}
}
}