Add option of strain control in force calculator
This commit is contained in:
@@ -15,6 +15,8 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
public List<INdmPrimitive> Primitives { get; private set; } = new();
|
||||
public ICompressedMember CompressedMember { get; set; } = new CompressedMember() { Buckling = false};
|
||||
public IAccuracy Accuracy { get; set; } = new Accuracy() {IterationAccuracy = 0.001d, MaxIterationCount = 1000};
|
||||
public bool CheckStrainLimit { get; set; } = true;
|
||||
|
||||
//public List<IForceCombinationList> ForceCombinationLists { get; set; }
|
||||
|
||||
public ForceCalculatorInputData(Guid id)
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
CheckObject.IsNull(targetObject, sourceObject, "Force calculator input data");
|
||||
if (ReferenceEquals(targetObject, sourceObject)) { return; }
|
||||
targetObject.Accuracy ??= new Accuracy();
|
||||
targetObject.CheckStrainLimit = sourceObject.CheckStrainLimit;
|
||||
accuracyUpdateStrategy.Update(targetObject.Accuracy, sourceObject.Accuracy);
|
||||
targetObject.CompressedMember ??= new CompressedMember();
|
||||
compressedMemberUpdateStrategy.Update(targetObject.CompressedMember, sourceObject.CompressedMember);
|
||||
|
||||
@@ -223,7 +223,8 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
{
|
||||
NdmCollection = ndmCollection,
|
||||
ForceTuple = tuple,
|
||||
Accuracy = accuracy
|
||||
Accuracy = accuracy,
|
||||
CheckStrainLimit = InputData.CheckStrainLimit,
|
||||
};
|
||||
var calculator = new ForceTupleCalculator();
|
||||
calculator.InputData = inputData;
|
||||
|
||||
@@ -18,7 +18,8 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
public IForceTuple ForceTuple { get; set; }
|
||||
/// <inheritdoc/>
|
||||
public IAccuracy Accuracy { get; set; }
|
||||
|
||||
public bool CheckStrainLimit { get; set; }
|
||||
|
||||
public ForceTupleInputData()
|
||||
{
|
||||
Accuracy ??= new Accuracy() { IterationAccuracy = 0.01d, MaxIterationCount = 1000 };
|
||||
|
||||
@@ -28,5 +28,6 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
/// Settings for calculating of stability fo compressed members
|
||||
/// </summary>
|
||||
ICompressedMember CompressedMember { get; set; }
|
||||
bool CheckStrainLimit { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -26,5 +26,6 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
/// Settings of iteration
|
||||
/// </summary>
|
||||
IAccuracy Accuracy { get; set; }
|
||||
bool CheckStrainLimit { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,10 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
TraceLogger = TraceLogger
|
||||
};
|
||||
forceTupleTraceResultLogic.TraceResult(result);
|
||||
CheckOverStrainedNdms();
|
||||
if (InputData.CheckStrainLimit == true)
|
||||
{
|
||||
CheckOverStrainedNdms();
|
||||
}
|
||||
}
|
||||
|
||||
private bool CheckOverStrainedNdms()
|
||||
|
||||
@@ -19,6 +19,7 @@ namespace StructureHelperLogics.Services.NdmCalculations
|
||||
calculator.InputData.Accuracy = source.InputData.Accuracy;
|
||||
calculator.InputData.Primitives.AddRange(source.InputData.Primitives);
|
||||
calculator.InputData.ForceActions.Clear();
|
||||
calculator.InputData.CheckStrainLimit = source.InputData.CheckStrainLimit;
|
||||
var forceTuples = ForceTupleService.InterpolateDesignTuple(interpolateTuplesResult.FinishTuple, interpolateTuplesResult.StartTuple, interpolateTuplesResult.StepCount);
|
||||
foreach (var forceTuple in forceTuples)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user