public double MaxRebarStrain(List <double> ReinforcingStrains) { List <double> diList = ReinforcingBars.Select(x => x.di).ToList(); int i = diList.IndexOf(diList.Max()); return(Math.Abs(ReinforcingStrains[i])); }
public List <ReinforcingBar> MetrikDonatiKatmanBilgi() { List <ReinforcingBar> ReinforcingBarsMetric = ReinforcingBars.Clone() as List <ReinforcingBar>; ReinforcingBarsMetric.ForEach(item => item.As = item.As.SquareCentimeters().SquareMeters); ReinforcingBarsMetric.ForEach(item => item.di = item.di.Centimeters().Meters); return(ReinforcingBarsMetric); }
public List <InteractionDiagramItem> CreateInteractionDiagram() { List <InteractionDiagramItem> allItems = new List <InteractionDiagramItem>(); List <InteractionDiagramItem> rightSideItems = InteractionDiagramItems(); ReinforcingBars.ForEach(rb => rb.di = SectionGeometry.h - rb.di); ReinforcingBars.Reverse(); List <InteractionDiagramItem> leftSideItems = InteractionDiagramItems(); for (int i = 0; i < rightSideItems.Count; i++) { allItems.Add(rightSideItems[i]); } for (int i = leftSideItems.Count - 1; i >= 0; i--) { leftSideItems[i].Mnominal *= -1; leftSideItems[i].Mactual *= -1; allItems.Add(leftSideItems[i]); } return(allItems); }
public List <InteractionDiagramItem> InteractionDiagramItems() { RcRectangularSection RcSection = new RcRectangularSection(SectionGeometry, Concrete, Steel, ReinforcingBars); List <InteractionDiagramItem> items = new List <InteractionDiagramItem>(); double interval = 0.005; int NumberOfPoints = (int)Math.Truncate(1.20 * SectionGeometry.h / interval); double cMax = ReinforcingBars.Max(bar => bar.di); for (int i = 0; i < NumberOfPoints; i++) { double c = i * interval; List <double> ReinforcingStrains = new List <double>(); for (int j = 0; j < ReinforcingBars.Count; j++) { ReinforcingBar reBar = ReinforcingBars[j]; double SteelStrain = RcSection.ReinforcingStrain(c, reBar.di); ReinforcingStrains.Add(SteelStrain); } double actualPhi = StrengthReductionFactor.CalculateActualPhi(Code, RcSection.MaxRebarStrain(ReinforcingStrains)); if (RcSection.AxialCapacity(c) < RcSection.NominalPmax()) { items.Add(new InteractionDiagramItem(RcSection.MomentCapacity(c), RcSection.AxialCapacity(c), actualPhi, Concrete.k1 * c)); } } items.Insert(0, new InteractionDiagramItem(RcSection.NominalMmin(), RcSection.NominalPmin(), StrengthReductionFactor.phiB, 0.00)); items.Add(new InteractionDiagramItem(RcSection.NominalMmax(), RcSection.NominalPmax(), StrengthReductionFactor.phiC, Concrete.k1 * cMax)); ActualPmax = StrengthReductionFactor.phiA * StrengthReductionFactor.phiC * RcSection.NominalPmax(); return(items); }
public double NominalMmax() { return ((Steel.fyd - 0.85 * Concrete.fcd) * ReinforcingBars.Sum(rb => rb.As * (Section.h / 2.0 - rb.di))); }
public double NominalPmax() { return (Concrete.beta * Concrete.fcd * (Section.b * Section.h - ReinforcingBars.Sum(rb => rb.As)) + ReinforcingBars.Sum(rb => rb.As) * Steel.fyd); }
public double NominalMmin() { return (Steel.fyd * ReinforcingBars.Sum(rb => rb.As * (rb.di - Section.h / 2.0))); }
public double NominalPmin() { return(-ReinforcingBars.Sum(rb => rb.As) * Steel.fyd); }
public double MinRebarDi() { return(ReinforcingBars.Select(x => x.di).Min()); }
public double MomentCapacity(double c) { return (ConcreteForce(c) * (Section.h / 2.0 - Concrete.k1 * c / 2.0) + ReinforcingBars.Sum(rb => ReinforcingForce(c, rb.di, rb.As) * (Section.h / 2.0 - rb.di))); }
public double AxialCapacity(double c) { return (ConcreteForce(c) + ReinforcingBars.Sum(rb => ReinforcingForce(c, rb.di, rb.As))); }