Files
StructureHelper/StructureHelperLogics/NdmCalculations/Buckling/RCStiffnessLogicSP63.cs

46 lines
1.8 KiB
C#

using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Loggers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.NdmCalculations.Buckling
{
internal class RCStiffnessLogicSP63 : IRCStiffnessLogic
{
const double initialKs = 0.7d;
const double initialKc = 0.15d;
const double deltaEAddition = 0.3d;
IConcretePhiLLogic phiLLogic { get; }
IConcreteDeltaELogic deltaELogic { get; }
public IShiftTraceLogger? TraceLogger { get; set; }
public RCStiffnessLogicSP63() : this(new ConstPhiLLogic(), new ConstDeltaELogic()) { }
public RCStiffnessLogicSP63(IConcretePhiLLogic phiLLogic, IConcreteDeltaELogic deltaELogic)
{
this.phiLLogic = phiLLogic;
this.deltaELogic = deltaELogic;
}
public (double Kc, double Ks) GetStiffnessCoeffitients()
{
if (TraceLogger is not null)
{
phiLLogic.TraceLogger = TraceLogger.GetSimilarTraceLogger(50);
deltaELogic.TraceLogger = TraceLogger.GetSimilarTraceLogger(50);
}
double phiL = phiLLogic.GetPhil();
double deltaE = deltaELogic.GetDeltaE();
TraceLogger?.AddMessage(string.Format("Factor of relative eccentricity DeltaE = {0}", deltaE));
double kc = initialKc / (phiL * (deltaEAddition + deltaE));
var messageString = string.Format("Factor of stiffness of concrete Kc = {0} / ({1} * ({2} + {3})) = {4}, {5}", initialKc, phiL, deltaEAddition, deltaE, kc, LoggerStrings.DimensionLess);
TraceLogger?.AddMessage(messageString);
return (kc, initialKs);
}
}
}