public ConcreteSectionFlexure GetRectangularSectionFourSidesDistributed(double b, double h,
                                                                                double A_sTopBottom, double A_sLeftRight, double c_centTopBottom, double c_centLeftRight, IConcreteMaterial mat, IRebarMaterial rebarMaterial)
        {
            double YTop    = h / 2.0 - c_centTopBottom;
            double YBottom = -h / 2.0 + c_centTopBottom;
            double XLeft   = -b / 2.0 + c_centLeftRight;
            double XRight  = b / 2.0 - c_centLeftRight;

            Point2D P1 = new Point2D(XLeft, YTop);
            Point2D P2 = new Point2D(XRight, YTop);
            Point2D P3 = new Point2D(XRight, YBottom);
            Point2D P4 = new Point2D(XLeft, YBottom);

            RebarLine topLine    = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false);
            RebarLine bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false);

            RebarLine leftLine  = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true);
            RebarLine rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true);

            List <RebarPoint> LongitudinalBars = new List <RebarPoint>();

            LongitudinalBars.AddRange(topLine.RebarPoints);
            LongitudinalBars.AddRange(bottomLine.RebarPoints);
            LongitudinalBars.AddRange(leftLine.RebarPoints);
            LongitudinalBars.AddRange(rightLine.RebarPoints);


            CrossSectionRectangularShape section = new CrossSectionRectangularShape(mat, null, b, h);
            CalcLog log = new CalcLog();

            ConcreteSectionFlexure sectionFlexure = new ConcreteSectionFlexure(section, LongitudinalBars, log);

            return(sectionFlexure);
        }
Пример #2
0
        private List <KodestructAci.RebarPoint> GetWallBars(double h, double t_w, string RebarSizeId, double N_curtains, double s, double c_edge, RebarMaterial LongitudinalRebarMaterial)
        {
            RebarDesignation des;
            bool             IsValidString = Enum.TryParse(RebarSizeId, true, out des);

            if (IsValidString == false)
            {
                throw new Exception("Rebar size is not recognized. Check input.");
            }
            RebarSection sec = new RebarSection(des);
            double       A_b = sec.Area;

            int       NBarLines = (int)Math.Floor(h / s);
            double    A_s       = NBarLines * N_curtains * A_b;
            RebarLine Line      = new RebarLine(A_s,
                                                new Point2D(0.0, -h / 2.0 + c_edge),
                                                new Point2D(0.0, h / 2.0 - c_edge),
                                                LongitudinalRebarMaterial.Material, false, false, NBarLines);

            return(Line.RebarPoints);
        }
        private List <KodestructAci.RebarPoint> GetBoundaryZoneBars(BoundaryZone BoundaryZone, IRebarMaterial LongitudinalRebarMaterial, Point2D BzCentroid, bool IsTop)
        {
            Point2D topPoint;
            Point2D botPoint;

            if (IsTop == true)
            {
                topPoint = new Point2D(0, BzCentroid.Y + (BoundaryZone.h / 2.0 - BoundaryZone.c_cntrEdge));
                botPoint = new Point2D(0, BzCentroid.Y - (BoundaryZone.h / 2.0 - BoundaryZone.c_cntrInterior));
            }
            else
            {
                topPoint = new Point2D(0, BzCentroid.Y + (BoundaryZone.h / 2.0 - BoundaryZone.c_cntrInterior));
                botPoint = new Point2D(0, BzCentroid.Y - (BoundaryZone.h / 2.0 - BoundaryZone.c_cntrEdge));
            }



            RebarLine Line = new RebarLine(BoundaryZone.A_s,
                                           botPoint, topPoint, LongitudinalRebarMaterial, false, false, (int)BoundaryZone.N_Bar_Rows - 1);

            return(Line.RebarPoints);
        }
        /// <summary>
        /// Creates compression member from top/bottom and side reinforcement
        /// </summary>
        /// <param name="Width">Width</param>
        /// <param name="Height">Heigth</param>
        /// <param name="ConcreteMaterial">Concrete material (as IConcreteMaterial)</param>
        /// <param name="RebarMaterial"> Rebar material (as IRebarMaterial) </param>
        /// <param name="A_s_TopBottom">Area of left or right reinforcement (each)</param>
        /// <param name="A_s_LeftRight">Area of top or bottom reinforcement (each)</param>
        /// <param name="c_centerTopBottom">Cover to rebar centroid for top and bottom reinforcement</param>
        /// <param name="c_centerLeftRight">Cover to rebar centroid for left and right side reinforcement</param>
        /// <param name="ConfinementReinforcement">Distiguishes between ties and spirals</param>
        /// <param name="IsPrestressed">Distinguishes between prestressed versus non-prestressed members</param>
        /// <returns></returns>
        public ConcreteSectionCompression GetRectangularCompressionMember(double Width, double Height,
                                                                          IConcreteMaterial ConcreteMaterial, IRebarMaterial RebarMaterial,
                                                                          double A_s_TopBottom, double A_s_LeftRight,
                                                                          double c_centerTopBottom, double c_centerLeftRight,
                                                                          ConfinementReinforcementType ConfinementReinforcement, bool IsPrestressed = false)
        {
            CalcLog   log     = new CalcLog();
            RebarLine topLine = new RebarLine(A_s_TopBottom,
                                              new Point2D(-Width / 2.0 + c_centerLeftRight, Height / 2.0 - c_centerTopBottom),
                                              new Point2D(Width / 2.0 - c_centerLeftRight, Height / 2.0 - c_centerTopBottom),
                                              RebarMaterial, false);

            RebarLine botLine = new RebarLine(A_s_TopBottom,
                                              new Point2D(-Width / 2.0 + c_centerLeftRight, -Height / 2.0 + c_centerTopBottom),
                                              new Point2D(Width / 2.0 - c_centerLeftRight, -Height / 2.0 + c_centerTopBottom),
                                              RebarMaterial, false);

            RebarLine leftLine = new RebarLine(A_s_LeftRight,
                                               new Point2D(-Width / 2.0 + c_centerLeftRight, -Height / 2.0 + c_centerTopBottom),
                                               new Point2D(-Width / 2.0 + c_centerLeftRight, Height / 2.0 - c_centerTopBottom),
                                               RebarMaterial, true);

            RebarLine rightLine = new RebarLine(A_s_LeftRight,
                                                new Point2D(Width / 2.0 - c_centerLeftRight, -Height / 2.0 + c_centerTopBottom),
                                                new Point2D(Width / 2.0 - c_centerLeftRight, Height / 2.0 - c_centerTopBottom),
                                                RebarMaterial, true);

            List <RebarPoint> LongitudinalBars = new List <RebarPoint>();

            LongitudinalBars.AddRange(topLine.RebarPoints);
            LongitudinalBars.AddRange(botLine.RebarPoints);
            LongitudinalBars.AddRange(leftLine.RebarPoints);
            LongitudinalBars.AddRange(rightLine.RebarPoints);

            return(this.GetRectangularCompressionMember(Width, Height, ConcreteMaterial, LongitudinalBars, ConfinementReinforcement, log, IsPrestressed));
        }
//        public ConcreteSectionFlexure GetRectangularSectionWithBoundaryZones(double b, double h,
//double A_sBoundary, double L_Boundary, RebarDesignation curtainBar, double s_curtain, int N_curtains, IConcreteMaterial mat, IRebarMaterial rebarMaterial,
//    ConfinementReinforcementType ConfinementReinforcementType, int NumberOfSubdivisions = 20)
//        {

//            double YTop = h / 2.0 - c_centTopBottom;
//            double YBottom = -h / 2.0 + c_centTopBottom;
//            double XLeft = -b / 2.0 + c_centLeftRight;
//            double XRight = b / 2.0 - c_centLeftRight;

//            Point2D P1 = new Point2D(XLeft, YTop);
//            Point2D P2 = new Point2D(XRight, YTop);
//            Point2D P3 = new Point2D(XRight, YBottom);
//            Point2D P4 = new Point2D(XLeft, YBottom);



//            RebarLine topLine = null;
//            RebarLine bottomLine = null;

//            RebarLine leftLine = null;
//            RebarLine rightLine = null;

//            if (NumberOfSubdivisions == 0)
//            {
//                topLine = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false);
//                bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false);
//                if (A_sLeftRight > 0)
//                {
//                    leftLine = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true);
//                    rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true);
//                }

//            }
//            else
//            {
//                topLine = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false, false, NumberOfSubdivisions);
//                bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false, false, NumberOfSubdivisions);
//                if (A_sLeftRight > 0)
//                {
//                    leftLine = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true, false, NumberOfSubdivisions);
//                    rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true, false, NumberOfSubdivisions);
//                }
//            }


//            List<RebarPoint> LongitudinalBars = new List<RebarPoint>();


//            if (topLine != null) LongitudinalBars.AddRange(topLine.RebarPoints);
//            if (bottomLine != null) LongitudinalBars.AddRange(bottomLine.RebarPoints);
//            if (leftLine != null) LongitudinalBars.AddRange(leftLine.RebarPoints);
//            if (rightLine != null) LongitudinalBars.AddRange(rightLine.RebarPoints);


//            CrossSectionRectangularShape section = new CrossSectionRectangularShape(mat, null, b, h);
//            CalcLog log = new CalcLog();

//            ConcreteSectionFlexure sectionFlexure = new ConcreteSectionFlexure(section, LongitudinalBars, log, ConfinementReinforcementType);
//            return sectionFlexure;
//        }

        public ConcreteSectionFlexure GetRectangularSectionFourSidesDistributed(double b, double h,
                                                                                double A_sTopBottom, double A_sLeftRight, double c_centTopBottom, double c_centLeftRight, IConcreteMaterial mat, IRebarMaterial rebarMaterial,
                                                                                ConfinementReinforcementType ConfinementReinforcementType, int NumberOfSubdivisions = 0)
        {
            double YTop    = h / 2.0 - c_centTopBottom;
            double YBottom = -h / 2.0 + c_centTopBottom;
            double XLeft   = -b / 2.0 + c_centLeftRight;
            double XRight  = b / 2.0 - c_centLeftRight;

            Point2D P1 = new Point2D(XLeft, YTop);
            Point2D P2 = new Point2D(XRight, YTop);
            Point2D P3 = new Point2D(XRight, YBottom);
            Point2D P4 = new Point2D(XLeft, YBottom);



            RebarLine topLine    = null;
            RebarLine bottomLine = null;

            RebarLine leftLine  = null;
            RebarLine rightLine = null;

            if (NumberOfSubdivisions == 0)
            {
                topLine    = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false);
                bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false);
                if (A_sLeftRight > 0)
                {
                    leftLine  = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true);
                    rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true);
                }
            }
            else
            {
                topLine    = new RebarLine(A_sTopBottom, P1, P2, rebarMaterial, false, false, NumberOfSubdivisions);
                bottomLine = new RebarLine(A_sTopBottom, P3, P4, rebarMaterial, false, false, NumberOfSubdivisions);
                if (A_sLeftRight > 0)
                {
                    leftLine  = new RebarLine(A_sLeftRight, P2, P3, rebarMaterial, true, false, NumberOfSubdivisions);
                    rightLine = new RebarLine(A_sLeftRight, P4, P1, rebarMaterial, true, false, NumberOfSubdivisions);
                }
            }


            List <RebarPoint> LongitudinalBars = new List <RebarPoint>();


            if (topLine != null)
            {
                LongitudinalBars.AddRange(topLine.RebarPoints);
            }
            if (bottomLine != null)
            {
                LongitudinalBars.AddRange(bottomLine.RebarPoints);
            }
            if (leftLine != null)
            {
                LongitudinalBars.AddRange(leftLine.RebarPoints);
            }
            if (rightLine != null)
            {
                LongitudinalBars.AddRange(rightLine.RebarPoints);
            }


            CrossSectionRectangularShape section = new CrossSectionRectangularShape(mat, null, b, h);
            CalcLog log = new CalcLog();

            ConcreteSectionFlexure sectionFlexure = new ConcreteSectionFlexure(section, LongitudinalBars, log, ConfinementReinforcementType);

            return(sectionFlexure);
        }