From 8c030e22716de1fd4fe193b2ef8d96f8cceb943b Mon Sep 17 00:00:00 2001 From: ear Date: Tue, 27 Aug 2024 18:53:36 +0500 Subject: [PATCH] Tuple cracl calculator was changed --- .../CrackedSectionTriangulationLogic.cs | 14 ++++++---- .../ICrackedSectionTriangulationLogic.cs | 2 +- .../Cracking/ILengthBetweenCracksLogic.cs | 2 ++ .../Cracking/IRebarCalulatorsFactory.cs | 2 +- .../Cracking/IRebarCrackInputDataFactory.cs | 2 +- .../Cracking/ITupleRebarsCrackSolver.cs | 2 +- .../Cracking/LengthBetweenCracksLogicSP63.cs | 4 ++- .../Cracking/RebarCalulatorsFactory.cs | 2 +- .../Cracking/RebarCrackInputDataFactory.cs | 2 +- .../Cracking/TensionRebarAreaByStrainLogic.cs | 2 +- .../Cracking/TupleCrackCalculator.cs | 28 +++++++++++-------- .../Cracking/TupleRebarsCrackSolver.cs | 2 +- 12 files changed, 38 insertions(+), 26 deletions(-) diff --git a/StructureHelperLogics/NdmCalculations/Cracking/CrackedSectionTriangulationLogic.cs b/StructureHelperLogics/NdmCalculations/Cracking/CrackedSectionTriangulationLogic.cs index 90a266c..d25128a 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/CrackedSectionTriangulationLogic.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/CrackedSectionTriangulationLogic.cs @@ -35,6 +35,10 @@ namespace StructureHelperLogics.NdmCalculations.Cracking CalcTerm = shortTerm, TraceLogger = TraceLogger?.GetSimilarTraceLogger(50) }; + } + public CrackedSectionTriangulationLogic() + { + } /// public List GetNdmCollection() @@ -66,14 +70,14 @@ namespace StructureHelperLogics.NdmCalculations.Cracking } /// - public List GetRebarPrimitives() + public List GetRebarPrimitives() { - TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Service); + TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Debug); TraceLogger?.AddMessage(ndmPrimitiveCountMessage, TraceLogStatuses.Debug); - List rebarPrimitives = new(); + List rebarPrimitives = new(); foreach (var item in NdmPrimitives) { - if (item is RebarPrimitive rebar) + if (item is IRebarPrimitive rebar) { TraceLogger?.AddMessage($"Primitive {rebar.Name} is rebar primitive", TraceLogStatuses.Service); rebarPrimitives.Add(rebar); @@ -86,7 +90,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking /// public List GetElasticNdmCollection() { - TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Service); + TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Debug); TraceLogger?.AddMessage(ndmPrimitiveCountMessage, TraceLogStatuses.Debug); triangulateLogic = new TriangulatePrimitiveLogic(new MeshElasticLogic()) { diff --git a/StructureHelperLogics/NdmCalculations/Cracking/ICrackedSectionTriangulationLogic.cs b/StructureHelperLogics/NdmCalculations/Cracking/ICrackedSectionTriangulationLogic.cs index 6511dc3..7ad87ed 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/ICrackedSectionTriangulationLogic.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/ICrackedSectionTriangulationLogic.cs @@ -37,6 +37,6 @@ namespace StructureHelperLogics.NdmCalculations.Cracking /// Return collection of primitives which contain only rebars /// /// - List GetRebarPrimitives(); + List GetRebarPrimitives(); } } diff --git a/StructureHelperLogics/NdmCalculations/Cracking/ILengthBetweenCracksLogic.cs b/StructureHelperLogics/NdmCalculations/Cracking/ILengthBetweenCracksLogic.cs index 93fe5df..b3eec4a 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/ILengthBetweenCracksLogic.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/ILengthBetweenCracksLogic.cs @@ -14,6 +14,8 @@ namespace StructureHelperLogics.NdmCalculations.Cracking /// public interface ILengthBetweenCracksLogic : ILogic { +#error + //to do change to primitive collection since it is required to gain difference rebar strain and concrete strain /// /// Full collection of ndm parts of cross-section /// diff --git a/StructureHelperLogics/NdmCalculations/Cracking/IRebarCalulatorsFactory.cs b/StructureHelperLogics/NdmCalculations/Cracking/IRebarCalulatorsFactory.cs index 737e14c..b3965a4 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/IRebarCalulatorsFactory.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/IRebarCalulatorsFactory.cs @@ -7,7 +7,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking { TupleCrackInputData InputData { get; set; } double LongLength { get; set; } - IEnumerable Rebars { get; set; } + IEnumerable Rebars { get; set; } double ShortLength { get; set; } List GetCalculators(); diff --git a/StructureHelperLogics/NdmCalculations/Cracking/IRebarCrackInputDataFactory.cs b/StructureHelperLogics/NdmCalculations/Cracking/IRebarCrackInputDataFactory.cs index 5e9de6a..4b0045a 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/IRebarCrackInputDataFactory.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/IRebarCrackInputDataFactory.cs @@ -4,7 +4,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking { public interface IRebarCrackInputDataFactory { - RebarPrimitive Rebar { get; set; } + IRebarPrimitive Rebar { get; set; } TupleCrackInputData InputData { get; set; } double LongLength { get; set; } double ShortLength { get; set; } diff --git a/StructureHelperLogics/NdmCalculations/Cracking/ITupleRebarsCrackSolver.cs b/StructureHelperLogics/NdmCalculations/Cracking/ITupleRebarsCrackSolver.cs index 6399d60..e8aac70 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/ITupleRebarsCrackSolver.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/ITupleRebarsCrackSolver.cs @@ -9,7 +9,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking TupleCrackInputData InputData { get; set; } bool IsResultValid { get; } double LongLength { get; set; } - IEnumerable Rebars { get; set; } + IEnumerable Rebars { get; set; } List Result { get; } double ShortLength { get; set; } diff --git a/StructureHelperLogics/NdmCalculations/Cracking/LengthBetweenCracksLogicSP63.cs b/StructureHelperLogics/NdmCalculations/Cracking/LengthBetweenCracksLogicSP63.cs index 99d185f..f57433d 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/LengthBetweenCracksLogicSP63.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/LengthBetweenCracksLogicSP63.cs @@ -35,7 +35,9 @@ namespace StructureHelperLogics.NdmCalculations.Cracking /// public IShiftTraceLogger? TraceLogger { get; set; } - public LengthBetweenCracksLogicSP63(IAverageDiameterLogic diameterLogic, ITensileConcreteAreaLogic concreteAreaLogic, ITensionRebarAreaLogic rebarAreaLogic) + public LengthBetweenCracksLogicSP63(IAverageDiameterLogic diameterLogic, + ITensileConcreteAreaLogic concreteAreaLogic, + ITensionRebarAreaLogic rebarAreaLogic) { this.diameterLogic = diameterLogic; this.concreteAreaLogic = concreteAreaLogic; diff --git a/StructureHelperLogics/NdmCalculations/Cracking/RebarCalulatorsFactory.cs b/StructureHelperLogics/NdmCalculations/Cracking/RebarCalulatorsFactory.cs index c91438b..826ee86 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/RebarCalulatorsFactory.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/RebarCalulatorsFactory.cs @@ -12,7 +12,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking { private IRebarCrackInputDataFactory inputFactory; - public IEnumerable Rebars { get; set; } + public IEnumerable Rebars { get; set; } public TupleCrackInputData InputData { get; set; } public double LongLength { get; set; } public double ShortLength { get; set; } diff --git a/StructureHelperLogics/NdmCalculations/Cracking/RebarCrackInputDataFactory.cs b/StructureHelperLogics/NdmCalculations/Cracking/RebarCrackInputDataFactory.cs index 58cd808..753f9f0 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/RebarCrackInputDataFactory.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/RebarCrackInputDataFactory.cs @@ -31,7 +31,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking } - public RebarPrimitive Rebar { get; set; } + public IRebarPrimitive Rebar { get; set; } public TupleCrackInputData InputData { get; set; } public double LongLength { get; set; } public double ShortLength { get; set; } diff --git a/StructureHelperLogics/NdmCalculations/Cracking/TensionRebarAreaByStrainLogic.cs b/StructureHelperLogics/NdmCalculations/Cracking/TensionRebarAreaByStrainLogic.cs index 8303141..c6df88d 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/TensionRebarAreaByStrainLogic.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/TensionRebarAreaByStrainLogic.cs @@ -29,7 +29,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking } public double GetTensionRebarArea() { - TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Service); + TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Debug); TraceLogger?.AddMessage("Method of obtaining of summary area of rebars in tension based on areas which are proportional by maximum strain"); var rebars = Rebars .Where(x => stressLogic.GetSectionStrain(StrainMatrix, x) > 0d); diff --git a/StructureHelperLogics/NdmCalculations/Cracking/TupleCrackCalculator.cs b/StructureHelperLogics/NdmCalculations/Cracking/TupleCrackCalculator.cs index 8511f3e..fdc4567 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/TupleCrackCalculator.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/TupleCrackCalculator.cs @@ -22,10 +22,11 @@ namespace StructureHelperLogics.NdmCalculations.Cracking { private const CalcTerms crackingTerm = CalcTerms.ShortTerm; private const LimitStates crackingLimitState = LimitStates.SLS; - private static readonly ILengthBetweenCracksLogic lengthLogic = new LengthBetweenCracksLogicSP63(); + private ILengthBetweenCracksLogic lengthLogic; private TupleCrackResult result; private ICrackedSectionTriangulationLogic triangulationLogic; - private List? rebarPrimitives; + private ITupleRebarsCrackSolver solver; + private List? rebarPrimitives; private IEnumerable crackableNdms; private IEnumerable crackedNdms; private IEnumerable elasticNdms; @@ -42,12 +43,19 @@ namespace StructureHelperLogics.NdmCalculations.Cracking public IShiftTraceLogger? TraceLogger { get; set; } - public TupleCrackCalculator(ICheckInputDataLogic checkInputDataLogic) + public TupleCrackCalculator(ICheckInputDataLogic checkInputDataLogic, + ILengthBetweenCracksLogic lengthLogic, ICrackedSectionTriangulationLogic triangulationLogic, ITupleRebarsCrackSolver solver) { this.checkInputDataLogic = checkInputDataLogic; + this.lengthLogic = lengthLogic; + this.triangulationLogic = triangulationLogic; + this.solver = solver; } - public TupleCrackCalculator() : this (new CheckTupleCalculatorInputDataLogic()) + public TupleCrackCalculator() : this (new CheckTupleCalculatorInputDataLogic(), + new LengthBetweenCracksLogicSP63(), + new CrackedSectionTriangulationLogic(), + new TupleRebarsCrackSolver()) { } @@ -134,7 +142,6 @@ namespace StructureHelperLogics.NdmCalculations.Cracking private void SolveRebarResult() { result.RebarResults.Clear(); - ITupleRebarsCrackSolver solver = new TupleRebarsCrackSolver(); solver.Rebars = rebarPrimitives; solver.InputData = InputData; solver.LongLength = longLength; @@ -177,13 +184,10 @@ namespace StructureHelperLogics.NdmCalculations.Cracking private double GetLengthBetweenCracks(StrainTuple strainTuple) { - var logic = new LengthBetweenCracksLogicSP63() - { - NdmCollection = elasticNdms, - TraceLogger = TraceLogger - }; - logic.StrainMatrix = TupleConverter.ConvertToLoaderStrainMatrix(strainTuple); - return logic.GetLength(); + lengthLogic.NdmCollection = elasticNdms; + lengthLogic.TraceLogger = TraceLogger; + lengthLogic.StrainMatrix = TupleConverter.ConvertToLoaderStrainMatrix(strainTuple); + return lengthLogic.GetLength(); } private void Triangulate() diff --git a/StructureHelperLogics/NdmCalculations/Cracking/TupleRebarsCrackSolver.cs b/StructureHelperLogics/NdmCalculations/Cracking/TupleRebarsCrackSolver.cs index aaba861..53d3c35 100644 --- a/StructureHelperLogics/NdmCalculations/Cracking/TupleRebarsCrackSolver.cs +++ b/StructureHelperLogics/NdmCalculations/Cracking/TupleRebarsCrackSolver.cs @@ -14,7 +14,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking { private IRebarCalulatorsFactory calculatorsFactory; - public IEnumerable Rebars { get; set; } + public IEnumerable Rebars { get; set; } public TupleCrackInputData InputData { get; set; } public double LongLength { get; set; } public double ShortLength { get; set; }