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