예제 #1
0
 /// <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));
 }
예제 #2
0
        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;
        }
예제 #3
0
        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);
        }
예제 #4
0
        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);
        }
예제 #5
0
        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));
        }