Esempio n. 1
0
         internal RebarPoint(double A_b, double X_shp, double Y_shp, RebarMaterial RebarMaterial)
        {

            wosadAci.Rebar b = new wosadAci.Rebar(A_b, RebarMaterial.Material);
            this.RebarPointLData = new wosadAci.RebarPoint(b, new wosadAci.RebarCoordinate() { X = X_shp, Y = Y_shp });

        }
        public static Dictionary<string, object> StraightBarTensionLapSpliceLengthDetailed(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b1, double d_b2,
            RebarMaterial RebarMaterial, string RebarSpliceClass, string RebarCoatingType, string RebarCastingPosition, double s_clear, double c_c,
            double A_tr, double s_tr, double n, string Code = "ACI318-14")
        {
            //Default values
            double l_st = 0;


            //Calculation logic:
            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = false;
            switch (RebarCoatingType)
            {
                case "Uncoated": IsEpoxyCoated = false; break;
                case "EpoxyCoated": IsEpoxyCoated = true; break;

                default: throw new Exception("Unrecognized rebar coating. Please check string input"); break;
            }

            Rebar rebar1 = new Rebar(d_b1, IsEpoxyCoated, mat);
            Rebar rebar2 = new Rebar(d_b2, IsEpoxyCoated, mat);

            bool IsTopRebar = false;
            switch (RebarCastingPosition)
            {
                case "Other": IsTopRebar = false; break;
                case "Top": IsTopRebar = true; break;

                default: throw new Exception("Unrecognized rebar casting position. Please check string input"); break;
            }

            
            TensionLapSpliceClass _RebarSpliceClass;
            bool IsValidRebarSpliceClass = Enum.TryParse(RebarSpliceClass, true, out _RebarSpliceClass);
            if (IsValidRebarSpliceClass == false)
            {
                throw new Exception("Failed to convert string. RebarSpliceClass not recognzed (A and B are acceptable inputs). Please check input");
            }


            CalcLog log = new CalcLog();

            TensionLapSplice ls = new TensionLapSplice(ConcreteMaterial.Concrete,rebar1,rebar2, s_clear, c_c, IsTopRebar,A_tr,s_tr,n, _RebarSpliceClass, log);
            l_st = ls.Length;

            return new Dictionary<string, object>
            {
                { "l_st", l_st }
 
            };
        }
        public static Dictionary <string, object> CompressionLapSpliceLength(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
                                                                             RebarMaterial RebarMaterial, bool HasConfiningReinforcement = false, string Code = "ACI318-14")
        {
            //Default values
            double l_sc = 0;


            //Calculation logic:
            IRebarMaterial mat   = RebarMaterial.Material;
            Rebar          rebar = new Rebar(d_b, false, mat);

            return(new Dictionary <string, object>
            {
                { "l_sc", l_sc }
            });
        }
Esempio n. 4
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;
        }
        internal RectangularSectionSinglyReinforced(double b, double h, double A_s, double c_cntr,
        ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial, bool hasTies=false)
        {

            CrossSectionRectangularShape shape = new CrossSectionRectangularShape(ConcreteMaterial.Concrete, null, b, h);
            base.ConcreteMaterial = ConcreteMaterial; //duplicate save of concrete material into base Dynamo class

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

                wosadAci.Rebar thisBar = new wosadAci.Rebar(A_s, LongitudinalRebarMaterial.Material);
                wosadAci.RebarPoint point = new wosadAci.RebarPoint(thisBar, new wosadAci.RebarCoordinate() { X = 0, Y = -h / 2.0 + c_cntr });
            LongitudinalBars.Add(point);

            wosadAci.IConcreteFlexuralMember fs = new wosadAci14.ConcreteSectionFlexure(shape, LongitudinalBars, new CalcLog());
            this.FlexuralSection = fs;
        }
        public static Dictionary<string, object> CompressionLapSpliceLength(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
            RebarMaterial RebarMaterial, bool HasConfiningReinforcement = false, string Code = "ACI318-14")
        {
            //Default values
            double l_sc = 0;


            //Calculation logic:
            IRebarMaterial mat = RebarMaterial.Material;
            Rebar rebar = new Rebar(d_b, false, mat);

            return new Dictionary<string, object>
            {
                { "l_sc", l_sc }
 
            };
        }
        public static Dictionary<string, object> StraightBarTensionDevelopmentLengthDetailed(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b, 
            RebarMaterial RebarMaterial, string RebarCoatingType, string RebarCastingPosition, double ExcessRebarRatio, double s_clear, double c_c,
            double A_tr, double s_tr, double n, string Code = "ACI318-14")
        {
            //Default values
            double l_d = 0;


            //Calculation logic:
            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = false;
            switch (RebarCoatingType)
            {
                case "Uncoated": IsEpoxyCoated = false; break;
                case "EpoxyCoated": IsEpoxyCoated = true; break;

                default: throw new Exception("Unrecognized rebar coating. Please check string input"); break;
            }

            Rebar rebar = new Rebar(d_b, IsEpoxyCoated, mat);


            bool IsTopRebar = false;
            switch (RebarCastingPosition)
            {
                case "Other": IsTopRebar = false; break;
                case "Top": IsTopRebar = true; break;

                default: throw new Exception("Unrecognized rebar casting position. Please check string input"); break;
            }

            CalcLog log = new CalcLog();

            DevelopmentTension d = new DevelopmentTension(ConcreteMaterial.Concrete,rebar,s_clear,c_c,IsTopRebar,ExcessRebarRatio,true,log);
            l_d = d.GetTensionDevelopmentLength(A_tr,s_tr,n);


            return new Dictionary<string, object>
            {
                { "l_d", l_d }
 
            };
        }
        public static Dictionary<string, object> CompressionDevelopmentLengthBasic(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
            RebarMaterial RebarMaterial, bool HasConfiningReinforcement=false, string Code = "ACI318-14")
        {
            //Default values
            double l_dc = 0;


            //Calculation logic:
            IRebarMaterial mat = RebarMaterial.Material;
            Rebar rebar = new Rebar(d_b, false, mat);

            CalcLog log = new CalcLog();
            DevelopmentCompression cd = new DevelopmentCompression(ConcreteMaterial.Concrete, rebar, log, HasConfiningReinforcement);
            l_dc = cd.Length;

            return new Dictionary<string, object>
            {
                { "l_dc", l_dc }
 
            };
        }
        public static Dictionary <string, object> CompressionDevelopmentLengthBasic(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
                                                                                    RebarMaterial RebarMaterial, bool HasConfiningReinforcement = false, string Code = "ACI318-14")
        {
            //Default values
            double l_dc = 0;


            //Calculation logic:
            IRebarMaterial mat   = RebarMaterial.Material;
            Rebar          rebar = new Rebar(d_b, false, mat);

            CalcLog log = new CalcLog();
            DevelopmentCompression cd = new DevelopmentCompression(ConcreteMaterial.Concrete, rebar, log, HasConfiningReinforcement);

            l_dc = cd.Length;

            return(new Dictionary <string, object>
            {
                { "l_dc", l_dc }
            });
        }
        public static Dictionary<string, object> StandardHookTensionDevelopmentLengthBasic(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
            RebarMaterial RebarMaterial,  double ExcessRebarRatio = 1.0, string RebarCoatingType = "Uncoated",string Code = "ACI318-14")
        {
            //Default values
            double l_dh = 0;


            //Calculation logic:

            IRebarMaterial mat = RebarMaterial.Material;
            bool IsEpoxyCoated = true;

            if (RebarCoatingType.ToLower() == "uncoated")
            {
                IsEpoxyCoated=false;
            }
            else if (RebarCoatingType.ToLower() == "epoxycoated")
            {
                IsEpoxyCoated =true;
            }
            else
            {
                throw new Exception("Unrecognized rebar coating string.");
            }
            Rebar rebar = new Rebar(d_b, IsEpoxyCoated, mat);

            CalcLog log = new CalcLog();

            StandardHookInTension hook = new StandardHookInTension(ConcreteMaterial.Concrete, rebar, log, ExcessRebarRatio);
            l_dh = hook.GetDevelopmentLength();

            return new Dictionary<string, object>
            {
                { "l_dh", l_dh }
 
            };
        }
        public static Dictionary <string, object> ShearFrictionStrength(string ShearFrictionSurfaceTypeId, ConcreteMaterial ConcreteMaterial,
                                                                        double A_c, RebarMaterial RebarMaterial, double A_v, double alpha = 90, double F_comp = 0)
        {
            //Default values


            //Calculation logic:
            double phiV_n = 0.0;

            ShearFrictionSurfaceType _ShearFrictionSurfaceType;
            bool IsValidShearFrictionSurfaceTypeString = Enum.TryParse(ShearFrictionSurfaceTypeId, true, out _ShearFrictionSurfaceType);

            if (IsValidShearFrictionSurfaceTypeString == false)
            {
                throw new Exception("Failed to convert string. ShearFrictionSurfaceType variable needs to be MonolithicConcrete, HardenedRoughenedConcrete, HardenedNonRoughenedConcrete or ConcreteAgainstSteel. Please check input");
            }
            ConcreteSectionShearFriction sec = new ConcreteSectionShearFriction(_ShearFrictionSurfaceType, ConcreteMaterial.Concrete, A_c, RebarMaterial.Material, A_v, alpha, F_comp);

            phiV_n = sec.GetShearFrictionStrength() / 1000.0; //convert back to ksi units
            return(new Dictionary <string, object>
            {
                { "phiV_n", phiV_n }
            });
        }
        /// <summary>
         /// Rectangular section singly reinforced (Use where ConcreteSection type is required)
        /// </summary>
         /// <param name="b">Width of compression face of member</param>
         /// <param name="h">Overall thickness, height, or depth of member</param>
         /// <param name="A_s">Area of nonprestressed longitudinal tension reinforcement</param>
         /// <param name="c_cntr">Concrete cover to tension rebar centroid</param>
         /// <param name="ConcreteMaterial">Concrete material</param>
         /// <param name="LongitudinalRebarMaterial">Rebar material for longitudinal bars</param>
         /// <returns name="RectangularSectionSinglyReinforced">  Section [OBJECT] </returns>

        public static RectangularSectionSinglyReinforced ByWidthHeigthAndReinforcementArea(double b, double h, double A_s, double c_cntr,
            ConcreteMaterial ConcreteMaterial,RebarMaterial LongitudinalRebarMaterial)
        {
            return new RectangularSectionSinglyReinforced(b, h, A_s, c_cntr, ConcreteMaterial, LongitudinalRebarMaterial);
        }
Esempio n. 13
0
        internal RectangularSectionFourSideReinforced(double b, double h, double A_sTopBottom, double A_sLeftRight,
                                                      double c_cntrTopBottom, double c_cntrLeftRight, ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial,
                                                      bool hasTies = false)
        {
            KodestructAci.ConfinementReinforcementType ConfinementReinforcementType;
            if (hasTies == true)
            {
                ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties;
            }
            else
            {
                ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.NoReinforcement;
            }

            base.ConcreteMaterial = ConcreteMaterial; //duplicate save of concrete material into base Dynamo class

            FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory();
            ConcreteSectionFlexure fs             = flexureFactory.GetRectangularSectionFourSidesDistributed(b, h, A_sTopBottom, A_sLeftRight,
                                                                                                             c_cntrTopBottom, c_cntrLeftRight,
                                                                                                             ConcreteMaterial.Concrete, LongitudinalRebarMaterial.Material, ConfinementReinforcementType);


            this.FlexuralSection = fs;
        }
        public static Dictionary <string, object> StraightBarTensionLapSpliceLengthBasic(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b1, double d_b2,
                                                                                         RebarMaterial RebarMaterial, string RebarSpliceClass = "B", string RebarCoatingType  = "Uncoated", string RebarCastingPosition = "Top", double ExcessRebarRatio = 1.0,
                                                                                         bool MeetsRebarSpacingAndEdgeDistance = true, bool HasMinimumTransverseReinforcement = false, string Code = "ACI318-14")
        {
            //Default values
            double l_st = 0;


            //Calculation logic:
            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = false;

            switch (RebarCoatingType)
            {
            case "Uncoated": IsEpoxyCoated = false; break;

            case "EpoxyCoated": IsEpoxyCoated = true; break;

            default: throw new Exception("Unrecognized rebar coating. Please check string input");
            }

            Rebar rebar1 = new Rebar(d_b1, IsEpoxyCoated, mat);
            Rebar rebar2 = new Rebar(d_b2, IsEpoxyCoated, mat);


            bool IsTopRebar = false;

            switch (RebarCastingPosition)
            {
            case "Other": IsTopRebar = false; break;

            case "Top": IsTopRebar = true; break;

            default: throw new Exception("Unrecognized rebar casting position. Please check string input");
            }

            TensionLapSpliceClass _RebarSpliceClass;
            bool IsValidRebarSpliceClass = Enum.TryParse(RebarSpliceClass, true, out _RebarSpliceClass);

            if (IsValidRebarSpliceClass == false)
            {
                throw new Exception("Failed to convert string. RebarSpliceClass not recognzed (A and B are acceptable inputs). Please check input");
            }


            CalcLog log = new CalcLog();

            TensionLapSplice d = new TensionLapSplice(ConcreteMaterial.Concrete, rebar1, rebar2, MeetsRebarSpacingAndEdgeDistance, HasMinimumTransverseReinforcement, IsTopRebar, _RebarSpliceClass, log);

            l_st = d.Length;

            return(new Dictionary <string, object>
            {
                { "l_st", l_st }
            });
        }
Esempio n. 15
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);
        }
Esempio n. 16
0
        public static Dictionary <string, object> StandardHookTensionDevelopmentLengthBasic(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
                                                                                            RebarMaterial RebarMaterial, double ExcessRebarRatio = 1.0, string RebarCoatingType = "Uncoated", string Code = "ACI318-14")
        {
            //Default values
            double l_dh = 0;


            //Calculation logic:

            IRebarMaterial mat           = RebarMaterial.Material;
            bool           IsEpoxyCoated = true;

            if (RebarCoatingType.ToLower() == "uncoated")
            {
                IsEpoxyCoated = false;
            }
            else if (RebarCoatingType.ToLower() == "epoxycoated")
            {
                IsEpoxyCoated = true;
            }
            else
            {
                throw new Exception("Unrecognized rebar coating string.");
            }
            Rebar rebar = new Rebar(d_b, IsEpoxyCoated, mat);

            CalcLog log = new CalcLog();

            StandardHookInTension hook = new StandardHookInTension(ConcreteMaterial.Concrete, rebar, log, ExcessRebarRatio);

            l_dh = hook.GetDevelopmentLength();

            return(new Dictionary <string, object>
            {
                { "l_dh", l_dh }
            });
        }
Esempio n. 17
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);
        }
        public static Dictionary <string, object> StandardHookTensionDevelopmentLengthDetailed(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
                                                                                               RebarMaterial RebarMaterial, string HookType = "Degree90", string RebarCoatingType = "Uncoated", double ExcessRebarRatio = 1.0, double c_side = 1.5, double c_extension = 1.5, string EnclosingRebarDirection = "Parallel",
                                                                                               double s_enclosing = 12, string Code = "ACI318-14")
        {
            //Default values
            double l_dh = 0;


            //Calculation logic:

            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = true;

            if (RebarCoatingType.ToLower() == "uncoated")
            {
                IsEpoxyCoated = false;
            }
            else if (RebarCoatingType.ToLower() == "epoxycoated")
            {
                IsEpoxyCoated = true;
            }
            else
            {
                throw new Exception("Unrecognized rebar coating string.");
            }

            Rebar rebar = new Rebar(d_b, IsEpoxyCoated, mat);

            CalcLog log = new CalcLog();

            StandardHookInTension hook = new StandardHookInTension(ConcreteMaterial.Concrete, rebar, log, ExcessRebarRatio);

            HookType _HookType;
            bool     IsValidHookTypeString = Enum.TryParse(HookType, true, out _HookType);

            if (IsValidHookTypeString == false)
            {
                throw new Exception("Failed to convert string. Check HookType string. Please check input");
            }


            bool enclosingRebarIsPerpendicular = false;

            if (EnclosingRebarDirection.ToLower() == "perpendicular")
            {
                enclosingRebarIsPerpendicular = true;
            }
            else if (EnclosingRebarDirection.ToLower() == "parallel")
            {
                enclosingRebarIsPerpendicular = false;
            }
            else
            {
                throw new Exception("Failed to convert string. Check EnclosingRebarDirection string. Please check input");
            }


            l_dh = hook.GetDevelopmentLength(_HookType, c_side, c_extension, enclosingRebarIsPerpendicular, s_enclosing);

            return(new Dictionary <string, object>
            {
                { "l_dh", l_dh }
            });
        }
Esempio n. 19
0
        public static Dictionary <string, object> RequiredTransverseTorsionAndShearRebar(ConcreteFlexureAndAxiaSection ConcreteSection, double T_u, RebarMaterial RebarMaterial,
                                                                                         double c_transv_ctr, double s, double theta = 45, string Code = "ACI318-14")
        {
            //Default values
            double A_v = 0;


            //Calculation logic:

            TorsionShapeFactory     tss   = new TorsionShapeFactory();
            ConcreteSectionFlexure  sec   = (ConcreteSectionFlexure)ConcreteSection.FlexuralSection;
            IConcreteTorsionalShape shape = tss.GetShape(sec.Section.SliceableShape, ConcreteSection.ConcreteMaterial.Concrete, c_transv_ctr);
            ConcreteSectionTorsion  secT  = new ConcreteSectionTorsion(shape);
            double T_u_lb_in = T_u * 1000.0; //internally Kodestruct uses lb - in units for concrete

            A_v = secT.GetRequiredTorsionTransverseReinforcementArea(T_u_lb_in, s, RebarMaterial.Material.YieldStress, theta);

            return(new Dictionary <string, object>
            {
                { "A_v", A_v }
            });
        }
        public static Dictionary <string, object> StraightBarTensionLapSpliceLengthDetailed(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b1, double d_b2,
                                                                                            RebarMaterial RebarMaterial, string RebarSpliceClass = "B", string RebarCoatingType = "Uncoated", string RebarCastingPosition = "Top", double s_clear = 3, double c_c = 1.5,
                                                                                            double A_tr = 0.44, double s_tr = 12, double n = 5, string Code = "ACI318-14")
        {
            //Default values
            double l_st = 0;


            //Calculation logic:
            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = false;

            switch (RebarCoatingType)
            {
            case "Uncoated": IsEpoxyCoated = false; break;

            case "EpoxyCoated": IsEpoxyCoated = true; break;

            default: throw new Exception("Unrecognized rebar coating. Please check string input"); break;
            }

            Rebar rebar1 = new Rebar(d_b1, IsEpoxyCoated, mat);
            Rebar rebar2 = new Rebar(d_b2, IsEpoxyCoated, mat);

            bool IsTopRebar = false;

            switch (RebarCastingPosition)
            {
            case "Other": IsTopRebar = false; break;

            case "Top": IsTopRebar = true; break;

            default: throw new Exception("Unrecognized rebar casting position. Please check string input"); break;
            }


            TensionLapSpliceClass _RebarSpliceClass;
            bool IsValidRebarSpliceClass = Enum.TryParse(RebarSpliceClass, true, out _RebarSpliceClass);

            if (IsValidRebarSpliceClass == false)
            {
                throw new Exception("Failed to convert string. RebarSpliceClass not recognzed (A and B are acceptable inputs). Please check input");
            }


            CalcLog log = new CalcLog();

            TensionLapSplice ls = new TensionLapSplice(ConcreteMaterial.Concrete, rebar1, rebar2, s_clear, c_c, IsTopRebar, A_tr, s_tr, n, _RebarSpliceClass, log);

            l_st = ls.Length;

            return(new Dictionary <string, object>
            {
                { "l_st", l_st }
            });
        }
Esempio n. 21
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));
 }
Esempio n. 22
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);
        }
Esempio n. 23
0
        /// <summary>
        /// Rectangular section with reinforcement doubly reinforced
        /// </summary>
        /// <param name="b">Width of compression face of member</param>
        /// <param name="h">Overall thickness, height, or depth of member</param>
        /// <param name="A_sTop">Total area of top reinforcement</param>
        /// <param name="A_sBot">Total area of bottom reinforcement</param>
        /// <param name="c_cntr">Concrete cover to tension rebar centroid</param>
        /// <param name="ConcreteMaterial">Concrete material</param>
        /// <param name="LongitudinalRebarMaterial">Rebar material for longitudinal bars</param>
        /// <param name="hasTies">Identifies if member has ties around longitudinal reinforcement</param>
        /// <returns name="RectangularSectionDoublyReinforced">  Section [OBJECT] </returns>

        public static RectangularSectionDoublyReinforced ByWidthHeigthAndReinforcementArea(double b, double h, double A_sTop, double A_sBot,
                                                                                           double c_cntr, ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial, bool hasTies = true)
        {
            return(new RectangularSectionDoublyReinforced(b, h, A_sTop, A_sBot, c_cntr, ConcreteMaterial, LongitudinalRebarMaterial));
        }
Esempio n. 24
0
        /// <summary>
        /// Rectangular section with reinforcement on 4-sides
        /// </summary>
        /// <param name="b">Width of compression face of member</param>
        /// <param name="h">Overall thickness, height, or depth of member</param>
        /// <param name="A_sTopBottom">Total area of top/bottom reinforcement (per face)</param>
        /// <param name="A_sLeftRight">Total area of reinforcement on left-hand/right-hand side face (per face)</param>
        /// <param name="c_cntrTopBottom">Concrete cover to tension rebar centroid (top or bottom face)</param>
        /// <param name="c_cntrLeftRight">Concrete cover to tension rebar centroid (side faces)</param>
        /// <param name="ConcreteMaterial">Concrete material</param>
        /// <param name="LongitudinalRebarMaterial">Rebar material for longitudinal bars</param>
        /// <param name="hasTies">Identifies if member has ties around longitudinal reinforcement</param>
        /// <returns name="RectangularSectionFourSideReinforced">  Section [OBJECT] </returns>

        public static RectangularSectionFourSideReinforced ByWidthHeigthAndReinforcementArea(double b, double h, double A_sTopBottom, double A_sLeftRight,
                                                                                             double c_cntrTopBottom, double c_cntrLeftRight,
                                                                                             ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial, bool HasTies = true)
        {
            return(new RectangularSectionFourSideReinforced(b, h, A_sTopBottom, A_sLeftRight, c_cntrTopBottom, c_cntrLeftRight,
                                                            ConcreteMaterial, LongitudinalRebarMaterial, HasTies));
        }
Esempio n. 25
0
        public static Dictionary <string, object> StraightBarTensionDevelopmentLengthDetailed(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
                                                                                              RebarMaterial RebarMaterial, string RebarCoatingType = "Uncoated", string RebarCastingPosition = "Top", double ExcessRebarRatio = 1.0, double s_clear = 3, double c_c = 1.5,
                                                                                              double A_tr = 0.44, double s_tr = 12, double n = 5, string Code = "ACI318-14")
        {
            //Default values
            double l_d = 0;


            //Calculation logic:
            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = false;

            switch (RebarCoatingType)
            {
            case "Uncoated": IsEpoxyCoated = false; break;

            case "EpoxyCoated": IsEpoxyCoated = true; break;

            default: throw new Exception("Unrecognized rebar coating. Please check string input"); break;
            }

            Rebar rebar = new Rebar(d_b, IsEpoxyCoated, mat);


            bool IsTopRebar = false;

            switch (RebarCastingPosition)
            {
            case "Other": IsTopRebar = false; break;

            case "Top": IsTopRebar = true; break;

            default: throw new Exception("Unrecognized rebar casting position. Please check string input"); break;
            }

            CalcLog log = new CalcLog();

            DevelopmentTension d = new DevelopmentTension(ConcreteMaterial.Concrete, rebar, s_clear, c_c, IsTopRebar, ExcessRebarRatio, true, log);

            l_d = d.GetTensionDevelopmentLength(A_tr, s_tr, n);


            return(new Dictionary <string, object>
            {
                { "l_d", l_d }
            });
        }
        public static Dictionary <string, object> TwoWayShearStrengthProvidedByReinforcedSection(PunchingShearPerimeter PunchingShearPerimeter,
                                                                                                 ConcreteMaterial ConcreteMaterial, RebarMaterial RebarMaterial,
                                                                                                 double A_v, double s, string PunchingReinforcementType)
        {
            //Default values
            double phi_v_n = 0;


            //Calculation logic:


            Kodestruct.Concrete.ACI.ACI318_14.SectionalStrength.Shear.TwoWay.PunchingReinforcementType ReinforcementType;
            bool IsValidInputString = Enum.TryParse(PunchingReinforcementType, true, out ReinforcementType);

            if (IsValidInputString == false)
            {
                throw new Exception("Failed to convert string. Examples of acceptable values are Interior, EdgeLeft, CornerLeftTop. Please check input");
            }

            ReinforcedSectionTwoWayShear sec = new ReinforcedSectionTwoWayShear(ConcreteMaterial.Concrete, RebarMaterial.Material, PunchingShearPerimeter.PerimeterData, A_v, s, ReinforcementType);

            phi_v_n = sec.GetTwoWayStrength() / 1000.0; //convert to ksi

            return(new Dictionary <string, object>
            {
                { "phi_v_n", phi_v_n }
            });
        }
        public static Dictionary<string, object> StandardHookTensionDevelopmentLengthBasic(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
            RebarMaterial RebarMaterial, string HookType, string RebarCoatingType, double ExcessRebarRatio, double c_side, double c_extension, string EnclosingRebarDirection, 
            double s_enclosing, string Code = "ACI318-14")
        {
            //Default values
            double l_dh = 0;
                                                                                                                                                                

            //Calculation logic:

            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = true;

            if (RebarCoatingType.ToLower() == "uncoated")
            {
                IsEpoxyCoated=false;
            }
            else if (RebarCoatingType.ToLower() == "epoxycoated")
            {
                IsEpoxyCoated =true;
            }
            else
            {
                throw new Exception("Unrecognized rebar coating string.");
            }

            Rebar rebar = new Rebar(d_b, IsEpoxyCoated, mat);

            CalcLog log = new CalcLog();

            StandardHookInTension hook = new StandardHookInTension(ConcreteMaterial.Concrete, rebar, log, ExcessRebarRatio);
            
            HookType _HookType;
            bool IsValidHookTypeString = Enum.TryParse(HookType, true, out _HookType);
            if (IsValidHookTypeString == false)
            {
                throw new Exception("Failed to convert string. Check HookType string. Please check input");
            }


            bool enclosingRebarIsPerpendicular = false;
            if (EnclosingRebarDirection.ToLower()=="perpendicular")
            {
                enclosingRebarIsPerpendicular = true;
            }
            else if (EnclosingRebarDirection.ToLower() == "parallel")
            {
                enclosingRebarIsPerpendicular = false;
            }
            else
	        {
                throw new Exception("Failed to convert string. Check EnclosingRebarDirection string. Please check input");
	        }


            l_dh = hook.GetDevelopmentLength(_HookType, c_side, c_extension, enclosingRebarIsPerpendicular,s_enclosing);

            return new Dictionary<string, object>
            {
                { "l_dh", l_dh }
 
            };
        }
Esempio n. 28
0
         /// <summary>
        ///     Rebar point object by area
        /// </summary>
        /// <param name="A_b">   Area of an individual bar or wire  </param>
        /// <param name="X_shp">  Point coordinate X (in shape coordinate system) </param>
        /// <param name="Y_shp">  Point coordinate Y  (in shape coordinate system) </param>
        /// <param name="RebarMaterial">  Rebar material (object) </param>
        /// <returns name="RebarPoint"> Rebar point object. Create the object using input parameters first </returns>
        public static RebarPoint ByArea(double A_b, double X_shp, double Y_shp, RebarMaterial RebarMaterial)
        {

            return new RebarPoint(A_b,X_shp,Y_shp,RebarMaterial);
        }
Esempio n. 29
0
        internal RectangularSectionDoublyReinforced(double b, double h, double A_sTop, double A_sBot,
                                                    double c_cntr, ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial, bool hasTies = false)
        {
            CrossSectionRectangularShape shape = new CrossSectionRectangularShape(ConcreteMaterial.Concrete, null, b, h);

            base.ConcreteMaterial = ConcreteMaterial; //duplicate save of concrete material into base Dynamo class

            KodestructAci.ConfinementReinforcementType ConfinementReinforcementType;
            if (hasTies == true)
            {
                ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.Ties;
            }
            else
            {
                ConfinementReinforcementType = KodestructAci.ConfinementReinforcementType.NoReinforcement;
            }


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

            KodestructAci.Rebar      TopRebar = new KodestructAci.Rebar(A_sTop, LongitudinalRebarMaterial.Material);
            KodestructAci.RebarPoint TopPoint = new KodestructAci.RebarPoint(TopRebar, new KodestructAci.RebarCoordinate()
            {
                X = 0, Y = h / 2.0 - c_cntr
            });
            LongitudinalBars.Add(TopPoint);

            KodestructAci.Rebar      BottomRebar = new KodestructAci.Rebar(A_sBot, LongitudinalRebarMaterial.Material);
            KodestructAci.RebarPoint BottomPoint = new KodestructAci.RebarPoint(BottomRebar, new KodestructAci.RebarCoordinate()
            {
                X = 0, Y = -h / 2.0 + c_cntr
            });
            LongitudinalBars.Add(BottomPoint);

            KodestructAci.IConcreteFlexuralMember fs = new KodestructAci14.ConcreteSectionFlexure(shape, LongitudinalBars, new CalcLog(),
                                                                                                  ConfinementReinforcementType);
            this.FlexuralSection = fs;
        }
        /// <summary>
        /// Rectangular section singly reinforced
        /// </summary>
        /// <param name="b">Width of compression face of member</param>
        /// <param name="h">Overall thickness, height, or depth of member</param>
        /// <param name="A_s">Area of nonprestressed longitudinal tension reinforcement</param>
        /// <param name="c_cntr">Concrete cover to tension rebar centroid</param>
        /// <param name="ConcreteMaterial">Concrete material</param>
        /// <param name="LongitudinalRebarMaterial">Rebar material for longitudinal bars</param>
        /// <param name="HasTies">Indicates if member has ties/strirrups</param>
        /// <returns name="RectangularSectionSinglyReinforced">  Section [OBJECT] </returns>

        public static RectangularSectionSinglyReinforced ByWidthHeigthAndReinforcementArea(double b, double h, double A_s, double c_cntr,
                                                                                           ConcreteMaterial ConcreteMaterial, RebarMaterial LongitudinalRebarMaterial, bool HasTies = false)
        {
            return(new RectangularSectionSinglyReinforced(b, h, A_s, c_cntr, ConcreteMaterial, LongitudinalRebarMaterial, HasTies));
        }