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 }
            });
        }
Example #2
0
        public static Dictionary <string, object> UpperLimitOnShearStrength(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial,
                                                                            double b_w, double d, double phiV_c, string Code = "ACI318-14")
        {
            //Default values
            double phiV_nMax = 0;


            //Calculation logic:
            IConcreteMaterial                        mat     = ConcreteMaterial.Concrete;
            CrossSectionRectangularShape             shape   = new CrossSectionRectangularShape(mat, null, b_w, d);
            ConcreteSectionOneWayShearNonPrestressed section = new ConcreteSectionOneWayShearNonPrestressed(d, shape);

            phiV_nMax = section.GetUpperLimitShearStrength(phiV_c * 1000.0) / 1000.0; //default ACI units are psi. Convert to ksi, consistent with Dynamo nodes

            return(new Dictionary <string, object>
            {
                { "phiV_nMax", phiV_nMax }
            });
        }
        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> OneWayShearStrengthProvidedByConcrete(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial,
                                                                                        double b_w, double d, double h, double N_u = 0.0, double rho_w = 0.0, double M_u = 0.0, double V_u = 0.0, string Code = "ACI318-14")
        {
            //Default values
            double phiV_c = 0;


            //Calculation logic:
            IConcreteMaterial                        mat     = ConcreteMaterial.Concrete;
            CrossSectionRectangularShape             shape   = new CrossSectionRectangularShape(mat, null, b_w, h);
            ConcreteSectionOneWayShearNonPrestressed section = new ConcreteSectionOneWayShearNonPrestressed(d, shape);

            phiV_c = section.GetConcreteShearStrength(N_u * 1000.0, rho_w, M_u * 1000.0, V_u * 1000.0) / 1000.0; //default ACI units are psi. Convert to ksi, consistent with Dynamo nodes

            return(new Dictionary <string, object>
            {
                { "phiV_c", phiV_c }
            });
        }
        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 }
            });
        }
Example #6
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 }
            });
        }
        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 }
            });
        }
        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 }
            });
        }
Example #9
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> StraightBarTensionDevelopmentLengthBasic(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
                                                                                           Concrete.ACI318.General.Reinforcement.RebarMaterial RebarMaterial,
                                                                                           string RebarCoatingType = "Uncoated", string RebarCastingPosition = "Top", double ExcessRebarRatio = 1.0, bool MeetsRebarSpacingAndEdgeDistance = true,
                                                                                           bool HasMinimumTransverseReinforcement = false, 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");
            }

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

            CalcLog log = new CalcLog();

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

            l_d = d.GetTensionDevelopmentLength(HasMinimumTransverseReinforcement);

            return(new Dictionary <string, object>
            {
                { "l_d", l_d }
            });
        }