diff --git a/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml b/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml
index c1fe35d..698806b 100644
--- a/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml
+++ b/StructureHelper/Infrastructure/UI/Resources/ButtonStyles.xaml
@@ -97,8 +97,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/CrackResultView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/CrackResultView.xaml.cs
new file mode 100644
index 0000000..ac76ff0
--- /dev/null
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/CrackResultView.xaml.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews
+{
+ ///
+ /// Логика взаимодействия для CrackResultView.xaml
+ ///
+ public partial class CrackResultView : Window
+ {
+ public CrackResultView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/CrackResultViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/CrackResultViewModel.cs
new file mode 100644
index 0000000..ba77f18
--- /dev/null
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/CrackResultViewModel.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews
+{
+ public class CrackResultViewModel
+ {
+ }
+}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultView.xaml
new file mode 100644
index 0000000..220c4ed
--- /dev/null
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultView.xaml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultView.xaml.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultView.xaml.cs
new file mode 100644
index 0000000..d3d78a9
--- /dev/null
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultView.xaml.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Shapes;
+
+namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews
+{
+ ///
+ /// Логика взаимодействия для TupleCrackResultView.xaml
+ ///
+ public partial class TupleCrackResultView : Window
+ {
+ public TupleCrackResultView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultViewModel.cs b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultViewModel.cs
new file mode 100644
index 0000000..8d6bef2
--- /dev/null
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/Cracks/TupleCrackResultViewModel.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace StructureHelper.Windows.CalculationWindows.CalculatorsViews
+{
+ public class TupleCrackResultViewModel
+ {
+ }
+}
diff --git a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml
index fc70c15..3805a1e 100644
--- a/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml
+++ b/StructureHelper/Windows/CalculationWindows/CalculatorsViews/ForceCalculatorViews/ForcesResultsView.xaml
@@ -25,7 +25,11 @@
-
+
@@ -59,7 +63,6 @@
-
diff --git a/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs b/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs
index 0a829bf..7fccf0d 100644
--- a/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs
+++ b/StructureHelper/Windows/ViewModels/Forces/ActionsViewModel.cs
@@ -1,18 +1,13 @@
using StructureHelper.Infrastructure.Enums;
-using StructureHelper.Models.Materials;
using StructureHelper.Services.Settings;
using StructureHelper.Windows.Forces;
using StructureHelperCommon.Infrastructures.Exceptions;
using StructureHelperCommon.Infrastructures.Interfaces;
+using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Forces;
using StructureHelperLogics.Models.CrossSections;
-using StructureHelperLogics.Models.Materials;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using StructureHelperLogics.NdmCalculations.Cracking;
using System.Windows.Forms;
namespace StructureHelper.Windows.ViewModels.Forces
@@ -98,24 +93,40 @@ namespace StructureHelper.Windows.ViewModels.Forces
{
bool result = true;
var calcRepository = repository.CalculatorsList;
- foreach (var item in calcRepository)
+ foreach (var calc in calcRepository)
{
- if (item is IForceCalculator)
+ if (calc is IForceCalculator)
{
- var forceCalculator = item as IForceCalculator;
- var containSelected = forceCalculator.ForceActions.Contains(SelectedItem);
- if (containSelected)
- {
- var dialogResultCalc = MessageBox.Show($"Action is contained in calculator {item.Name}", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
- if (dialogResultCalc == DialogResult.Yes)
- {
- forceCalculator.ForceActions.Remove(SelectedItem);
- }
- else result = false;
- }
+ var forceCombinations = calc as IHasForceCombinations;
+ result = DeleteActionFromHost(result, calc, forceCombinations);
+ }
+ else if (calc is CrackCalculator calculator)
+ {
+ var forceCombinations = calculator.InputData as IHasForceCombinations;
+ result = DeleteActionFromHost(result, calc, forceCombinations);
+ }
+ else
+ {
+ throw new StructureHelperException(ErrorStrings.ExpectedWas(typeof(ICalculator), calc));
}
}
return result;
}
+
+ private bool DeleteActionFromHost(bool result, ICalculator item, IHasForceCombinations? forceCombinations)
+ {
+ var containSelected = forceCombinations.ForceActions.Contains(SelectedItem);
+ if (containSelected)
+ {
+ var dialogResultCalc = MessageBox.Show($"Action is contained in calculator {item.Name}", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
+ if (dialogResultCalc == DialogResult.Yes)
+ {
+ forceCombinations.ForceActions.Remove(SelectedItem);
+ }
+ else result = false;
+ }
+
+ return result;
+ }
}
}
diff --git a/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs
index 802d030..748cd55 100644
--- a/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs
+++ b/StructureHelper/Windows/ViewModels/NdmCrossSections/AnalysisViewModelLogic.cs
@@ -1,5 +1,7 @@
-using StructureHelper.Infrastructure;
+using LoaderCalculator;
+using StructureHelper.Infrastructure;
using StructureHelper.Infrastructure.Enums;
+using StructureHelper.Windows.CalculationWindows.CalculatorsViews;
using StructureHelper.Windows.CalculationWindows.CalculatorsViews.ForceCalculatorViews;
using StructureHelper.Windows.CalculationWindows.ProgressViews;
using StructureHelper.Windows.Errors;
@@ -115,9 +117,12 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(SelectedItem));}
}
- private void EditCrackCalculator(CrackCalculator crackCalculator)
+ private void EditCrackCalculator(CrackCalculator calculator)
{
- throw new NotImplementedException();
+ var calculatorCopy = calculator.Clone() as CrackCalculator;
+ var vm = new CrackCalculatorInputDataViewModel(repository.Primitives, repository.ForceActions, calculator);
+ var wnd = new CrackCalculatorInputDataView(vm);
+ ShowWindow(calculator, calculatorCopy, wnd);
}
private void EditLimitCurveCalculator(LimitCurvesCalculator calculator)
diff --git a/StructureHelper/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs b/StructureHelper/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs
index 790fb4a..f438ee2 100644
--- a/StructureHelper/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs
+++ b/StructureHelper/Windows/ViewModels/NdmCrossSections/PrimitiveViewModelLogic.cs
@@ -7,6 +7,8 @@ using StructureHelper.Windows.PrimitiveTemplates.RCs.Beams;
using StructureHelper.Windows.PrimitiveTemplates.RCs.RectangleBeam;
using StructureHelper.Windows.Services;
using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Interfaces;
+using StructureHelperCommon.Models.Calculators;
using StructureHelperCommon.Models.Materials;
using StructureHelperCommon.Models.Shapes;
using StructureHelperLogics.Models.CrossSections;
@@ -14,6 +16,7 @@ using StructureHelperLogics.Models.Primitives;
using StructureHelperLogics.Models.Templates.CrossSections.RCs;
using StructureHelperLogics.Models.Templates.RCs;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
+using StructureHelperLogics.NdmCalculations.Cracking;
using StructureHelperLogics.NdmCalculations.Primitives;
using System;
using System.Collections.Generic;
@@ -135,9 +138,24 @@ namespace StructureHelper.Windows.ViewModels.NdmCrossSections
{
if (calc is IForceCalculator)
{
- var forceCalc = calc as IForceCalculator;
+ var forceCalc = calc as IHasPrimitives;
forceCalc.Primitives.Remove(ndmPrimitive);
}
+ else if (calc is LimitCurvesCalculator calculator)
+ {
+ //to do
+ //var forceCalc = calculator.InputData as IHasPrimitives;
+ //forceCalc.Primitives.Remove(ndmPrimitive);
+ }
+ else if (calc is CrackCalculator crackCalculator)
+ {
+ var forceCalc = crackCalculator.InputData as IHasPrimitives;
+ forceCalc.Primitives.Remove(ndmPrimitive);
+ }
+ else
+ {
+ throw new StructureHelperException(ErrorStrings.ExpectedWas(typeof(ICalculator), calc));
+ }
}
foreach (var primitive in repository.Primitives)
{
diff --git a/StructureHelperLogics/NdmCalculations/Analyses/Logics/CalculatorUpdateStrategy.cs b/StructureHelperLogics/NdmCalculations/Analyses/Logics/CalculatorUpdateStrategy.cs
index 46423ab..cc6eada 100644
--- a/StructureHelperLogics/NdmCalculations/Analyses/Logics/CalculatorUpdateStrategy.cs
+++ b/StructureHelperLogics/NdmCalculations/Analyses/Logics/CalculatorUpdateStrategy.cs
@@ -5,6 +5,7 @@ using StructureHelperCommon.Services;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces.LimitCurve;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces.Logics;
+using StructureHelperLogics.NdmCalculations.Cracking;
using StructureHelperLogics.NdmCalculations.Primitives;
using System;
using System.Collections.Generic;
@@ -28,6 +29,10 @@ namespace StructureHelperLogics.NdmCalculations.Analyses.Logics
{
new LimitCurvesCalculatorUpdateStrategy().Update(limitCurves, (LimitCurvesCalculator)sourceObject);
}
+ else if (targetObject is CrackCalculator crackCalculator)
+ {
+ new CrackCalculatorUpdateStrategy().Update(crackCalculator, (CrackCalculator)sourceObject);
+ }
else
{
ErrorCommonProcessor.ObjectTypeIsUnknown(typeof(INdmPrimitive), sourceObject.GetType());
diff --git a/StructureHelperLogics/NdmCalculations/Cracking/CrackWidthTupleResult.cs b/StructureHelperLogics/NdmCalculations/Cracking/CrackWidthTupleResult.cs
index cfd5e91..221fb5f 100644
--- a/StructureHelperLogics/NdmCalculations/Cracking/CrackWidthTupleResult.cs
+++ b/StructureHelperLogics/NdmCalculations/Cracking/CrackWidthTupleResult.cs
@@ -13,7 +13,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
public double CrackWidth { get; set; }
public double UltimateCrackWidth { get; set; }
public bool IsCrackLessThanUltimate => CrackWidth <= UltimateCrackWidth;
- public double RebarStrain { get; set; }
- public double ConcreteStrain { get; set; }
+ public RebarStressResult RebarStressResult { get; set; }
+ public double SofteningFactor { get; set; }
}
}
diff --git a/StructureHelperLogics/NdmCalculations/Cracking/LengthBetweenCracksLogicSP63.cs b/StructureHelperLogics/NdmCalculations/Cracking/LengthBetweenCracksLogicSP63.cs
index 0fa026f..34c5bf5 100644
--- a/StructureHelperLogics/NdmCalculations/Cracking/LengthBetweenCracksLogicSP63.cs
+++ b/StructureHelperLogics/NdmCalculations/Cracking/LengthBetweenCracksLogicSP63.cs
@@ -26,6 +26,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
readonly IAverageDiameterLogic diameterLogic;
readonly ITensileConcreteAreaLogic concreteAreaLogic;
ITensionRebarAreaLogic rebarAreaLogic;
+ private IStressLogic stressLogic => new StressLogic();
///
public IEnumerable NdmCollection { get; set; }
@@ -44,7 +45,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
this
( new EquivalentDiameterLogic(),
new TensileConcreteAreaLogicSP63(),
- new TensionRebarAreaSimpleSumLogic())
+ new TensionRebarAreaByStrainLogic())
{ }
///
public double GetLength()
@@ -104,8 +105,10 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
private double GetAverageDiameter(IEnumerable rebars)
{
+ var tesileRebars = rebars
+ .Where(x => stressLogic.GetTotalStrain(StrainMatrix, x) > 0d);
diameterLogic.TraceLogger = TraceLogger?.GetSimilarTraceLogger(50);
- diameterLogic.Rebars = rebars;
+ diameterLogic.Rebars = tesileRebars;
var rebarDiameter = diameterLogic.GetAverageDiameter();
TraceLogger?.AddMessage($"Average rebar diameter ds = {rebarDiameter}");
return rebarDiameter;
diff --git a/StructureHelperLogics/NdmCalculations/Cracking/RebarCrackCalculator.cs b/StructureHelperLogics/NdmCalculations/Cracking/RebarCrackCalculator.cs
index 96d5f58..247c169 100644
--- a/StructureHelperLogics/NdmCalculations/Cracking/RebarCrackCalculator.cs
+++ b/StructureHelperLogics/NdmCalculations/Cracking/RebarCrackCalculator.cs
@@ -47,9 +47,12 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
{
CrackWidth = acrc1,
UltimateCrackWidth = InputData.UserCrackInputData.UltimateLongCrackWidth,
- RebarStrain = rebarStressResult.RebarStrain,
- ConcreteStrain = rebarStressResult.ConcreteStrain
+ RebarStressResult = rebarStressResult
};
+ TraceLogger?.AddMessage($"Long crack width acrc = acrc,1 = {acrc1}(m)");
+ TraceLogger?.AddMessage($"Ultimate long crack width acrc,ult = {longRebarResult.UltimateCrackWidth}(m)");
+ TraceCrackResult(longRebarResult);
+
GetSofteningLogic(InputData.ShortRebarData);
rebarStressResult = GetRebarStressResult(InputData.ShortRebarData);
@@ -61,14 +64,16 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
var acrc3 = crackWidthLogic.GetCrackWidth();
double acrcShort = acrc1 - acrc2 + acrc3;
- TraceLogger?.AddMessage($"Long crack width acrc = acrc,1 = {acrc1}(m)");
TraceLogger?.AddMessage($"Short crack width acrc = acrc,1 - acrc,2 + acrc,3 = {acrc1} - {acrc2} + {acrc3} = {acrcShort}(m)");
var shortRebarResult = new CrackWidthTupleResult()
{
CrackWidth = acrcShort,
- UltimateCrackWidth = InputData.UserCrackInputData.UltimateShortCrackWidth
+ UltimateCrackWidth = InputData.UserCrackInputData.UltimateShortCrackWidth,
+ RebarStressResult = rebarStressResult
};
+ TraceCrackResult(shortRebarResult);
result.LongTermResult = longRebarResult;
+ result.ShortTermResult = shortRebarResult;
}
catch (Exception ex)
{
@@ -78,6 +83,18 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
result.RebarPrimitive = InputData.RebarPrimitive;
}
+ private void TraceCrackResult(CrackWidthTupleResult rebarResult)
+ {
+ if (rebarResult.IsCrackLessThanUltimate == false)
+ {
+ TraceLogger?.AddMessage($"Checking crack width is failure, actual crack width acrc = {rebarResult.CrackWidth} > ultimate crack width acrc,ult = {rebarResult.UltimateCrackWidth}", TraceLogStatuses.Warning);
+ }
+ else
+ {
+ TraceLogger?.AddMessage($"Checking crack width is ok, actual crack width acrc = {rebarResult.CrackWidth} <= ultimate crack width acrc,ult = {rebarResult.UltimateCrackWidth}");
+ }
+ }
+
private void GetSofteningLogic(RebarCrackInputData rebarData)
{
if (InputData.UserCrackInputData.SetSofteningFactor == true)
diff --git a/StructureHelperLogics/NdmCalculations/Cracking/SofteningLogics/RebarStressSofteningLogic.cs b/StructureHelperLogics/NdmCalculations/Cracking/SofteningLogics/RebarStressSofteningLogic.cs
index b96e5c1..eb5c8cb 100644
--- a/StructureHelperLogics/NdmCalculations/Cracking/SofteningLogics/RebarStressSofteningLogic.cs
+++ b/StructureHelperLogics/NdmCalculations/Cracking/SofteningLogics/RebarStressSofteningLogic.cs
@@ -20,27 +20,64 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
{
public class RebarStressSofteningLogic : ICrackSofteningLogic
{
- private IStressLogic stressLogic;
- private RebarStressResult afterCrackingRebarResult;
+ ///
+ /// Rebar result immediately after cracking appearance
+ ///
+ private RebarStressResult crackRebarResult;
+ ///
+ /// Rebar resul for actual force combination
+ ///
private RebarStressResult actualRebarResult;
- private INdm concreteNdm;
- private INdm rebarNdm;
+ private INdm? concreteNdm;
+ private INdm? rebarNdm;
- private double rebarStrainActual;
+ private double rebarActualStrain;
private double concreteStrainActual;
- private double rebarStressActual;
+ private double rebarActualStress;
+ private double softeningFactor;
+ private double minValueOfFactor = 0.2d;
+ private RebarPrimitive rebarPrimitive;
+ private RebarCrackInputData inputData;
- public double MinValueOfFactor { get; set; } = 0.2d;
- public RebarPrimitive RebarPrimitive { get; set; }
- public RebarCrackInputData InputData { get; set; }
+ public double MinValueOfFactor
+ {
+ get => minValueOfFactor; set
+ {
+ minValueOfFactor = value;
+ IsResultActual = false;
+ }
+ }
+ public RebarPrimitive RebarPrimitive
+ {
+ get => rebarPrimitive; set
+ {
+ rebarPrimitive = value;
+ IsResultActual = false;
+ }
+ }
+ public RebarCrackInputData InputData
+ {
+ get => inputData; set
+ {
+ inputData = value;
+ IsResultActual = false;
+ }
+ }
public IShiftTraceLogger? TraceLogger { get; set; }
+ public bool IsResultActual { get; private set; } = false;
public double GetSofteningFactor()
{
- GetNdms();
- return GetPsiSFactor(InputData.ForceTuple, InputData.CrackableNdmCollection, InputData.CrackedNdmCollection);
+ if (IsResultActual == false)
+ {
+ GetNdms();
+ softeningFactor = GetPsiSFactor(InputData.ForceTuple, InputData.CrackableNdmCollection);
+ IsResultActual = true;
+ }
+ return softeningFactor;
+
}
private void GetNdms()
@@ -55,7 +92,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
rebarNdm = RebarPrimitive.GetRebarNdm(options);
}
- private double GetPsiSFactor(ForceTuple forceTuple, IEnumerable crackableNndms, IEnumerable crackedNndms)
+ private double GetPsiSFactor(ForceTuple forceTuple, IEnumerable crackableNndms)
{
var crackResult = calculateCrackTuples(forceTuple, crackableNndms);
@@ -66,11 +103,10 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
throw new StructureHelperException(errorString);
}
-
actualRebarResult = GetRebarStressResult(forceTuple);
- rebarStrainActual = actualRebarResult.RebarStrain;
- rebarStressActual = actualRebarResult.RebarStress;
- TraceLogger?.AddMessage($"Actual strain of rebar EpsilonS = {rebarStrainActual}(dimensionless)");
+ 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);
TraceLogger?.AddMessage($"Actual strain of concrete on the axis of rebar EpsilonC = {concreteStrainActual}(dimensionless)");
@@ -84,11 +120,11 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
TraceLogger?.AddMessage($"Section is cracked in start force combination, PsiS = 1.0");
return 1d;
}
- afterCrackingRebarResult = GetRebarStressResult(crackResult.TupleOfCrackAppearance as ForceTuple);
+ crackRebarResult = GetRebarStressResult(crackResult.TupleOfCrackAppearance as ForceTuple);
- var stressInCracking = afterCrackingRebarResult.RebarStress;
+ var stressInCracking = crackRebarResult.RebarStress;
TraceLogger?.AddMessage($"Stress in rebar immediately after cracking Sigma,scrc = {stressInCracking}(Pa)");
- TraceLogger?.AddMessage($"Actual stress in rebar Sigma,s = {rebarStressActual}(Pa)");
+ TraceLogger?.AddMessage($"Actual stress in rebar Sigma,s = {rebarActualStress}(Pa)");
double psiS = GetExponentialSofteningFactor(stressInCracking);
TraceLogger?.AddMessage($"PsiS = {psiS}");
//return 0.94d;
@@ -97,7 +133,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
private double GetExponentialSofteningFactor(double stressInCracking)
{
- var stressRatio = stressInCracking / rebarStressActual;
+ var stressRatio = stressInCracking / rebarActualStress;
var logic = new ExpSofteningLogic()
{
ForceRatio = stressRatio,
@@ -116,13 +152,13 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
{
NdmCollection = ndms,
CheckedNdmCollection = new List() { concreteNdm },
- TraceLogger = TraceLogger?.GetSimilarTraceLogger(100)
+ //TraceLogger = TraceLogger?.GetSimilarTraceLogger(100)
};
var crackedLogis = new CrackedLogic(sectionCrackedLogic)
{
StartTuple = new ForceTuple(),
EndTuple = forceTuple,
- TraceLogger = TraceLogger?.GetSimilarTraceLogger(100)
+ //TraceLogger = TraceLogger?.GetSimilarTraceLogger(100)
};
var calculator = new CrackForceCalculator(crackedLogis)
{
@@ -133,7 +169,7 @@ namespace StructureHelperLogics.NdmCalculations.Cracking
IterationAccuracy = 0.01d,
MaxIterationCount = 1000
},
- TraceLogger = TraceLogger?.GetSimilarTraceLogger(150)
+ //TraceLogger = TraceLogger?.GetSimilarTraceLogger(150)
};
calculator.Run();
return calculator.Result as CrackForceResult;