Accidental eccentricity logic was changed

This commit is contained in:
ear
2024-02-25 18:44:26 +05:00
parent bf72f6d347
commit 716c3764c1
5 changed files with 64 additions and 59 deletions

View File

@@ -13,25 +13,25 @@ namespace StructureHelperCommon.Models.Sections
private double sizeFactor; private double sizeFactor;
private double minEccentricity; private double minEccentricity;
public ICompressedMember CompressedMember { get; set; } public double Length { get; set; }
public double SizeX { get; set; } public double SizeX { get; set; }
public double SizeY { get; set; } public double SizeY { get; set; }
public IForceTuple InitialForceTuple { get; set; } public IForceTuple InitialForceTuple { get; set; }
public IShiftTraceLogger? TraceLogger { get; set; } public IShiftTraceLogger? TraceLogger { get; set; }
public AccidentalEccentricityLogic() public AccidentalEccentricityLogic()
{ {
lengthFactor = 1d / 600d; lengthFactor = 600d;
sizeFactor = 1d / 30d; sizeFactor = 30d;
minEccentricity = 0.01d; minEccentricity = 0.01d;
} }
public ForceTuple GetForceTuple() public ForceTuple GetForceTuple()
{ {
var lengthEccetricity = CompressedMember.GeometryLength * lengthFactor; var lengthEccetricity = Length / lengthFactor;
TraceLogger?.AddMessage(string.Format("Accidental eccentricity by length ea = {0}", lengthEccetricity)); TraceLogger?.AddMessage(string.Format("Accidental eccentricity by length ea = {0} / {1} = {2}", Length, lengthFactor, lengthEccetricity));
var sizeXEccetricity = SizeX * sizeFactor; var sizeXEccetricity = SizeX / sizeFactor;
TraceLogger?.AddMessage(string.Format("Accidental eccentricity by SizeX = {0} ea = {1}", SizeX, sizeXEccetricity)); TraceLogger?.AddMessage(string.Format("Accidental eccentricity by SizeX ea ={0} / {1} = {2}", SizeX, sizeFactor, sizeXEccetricity));
var sizeYEccetricity = SizeY * sizeFactor; var sizeYEccetricity = SizeY / sizeFactor;
TraceLogger?.AddMessage(string.Format("Accidental eccentricity by SizeY = {0} ea = {1}", SizeY, sizeYEccetricity)); 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)); TraceLogger?.AddMessage(string.Format("Minimum accidental eccentricity ea = {0}", minEccentricity));
var xEccentricity = Math.Abs(InitialForceTuple.My / InitialForceTuple.Nz); var xEccentricity = Math.Abs(InitialForceTuple.My / InitialForceTuple.Nz);
TraceLogger?.AddMessage(string.Format("Actual eccentricity e0,x = {0}", xEccentricity)); TraceLogger?.AddMessage(string.Format("Actual eccentricity e0,x = {0}", xEccentricity));

View File

@@ -16,7 +16,7 @@ namespace StructureHelperCommon.Models.Sections
/// <summary> /// <summary>
/// Properties of compressed member /// Properties of compressed member
/// </summary> /// </summary>
ICompressedMember CompressedMember {get;set;} double Length { get;set;}
/// <summary> /// <summary>
/// Size of cross-section along X-axis, m /// Size of cross-section along X-axis, m
/// </summary> /// </summary>

View File

@@ -88,6 +88,23 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
else else
{ {
newTuple = ProcessAccEccentricity(ndms, newTuple); newTuple = ProcessAccEccentricity(ndms, newTuple);
newTuple = GetForceTupleByBuckling(ndmResult, combination, limitState, calcTerm, ndms, newTuple);
}
GetForceResult(ndmResult, limitState, calcTerm, ndms, newTuple);
}
else
{
if (newTuple.Nz < 0d)
{
string message = string.Format("Second order effect is not considered, despite force Nz={0}", newTuple.Nz);
TraceLogger.AddMessage(message, TraceLogStatuses.Warning);
}
GetForceResult(ndmResult, limitState, calcTerm, ndms, newTuple);
}
}
private IForceTuple GetForceTupleByBuckling(ForcesResults ndmResult, IForceCombinationList combination, LimitStates limitState, CalcTerms calcTerm, List<INdm> ndms, IForceTuple newTuple)
{
var inputData = new BucklingInputData() var inputData = new BucklingInputData()
{ {
Combination = combination, Combination = combination,
@@ -119,7 +136,13 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
newTuple = CalculateBuckling(newTuple, bucklingResult); newTuple = CalculateBuckling(newTuple, bucklingResult);
TraceLogger?.AddMessage($"Force combination with considering of second order effects"); TraceLogger?.AddMessage($"Force combination with considering of second order effects");
TraceLogger?.AddEntry(new TraceTablesFactory().GetByForceTuple(newTuple)); TraceLogger?.AddEntry(new TraceTablesFactory().GetByForceTuple(newTuple));
}
return newTuple;
}
private void GetForceResult(ForcesResults ndmResult, LimitStates limitState, CalcTerms calcTerm, List<INdm> ndms, IForceTuple newTuple)
{
var result = GetPrimitiveStrainMatrix(ndms, newTuple, Accuracy); var result = GetPrimitiveStrainMatrix(ndms, newTuple, Accuracy);
result.DesignForceTuple.LimitState = limitState; result.DesignForceTuple.LimitState = limitState;
result.DesignForceTuple.CalcTerm = calcTerm; result.DesignForceTuple.CalcTerm = calcTerm;
@@ -128,29 +151,11 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
ActionToOutputResults?.Invoke(ndmResult); ActionToOutputResults?.Invoke(ndmResult);
} }
}
}
else
{
if (newTuple.Nz < 0d)
{
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);
}
}
private IForceTuple ProcessAccEccentricity(List<INdm> ndms, IForceTuple newTuple) private IForceTuple ProcessAccEccentricity(List<INdm> ndms, IForceTuple newTuple)
{ {
var accLogic = new AccidentalEccentricityLogic() var accLogic = new AccidentalEccentricityLogic()
{ {
CompressedMember = CompressedMember, Length = CompressedMember.GeometryLength,
SizeX = ndms.Max(x => x.CenterX) - ndms.Min(x => x.CenterX), SizeX = ndms.Max(x => x.CenterX) - ndms.Min(x => x.CenterX),
SizeY = ndms.Max(x => x.CenterY) - ndms.Min(x => x.CenterY), SizeY = ndms.Max(x => x.CenterY) - ndms.Min(x => x.CenterY),
InitialForceTuple = newTuple, InitialForceTuple = newTuple,

View File

@@ -184,7 +184,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
} }
var (EtaFactorX, EtaFactorY) = GetBucklingCoefficients(); 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 messageStringX = string.Format(messageString, "X", EtaFactorX);
var messageStringY = string.Format(messageString, "Y", EtaFactorY); var messageStringY = string.Format(messageString, "Y", EtaFactorY);
TraceLogger?.AddMessage(messageStringX); TraceLogger?.AddMessage(messageStringX);

View File

@@ -19,7 +19,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
public double GetCriticalForce() public double GetCriticalForce()
{ {
double Ncr = - Math.Pow(Math.PI, 2) * StiffnessEI / Math.Pow(DesignLength, 2); 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); TraceLogger?.AddMessage(message);
return Ncr; return Ncr;
} }