Exemplo n.º 1
0
        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]));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 5
0
 public double NominalMmax()
 {
     return
         ((Steel.fyd - 0.85 * Concrete.fcd) * ReinforcingBars.Sum(rb => rb.As * (Section.h / 2.0 - rb.di)));
 }
Exemplo n.º 6
0
 public double NominalPmax()
 {
     return
         (Concrete.beta * Concrete.fcd * (Section.b * Section.h - ReinforcingBars.Sum(rb => rb.As)) +
          ReinforcingBars.Sum(rb => rb.As) * Steel.fyd);
 }
Exemplo n.º 7
0
 public double NominalMmin()
 {
     return
         (Steel.fyd * ReinforcingBars.Sum(rb => rb.As * (rb.di - Section.h / 2.0)));
 }
Exemplo n.º 8
0
 public double NominalPmin()
 {
     return(-ReinforcingBars.Sum(rb => rb.As) * Steel.fyd);
 }
Exemplo n.º 9
0
 public double MinRebarDi()
 {
     return(ReinforcingBars.Select(x => x.di).Min());
 }
Exemplo n.º 10
0
 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)));
 }
Exemplo n.º 11
0
 public double AxialCapacity(double c)
 {
     return
         (ConcreteForce(c) + ReinforcingBars.Sum(rb => ReinforcingForce(c, rb.di, rb.As)));
 }