Geometry property results have been added
This commit is contained in:
@@ -36,7 +36,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
var checkResult = CheckInputData();
|
||||
if (checkResult != "")
|
||||
{
|
||||
Result = new ForcesResults() { IsValid = false, Desctription = checkResult };
|
||||
Result = new ForcesResults() { IsValid = false, Description = checkResult };
|
||||
return;
|
||||
}
|
||||
else
|
||||
@@ -86,7 +86,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
if (bucklingResult.IsValid != true)
|
||||
{
|
||||
result.IsValid = false;
|
||||
result.Desctription += $"Buckling result:\n{bucklingResult.Desctription}\n";
|
||||
result.Description += $"Buckling result:\n{bucklingResult.Description}\n";
|
||||
}
|
||||
newTuple = CalculateBuckling(newTuple, bucklingResult);
|
||||
result = GetPrimitiveStrainMatrix(ndms, newTuple);
|
||||
@@ -94,7 +94,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
catch (Exception ex)
|
||||
{
|
||||
result.IsValid = false;
|
||||
result.Desctription = $"Buckling error:\n{ex}\n";
|
||||
result.Description = $"Buckling error:\n{ex}\n";
|
||||
}
|
||||
}
|
||||
result.DesignForceTuple.LimitState = limitState;
|
||||
|
||||
@@ -57,19 +57,19 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
var calcResult = calculator.Result;
|
||||
if (calcResult.AccuracyRate <= accuracy.IterationAccuracy)
|
||||
{
|
||||
return new ForcesTupleResult() { IsValid = true, Desctription = "Analysis is done succsefully", LoaderResults = calcResult };
|
||||
return new ForcesTupleResult() { IsValid = true, Description = "Analysis is done succsefully", LoaderResults = calcResult };
|
||||
}
|
||||
else
|
||||
{
|
||||
return new ForcesTupleResult() { IsValid = false, Desctription = "Required accuracy rate has not achived", LoaderResults = calcResult };
|
||||
return new ForcesTupleResult() { IsValid = false, Description = "Required accuracy rate has not achived", LoaderResults = calcResult };
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var result = new ForcesTupleResult() { IsValid = false };
|
||||
if (ex.Message == "Calculation result is not valid: stiffness matrix is equal to zero") { result.Desctription = "Stiffness matrix is equal to zero \nProbably section was collapsed"; }
|
||||
else { result.Desctription = $"Error is appeared due to analysis. Error: {ex}"; }
|
||||
if (ex.Message == "Calculation result is not valid: stiffness matrix is equal to zero") { result.Description = "Stiffness matrix is equal to zero \nProbably section was collapsed"; }
|
||||
else { result.Description = $"Error is appeared due to analysis. Error: {ex}"; }
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
{
|
||||
public bool IsValid { get; set; }
|
||||
public List<IForcesTupleResult> ForcesResultList { get; }
|
||||
public string Desctription { get; set; }
|
||||
public string Description { get; set; }
|
||||
|
||||
public ForcesResults()
|
||||
{
|
||||
|
||||
@@ -16,7 +16,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
/// <summary>
|
||||
/// Text of result of calculations
|
||||
/// </summary>
|
||||
public string Desctription { get; set; }
|
||||
public string Description { get; set; }
|
||||
/// <summary>
|
||||
/// Keep result of calculations from ndm-library
|
||||
/// </summary>
|
||||
|
||||
@@ -4,7 +4,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.ByForces
|
||||
{
|
||||
public interface IForcesResults : INdmResult
|
||||
{
|
||||
string Desctription { get; set; }
|
||||
string Description { get; set; }
|
||||
List<IForcesTupleResult> ForcesResultList { get; }
|
||||
bool IsValid { get; set; }
|
||||
}
|
||||
|
||||
@@ -12,6 +12,6 @@ namespace StructureHelperLogics.NdmCalculations.Analyses
|
||||
/// True if result of calculation is valid
|
||||
/// </summary>
|
||||
bool IsValid { get; set; }
|
||||
string Desctription { get; set; }
|
||||
string Description { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
|
||||
private (double EtaAlongX, double EtaAlongY) GetBucklingCoefficients()
|
||||
{
|
||||
var stiffness = GetStiffness();
|
||||
criticalForceLogic.LongForce = options.CalcForceTuple.Nz;
|
||||
criticalForceLogic.LongitudinalForce = options.CalcForceTuple.Nz;
|
||||
criticalForceLogic.StiffnessEI = stiffness.DX;
|
||||
criticalForceLogic.DesignLength = options.CompressedMember.GeometryLength * options.CompressedMember.LengthFactorY;
|
||||
var etaAlongY = criticalForceLogic.GetEtaFactor();
|
||||
@@ -77,8 +77,8 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
|
||||
{
|
||||
var gravityCenter = GeometryOperations.GetGravityCenter(ndmCollection);
|
||||
|
||||
var concreteInertia = GeometryOperations.GetMomentsOfInertiaMod(concreteNdms, gravityCenter);
|
||||
var otherInertia = GeometryOperations.GetMomentsOfInertiaMod(otherNdms, gravityCenter);
|
||||
var concreteInertia = GeometryOperations.GetReducedMomentsOfInertia(concreteNdms, gravityCenter);
|
||||
var otherInertia = GeometryOperations.GetReducedMomentsOfInertia(otherNdms, gravityCenter);
|
||||
|
||||
var stiffnessX = stiffnessLogicX.GetStiffnessCoeffitients();
|
||||
var dX = stiffnessX.Kc * concreteInertia.MomentX + stiffnessX.Ks * otherInertia.MomentX;
|
||||
@@ -127,7 +127,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
|
||||
var checkResult = CheckInputData();
|
||||
if (checkResult != "")
|
||||
{
|
||||
Result = new ConcreteBucklingResult() { IsValid = false, Desctription = checkResult };
|
||||
Result = new ConcreteBucklingResult() { IsValid = false, Description = checkResult };
|
||||
return;
|
||||
}
|
||||
else
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
|
||||
/// <inheritdoc/>
|
||||
public bool IsValid { get; set; }
|
||||
/// <inheritdoc/>
|
||||
public string Desctription { get; set; }
|
||||
public string Description { get; set; }
|
||||
/// <inheritdoc/>
|
||||
public double EtaFactorAlongX { get; set; }
|
||||
/// <inheritdoc/>
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
|
||||
{
|
||||
internal class EilerCriticalForceLogic : IEilerCriticalForceLogic
|
||||
{
|
||||
public double LongForce { get; set; }
|
||||
public double LongitudinalForce { get; set; }
|
||||
public double StiffnessEI { get; set; }
|
||||
public double DesignLength { get; set; }
|
||||
|
||||
@@ -22,13 +22,13 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
|
||||
|
||||
public double GetEtaFactor()
|
||||
{
|
||||
if (LongForce >= 0d) return 1d;
|
||||
if (LongitudinalForce >= 0d) return 1d;
|
||||
var Ncr = GetCriticalForce();
|
||||
if (LongForce <= Ncr)
|
||||
if (LongitudinalForce <= Ncr)
|
||||
{
|
||||
throw new StructureHelperException(ErrorStrings.LongitudinalForceMustBeLessThanCriticalForce);
|
||||
}
|
||||
double eta = 1 / (1 - LongForce / Ncr);
|
||||
double eta = 1 / (1 - LongitudinalForce / Ncr);
|
||||
return eta;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace StructureHelperLogics.NdmCalculations.Buckling
|
||||
{
|
||||
internal interface IEilerCriticalForceLogic : ICriticalBucklingForceLogic
|
||||
{
|
||||
double LongForce { get; set; }
|
||||
double LongitudinalForce { get; set; }
|
||||
double StiffnessEI { get; set; }
|
||||
double DesignLength { get; set; }
|
||||
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
using LoaderCalculator.Data.Matrix;
|
||||
using LoaderCalculator.Data.Ndms;
|
||||
using LoaderCalculator.Logics.Geometry;
|
||||
using StructureHelperCommon.Infrastructures.Enums;
|
||||
using StructureHelperCommon.Infrastructures.Settings;
|
||||
using StructureHelperCommon.Models.Parameters;
|
||||
using StructureHelperCommon.Services.Units;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Services.NdmPrimitives
|
||||
{
|
||||
public class TextParametersLogic
|
||||
{
|
||||
const string prefixInitial = "Initial";
|
||||
const string prefixActual = "Actual";
|
||||
static string firstAxisName => ProgramSetting.CrossSectionAxisNames.FirstAxis;
|
||||
static string secondAxisName => ProgramSetting.CrossSectionAxisNames.SecondAxis;
|
||||
static IEnumerable<IUnit> units = UnitsFactory.GetUnitCollection();
|
||||
private IEnumerable<INdm> ndms;
|
||||
private IStrainMatrix strainMatrix;
|
||||
public List<ITextParameter> GetTextParameters()
|
||||
{
|
||||
var parameters = new List<ITextParameter>();
|
||||
parameters.AddRange(GetGravityCenter(prefixInitial, ndms));
|
||||
parameters.AddRange(GetArea(prefixInitial, ndms));
|
||||
parameters.AddRange(GetSecondMomentOfArea(prefixInitial, ndms));
|
||||
parameters.AddRange(GetGravityCenter(prefixActual, ndms, strainMatrix));
|
||||
parameters.AddRange(GetArea(prefixActual, ndms, strainMatrix));
|
||||
parameters.AddRange(GetSecondMomentOfArea(prefixActual, ndms, strainMatrix));
|
||||
return parameters;
|
||||
}
|
||||
|
||||
private IEnumerable<ITextParameter> GetSecondMomentOfArea(string prefix, IEnumerable<INdm> locNdms, IStrainMatrix? locStrainMatrix = null)
|
||||
{
|
||||
const string name = "Moment of inertia";
|
||||
var parameters = new List<ITextParameter>();
|
||||
var unitArea = CommonOperation.GetUnit(UnitTypes.Area, "mm2");
|
||||
var unitStress = CommonOperation.GetUnit(UnitTypes.Stress, "MPa");
|
||||
var unitName = $"{unitStress.Name} * {unitArea.Name} * {unitArea.Name}";
|
||||
var unitMultiPlayer = unitArea.Multiplyer * unitArea.Multiplyer * unitStress.Multiplyer;
|
||||
var firstParameter = new TextParameter()
|
||||
{
|
||||
IsValid = true,
|
||||
Name = $"{prefix} {name} {firstAxisName.ToUpper()}",
|
||||
ShortName = $"I{firstAxisName}",
|
||||
MeasurementUnit = unitName,
|
||||
Description = $"{prefix} {name} of cross-section arbitrary {firstAxisName}-axis multiplied by {prefix} modulus"
|
||||
};
|
||||
var secondParameter = new TextParameter()
|
||||
{
|
||||
IsValid = true,
|
||||
Name = $"{prefix} {name} {secondAxisName}",
|
||||
ShortName = $"I{secondAxisName}",
|
||||
MeasurementUnit = unitName,
|
||||
Description = $"{prefix} {name} of cross-section arbitrary {secondAxisName}-axis multiplied by {prefix} modulus"
|
||||
};
|
||||
try
|
||||
{
|
||||
var gravityCenter = GeometryOperations.GetReducedMomentsOfInertia(locNdms, locStrainMatrix);
|
||||
firstParameter.Value = gravityCenter.MomentX * unitMultiPlayer;
|
||||
secondParameter.Value = gravityCenter.MomentY * unitMultiPlayer;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
firstParameter.IsValid = false;
|
||||
firstParameter.Value = double.NaN;
|
||||
firstParameter.Description += $": {ex}";
|
||||
secondParameter.IsValid = false;
|
||||
secondParameter.Value = double.NaN;
|
||||
secondParameter.Description += $": {ex}";
|
||||
}
|
||||
parameters.Add(firstParameter);
|
||||
parameters.Add(secondParameter);
|
||||
return parameters;
|
||||
}
|
||||
|
||||
private IEnumerable<ITextParameter> GetArea(string prefix, IEnumerable<INdm> locNdms, IStrainMatrix? locStrainMatrix = null)
|
||||
{
|
||||
var parameters = new List<ITextParameter>();
|
||||
var unitArea = CommonOperation.GetUnit(UnitTypes.Area, "mm2");
|
||||
var unitStress = CommonOperation.GetUnit(UnitTypes.Stress, "MPa");
|
||||
var unitName = $"{unitStress.Name} * {unitArea.Name}" ;
|
||||
var unitMultiPlayer = unitArea.Multiplyer * unitStress.Multiplyer;
|
||||
var firstParameter = new TextParameter()
|
||||
{
|
||||
IsValid = true,
|
||||
Name = $"{prefix} Area",
|
||||
ShortName = "EA",
|
||||
MeasurementUnit = unitName,
|
||||
Description = $"{prefix} Area of cross-section multiplied by {prefix} modulus"
|
||||
};
|
||||
try
|
||||
{
|
||||
firstParameter.Value = GeometryOperations.GetReducedArea(locNdms, locStrainMatrix) * unitMultiPlayer;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
firstParameter.IsValid = false;
|
||||
firstParameter.Value = double.NaN;
|
||||
firstParameter.Description += $": {ex}";
|
||||
}
|
||||
parameters.Add(firstParameter);
|
||||
return parameters;
|
||||
}
|
||||
|
||||
public TextParametersLogic(IEnumerable<INdm> ndms, IStrainMatrix strainMatrix)
|
||||
{
|
||||
this.ndms = ndms;
|
||||
this.strainMatrix = strainMatrix;
|
||||
}
|
||||
|
||||
private IEnumerable<ITextParameter> GetGravityCenter(string prefix, IEnumerable<INdm> locNdms, IStrainMatrix? locStrainMatrix = null)
|
||||
{
|
||||
var parameters = new List<ITextParameter>();
|
||||
var unitType = UnitTypes.Length;
|
||||
var unit = CommonOperation.GetUnit(unitType, "mm");
|
||||
var unitName = unit.Name;
|
||||
var unitMultiPlayer = unit.Multiplyer;
|
||||
var firstParameter = new TextParameter()
|
||||
{
|
||||
IsValid = true,
|
||||
Name = $"{prefix} Center{firstAxisName.ToUpper()}",
|
||||
ShortName = $"{firstAxisName.ToUpper()}c",
|
||||
MeasurementUnit = unitName,
|
||||
Description = $"{prefix} Displacement of center of gravity of cross-section along {firstAxisName}-axis"
|
||||
};
|
||||
var secondParameter = new TextParameter()
|
||||
{
|
||||
IsValid = true,
|
||||
Name = $"{prefix} Center{secondAxisName.ToUpper()}",
|
||||
ShortName = $"{secondAxisName.ToUpper()}c",
|
||||
MeasurementUnit = unitName,
|
||||
Description = $"{prefix} Displacement of center of gravity of cross-section along {secondAxisName}-axis"
|
||||
};
|
||||
try
|
||||
{
|
||||
var gravityCenter = GeometryOperations.GetGravityCenter(locNdms, locStrainMatrix);
|
||||
firstParameter.Value = gravityCenter.CenterX * unitMultiPlayer;
|
||||
secondParameter.Value = gravityCenter.CenterY * unitMultiPlayer;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
firstParameter.IsValid = false;
|
||||
firstParameter.Value = double.NaN;
|
||||
firstParameter.Description += $": {ex}";
|
||||
secondParameter.IsValid = false;
|
||||
secondParameter.Value = double.NaN;
|
||||
secondParameter.Description += $": {ex}";
|
||||
}
|
||||
parameters.Add(firstParameter);
|
||||
parameters.Add(secondParameter);
|
||||
return parameters;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user