Add curvature calculator DTOs

This commit is contained in:
Evgeny Redikultsev
2025-11-23 17:19:36 +05:00
parent 7ab4909c67
commit 5daa32a954
77 changed files with 1415 additions and 165 deletions

View File

@@ -28,7 +28,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
this.checkPrimitiveCollectionLogic = checkPrimitiveCollectionLogic;
}
public CheckCrackCalculatorInputDataLogic() : this (new CheckPrimitiveCollectionLogic())
public CheckCrackCalculatorInputDataLogic() : this (new HasPrimitivesCheckLogic())
{
}

View File

@@ -199,7 +199,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
forceTupleCalculator.Run();
var result = forceTupleCalculator.Result as IForceTupleCalculatorResult;
var loaderStrainMatrix = result.LoaderResults.ForceStrainPair.StrainMatrix;
StrainTuple strainTuple = TupleConverter.ConvertToStrainTuple(loaderStrainMatrix);
StrainTuple strainTuple = ForceTupleConverter.ConvertToStrainTuple(loaderStrainMatrix);
return strainTuple;
}
private bool CheckInputData()

View File

@@ -15,7 +15,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
/// <inheritdoc/>
public INdm ConcreteNdm { get; set; }
/// <inheritdoc/>
public IForceTuple Tuple { get; set; }
public IForceTuple ForceTuple { get; set; }
/// <inheritdoc/>
public IEnumerable<INdm> CheckedNdmCollection { get; set; }
/// <inheritdoc/>

View File

@@ -0,0 +1,13 @@
using StructureHelperCommon.Infrastructures.Interfaces;
namespace StructureHelperLogics.NdmCalculations.Cracking
{
public interface IIsSectionCracked : ILogic
{
/// <summary>
/// Returns result of checking of cracks appearence
/// </summary>
/// <returns>True if Checked collectition contains cracked elements</returns>
bool IsSectionCracked();
}
}

View File

@@ -1,23 +1,17 @@
using LoaderCalculator.Data.Ndms;
using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models.Forces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Cracking
{
/// <summary>
/// Logic for checking collection of ndms for appearance of crack
/// </summary>
public interface IIsSectionCrackedByForceLogic : ILogic
public interface IIsSectionCrackedByForceLogic : IIsSectionCracked
{
/// <summary>
/// Force tuple for checking of cracks appearence
/// </summary>
IForceTuple Tuple { get; set; }
IForceTuple ForceTuple { get; set; }
/// <summary>
/// Collection of ndms which is checking for cracking
/// </summary>
@@ -26,10 +20,5 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
/// Full ndms collection of cross-section
/// </summary>
IEnumerable<INdm> SectionNdmCollection { get; set; }
/// <summary>
/// Returns result of checking of cracks appearence
/// </summary>
/// <returns>True if Checked collectition contains cracked elements</returns>
bool IsSectionCracked();
}
}

View File

@@ -32,7 +32,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
{
IsSectionCrackedByForceLogic.TraceLogger ??= TraceLogger?.GetSimilarTraceLogger(50);
var actualTuple = ForceTupleService.InterpolateTuples(StartTuple, EndTuple, factor);
IsSectionCrackedByForceLogic.Tuple = actualTuple;
IsSectionCrackedByForceLogic.ForceTuple = actualTuple;
return IsSectionCrackedByForceLogic.IsSectionCracked();
}
}

View File

@@ -14,33 +14,22 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
{
static readonly IStressLogic stressLogic = new StressLogic();
/// <inheritdoc/>
public IForceTuple Tuple { get; set; }
public IForceTuple ForceTuple { get; set; }
public IEnumerable<INdm> CheckedNdmCollection { get; set; }
public IEnumerable<INdm> SectionNdmCollection { get; set; }
public Accuracy Accuracy { get; set; }
public Accuracy Accuracy { get; set; } = new Accuracy() { IterationAccuracy = 0.001d, MaxIterationCount = 10000};
public IShiftTraceLogger? TraceLogger { get; set; }
public IsSectionCrackedByForceLogic()
{
if (Accuracy is null)
{
Accuracy = new Accuracy()
{
IterationAccuracy = 0.001d,
MaxIterationCount = 10000
};
}
}
public bool IsSectionCracked()
{
TraceLogger?.AddMessage($"Calculator type: {GetType()}", TraceLogStatuses.Service);
TraceLogger?.AddMessage($"It is assumed, that cracks appearence if: cross-section has elementary parts of concrete and strain of concrete greater than limit value");
TraceLogger?.AddMessage($"Force combination for cracking check");
TraceLogger?.AddEntry(new TraceTablesFactory().GetByForceTuple(Tuple));
TraceLogger?.AddEntry(new TraceTablesFactory().GetByForceTuple(ForceTuple));
var inputData = new ForceTupleInputData()
{
Accuracy = Accuracy,
ForceTuple = Tuple,
ForceTuple = ForceTuple,
NdmCollection = SectionNdmCollection
};
var calculator = new ForceTupleCalculator() { InputData = inputData };

View File

@@ -60,7 +60,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
{
var strainTuple = GetStrainTuple();
result.StrainTuple = strainTuple;
var strainMatrix = TupleConverter.ConvertToLoaderStrainMatrix(strainTuple);
var strainMatrix = ForceTupleConverter.ConvertToLoaderStrainMatrix(strainTuple);
result.RebarStrain = stressLogic.GetSectionStrain(strainMatrix, rebarNdm);
result.RebarStress = stressLogic.GetStress(strainMatrix, rebarNdm);
result.ConcreteStrain = -concreteNdm.PrestrainLogic.GetAll().Sum(x => x.PrestrainValue);
@@ -94,7 +94,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
//TraceLogger?.AddMessage(LoggerStrings.CalculationError + $": {forceResult.Description}", TraceLogStatuses.Error);
throw new StructureHelperException(ErrorStrings.CalculationError);
}
var strain = TupleConverter.ConvertToStrainTuple(forceResult.LoaderResults.StrainMatrix);
var strain = ForceTupleConverter.ConvertToStrainTuple(forceResult.LoaderResults.StrainMatrix);
return strain;
}

View File

@@ -175,7 +175,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
TraceLogger?.AddMessage("Bearing capacity of cross-section is not enough for action", TraceLogStatuses.Error);
return null;
}
var strain = TupleConverter.ConvertToStrainTuple(forceResult.LoaderResults.StrainMatrix);
var strain = ForceTupleConverter.ConvertToStrainTuple(forceResult.LoaderResults.StrainMatrix);
return strain;
}
@@ -183,7 +183,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
{
lengthLogic.NdmCollection = elasticNdms;
lengthLogic.TraceLogger = TraceLogger;
lengthLogic.StrainMatrix = TupleConverter.ConvertToLoaderStrainMatrix(strainTuple);
lengthLogic.StrainMatrix = ForceTupleConverter.ConvertToLoaderStrainMatrix(strainTuple);
return lengthLogic.GetLength();
}