public static CalculationResult GetSectionCapacity(Concrete concrete, Steel steel, IList <PointD> sectionCoordinates, IList <Bar> bars, IList <LoadCase> loadCases /*IProgress<ProgressArgument> progressIndicatior*/) { var result = new CalculationResult(); var capacity = new SectionCapacity(concrete, steel); var section = new Section(sectionCoordinates); var loadCaseResults = new List <LoadCaseResult>(); for (int i = 0; i <= loadCases.Count - 1; i++) { var loadCase = loadCases[i]; //progressIndicatior.Report(ProgressArgument.CalculateProgress(i, loadCases.Count, loadCase.Name)); var loadCaseResult = capacity.CalculateCapacity(loadCase.NormalForce, section, bars); loadCaseResult.LoadCase = loadCase; loadCaseResults.Add(loadCaseResult); } result.Cz = section.Cz; result.H = section.H; result.LoadCaseResults = loadCaseResults; result.MaxTensionForce = AxialCapacity.TensionCapacity(bars, steel); result.MaxCompressionForce = AxialCapacity.CompressionCapacity(sectionCoordinates, concrete); result.Concrete = concrete; result.Steel = steel; return(result); }
public InteractionCurveCalculator(Concrete concrete, Steel steel, IList <Bar> bars, IList <PointD> coordinates, IList <LoadCase> loadCases) { this.concrete = concrete; this.steel = steel; this.concrete = concrete; this.steel = steel; this.loadCases = loadCases; this.bars = bars; this.coordinates = coordinates; }
public static double TensionCapacity(IList <Bar> bars, Steel steel) { if (bars.Count == 0) { return(0); } double capacity = 0; foreach (var bar in bars) { capacity += bar.As * steel.Fyd * steel.K; } return(-capacity); }
static public double SteelStressCharacteristic(double e, Steel steel) { double s; if (e <= (steel.Fyk / steel.Es)) { s = e * steel.Es; } else if (e <= steel.Euk) { var a = (steel.K * steel.Fyk - steel.Fyk) / (steel.Euk - steel.Fyk / steel.Es); var b = steel.Fyk - a * steel.Fyk / steel.Es; s = a * e + b; } else { s = 0; } return(s); }
static public double SteelStressDesign(double e, Steel steel) { double a; double b; double stress = 0; if (e < 0) { stress = 0; } else if (e <= (steel.Fyd / steel.Es)) { stress = e * steel.Es; } else if (e <= steel.Eud) { a = (steel.K * steel.Fyd - steel.Fyd) / (steel.Euk - steel.Fyd / steel.Es); b = steel.Fyd - a * steel.Fyd / steel.Es; stress = a * e + b; } return(stress); }
public StrainCalculations(Concrete concrete, Steel steel, Section section) { this.concrete = concrete; this.steel = steel; this.section = section; }
public SectionCapacity(Concrete concrete, Steel steel) { this.concrete = concrete; this.steel = steel; }