Exemplo n.º 1
0
        public void ReturnColumnStabilityFactorTimber()
        {
            CalcLog log = new CalcLog();
            DimensionalLumber m = new DimensionalLumber();
            double b = 5.5;
            double d = 5.5;


            double C_F = 1.0;
            double C_M_Fc = 0.91;
            double C_M_E = 1.0;
            double C_t = 1.0;
            double C_i = 1.0;
            double C_T = 1.0;
            double C_D = 1.15;
            double E_min = 470.0;
            double F_c =0.85;
            double l_e = 15*12*0.5; //with K-factor
            double lambda = 0.8;
            double C_P = m.GetColumnStabilityFactor(d, F_c, E_min, l_e,C_M_Fc,C_M_E, C_t,C_t, C_F, C_i,C_i, C_T, lambda);

            double refValue = 0.827;
            double actualTolerance = EvaluateActualTolerance(C_P, refValue);
            Assert.LessOrEqual(actualTolerance, tolerance);

        }
Exemplo n.º 2
0
        public static Dictionary <string, object> ColumnStabilityFactor(double d_comp, double F_c, double E_min, double l_e, double C_M_Fc, double C_M_E, double C_F_Fc, double lambda,
                                                                        double C_t_Fc = 1, double C_t_E = 1, double C_i_Fc = 1, double C_i_E = 1, double C_T = 1, string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double C_P = 0;


            //Calculation logic:
            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                C_P = m.GetColumnStabilityFactor(d_comp, F_c, E_min, l_e, C_M_Fc, C_M_E, C_t_Fc, C_t_E, C_F_Fc, C_i_Fc, C_i_E, C_T, lambda);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                Timber t = new Timber();
                C_P = t.GetColumnStabilityFactor(d_comp, F_c, E_min, l_e, C_M_Fc, C_M_E, C_t_Fc, C_t_E, C_F_Fc, C_i_Fc, C_i_E, C_T, lambda);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return(new Dictionary <string, object>
            {
                { "C_P", C_P }
            });
        }
        public static Dictionary <string, object> AdjustedBendingDesignValue(double F_b, double C_M_Fb, double C_t, double C_L, double C_F_Fb,
                                                                             double C_fu_Fb, double C_i_Fb, double C_r, double lambda, string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double F_b_prime = 0;


            //Calculation logic:
            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                F_b_prime = m.GetAdjustedBendingDesignValue(F_b, C_M_Fb, C_t, C_L, C_F_Fb, C_fu_Fb, C_i_Fb, C_r, lambda);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }



            return(new Dictionary <string, object>
            {
                { "F_b_prime", F_b_prime }
            });
        }
Exemplo n.º 4
0
        public static Dictionary<string, object> ColumnStabilityFactor(double d_comp,double F_c,double E_min,double l_e,double C_M_Fc,double C_M_E,double C_F_Fc,double lambda,
            double C_t_Fc = 1, double C_t_E = 1, double C_i_Fc = 1, double C_i_E = 1, double C_T = 1, string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double C_P = 0;


            //Calculation logic:
            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                C_P = m.GetColumnStabilityFactor(d_comp, F_c, E_min, l_e, C_M_Fc, C_M_E, C_t_Fc,C_t_E, C_F_Fc, C_i_Fc, C_i_E, C_T, lambda);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                Timber t = new Timber();
                C_P = t.GetColumnStabilityFactor(d_comp, F_c, E_min, l_e, C_M_Fc, C_M_E, C_t_Fc,C_t_E, C_F_Fc, C_i_Fc, C_i_E, C_T, lambda);
            }
            else
	        {
                throw new Exception("Wood member type not supported.");
	        }

            return new Dictionary<string, object>
            {
                { "C_P", C_P }
 
            };
        }
Exemplo n.º 5
0
        public static Dictionary<string, object> BeamStabilityFactor(double b,double d,double F_b,double E_min,double l_e,double C_M_Fb,double C_M_E,double C_t_Fb,double C_t_E,double C_F_Fb,double C_i_Fb,double C_i_E,double C_r,double C_T,double lambda,string WoodMemberType,string Code)
        {
            //Default values
            double C_L = 0;


            //Calculation logic:

            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                C_L = m.GetStabilityFactor(b, d, F_b, E_min, l_e, C_M_Fb, C_M_E, C_t_Fb, C_t_Fb, C_F_Fb, C_i_Fb, C_i_E, C_r, C_T, lambda);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }


            return new Dictionary<string, object>
            {
                { "C_L", C_L }
 
            };
        }
        public void ReturnColumnStabilityFactorDimensionalLumber()
        {
            CalcLog           log = new CalcLog();
            DimensionalLumber m   = new DimensionalLumber();
            double            b   = 1.5;
            double            d   = 5.5;


            double C_F    = 1.0;
            double C_M    = 1.0;
            double C_t    = 1.0;
            double C_i    = 1.0;
            double C_T    = 1.0;
            double C_D    = 1.15;
            double E_min  = 580.0;
            double F_c    = 1.6;
            double l_e    = 144.0;
            double lambda = 0.8;
            double C_P    = m.GetColumnStabilityFactor(d, F_c, E_min, l_e, C_M, C_M, C_t, C_t, C_F, C_i, C_i, C_T, lambda);

            double refValue        = 0.342;
            double actualTolerance = EvaluateActualTolerance(C_P, refValue);

            Assert.True(actualTolerance <= tolerance);
        }
        public void ReturnColumnStabilityFactorTimber()
        {
            CalcLog           log = new CalcLog();
            DimensionalLumber m   = new DimensionalLumber();
            double            b   = 5.5;
            double            d   = 5.5;


            double C_F    = 1.0;
            double C_M_Fc = 0.91;
            double C_M_E  = 1.0;
            double C_t    = 1.0;
            double C_i    = 1.0;
            double C_T    = 1.0;
            double C_D    = 1.15;
            double E_min  = 470.0;
            double F_c    = 0.85;
            double l_e    = 15 * 12 * 0.5; //with K-factor
            double lambda = 0.8;
            double C_P    = m.GetColumnStabilityFactor(d, F_c, E_min, l_e, C_M_Fc, C_M_E, C_t, C_t, C_F, C_i, C_i, C_T, lambda);

            double refValue        = 0.827;
            double actualTolerance = EvaluateActualTolerance(C_P, refValue);

            Assert.True(actualTolerance <= tolerance);
        }
Exemplo n.º 8
0
        public void ReturnColumnStabilityFactorDimensionalLumber()
        {
            CalcLog log = new CalcLog();
            DimensionalLumber m = new DimensionalLumber();
            double b = 1.5;
            double d = 5.5;

            
            double C_F =1.0;
            double C_M = 1.0;
            double C_t = 1.0;
            double C_i = 1.0;
            double C_T = 1.0;
            double C_D = 1.15;
            double E_min =580.0;
            double F_c = 1.6;
            double l_e = 144.0;
            double lambda =0.8;
            double C_P = m.GetColumnStabilityFactor(d, F_c, E_min, l_e, C_M, C_M, C_t, C_t,C_F, C_i, C_i, C_T, lambda);

            double refValue = 0.342;
            double actualTolerance = EvaluateActualTolerance(C_P, refValue);
            Assert.LessOrEqual(actualTolerance, tolerance);

        }
        public static Dictionary<string, object> AdjustedBendingDesignValue(double F_b,double C_M_Fb,double C_t,double C_L,double C_F_Fb,
            double C_fu_Fb, double C_i_Fb, double C_r, double lambda, string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double F_b_prime = 0;


            //Calculation logic:
            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                F_b_prime = m.GetAdjustedBendingDesignValue(F_b, C_M_Fb, C_t, C_L, C_F_Fb, C_fu_Fb, C_i_Fb, C_r, lambda);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            
            

            return new Dictionary<string, object>
            {
                { "F_b_prime", F_b_prime }
 
            };
        }
Exemplo n.º 10
0
        public static Dictionary<string, object> SizeFactor(double d,double t, string WoodCommercialGrade, bool LoadAppliedToNarrowFace=false,
           string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values

            double C_F_Fb = 1.0;
            double C_F_Fc = 1.0;
            double C_F_Ft = 1.0;

            //Calculation logic:



            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();

                string memberType = WoodMemberType.TrimStart("Sawn".ToCharArray());
                
                SawnLumberType sawnLumberType;
                bool IsValidSawnLumberTypeString = Enum.TryParse(memberType, true, out sawnLumberType);
                if (IsValidSawnLumberTypeString == false)
                {
                    throw new Exception("Failed to convert string. Sawn lumber type is incorrectly specified. Please check input");
                }

                
                ww.CommercialGrade _commercialGrade;
                bool IsValidCommercialGradeString = Enum.TryParse(WoodCommercialGrade, true, out _commercialGrade);
                if (IsValidCommercialGradeString == false)
                {
                    throw new Exception("Failed to convert string. Wood commercial grade is incorrectly specified. Please check input");
                }


                C_F_Fb = m.GetSizeFactor(d, t, sawnLumberType, _commercialGrade, ww.ReferenceDesignValueType.Bending, LoadAppliedToNarrowFace);
                C_F_Ft = m.GetSizeFactor(d, t, sawnLumberType, _commercialGrade, ww.ReferenceDesignValueType.TensionParallelToGrain, LoadAppliedToNarrowFace);
                C_F_Fc = m.GetSizeFactor(d, t, sawnLumberType, _commercialGrade, ww.ReferenceDesignValueType.CompresionParallelToGrain, LoadAppliedToNarrowFace);

            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                Timber timber = new Timber();
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return new Dictionary<string, object>
            {
                { "C_F_Fb", C_F_Fb },
                { "C_F_Fc", C_F_Fc },
                { "C_F_Ft", C_F_Ft },
            };
        }
        public static Dictionary <string, object> SizeFactor(double d, double t, string WoodCommercialGrade, bool LoadAppliedToNarrowFace = false,
                                                             string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values

            double C_F_Fb = 1.0;
            double C_F_Fc = 1.0;
            double C_F_Ft = 1.0;

            //Calculation logic:



            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();

                string memberType = WoodMemberType.TrimStart("Sawn".ToCharArray());

                SawnLumberType sawnLumberType;
                bool           IsValidSawnLumberTypeString = Enum.TryParse(memberType, true, out sawnLumberType);
                if (IsValidSawnLumberTypeString == false)
                {
                    throw new Exception("Failed to convert string. Sawn lumber type is incorrectly specified. Please check input");
                }


                ww.CommercialGrade _commercialGrade;
                bool IsValidCommercialGradeString = Enum.TryParse(WoodCommercialGrade, true, out _commercialGrade);
                if (IsValidCommercialGradeString == false)
                {
                    throw new Exception("Failed to convert string. Wood commercial grade is incorrectly specified. Please check input");
                }


                C_F_Fb = m.GetSizeFactor(d, t, sawnLumberType, _commercialGrade, ww.ReferenceDesignValueType.Bending, LoadAppliedToNarrowFace);
                C_F_Ft = m.GetSizeFactor(d, t, sawnLumberType, _commercialGrade, ww.ReferenceDesignValueType.TensionParallelToGrain, LoadAppliedToNarrowFace);
                C_F_Fc = m.GetSizeFactor(d, t, sawnLumberType, _commercialGrade, ww.ReferenceDesignValueType.CompresionParallelToGrain, LoadAppliedToNarrowFace);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                Timber timber = new Timber();
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return(new Dictionary <string, object>
            {
                { "C_F_Fb", C_F_Fb },
                { "C_F_Fc", C_F_Fc },
                { "C_F_Ft", C_F_Ft },
            });
        }
        public static Dictionary <string, object> TemperatureFactor(double Temperature, string ServiceMoistureCondition = "Dry",
                                                                    string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double C_t_Fb = 1.0;
            double C_t_Ft = 1.0;
            double C_t_Fv = 1.0;
            double C_t_Fc = 1.0;
            double C_t_E  = 1.0;

            //Calculation logic:


            ww.ServiceMoistureConditions moistureCondition;
            bool IsValidInputString = Enum.TryParse(ServiceMoistureCondition, true, out moistureCondition);

            if (IsValidInputString == false)
            {
                throw new Exception("Failed to convert string. Moisture condition string is invalid. Please check input");
            }


            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                C_t_Fb = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.Bending, Temperature, moistureCondition);
                C_t_Ft = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.TensionParallelToGrain, Temperature, moistureCondition);
                C_t_Fv = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.ShearParallelToGrain, Temperature, moistureCondition);
                C_t_Fc = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.CompresionParallelToGrain, Temperature, moistureCondition);
                C_t_E  = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.ModulusOfElasticity, Temperature, moistureCondition);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                Timber t = new Timber();
                C_t_Fb = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.Bending, Temperature, moistureCondition);
                C_t_Ft = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.TensionParallelToGrain, Temperature, moistureCondition);
                C_t_Fv = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.ShearParallelToGrain, Temperature, moistureCondition);
                C_t_Fc = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.CompresionParallelToGrain, Temperature, moistureCondition);
                C_t_E  = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.ModulusOfElasticity, Temperature, moistureCondition);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return(new Dictionary <string, object>
            {
                { "C_t_Fb", C_t_Fb },
                { "C_t_Ft", C_t_Ft },
                { "C_t_Fv", C_t_Fv },
                { "C_t_Fc", C_t_Fc },
                { "C_t_E", C_t_E }
            });
        }
Exemplo n.º 13
0
        public static Dictionary<string, object> IncisingFactor(bool IsIncised =false,
             string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values

            double C_i_Fb=1.0;
            double C_i_Ft=1.0;
            double C_i_Fv=1.0;
            double C_i_Fc=1.0;
            double C_i_E =1.0;

            //Calculation logic:


            if (IsIncised == true)
            {
                if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
                {
                    DimensionalLumber m = new DimensionalLumber();
                    C_i_Fb = m.GetInsizingFactor(ww.ReferenceDesignValueType.Bending);
                    C_i_Ft = m.GetInsizingFactor(ww.ReferenceDesignValueType.TensionParallelToGrain);
                    C_i_Fv = m.GetInsizingFactor(ww.ReferenceDesignValueType.ShearParallelToGrain);
                    C_i_Fc = m.GetInsizingFactor(ww.ReferenceDesignValueType.CompresionParallelToGrain);
                    C_i_E = m.GetInsizingFactor(ww.ReferenceDesignValueType.ModulusOfElasticity);
                }
                else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
                {
                    Timber t = new Timber();
                    C_i_Fb = t.GetInsizingFactor(ww.ReferenceDesignValueType.Bending);
                    C_i_Ft = t.GetInsizingFactor(ww.ReferenceDesignValueType.TensionParallelToGrain);
                    C_i_Fv = t.GetInsizingFactor(ww.ReferenceDesignValueType.ShearParallelToGrain);
                    C_i_Fc = t.GetInsizingFactor(ww.ReferenceDesignValueType.CompresionParallelToGrain);
                    C_i_E =  t.GetInsizingFactor(ww.ReferenceDesignValueType.ModulusOfElasticity);
                }
                else
                {
                    throw new Exception("Wood member type not supported.");
                } 
            }

            return new Dictionary<string, object>
            {
                { "C_i_Fb", C_i_Fb }
                ,{ "C_i_Ft", C_i_Ft }
                ,{ "C_i_Fv", C_i_Fv }
                ,{ "C_i_Fc", C_i_Fc }
                ,{ "C_i_E", C_i_E }
 
            };
        }
        public static Dictionary <string, object> IncisingFactor(bool IsIncised        = false,
                                                                 string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values

            double C_i_Fb = 1.0;
            double C_i_Ft = 1.0;
            double C_i_Fv = 1.0;
            double C_i_Fc = 1.0;
            double C_i_E  = 1.0;

            //Calculation logic:


            if (IsIncised == true)
            {
                if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
                {
                    DimensionalLumber m = new DimensionalLumber();
                    C_i_Fb = m.GetInsizingFactor(ww.ReferenceDesignValueType.Bending);
                    C_i_Ft = m.GetInsizingFactor(ww.ReferenceDesignValueType.TensionParallelToGrain);
                    C_i_Fv = m.GetInsizingFactor(ww.ReferenceDesignValueType.ShearParallelToGrain);
                    C_i_Fc = m.GetInsizingFactor(ww.ReferenceDesignValueType.CompresionParallelToGrain);
                    C_i_E  = m.GetInsizingFactor(ww.ReferenceDesignValueType.ModulusOfElasticity);
                }
                else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
                {
                    Timber t = new Timber();
                    C_i_Fb = t.GetInsizingFactor(ww.ReferenceDesignValueType.Bending);
                    C_i_Ft = t.GetInsizingFactor(ww.ReferenceDesignValueType.TensionParallelToGrain);
                    C_i_Fv = t.GetInsizingFactor(ww.ReferenceDesignValueType.ShearParallelToGrain);
                    C_i_Fc = t.GetInsizingFactor(ww.ReferenceDesignValueType.CompresionParallelToGrain);
                    C_i_E  = t.GetInsizingFactor(ww.ReferenceDesignValueType.ModulusOfElasticity);
                }
                else
                {
                    throw new Exception("Wood member type not supported.");
                }
            }

            return(new Dictionary <string, object>
            {
                { "C_i_Fb", C_i_Fb }
                , { "C_i_Ft", C_i_Ft }
                , { "C_i_Fv", C_i_Fv }
                , { "C_i_Fc", C_i_Fc }
                , { "C_i_E", C_i_E }
            });
        }
        public void ReturnsSizeFactorDimensionalLumber()
        {
            CalcLog           log = new CalcLog();
            DimensionalLumber m   = new DimensionalLumber();
            double            b   = 1.5;
            double            d   = 5.5;

            double C_F = m.GetSizeFactor(d, b, Wood.NDS.Entities.SawnLumberType.DimensionLumber, Wood.NDS.Entities.CommercialGrade.No2,
                                         Wood.NDS.Entities.ReferenceDesignValueType.Bending);


            double refValue        = 1.3;
            double actualTolerance = EvaluateActualTolerance(C_F, refValue);

            Assert.True(actualTolerance <= tolerance);
        }
Exemplo n.º 16
0
        public void ReturnsSizeFactorDimensionalLumber()
        {
            CalcLog log = new CalcLog();
            DimensionalLumber m = new DimensionalLumber();
            double b = 1.5;
            double d = 5.5;

            double C_F = m.GetSizeFactor(d, b, Wood.NDS.Entities.SawnLumberType.DimensionLumber, Wood.NDS.Entities.CommercialGrade.No2,
                 Wood.NDS.Entities.ReferenceDesignValueType.Bending);


            double refValue = 1.3;
            double actualTolerance = EvaluateActualTolerance(C_F, refValue);
            Assert.LessOrEqual(actualTolerance, tolerance);

        }
        public static Dictionary <string, object> TimeEffectFactor(string LoadCombinationType, bool IsConnection = false, bool IsTreated = false,
                                                                   string WoodMemberType = "SawnDimensionLumber", string Code            = "NDS2015")
        {
            //Default values
            double lambda = 0;


            //Calculation logic:


            Kodestruct.Wood.NDS.LoadCombinationType _loadCombinationType;
            bool IsValidLoadComboString = Enum.TryParse(LoadCombinationType, true, out _loadCombinationType);

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


            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                //GetTimeEffectFactor
                DimensionalLumber m = new DimensionalLumber();
                lambda = m.GetTimeEffectFactor(_loadCombinationType, IsConnection, IsTreated);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                Timber t = new Timber();
                lambda = t.GetTimeEffectFactor(_loadCombinationType, IsConnection, IsTreated);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return(new Dictionary <string, object>
            {
                { "lambda", lambda }
            });
        }
Exemplo n.º 18
0
        public static Dictionary<string, object> RepetitiveMemberFactor(double t =1.5, double s_member=24, bool IsRepetitiveMember=false,
             string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double C_r = 0;


            //Calculation logic:

            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();

                string memberType = WoodMemberType.TrimStart("Sawn".ToCharArray());

                SawnLumberType sawnLumberType;
                bool IsValidSawnLumberTypeString = Enum.TryParse(memberType, true, out sawnLumberType);
                if (IsValidSawnLumberTypeString == false)
                {
                    throw new Exception("Failed to convert string. Check string input for sawn lumber type. Please check input");
                }
                C_r = m.GetRepetitiveMemberFactor(IsRepetitiveMember, s_member, t, sawnLumberType);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                C_r = 1.0;
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return new Dictionary<string, object>
            {
                { "C_r", C_r }
 
            };
        }
Exemplo n.º 19
0
        public void ReturnsBendingValueDimensionalLumber()
        {
            CalcLog log = new CalcLog();
            DimensionalLumber m = new DimensionalLumber();

            double C_fu = 1.0;
            double C_F =1.0;
            double C_M = 1.0;
            double C_t = 1.0;
            double C_i = 1.0;
            double C_L = 1.0;
            double C_r = 1.15;
            double E_min =580.0;
            double F_b = 1.05;
            double lambda =0.8;


            double F_b_prime = m.GetAdjustedBendingDesignValue(F_b,C_M, C_t, C_L, C_F, C_fu, C_i, C_r, lambda);
            double refValue = 2.087;
            double actualTolerance = EvaluateActualTolerance(F_b_prime, refValue);
            Assert.LessOrEqual(actualTolerance, tolerance);

        }
        public void ReturnsBendingValueDimensionalLumber()
        {
            CalcLog           log = new CalcLog();
            DimensionalLumber m   = new DimensionalLumber();

            double C_fu   = 1.0;
            double C_F    = 1.0;
            double C_M    = 1.0;
            double C_t    = 1.0;
            double C_i    = 1.0;
            double C_L    = 1.0;
            double C_r    = 1.15;
            double E_min  = 580.0;
            double F_b    = 1.05;
            double lambda = 0.8;


            double F_b_prime       = m.GetAdjustedBendingDesignValue(F_b, C_M, C_t, C_L, C_F, C_fu, C_i, C_r, lambda);
            double refValue        = 2.087;
            double actualTolerance = EvaluateActualTolerance(F_b_prime, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        public static Dictionary <string, object> AdjustedModulusOfElasticity(double E, double C_M_E, double C_t, double C_i_E,
                                                                              string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double E_prime = 0;


            //Calculation logic:
            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                E_prime = m.GetAdjustedModulusOfElasticity(E, C_M_E, C_t, C_i_E);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return(new Dictionary <string, object>
            {
                { "E_prime", E_prime }
            });
        }
Exemplo n.º 22
0
        public static Dictionary <string, object> RepetitiveMemberFactor(double t = 1.5, double s_member = 24, bool IsRepetitiveMember = false,
                                                                         string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double C_r = 0;


            //Calculation logic:

            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();

                string memberType = WoodMemberType.TrimStart("Sawn".ToCharArray());

                SawnLumberType sawnLumberType;
                bool           IsValidSawnLumberTypeString = Enum.TryParse(memberType, true, out sawnLumberType);
                if (IsValidSawnLumberTypeString == false)
                {
                    throw new Exception("Failed to convert string. Check string input for sawn lumber type. Please check input");
                }
                C_r = m.GetRepetitiveMemberFactor(IsRepetitiveMember, s_member, t, sawnLumberType);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                C_r = 1.0;
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return(new Dictionary <string, object>
            {
                { "C_r", C_r }
            });
        }
        public static Dictionary<string, object> AdjustedMinimumModulusOfElasticity(double E_min,double C_M_E,double C_t,double C_i_E,double C_T,
            string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double E_min_prime = 0;


            //Calculation logic:
            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                E_min_prime = m.GetAdjustedMinimumModulusOfElasticityForStability(E_min, C_M_E, C_t, C_i_E, C_T);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return new Dictionary<string, object>
            {
                { "E_min_prime", E_min_prime }
 
            };
        }
Exemplo n.º 24
0
        public static Dictionary <string, object> BeamStabilityFactor(double b, double d, double F_b, double E_min, double l_e, double C_M_Fb, double C_M_E, double C_t_Fb, double C_t_E, double C_F_Fb, double C_i_Fb, double C_i_E, double C_r, double C_T, double lambda, string WoodMemberType, string Code)
        {
            //Default values
            double C_L = 0;


            //Calculation logic:

            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                C_L = m.GetStabilityFactor(b, d, F_b, E_min, l_e, C_M_Fb, C_M_E, C_t_Fb, C_t_Fb, C_F_Fb, C_i_Fb, C_i_E, C_r, C_T, lambda);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }


            return(new Dictionary <string, object>
            {
                { "C_L", C_L }
            });
        }
Exemplo n.º 25
0
        public static Dictionary <string, object> WetServiceFactor(string ServiceMoistureCondition, double F_ref, double C_F,
                                                                   string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double C_M_Fb = 0;
            double C_M_Ft = 0;
            double C_M_Fv = 0;
            double C_M_Fc = 0;
            double C_M_E  = 0;


            //Calculation logic:

            if (WoodMemberType.Contains("Sawn"))
            {
                SawnLumberType sawnLumberType;

                string memberType = WoodMemberType.TrimStart("Sawn".ToCharArray());
                bool   IsValidSawnLumberTypeString = Enum.TryParse(memberType, true, out sawnLumberType);
                if (IsValidSawnLumberTypeString == false)
                {
                    throw new Exception("Failed to convert string. Check string input for sawn lumber type. Please check input");
                }


                if (WoodMemberType.Contains("Lumber"))
                {
                    DimensionalLumber m = new DimensionalLumber();
                    C_M_Fb = m.GetWetServiceFactor(ReferenceDesignValueType.Bending, F_ref, C_F, sawnLumberType);
                    C_M_Ft = m.GetWetServiceFactor(ReferenceDesignValueType.TensionParallelToGrain, F_ref, C_F, sawnLumberType);
                    C_M_Fv = m.GetWetServiceFactor(ReferenceDesignValueType.ShearParallelToGrain, F_ref, C_F, sawnLumberType);
                    C_M_Fc = m.GetWetServiceFactor(ReferenceDesignValueType.CompresionParallelToGrain, F_ref, C_F, sawnLumberType);
                    C_M_E  = m.GetWetServiceFactor(ReferenceDesignValueType.ModulusOfElasticity, F_ref, C_F, sawnLumberType);
                }
                else if (WoodMemberType.Contains("Timber"))
                {
                    Timber t = new Timber();
                    C_M_Fb = t.GetWetServiceFactor(ReferenceDesignValueType.Bending, F_ref, C_F, sawnLumberType);
                    C_M_Ft = t.GetWetServiceFactor(ReferenceDesignValueType.TensionParallelToGrain, F_ref, C_F, sawnLumberType);
                    C_M_Fv = t.GetWetServiceFactor(ReferenceDesignValueType.ShearParallelToGrain, F_ref, C_F, sawnLumberType);
                    C_M_Fc = t.GetWetServiceFactor(ReferenceDesignValueType.CompresionParallelToGrain, F_ref, C_F, sawnLumberType);
                    C_M_E  = t.GetWetServiceFactor(ReferenceDesignValueType.ModulusOfElasticity, F_ref, C_F, sawnLumberType);
                }
                else
                {
                    throw new Exception("Wood member type not supported.");
                }
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return(new Dictionary <string, object>
            {
                { "C_M_Fb", C_M_Fb }
                , { "C_M_Ft", C_M_Ft }
                , { "C_M_Fv", C_M_Fv }
                , { "C_M_Fc", C_M_Fc }
                , { "C_M_E", C_M_E }
            });
        }
Exemplo n.º 26
0
        public static Dictionary<string, object> TemperatureFactor(double Temperature, string ServiceMoistureCondition="Dry",
             string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double C_t_Fb =1.0;
            double C_t_Ft =1.0;
            double C_t_Fv =1.0;
            double C_t_Fc =1.0;
            double C_t_E = 1.0;

            //Calculation logic:

            
            ww.ServiceMoistureConditions moistureCondition;
            bool IsValidInputString = Enum.TryParse(ServiceMoistureCondition, true, out moistureCondition);
            if (IsValidInputString == false)
            {
                throw new Exception("Failed to convert string. Moisture condition string is invalid. Please check input");
            }


            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                C_t_Fb = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.Bending, Temperature, moistureCondition);
                C_t_Ft = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.TensionParallelToGrain, Temperature, moistureCondition);
                C_t_Fv = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.ShearParallelToGrain, Temperature, moistureCondition);
                C_t_Fc = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.CompresionParallelToGrain, Temperature, moistureCondition);
                C_t_E = m.GetTemperatureFactorCt(ww.ReferenceDesignValueType.ModulusOfElasticity, Temperature, moistureCondition);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                Timber t = new Timber();
                C_t_Fb = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.Bending, Temperature, moistureCondition);
                C_t_Ft = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.TensionParallelToGrain, Temperature, moistureCondition);
                C_t_Fv = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.ShearParallelToGrain, Temperature, moistureCondition);
                C_t_Fc = t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.CompresionParallelToGrain, Temperature, moistureCondition);
                C_t_E =  t.GetTemperatureFactorCt(ww.ReferenceDesignValueType.ModulusOfElasticity, Temperature, moistureCondition);
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return new Dictionary<string, object>
            {
                { "C_t_Fb", C_t_Fb },
                { "C_t_Ft", C_t_Ft },
                { "C_t_Fv", C_t_Fv },
                { "C_t_Fc", C_t_Fc },
                { "C_t_E",  C_t_E  } 
            };
        }
        FlatUseFactor(double b, double t, string WoodCommercialGrade,
                      string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values

            double C_fu_Fb = 0.0;
            double C_fu_Ft = 0.0;
            double C_fu_Fv = 0.0;
            double C_fu_Fc = 0.0;
            double C_fu_E  = 0.0;

            //Calculation logic:


            CommercialGrade comGr;
            bool            IsValidComGrString = Enum.TryParse(WoodCommercialGrade, true, out comGr);

            if (IsValidComGrString == false)
            {
                throw new Exception("Failed to convert string. Invalid Id for wood commercial grade. Please check input");
            }



            if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m          = new DimensionalLumber();
                string            memberType = WoodMemberType.TrimStart("Sawn".ToCharArray());

                SawnLumberType sawnLumberType;
                bool           IsValidSawnLumberTypeString = Enum.TryParse(memberType, true, out sawnLumberType);
                if (IsValidSawnLumberTypeString == false)
                {
                    throw new Exception("Failed to convert string. Check string input for sawn lumber type. Please check input");
                }

                C_fu_Fb = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Kodestruct.Wood.NDS.Entities.ReferenceDesignValueType.Bending);
                C_fu_Ft = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Kodestruct.Wood.NDS.Entities.ReferenceDesignValueType.TensionParallelToGrain);
                C_fu_Fv = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Kodestruct.Wood.NDS.Entities.ReferenceDesignValueType.ShearParallelToGrain);
                C_fu_Fc = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Kodestruct.Wood.NDS.Entities.ReferenceDesignValueType.CompresionParallelToGrain);
                C_fu_E  = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Kodestruct.Wood.NDS.Entities.ReferenceDesignValueType.ModulusOfElasticity);
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
            {
                C_fu_Fb = 1.0;
                C_fu_Ft = 1.0;
                C_fu_Fv = 1.0;
                C_fu_Fc = 1.0;
                C_fu_E  = 1.0;
            }
            else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("BeamOrStringer"))
            {
                throw new Exception("Wood member type not supported.");
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return(new Dictionary <string, object>
            {
                { "C_fu_Fb", C_fu_Fb },
                { "C_fu_Ft", C_fu_Ft },
                { "C_fu_Fv", C_fu_Fv },
                { "C_fu_Fc", C_fu_Fc },
                { "C_fu_E", C_fu_E },
            });
        }
Exemplo n.º 28
0
            FlatUseFactor(double b, double t, string WoodCommercialGrade,
             string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
 
            double C_fu_Fb  =0.0;
            double C_fu_Ft  =0.0;
            double C_fu_Fv  =0.0;
            double C_fu_Fc  =0.0;
            double C_fu_E = 0.0;

            //Calculation logic:

            
            CommercialGrade comGr;
            bool IsValidComGrString = Enum.TryParse(WoodCommercialGrade, true, out comGr);
            if (IsValidComGrString == false)
            {
                throw new Exception("Failed to convert string. Invalid Id for wood commercial grade. Please check input");
            }




           if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Lumber"))
            {
                DimensionalLumber m = new DimensionalLumber();
                string memberType = WoodMemberType.TrimStart("Sawn".ToCharArray());

                SawnLumberType sawnLumberType;
                bool IsValidSawnLumberTypeString = Enum.TryParse(memberType, true, out sawnLumberType);
                if (IsValidSawnLumberTypeString == false)
                {
                    throw new Exception("Failed to convert string. Check string input for sawn lumber type. Please check input");
                }

                C_fu_Fb = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Wosad.Wood.NDS.Entities.ReferenceDesignValueType.Bending);
                C_fu_Ft = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Wosad.Wood.NDS.Entities.ReferenceDesignValueType.TensionParallelToGrain);
                C_fu_Fv = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Wosad.Wood.NDS.Entities.ReferenceDesignValueType.ShearParallelToGrain);
                C_fu_Fc = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Wosad.Wood.NDS.Entities.ReferenceDesignValueType.CompresionParallelToGrain);
                C_fu_E = m.GetFlatUseFactor(b, t, sawnLumberType, comGr, Wosad.Wood.NDS.Entities.ReferenceDesignValueType.ModulusOfElasticity);


            }
           else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("Timber"))
           {

               C_fu_Fb =1.0;
               C_fu_Ft =1.0;
               C_fu_Fv =1.0;
               C_fu_Fc =1.0;
               C_fu_E = 1.0;
           }
           else if (WoodMemberType.Contains("Sawn") && WoodMemberType.Contains("BeamOrStringer"))
           {
               throw new Exception("Wood member type not supported.");
           }
           else
           {
               throw new Exception("Wood member type not supported.");
           }

            return new Dictionary<string, object>
            {
                { "C_fu_Fb", C_fu_Fb },
                { "C_fu_Ft", C_fu_Ft },
                { "C_fu_Fv", C_fu_Fv },
                { "C_fu_Fc", C_fu_Fc },
                { "C_fu_E", C_fu_E	 },
            };
        }
Exemplo n.º 29
0
        public static Dictionary<string, object> WetServiceFactor(string ServiceMoistureCondition, double F_ref, double C_F,
             string WoodMemberType = "SawnDimensionLumber", string Code = "NDS2015")
        {
            //Default values
            double C_M_Fb = 0;
            double C_M_Ft = 0;
            double C_M_Fv = 0;
            double C_M_Fc = 0;
            double C_M_E = 0;


            //Calculation logic:

            if (WoodMemberType.Contains("Sawn"))
            {
                       SawnLumberType sawnLumberType;

                        string memberType = WoodMemberType.TrimStart("Sawn".ToCharArray());
                        bool IsValidSawnLumberTypeString = Enum.TryParse(memberType, true, out sawnLumberType);
                        if (IsValidSawnLumberTypeString == false)
                        {
                            throw new Exception("Failed to convert string. Check string input for sawn lumber type. Please check input");
                        }


                    if ( WoodMemberType.Contains("Lumber"))
                    {
                        DimensionalLumber m = new DimensionalLumber();
                        C_M_Fb = m.GetWetServiceFactor(ReferenceDesignValueType.Bending,F_ref,C_F,sawnLumberType);
                        C_M_Ft = m.GetWetServiceFactor(ReferenceDesignValueType.TensionParallelToGrain, F_ref, C_F, sawnLumberType);
                        C_M_Fv = m.GetWetServiceFactor(ReferenceDesignValueType.ShearParallelToGrain, F_ref, C_F, sawnLumberType);
                        C_M_Fc = m.GetWetServiceFactor(ReferenceDesignValueType.CompresionParallelToGrain, F_ref, C_F, sawnLumberType);
                        C_M_E =  m.GetWetServiceFactor(ReferenceDesignValueType.ModulusOfElasticity, F_ref, C_F, sawnLumberType);
                

                

                    }
                    else if ( WoodMemberType.Contains("Timber"))
                    {
                        Timber t = new Timber();
                        C_M_Fb = t.GetWetServiceFactor(ReferenceDesignValueType.Bending,F_ref,C_F,sawnLumberType);
                        C_M_Ft = t.GetWetServiceFactor(ReferenceDesignValueType.TensionParallelToGrain, F_ref, C_F, sawnLumberType);
                        C_M_Fv = t.GetWetServiceFactor(ReferenceDesignValueType.ShearParallelToGrain, F_ref, C_F, sawnLumberType);
                        C_M_Fc = t.GetWetServiceFactor(ReferenceDesignValueType.CompresionParallelToGrain, F_ref, C_F, sawnLumberType);
                        C_M_E = t.GetWetServiceFactor(ReferenceDesignValueType.ModulusOfElasticity, F_ref, C_F, sawnLumberType);
                    }
                      else
                    {
                        throw new Exception("Wood member type not supported.");
                    }
            }
            else
            {
                throw new Exception("Wood member type not supported.");
            }

            return new Dictionary<string, object>
            {
                { "C_M_Fb", C_M_Fb }
                ,{ "C_M_Ft", C_M_Ft }
                ,{ "C_M_Fv", C_M_Fv }
                ,{ "C_M_Fc", C_M_Fc }
                ,{ "C_M_E", C_M_E }
 
            };
        }