/// <summary> /// /// </summary> /// <param name="h_total">Total height (including boundary zones)</param> /// <param name="t_w">Wall web thickness</param> /// <param name="RebarSizeId">Rebar Id</param> /// <param name="N_curtains">Number of rebar curtains</param> /// <param name="s">Bar spacing</param> /// <param name="c_edge">Concrete cover to center of rebar at wall ege</param> /// <param name="BoundaryZoneTop">Boundary zone object</param> /// <param name="BoundaryZoneBottom">Boundary zone object</param> /// <param name="ConcreteMaterial">Concrete material</param> /// <param name="LongitudinalRebarMaterial">Rebar material</param> /// <returns></returns> public static ShearWallSection ByWallGeometryAndBoundaryZones(double h_total, double t_w, string RebarSizeId, double N_curtains, double s, double c_edge, BoundaryZone BoundaryZoneTop, BoundaryZone BoundaryZoneBottom, ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial) { return(new ShearWallSection(h_total, t_w, RebarSizeId, N_curtains, s, c_edge, BoundaryZoneTop, BoundaryZoneBottom, ConcreteMaterial, LongitudinalRebarMaterial)); }
internal ShearWallSection(double h_total, double t_w, string RebarSizeId, double N_curtains, double s, double c_edge, BoundaryZone BoundaryZoneTop, BoundaryZone BoundaryZoneBottom, ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial) { ConfinementReinforcementType ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties; base.ConcreteMaterial = ConcreteMaterial; CrossSectionIShape shape = GetIShape(ConcreteMaterial.Concrete, h_total, t_w, BoundaryZoneTop, BoundaryZoneBottom); List <KodestructAci.RebarPoint> LongitudinalBars = GetLongitudinalBars(shape.SliceableShape as ISectionI, h_total, t_w, RebarSizeId, N_curtains, s, c_edge, BoundaryZoneTop, BoundaryZoneBottom, LongitudinalRebarMaterial); KodestructAci.IConcreteFlexuralMember fs = new KodestructAci14.ConcreteSectionFlexure(shape, LongitudinalBars, new CalcLog(), ConfinementReinforcementType); this.FlexuralSection = fs; }
private List <KodestructAci.RebarPoint> GetLongitudinalBars(KodestructSection.Interfaces.ISectionI shape, double h_total, double t_w, string RebarSizeId, double N_curtains, double s, double c_edge, BoundaryZone BoundaryZoneTop, BoundaryZone BoundaryZoneBottom, RebarMaterial LongitudinalRebarMaterial) { List <KodestructAci.RebarPoint> BzTopBars = GetBoundaryZoneBars(BoundaryZoneTop, LongitudinalRebarMaterial, new Point2D(0.0, shape.d / 2.0 - BoundaryZoneTop.h / 2.0), true); List <KodestructAci.RebarPoint> BzBottomBars = GetBoundaryZoneBars(BoundaryZoneBottom, LongitudinalRebarMaterial, new Point2D(0.0, -(shape.d / 2.0) + BoundaryZoneTop.h / 2.0), false); List <KodestructAci.RebarPoint> retBars = null; if (N_curtains != 0) { List <KodestructAci.RebarPoint> WallBars = GetWallBars(h_total - (BoundaryZoneTop.h + BoundaryZoneBottom.h), t_w, RebarSizeId, N_curtains, s, c_edge, LongitudinalRebarMaterial); retBars = BzTopBars.Concat(BzBottomBars).Concat(WallBars).ToList(); } else { retBars = BzTopBars.Concat(BzBottomBars).ToList(); } return(retBars); }
private List <KodestructAci.RebarPoint> GetBoundaryZoneBars(BoundaryZone BoundaryZone, RebarMaterial 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.Material, false, false, (int)BoundaryZone.N_Bar_Rows - 1); return(Line.RebarPoints); }
private CrossSectionIShape GetIShape(IConcreteMaterial Material, double h_total, double t_w, BoundaryZone BoundaryZoneTop, BoundaryZone BoundaryZoneBottom) { double d = h_total; double b_fTop = BoundaryZoneTop.b == 0 ? t_w : BoundaryZoneTop.b; double b_fBot = BoundaryZoneBottom.b == 0 ? t_w : BoundaryZoneBottom.b; double t_fTop = BoundaryZoneTop.h; double t_fBot = BoundaryZoneBottom.h; return(new CrossSectionIShape(Material, null, d, b_fTop, b_fBot, t_fTop, t_fBot, t_w)); }