diff --git a/StructureHelperCommon/Models/Sections/Logics/AccidentalEccentricityLogic.cs b/StructureHelperCommon/Models/Sections/Logics/AccidentalEccentricityLogic.cs
index 751c93e..8a5966a 100644
--- a/StructureHelperCommon/Models/Sections/Logics/AccidentalEccentricityLogic.cs
+++ b/StructureHelperCommon/Models/Sections/Logics/AccidentalEccentricityLogic.cs
@@ -13,25 +13,25 @@ namespace StructureHelperCommon.Models.Sections
private double sizeFactor;
private double minEccentricity;
- public ICompressedMember CompressedMember { get; set; }
+ public double Length { get; set; }
public double SizeX { get; set; }
public double SizeY { get; set; }
public IForceTuple InitialForceTuple { get; set; }
public IShiftTraceLogger? TraceLogger { get; set; }
public AccidentalEccentricityLogic()
{
- lengthFactor = 1d / 600d;
- sizeFactor = 1d / 30d;
+ lengthFactor = 600d;
+ sizeFactor = 30d;
minEccentricity = 0.01d;
}
public ForceTuple GetForceTuple()
{
- var lengthEccetricity = CompressedMember.GeometryLength * lengthFactor;
- TraceLogger?.AddMessage(string.Format("Accidental eccentricity by length ea = {0}", lengthEccetricity));
- var sizeXEccetricity = SizeX * sizeFactor;
- TraceLogger?.AddMessage(string.Format("Accidental eccentricity by SizeX = {0} ea = {1}", SizeX, sizeXEccetricity));
- var sizeYEccetricity = SizeY * sizeFactor;
- TraceLogger?.AddMessage(string.Format("Accidental eccentricity by SizeY = {0} ea = {1}", SizeY, sizeYEccetricity));
+ var lengthEccetricity = Length / lengthFactor;
+ TraceLogger?.AddMessage(string.Format("Accidental eccentricity by length ea = {0} / {1} = {2}", Length, lengthFactor, lengthEccetricity));
+ var sizeXEccetricity = SizeX / sizeFactor;
+ TraceLogger?.AddMessage(string.Format("Accidental eccentricity by SizeX ea ={0} / {1} = {2}", SizeX, sizeFactor, sizeXEccetricity));
+ var sizeYEccetricity = SizeY / sizeFactor;
+ TraceLogger?.AddMessage(string.Format("Accidental eccentricity by SizeY ea ={0} / {1} = {2}", SizeY, sizeFactor, sizeYEccetricity));
TraceLogger?.AddMessage(string.Format("Minimum accidental eccentricity ea = {0}", minEccentricity));
var xEccentricity = Math.Abs(InitialForceTuple.My / InitialForceTuple.Nz);
TraceLogger?.AddMessage(string.Format("Actual eccentricity e0,x = {0}", xEccentricity));
diff --git a/StructureHelperCommon/Models/Sections/Logics/IAccidentalEccentricityLogic.cs b/StructureHelperCommon/Models/Sections/Logics/IAccidentalEccentricityLogic.cs
index db25bbd..27c9d2c 100644
--- a/StructureHelperCommon/Models/Sections/Logics/IAccidentalEccentricityLogic.cs
+++ b/StructureHelperCommon/Models/Sections/Logics/IAccidentalEccentricityLogic.cs
@@ -16,7 +16,7 @@ namespace StructureHelperCommon.Models.Sections
///
/// Properties of compressed member
///
- ICompressedMember CompressedMember {get;set;}
+ double Length { get;set;}
///
/// Size of cross-section along X-axis, m
///
diff --git a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs
index ab91116..53f1fc3 100644
--- a/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs
+++ b/StructureHelperLogics/NdmCalculations/Analyses/ByForces/ForceCalculator.cs
@@ -88,47 +88,9 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
else
{
newTuple = ProcessAccEccentricity(ndms, newTuple);
- var inputData = new BucklingInputData()
- {
- Combination = combination,
- LimitState = limitState,
- CalcTerm = calcTerm,
- Ndms = ndms,
- ForceTuple = newTuple
- };
- var bucklingResult = ProcessBuckling(inputData);
-
- if (bucklingResult.IsValid != true)
- {
- TraceLogger?.AddMessage(bucklingResult.Description, TraceLogStatuses.Error);
- var result = new ForcesTupleResult
- {
- IsValid = false,
- Description = $"Buckling result:\n{bucklingResult.Description}\n",
- DesignForceTuple = new DesignForceTuple()
- {
- ForceTuple = newTuple,
- LimitState = limitState,
- CalcTerm = calcTerm
- }
- };
- ndmResult.ForcesResultList.Add(result);
- }
- else
- {
- newTuple = CalculateBuckling(newTuple, bucklingResult);
- TraceLogger?.AddMessage($"Force combination with considering of second order effects");
- TraceLogger?.AddEntry(new TraceTablesFactory().GetByForceTuple(newTuple));
-
- var result = GetPrimitiveStrainMatrix(ndms, newTuple, Accuracy);
- result.DesignForceTuple.LimitState = limitState;
- result.DesignForceTuple.CalcTerm = calcTerm;
- result.DesignForceTuple.ForceTuple = newTuple;
- ndmResult.ForcesResultList.Add(result);
- ActionToOutputResults?.Invoke(ndmResult);
- }
-
+ newTuple = GetForceTupleByBuckling(ndmResult, combination, limitState, calcTerm, ndms, newTuple);
}
+ GetForceResult(ndmResult, limitState, calcTerm, ndms, newTuple);
}
else
{
@@ -137,20 +99,63 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
string message = string.Format("Second order effect is not considered, despite force Nz={0}", newTuple.Nz);
TraceLogger.AddMessage(message, TraceLogStatuses.Warning);
}
- var result = GetPrimitiveStrainMatrix(ndms, newTuple, Accuracy);
- result.DesignForceTuple.LimitState = limitState;
- result.DesignForceTuple.CalcTerm = calcTerm;
- result.DesignForceTuple.ForceTuple = newTuple;
- ndmResult.ForcesResultList.Add(result);
- ActionToOutputResults?.Invoke(ndmResult);
+ GetForceResult(ndmResult, limitState, calcTerm, ndms, newTuple);
}
}
+ private IForceTuple GetForceTupleByBuckling(ForcesResults ndmResult, IForceCombinationList combination, LimitStates limitState, CalcTerms calcTerm, List ndms, IForceTuple newTuple)
+ {
+ var inputData = new BucklingInputData()
+ {
+ Combination = combination,
+ LimitState = limitState,
+ CalcTerm = calcTerm,
+ Ndms = ndms,
+ ForceTuple = newTuple
+ };
+ var bucklingResult = ProcessBuckling(inputData);
+
+ if (bucklingResult.IsValid != true)
+ {
+ TraceLogger?.AddMessage(bucklingResult.Description, TraceLogStatuses.Error);
+ var result = new ForcesTupleResult
+ {
+ IsValid = false,
+ Description = $"Buckling result:\n{bucklingResult.Description}\n",
+ DesignForceTuple = new DesignForceTuple()
+ {
+ ForceTuple = newTuple,
+ LimitState = limitState,
+ CalcTerm = calcTerm
+ }
+ };
+ ndmResult.ForcesResultList.Add(result);
+ }
+ else
+ {
+ newTuple = CalculateBuckling(newTuple, bucklingResult);
+ TraceLogger?.AddMessage($"Force combination with considering of second order effects");
+ TraceLogger?.AddEntry(new TraceTablesFactory().GetByForceTuple(newTuple));
+ }
+
+ return newTuple;
+ }
+
+ private void GetForceResult(ForcesResults ndmResult, LimitStates limitState, CalcTerms calcTerm, List ndms, IForceTuple newTuple)
+ {
+ var result = GetPrimitiveStrainMatrix(ndms, newTuple, Accuracy);
+ result.DesignForceTuple.LimitState = limitState;
+ result.DesignForceTuple.CalcTerm = calcTerm;
+ result.DesignForceTuple.ForceTuple = newTuple;
+ ndmResult.ForcesResultList.Add(result);
+ ActionToOutputResults?.Invoke(ndmResult);
+ }
+
private IForceTuple ProcessAccEccentricity(List ndms, IForceTuple newTuple)
{
var accLogic = new AccidentalEccentricityLogic()
{
- CompressedMember = CompressedMember,
+ Length = CompressedMember.GeometryLength,
SizeX = ndms.Max(x => x.CenterX) - ndms.Min(x => x.CenterX),
SizeY = ndms.Max(x => x.CenterY) - ndms.Min(x => x.CenterY),
InitialForceTuple = newTuple,
diff --git a/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingCalculator.cs b/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingCalculator.cs
index 82faa26..8f9b743 100644
--- a/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingCalculator.cs
+++ b/StructureHelperLogics/NdmCalculations/Buckling/ConcreteBucklingCalculator.cs
@@ -184,7 +184,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
}
var (EtaFactorX, EtaFactorY) = GetBucklingCoefficients();
- var messageString = "Eta factor orbitrary {0} axis, Etta{0} = {1} (dimensionless)";
+ var messageString = "Eta factor orbitrary {0} axis, Eta{0} = {1} (dimensionless)";
var messageStringX = string.Format(messageString, "X", EtaFactorX);
var messageStringY = string.Format(messageString, "Y", EtaFactorY);
TraceLogger?.AddMessage(messageStringX);
diff --git a/StructureHelperLogics/NdmCalculations/Buckling/EilerCriticalForceLogic.cs b/StructureHelperLogics/NdmCalculations/Buckling/EilerCriticalForceLogic.cs
index 1520fd3..fcd9aa6 100644
--- a/StructureHelperLogics/NdmCalculations/Buckling/EilerCriticalForceLogic.cs
+++ b/StructureHelperLogics/NdmCalculations/Buckling/EilerCriticalForceLogic.cs
@@ -19,7 +19,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
public double GetCriticalForce()
{
double Ncr = - Math.Pow(Math.PI, 2) * StiffnessEI / Math.Pow(DesignLength, 2);
- string message = string.Format("Ncr = - (PI ^ 2) * D / L0 ^2 = - ({0} * {1} / ({2} ^2)) = {3}, N", Math.PI, StiffnessEI, DesignLength, Ncr);
+ string message = string.Format("Ncr = - (PI ^ 2) * D / L0 ^2 = - ({0}^2 * {1} / ({2} ^2)) = {3}, N", Math.PI, StiffnessEI, DesignLength, Ncr);
TraceLogger?.AddMessage(message);
return Ncr;
}