Accidental eccentricity logic was changed
This commit is contained in:
@@ -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));
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user