Files
StructureHelper/StructureHelperLogics/NdmCalculations/Cracking/RebarStressResultLogic.cs
2024-08-20 20:38:01 +05:00

54 lines
2.1 KiB
C#

using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Loggers;
using StructureHelperCommon.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using StructureHelperLogics.NdmCalculations.Primitives;
using StructureHelperCommon.Infrastructures.Interfaces;
namespace StructureHelperLogics.NdmCalculations.Cracking
{
public class RebarStressResultLogic : IRebarStressResultLogic
{
private IRebarStressCalculator rebarStressCalculator;
public IRebarPrimitive RebarPrimitive { get; set; }
public IRebarCrackInputData RebarCrackInputData { get; set; }
public IShiftTraceLogger? TraceLogger { get; set; }
public RebarStressResultLogic(IRebarStressCalculator rebarStressCalculator, IShiftTraceLogger? traceLogger)
{
this.rebarStressCalculator = rebarStressCalculator;
this.TraceLogger = traceLogger;
}
public RebarStressResultLogic() : this(new RebarStressCalculator(), null)
{
}
public IRebarStressResult GetRebarStressResult()
{
IRebarStressCalculatorInputData calculatorInputData = new RebarStressCalculatorInputData()
{
ForceTuple = RebarCrackInputData.ForceTuple,
NdmCollection = RebarCrackInputData.CrackedNdmCollection,
RebarPrimitive = RebarPrimitive,
};
rebarStressCalculator.InputData = calculatorInputData;
rebarStressCalculator.Run();
var result = rebarStressCalculator.Result as RebarStressResult;
if (result.IsValid == false)
{
string errorString = LoggerStrings.CalculationError + result.Description;
TraceLogger?.AddMessage($"Rebar name: {RebarPrimitive.Name}\n" + errorString, TraceLogStatuses.Error);
throw new StructureHelperException(errorString);
}
return result;
}
}
}