From e75521dc20dc2dff821ea9b33d092fb3578650e9 Mon Sep 17 00:00:00 2001 From: Evgeny Redikultsev Date: Sun, 5 May 2024 16:39:02 +0500 Subject: [PATCH] CrackedCalculator and TriangulationLogic were changed --- .../CalculatorsViews/CrackDiagramLogic.cs | 11 +- .../ForceResultLogic/ShowCrackResultLogic.cs | 9 +- .../ForceResultLogic/ShowCrackWidthLogic.cs | 4 +- .../Windows/MainWindow/CrossSectionModel.cs | 12 +- .../Windows/MainWindow/CrossSectionView.xaml | 4 +- .../MainWindow/CrossSectionViewModel.cs | 10 +- .../AnalysisViewModelLogic.cs | 42 ++++--- .../Interfaces/IHasForceCombinations.cs | 3 + .../Models/Loggers/LoggerStrings.cs | 1 + .../CrossSections/CalculatorLogic.cs | 18 ++- .../CrossSections/RCs/SectionTemplate.cs | 9 ++ .../Analyses/ByForces/ForceCalculator.cs | 20 +++- .../LimitCurve/LimitCurvesCalculator.cs | 11 +- .../Buckling/ConcreteBucklingCalculator.cs | 10 +- .../Cracking/CrackCalculator.cs | 93 ++++++++++++++++ .../Cracking/CrackCalculatorUpdateStrategy.cs | 24 ++++ .../Cracking/CrackInputData.cs | 25 +++++ .../Cracking/CrackInputDataUpdateStrategy.cs | 23 ++++ .../NdmCalculations/Cracking/CrackResult.cs | 20 ++++ .../Cracking/GetTupleInputDatasLogic.cs | 101 +++++++++++++++++ .../Cracking/IGetTupleInputDatasLogic.cs | 15 +++ ...eCalculator.cs => RebarCrackCalculator.cs} | 4 +- ...torInputData.cs => RebarCrackInputData.cs} | 2 +- ...alculatorResult.cs => RebarCrackResult.cs} | 2 +- ...hCalculator.cs => TupleCrackCalculator.cs} | 55 ++++++--- ...torInputData.cs => TupleCrackInputData.cs} | 9 +- ...alculatorResult.cs => TupleCrackResult.cs} | 8 +- .../Primitives/IHasPrimitives.cs | 3 + .../NdmCalculations/CalculationService.cs | 9 +- .../ITriangulatePrimitiveLogic.cs | 16 +++ .../NdmPrimitives/NdmPrimitivesService.cs | 56 ---------- .../TriangulatePrimitiveLogic.cs | 105 ++++++++++++++++++ .../CrackCalculatorTest.cs | 10 +- .../RectangleTriangulationTest.cs | 26 ++++- 34 files changed, 645 insertions(+), 125 deletions(-) create mode 100644 StructureHelperLogics/NdmCalculations/Cracking/CrackCalculator.cs create mode 100644 StructureHelperLogics/NdmCalculations/Cracking/CrackCalculatorUpdateStrategy.cs create mode 100644 StructureHelperLogics/NdmCalculations/Cracking/CrackInputData.cs create mode 100644 StructureHelperLogics/NdmCalculations/Cracking/CrackInputDataUpdateStrategy.cs create mode 100644 StructureHelperLogics/NdmCalculations/Cracking/CrackResult.cs create mode 100644 StructureHelperLogics/NdmCalculations/Cracking/GetTupleInputDatasLogic.cs create mode 100644 StructureHelperLogics/NdmCalculations/Cracking/IGetTupleInputDatasLogic.cs rename StructureHelperLogics/NdmCalculations/Cracking/{CrackWidthSimpleCalculator.cs => RebarCrackCalculator.cs} (93%) rename StructureHelperLogics/NdmCalculations/Cracking/{CrackWidthSimpleCalculatorInputData.cs => RebarCrackInputData.cs} (87%) rename StructureHelperLogics/NdmCalculations/Cracking/{CrackWidthSimpleCalculatorResult.cs => RebarCrackResult.cs} (90%) rename StructureHelperLogics/NdmCalculations/Cracking/{CrackWidthCalculator.cs => TupleCrackCalculator.cs} (68%) rename StructureHelperLogics/NdmCalculations/Cracking/{CrackWidthCalculatorInputData.cs => TupleCrackInputData.cs} (59%) rename StructureHelperLogics/NdmCalculations/Cracking/{CrackWidthCalculatorResult.cs => TupleCrackResult.cs} (75%) create mode 100644 StructureHelperLogics/Services/NdmPrimitives/ITriangulatePrimitiveLogic.cs delete mode 100644 StructureHelperLogics/Services/NdmPrimitives/NdmPrimitivesService.cs create mode 100644 StructureHelperLogics/Services/NdmPrimitives/TriangulatePrimitiveLogic.cs diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/CrackDiagramLogic.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/CrackDiagramLogic.cs index b514987..ea03e2b 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/CrackDiagramLogic.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/CrackDiagramLogic.cs @@ -22,6 +22,8 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews internal class CrackDiagramLogic : ILongProcessLogic { static readonly CrackForceCalculator calculator = new(); + private ITriangulatePrimitiveLogic triangulateLogic; + private List ValidTupleList { get; set; } ArrayParameter arrayParameter; private IEnumerable TupleList { get; set; } @@ -102,7 +104,14 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews calculator.EndTuple = validTupleList[i].DesignForceTuple.ForceTuple; var limitState = validTupleList[i].DesignForceTuple.LimitState; var calcTerm = validTupleList[i].DesignForceTuple.CalcTerm; - var ndms = NdmPrimitivesService.GetNdms(ndmPrimitives, limitState, calcTerm); + triangulateLogic = new TriangulatePrimitiveLogic() + { + Primitives = ndmPrimitives, + LimitState = limitState, + CalcTerm = calcTerm, + TraceLogger = TraceLogger + }; + var ndms = triangulateLogic.GetNdms(); calculator.NdmCollection = ndms; calculator.Run(); var result = (CrackForceResult)calculator.Result; diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/ShowCrackResultLogic.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/ShowCrackResultLogic.cs index 04445c5..f03902b 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/ShowCrackResultLogic.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/ShowCrackResultLogic.cs @@ -18,6 +18,7 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu internal class ShowCrackResultLogic { private CrackForceCalculator calculator; + private ITriangulatePrimitiveLogic triangulateLogic; public static GeometryNames GeometryNames => ProgramSetting.GeometryNames; public LimitStates LimitState { get; set; } @@ -42,7 +43,13 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu calculator.TraceLogger = new ShiftTraceLogger(); calculator.StartTuple = startDesignTuple; calculator.EndTuple = finishDesignTuple; - calculator.NdmCollection = NdmPrimitivesService.GetNdms(ndmPrimitives, LimitState, CalcTerm); + triangulateLogic = new TriangulatePrimitiveLogic() + { + Primitives = ndmPrimitives, + LimitState = LimitState, + CalcTerm = CalcTerm + }; + calculator.NdmCollection = triangulateLogic.GetNdms(); calculator.Run(); var result = (CrackForceResult)calculator.Result; if (result.IsValid) diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/ShowCrackWidthLogic.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/ShowCrackWidthLogic.cs index 0a69aed..19c324a 100644 --- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/ShowCrackWidthLogic.cs +++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForceResultLogic/ShowCrackWidthLogic.cs @@ -19,14 +19,14 @@ namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalcu internal void Show() { - var inputData = new CrackWidthCalculatorInputData() + var inputData = new TupleCrackInputData() { //LimitState = LimitState, //CalcTerm = CalcTerm, LongTermTuple = ForceTuple, NdmPrimitives = ndmPrimitives }; - var calculator = new CrackWidthCalculator() { InputData = inputData }; + var calculator = new TupleCrackCalculator() { InputData = inputData }; calculator.Run(); var result = calculator.Result; diff --git a/StructureHelper/Windows/MainWindow/CrossSectionModel.cs b/StructureHelper/Windows/MainWindow/CrossSectionModel.cs index 95488a7..874a705 100644 --- a/StructureHelper/Windows/MainWindow/CrossSectionModel.cs +++ b/StructureHelper/Windows/MainWindow/CrossSectionModel.cs @@ -1,4 +1,5 @@ using LoaderCalculator; +using LoaderCalculator.Data.Materials.MaterialBuilders; using LoaderCalculator.Data.Matrix; using LoaderCalculator.Data.Ndms; using LoaderCalculator.Data.ResultData; @@ -9,6 +10,7 @@ using StructureHelper.Services.Primitives; using StructureHelper.UnitSystem; using StructureHelper.UnitSystem.Systems; using StructureHelperCommon.Infrastructures.Enums; +using StructureHelperCommon.Models; using StructureHelperCommon.Services.Units; using StructureHelperLogics.Models.Calculations.CalculationProperties; using StructureHelperLogics.Models.CrossSections; @@ -26,6 +28,8 @@ namespace StructureHelper.Windows.MainWindow { public class CrossSectionModel { + private ITriangulatePrimitiveLogic triangulateLogic; + public ICrossSection Section { get; private set; } private IPrimitiveRepository primitiveRepository; public IHeadMaterialRepository HeadMaterialRepository { get; } @@ -52,7 +56,13 @@ namespace StructureHelper.Windows.MainWindow public IEnumerable GetNdms(ICalculationProperty calculationProperty) { var ndmPrimitives = Section.SectionRepository.Primitives; - return NdmPrimitivesService.GetNdms(ndmPrimitives, calculationProperty.LimitState, calculationProperty.CalcTerm); + triangulateLogic = new TriangulatePrimitiveLogic() + { + Primitives = ndmPrimitives, + LimitState = calculationProperty.LimitState, + CalcTerm = calculationProperty.CalcTerm + }; + return triangulateLogic.GetNdms(); ////Настройки триангуляции, пока опции могут быть только такие //ITriangulationOptions options = new TriangulationOptions { LimiteState = calculationProperty.LimitState, CalcTerm = calculationProperty.CalcTerm }; diff --git a/StructureHelper/Windows/MainWindow/CrossSectionView.xaml b/StructureHelper/Windows/MainWindow/CrossSectionView.xaml index 4d78355..ac8b107 100644 --- a/StructureHelper/Windows/MainWindow/CrossSectionView.xaml +++ b/StructureHelper/Windows/MainWindow/CrossSectionView.xaml @@ -201,7 +201,7 @@ -