using StructureHelperCommon.Models.Loggers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperCommon.Models.Sections.Logics
{
public class RcEccentricityAxisLogic : IRcEccentricityAxisLogic
{
private readonly double lengthFactor;
private readonly double sizeFactor;
private readonly double minEccentricity;
///
/// Properties of compressed member
///
public double Length { get; set; }
///
/// Size of cross-section along X-axis, m
///
public double Size { get; set; }
public IShiftTraceLogger? TraceLogger { get; set; }
public RcEccentricityAxisLogic()
{
lengthFactor = 600d;
sizeFactor = 30d;
minEccentricity = 0.01d;
}
public double GetValue()
{
TraceLogger?.AddMessage(LoggerStrings.CalculatorType(this), TraceLogStatuses.Service);
var lengthEccetricity = Length / lengthFactor;
TraceLogger?.AddMessage(string.Format("Length of member = {0}(m)", Length));
TraceLogger?.AddMessage(string.Format("Accidental eccentricity by length e,a = {0}(m) / {1} = {2}(m)", Length, lengthFactor, lengthEccetricity));
TraceLogger?.AddMessage(string.Format("Size of cross-section of member = {0}(m)", Size));
var sizeXEccetricity = Size / sizeFactor;
TraceLogger?.AddMessage(string.Format("Accidental eccentricity by size e,a ={0}(m) / {1} = {2}(m)", Size, sizeFactor, sizeXEccetricity)); ;
TraceLogger?.AddMessage(string.Format("In any case, minimum accidental eccentricity e,a = {0}(m)", minEccentricity));
var fullEccentricity = new List()
{
lengthEccetricity,
sizeXEccetricity,
minEccentricity,
}
.Max();
string mesEcc = string.Format("Maximum accidental eccentricity e,a = max({0}(m); {1}(m); {2}(m)) = {3}(m)",
lengthEccetricity, sizeXEccetricity,
minEccentricity,
fullEccentricity);
TraceLogger?.AddMessage(mesEcc);
return fullEccentricity;
}
}
}