From 716c3764c1e02d6fff8114b58913a6b0a257727f Mon Sep 17 00:00:00 2001 From: ear Date: Sun, 25 Feb 2024 18:44:26 +0500 Subject: [PATCH] Accidental eccentricity logic was changed --- .../Logics/AccidentalEccentricityLogic.cs | 18 ++-- .../Logics/IAccidentalEccentricityLogic.cs | 2 +- .../Analyses/ByForces/ForceCalculator.cs | 99 ++++++++++--------- .../Buckling/ConcreteBucklingCalculator.cs | 2 +- .../Buckling/EilerCriticalForceLogic.cs | 2 +- 5 files changed, 64 insertions(+), 59 deletions(-) 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; }