46 lines
1.8 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|