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 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)));
 }