Accidental eccentricity logic was changed
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace StructureHelperCommon.Models.Sections
|
||||
/// <summary>
|
||||
/// Properties of compressed member
|
||||
/// </summary>
|
||||
ICompressedMember CompressedMember {get;set;}
|
||||
double Length { get;set;}
|
||||
/// <summary>
|
||||
/// Size of cross-section along X-axis, m
|
||||
/// </summary>
|
||||
|
||||
@@ -88,6 +88,23 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
else
|
||||
{
|
||||
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()
|
||||
{
|
||||
Combination = combination,
|
||||
@@ -119,7 +136,13 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
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<INdm> ndms, IForceTuple newTuple)
|
||||
{
|
||||
var result = GetPrimitiveStrainMatrix(ndms, newTuple, Accuracy);
|
||||
result.DesignForceTuple.LimitState = limitState;
|
||||
result.DesignForceTuple.CalcTerm = calcTerm;
|
||||
@@ -128,29 +151,11 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
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)
|
||||
{
|
||||
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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user