Ndm prestrain logic was changed
This commit is contained in:
@@ -42,7 +42,7 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.RC
|
||||
{
|
||||
inputData.ReinforcementStress = inputData.ReinforcementStrength;
|
||||
}
|
||||
inputData.IsPrestressed = ndm.Prestrain > 0.0005d ? true : false;
|
||||
inputData.IsPrestressed = ndm.PrestrainLogic.GetByType(PrestrainTypes.Prestrain).Sum(x => x.PrestrainValue) > 0.0005d ? true : false;
|
||||
inputData.LappedCountRate = lappedCountRate;
|
||||
return inputData;
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
/// <summary>
|
||||
/// Width of crack from long term loads with short term properties of concrete
|
||||
/// </summary>
|
||||
private double longTermLoadShortConcreteWidth;
|
||||
private double longTermLoadShortConcreteCrackWidth;
|
||||
private IRebarStressCalculator rebarStressCalculator;
|
||||
|
||||
public IRebarCrackCalculatorInputData InputData { get; set; }
|
||||
@@ -54,6 +54,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
|
||||
public void Run()
|
||||
{
|
||||
TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Debug);
|
||||
PrepareNewResult();
|
||||
ProcessCrackWidthCalculation();
|
||||
}
|
||||
@@ -69,25 +70,31 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
|
||||
private void ProcessCrackWidthCalculation()
|
||||
{
|
||||
crackWidthLogic.TraceLogger = TraceLogger;
|
||||
CrackWidthRebarTupleResult longRebarResult = ProcessLongTermCalculations();
|
||||
CrackWidthRebarTupleResult shortRebarResult = ProcessShortTermCalculations();
|
||||
result.LongTermResult = longRebarResult;
|
||||
TraceLogger?.AddMessage("Long term result has been obtained succesfully", TraceLogStatuses.Debug);
|
||||
result.ShortTermResult = shortRebarResult;
|
||||
TraceLogger?.AddMessage("Short term result has been obtained succesfully", TraceLogStatuses.Debug);
|
||||
}
|
||||
|
||||
private CrackWidthRebarTupleResult ProcessShortTermCalculations()
|
||||
{
|
||||
TraceLogger?.AddMessage($"Short term softening factor calculation");
|
||||
crackSofteningLogic = GetSofteningLogic(InputData.ShortRebarData);
|
||||
rebarStressResult = GetRebarStressResult(InputData.ShortRebarData);
|
||||
acrc2InputData = GetCrackWidthInputData(crackSofteningLogic, InputData.ShortRebarData, CalcTerms.ShortTerm);
|
||||
|
||||
acrc3InputData = GetCrackWidthInputData(crackSofteningLogic, InputData.LongRebarData, CalcTerms.ShortTerm);
|
||||
crackWidthLogic.InputData = acrc3InputData;
|
||||
longTermLoadShortConcreteWidth = crackWidthLogic.GetCrackWidth();
|
||||
longTermLoadShortConcreteCrackWidth = crackWidthLogic.GetCrackWidth();
|
||||
TraceLogger?.AddMessage($"Crack width from long term load with short term factor of concrete acrc,3 = {longTermLoadShortConcreteCrackWidth}(m)", TraceLogStatuses.Debug);
|
||||
acrc2InputData = GetCrackWidthInputData(crackSofteningLogic, InputData.ShortRebarData, CalcTerms.ShortTerm);
|
||||
crackWidthLogic.InputData = acrc2InputData;
|
||||
fullLoadShortConcreteCrackWidth = crackWidthLogic.GetCrackWidth();
|
||||
TraceLogger?.AddMessage($"Crack width from full load with short term factor of concrete acrc,2 = {fullLoadShortConcreteCrackWidth}(m)", TraceLogStatuses.Debug);
|
||||
|
||||
double acrcShort = longTermLoadLongTermConcreteCrackWidth + fullLoadShortConcreteCrackWidth - longTermLoadShortConcreteWidth;
|
||||
TraceLogger?.AddMessage($"Short crack width acrc = acrc,1 + acrc,2 - acrc,3 = {longTermLoadLongTermConcreteCrackWidth} + {fullLoadShortConcreteCrackWidth} - {longTermLoadShortConcreteWidth} = {acrcShort}(m)");
|
||||
double acrcShort = longTermLoadLongTermConcreteCrackWidth + fullLoadShortConcreteCrackWidth - longTermLoadShortConcreteCrackWidth;
|
||||
TraceLogger?.AddMessage($"Short crack width acrc = acrc,1 + acrc,2 - acrc,3 = {longTermLoadLongTermConcreteCrackWidth} + {fullLoadShortConcreteCrackWidth} - {longTermLoadShortConcreteCrackWidth} = {acrcShort}(m)");
|
||||
var shortRebarResult = new CrackWidthRebarTupleResult()
|
||||
{
|
||||
CrackWidth = acrcShort,
|
||||
@@ -101,12 +108,13 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
|
||||
private CrackWidthRebarTupleResult ProcessLongTermCalculations()
|
||||
{
|
||||
TraceLogger?.AddMessage($"Long term softening factor calculation");
|
||||
crackSofteningLogic = GetSofteningLogic(InputData.LongRebarData);
|
||||
rebarStressResult = GetRebarStressResult(InputData.LongRebarData);
|
||||
acrc1InputData = GetCrackWidthInputData(crackSofteningLogic, InputData.LongRebarData, CalcTerms.LongTerm);
|
||||
acrc3InputData = GetCrackWidthInputData(crackSofteningLogic, InputData.LongRebarData, CalcTerms.ShortTerm);
|
||||
crackWidthLogic.InputData = acrc1InputData;
|
||||
longTermLoadLongTermConcreteCrackWidth = crackWidthLogic.GetCrackWidth();
|
||||
TraceLogger?.AddMessage($"Crack width from long term load with long term factor of concrete acrc,1 = {longTermLoadLongTermConcreteCrackWidth}(m)", TraceLogStatuses.Debug);
|
||||
var longRebarResult = new CrackWidthRebarTupleResult()
|
||||
{
|
||||
CrackWidth = longTermLoadLongTermConcreteCrackWidth,
|
||||
@@ -137,6 +145,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
ICrackSofteningLogic crackSofteningLogic;
|
||||
if (InputData.UserCrackInputData.SetSofteningFactor == true)
|
||||
{
|
||||
TraceLogger?.AddMessage("User value of softening factor is assigned");
|
||||
crackSofteningLogic = new StabSoftetingLogic(InputData.UserCrackInputData.SofteningFactor)
|
||||
{
|
||||
TraceLogger = TraceLogger?.GetSimilarTraceLogger(50)
|
||||
@@ -144,6 +153,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
}
|
||||
else
|
||||
{
|
||||
TraceLogger?.AddMessage("Exact value of softening factor is calculated");
|
||||
crackSofteningLogic = new RebarStressSofteningLogic()
|
||||
{
|
||||
RebarPrimitive = InputData.RebarPrimitive,
|
||||
@@ -156,7 +166,6 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
|
||||
private ICrackWidthLogicInputData GetCrackWidthInputData(ICrackSofteningLogic crackSofteningLogic, IRebarCrackInputData inputData, CalcTerms calcTerm)
|
||||
{
|
||||
|
||||
var factoryInputData = new CrackWidthLogicInputDataFactory(crackSofteningLogic)
|
||||
{
|
||||
CalcTerm = calcTerm,
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
}
|
||||
else
|
||||
{
|
||||
TraceLogger?.AddMessage($"Rebar elongation Epsilon = {inputData.RebarStrain} - {inputData.ConcreteStrain} = {rebarElongation}(dimensionless)");
|
||||
TraceLogger?.AddMessage($"Rebar elongation Epsilon = {inputData.RebarStrain} - ({inputData.ConcreteStrain}) = {rebarElongation}(dimensionless)");
|
||||
widthOfCrack = rebarElongation * inputData.LengthBetweenCracks;
|
||||
widthOfCrack *= inputData.TermFactor * inputData.BondFactor * inputData.StressStateFactor * inputData.PsiSFactor;
|
||||
TraceLogger?.AddMessage($"Width of crack a,crc = {inputData.TermFactor} * {inputData.BondFactor} * {inputData.StressStateFactor} * {inputData.PsiSFactor} * {rebarElongation} * {inputData.LengthBetweenCracks}(m) = {widthOfCrack}(m)");
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
var strainMatrix = TupleConverter.ConvertToLoaderStrainMatrix(strainTuple);
|
||||
result.RebarStrain = stressLogic.GetSectionStrain(strainMatrix, rebarNdm);
|
||||
result.RebarStress = stressLogic.GetStress(strainMatrix, rebarNdm);
|
||||
result.ConcreteStrain = -concreteNdm.Prestrain;
|
||||
result.ConcreteStrain = -concreteNdm.PrestrainLogic.GetAll().Sum(x => x.PrestrainValue);
|
||||
}
|
||||
|
||||
private void PrepareNewResult()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using StructureHelperCommon.Infrastructures.Exceptions;
|
||||
using StructureHelperCommon.Models;
|
||||
using StructureHelperCommon.Models.Loggers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -64,7 +65,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
/// <inheritdoc/>
|
||||
public double GetSofteningFactor()
|
||||
{
|
||||
TraceLogger?.AddMessage($"Calculator type: {GetType()}", TraceLogStatuses.Service);
|
||||
TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Debug);
|
||||
TraceLogger?.AddMessage($"Logic of calculation of psi_s factor based on exponential softening model");
|
||||
TraceLogger?.AddMessage($"psi_s = 1 - BettaFactor * ForceRatio ^ PowerFactor");
|
||||
TraceLogger?.AddMessage($"But not less than psi_s_min = {PsiSMin}");
|
||||
|
||||
@@ -69,6 +69,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
|
||||
public double GetSofteningFactor()
|
||||
{
|
||||
TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Debug);
|
||||
if (IsResultActual == false)
|
||||
{
|
||||
GetRebarAndConcreteNdms();
|
||||
@@ -106,8 +107,10 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
rebarActualStrain = actualRebarResult.RebarStrain;
|
||||
rebarActualStress = actualRebarResult.RebarStress;
|
||||
TraceLogger?.AddMessage($"Actual strain of rebar EpsilonS = {rebarActualStrain}(dimensionless)");
|
||||
concreteStrainActual = concreteNdm.Prestrain;
|
||||
//concreteStrainActual = stressLogic.GetTotalStrain(TupleConverter.ConvertToLoaderStrainMatrix(strainTupleActual), concreteNdm);
|
||||
concreteStrainActual = concreteNdm
|
||||
.PrestrainLogic
|
||||
.GetAll()
|
||||
.Sum(x => x.PrestrainValue);
|
||||
TraceLogger?.AddMessage($"Actual strain of concrete on the axis of rebar EpsilonC = {concreteStrainActual}(dimensionless)");
|
||||
if (crackResult.IsSectionCracked == false)
|
||||
{
|
||||
@@ -126,7 +129,6 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
|
||||
TraceLogger?.AddMessage($"Actual stress in rebar Sigma,s = {rebarActualStress}(Pa)");
|
||||
double psiS = GetExponentialSofteningFactor(stressInCracking);
|
||||
TraceLogger?.AddMessage($"PsiS = {psiS}");
|
||||
//return 0.94d;
|
||||
return psiS;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user