Exemplo n.º 1
0
        private double GetSizeCoefficientFromReferenceTable(
           double Depth, double Thickness,
           SawnLumberType SawnLumberType,
           CommercialGrade CommercialGrade,
           ReferenceDesignValueType ReferenceDesignValueType,
            bool LoadAppliedToNarrowFace
           )
        {
            double b = Depth;
            double t = Thickness;
            double C_F = 1.0;
            switch (SawnLumberType)
            {
                case SawnLumberType.DimensionLumber:
                    C_F = GetDimensionalLumberC_F(b, t, CommercialGrade,ReferenceDesignValueType); break;//4A
                case SawnLumberType.SouthernPineDimensionLumber://4B
                    C_F = GetSPDimensionalLumberC_F(b, t,CommercialGrade); break;
                case SawnLumberType.MechanicallyGradedDimensionLumber: //4C
                    C_F = 1.0; break;
                case SawnLumberType.VisuallyGradedTimbers: //4D
                    C_F = GetTimberC_F(b, ReferenceDesignValueType, LoadAppliedToNarrowFace); break;
                case SawnLumberType.VisuallyGradedDecking: //4E
                    C_F = GetDeckingC_F(t); break;
                case SawnLumberType.NonNorthAmericanVisuallyGradedDimensionLumber: //4F
                    //Adjustment factors for table 4F are the same as those for 4A
                    C_F = GetDimensionalLumberC_F(b, t, CommercialGrade, ReferenceDesignValueType); break;
                default://4A
                     C_F = GetDimensionalLumberC_F(b, t, CommercialGrade,ReferenceDesignValueType); break;

            }
            return C_F;
        }
Exemplo n.º 2
0
        private double GetSPDimensionalLumberC_F(double b, double t, CommercialGrade CommercialGrade)
        {
            double C_F = 1.0;

            if (CommercialGrade != CommercialGrade.DenseStructural65 &&
                CommercialGrade != CommercialGrade.DenseStructural72 &&
                CommercialGrade != CommercialGrade.DenseStructural86)
            {
                if (t == 4 && b >= 8)
                {
                    C_F = 1.1;
                }
                else if (b > 12)
                {
                    C_F = 0.9;
                }
            }
            else
            {
                if (b > 12)
                {
                    C_F = Math.Pow(12 / d, 1 / 9.0);
                }
            }
            return(C_F);
        }
Exemplo n.º 3
0
        private double GetFlatUseCoefficientFromReferenceTable(
            double Depth, double Thickness,
            SawnLumberType SawnLumberType, 
            CommercialGrade CommercialGrade, 
            ReferenceDesignValueType ReferenceDesignValueType
            )
        {
            double b = Depth;
            double t = Thickness;
            double C_fu = 1.0;
            switch (SawnLumberType)
            {
                case SawnLumberType.DimensionLumber:
                    C_fu = GetDimensionalLumberC_fu(b, t); break;//4A
                case SawnLumberType.SouthernPineDimensionLumber://4B
                    C_fu = GetSPDimensionalLumberC_fu(b, t); break;
                case SawnLumberType.MechanicallyGradedDimensionLumber: //4C
                    C_fu = GetMechanicallyGradedLumberC_fu(b, t);  break;
                case SawnLumberType.VisuallyGradedTimbers: //4D
                    C_fu = GetTimberC_fu(b, t, CommercialGrade, ReferenceDesignValueType); break;
                case SawnLumberType.VisuallyGradedDecking: //4E
                    C_fu = GetDeckingC_fu(); break;
                case SawnLumberType.NonNorthAmericanVisuallyGradedDimensionLumber: //4F
                    C_fu = GetNonNorthAmericanLumberC_fu(b, t); break;
                default://4A
                    C_fu = GetDimensionalLumberC_fu(b, t); break; 

            }
            return C_fu;
        }
 public static string GetCommercialGradeString(CommercialGrade Grade)
 {
     string GradeString = "";
     switch (Grade)
     {
         case CommercialGrade.SelectStructural:
             GradeString = "Select Structural";
             break;
         case CommercialGrade.No1:
             GradeString = "No.1";
             break;
         case CommercialGrade.No2:
             GradeString = "No.2";
             break;
         case CommercialGrade.No3:
             GradeString = "No.3";
             break;
         case CommercialGrade.Stud:
             GradeString = "Stud";
             break;
         case CommercialGrade.Construction:
             GradeString = "Construction";
             break;
         case CommercialGrade.Standard:
             GradeString = "Standard";
             break;
         case CommercialGrade.Utility:
             GradeString = "Utility";
             break;
         case CommercialGrade.ClearStructural:
             GradeString = "Clear Structural";
             break;
         case CommercialGrade.SelectStructuralOpenGrain:
             GradeString = "Select Structural Open Grain";
             break;
         case CommercialGrade.No1OpenGrain:
             GradeString = "No.1 Open Grain";
             break;
         case CommercialGrade.No2OpenGrain:
             GradeString = "No.2 Open Grain";
             break;
         case CommercialGrade.No3OpenGrain:
             GradeString = "No.3 Open Grain";
             break;
         case CommercialGrade.No1AndBetter:
             GradeString = "No.1 And Better";
             break;
         default:
             break;
     }
     return GradeString;
 }
Exemplo n.º 5
0
 public double GetFlatUseFactor( 
     double Depth, double Thickness,
     SawnLumberType SawnLumberType,
     CommercialGrade CommercialGrade, 
     ReferenceDesignValueType ReferenceDesignValueType
     )
 {
     double b = Depth;
     double C_fu = 1.0;
     if (b >= 2 || b <= 4)
     {
         C_fu = GetFlatUseCoefficientFromReferenceTable(
         Depth,  Thickness,
         SawnLumberType, CommercialGrade, 
         ReferenceDesignValueType);
     }
     return C_fu;
 }
Exemplo n.º 6
0
        public double GetFlatUseFactor(
            double Depth, double Thickness,
            SawnLumberType SawnLumberType,
            CommercialGrade CommercialGrade,
            ReferenceDesignValueType ReferenceDesignValueType
            )
        {
            double b    = Depth;
            double C_fu = 1.0;

            if (b >= 2 || b <= 4)
            {
                C_fu = GetFlatUseCoefficientFromReferenceTable(
                    Depth, Thickness,
                    SawnLumberType, CommercialGrade,
                    ReferenceDesignValueType);
            }
            return(C_fu);
        }
Exemplo n.º 7
0
        private double GetSizeCoefficientFromReferenceTable(
            double Depth, double Thickness,
            SawnLumberType SawnLumberType,
            CommercialGrade CommercialGrade,
            ReferenceDesignValueType ReferenceDesignValueType,
            bool LoadAppliedToNarrowFace
            )
        {
            double b   = Depth;
            double t   = Thickness;
            double C_F = 1.0;

            switch (SawnLumberType)
            {
            case SawnLumberType.DimensionLumber:
                C_F = GetDimensionalLumberC_F(b, t, CommercialGrade, ReferenceDesignValueType); break; //4A

            case SawnLumberType.SouthernPineDimensionLumber:                                           //4B
                C_F = GetSPDimensionalLumberC_F(b, t, CommercialGrade); break;

            case SawnLumberType.MechanicallyGradedDimensionLumber:     //4C
                C_F = 1.0; break;

            case SawnLumberType.VisuallyGradedTimbers:     //4D
                C_F = GetTimberC_F(b, ReferenceDesignValueType, LoadAppliedToNarrowFace); break;

            case SawnLumberType.VisuallyGradedDecking:     //4E
                C_F = GetDeckingC_F(t); break;

            case SawnLumberType.NonNorthAmericanVisuallyGradedDimensionLumber:     //4F
                //Adjustment factors for table 4F are the same as those for 4A
                C_F = GetDimensionalLumberC_F(b, t, CommercialGrade, ReferenceDesignValueType); break;

            default:    //4A
                C_F = GetDimensionalLumberC_F(b, t, CommercialGrade, ReferenceDesignValueType); break;
            }
            return(C_F);
        }
Exemplo n.º 8
0
        public  double GetSizeFactor(
            double Depth, double Thickness,
            SawnLumberType SawnLumberType,
            CommercialGrade CommercialGrade,
            ReferenceDesignValueType ReferenceDesignValueType,
            bool LoadAppliedToNarrowFace=true
            )
        {
            double C_F;
            if (Thickness >= 5 && Depth > 12.0)
            {
                // NDS 2015 Section 4.3.6.2
                C_F = Math.Pow(12 / Depth, 1 / 9.0);
                C_F = C_F > 1.0 ? 1.0 : C_F;
            }

            else
            {
                C_F = GetSizeCoefficientFromReferenceTable(Depth, Thickness, SawnLumberType,
                   CommercialGrade, ReferenceDesignValueType, LoadAppliedToNarrowFace);
            }
            return C_F;
        }
Exemplo n.º 9
0
        public double GetSizeFactor(
            double Depth, double Thickness,
            SawnLumberType SawnLumberType,
            CommercialGrade CommercialGrade,
            ReferenceDesignValueType ReferenceDesignValueType,
            bool LoadAppliedToNarrowFace = true
            )
        {
            double C_F;

            if (Thickness >= 5 && Depth > 12.0)
            {
                // NDS 2015 Section 4.3.6.2
                C_F = Math.Pow(12 / Depth, 1 / 9.0);
                C_F = C_F > 1.0 ? 1.0 : C_F;
            }

            else
            {
                C_F = GetSizeCoefficientFromReferenceTable(Depth, Thickness, SawnLumberType,
                                                           CommercialGrade, ReferenceDesignValueType, LoadAppliedToNarrowFace);
            }
            return(C_F);
        }
Exemplo n.º 10
0
        private double GetFlatUseCoefficientFromReferenceTable(
            double Depth, double Thickness,
            SawnLumberType SawnLumberType,
            CommercialGrade CommercialGrade,
            ReferenceDesignValueType ReferenceDesignValueType
            )
        {
            double b    = Depth;
            double t    = Thickness;
            double C_fu = 1.0;

            switch (SawnLumberType)
            {
            case SawnLumberType.DimensionLumber:
                C_fu = GetDimensionalLumberC_fu(b, t); break;   //4A

            case SawnLumberType.SouthernPineDimensionLumber:    //4B
                C_fu = GetSPDimensionalLumberC_fu(b, t); break;

            case SawnLumberType.MechanicallyGradedDimensionLumber:     //4C
                C_fu = GetMechanicallyGradedLumberC_fu(b, t);  break;

            case SawnLumberType.VisuallyGradedTimbers:     //4D
                C_fu = GetTimberC_fu(b, t, CommercialGrade, ReferenceDesignValueType); break;

            case SawnLumberType.VisuallyGradedDecking:     //4E
                C_fu = GetDeckingC_fu(); break;

            case SawnLumberType.NonNorthAmericanVisuallyGradedDimensionLumber:     //4F
                C_fu = GetNonNorthAmericanLumberC_fu(b, t); break;

            default:    //4A
                C_fu = GetDimensionalLumberC_fu(b, t); break;
            }
            return(C_fu);
        }
Exemplo n.º 11
0
        private double GetDimensionalLumberC_F(double Depth, double Thickness, CommercialGrade Grade, ReferenceDesignValueType ReferenceDesignValueType)
        {
            double SizeFactor;
            string GradeString = "Other";


            if (Grade == CommercialGrade.Standard || Grade == CommercialGrade.Construction)
            {
                SizeFactor = 1.0;
            }
            else
            {
                double b = Math.Ceiling(Depth);
                double t = Math.Ceiling(Thickness);

                //Adjust thickness
                if (t <= 3)
                {
                    t = 3.0;
                }
                else if (t > 3 && t <= 5)
                {
                    t = 4.0;
                }
                else
                {
                    throw new Exception("Use timber values for elements having over 5 inches in thickness.");
                }

                //adjust the values for lookup (for depth)
                if (Grade == CommercialGrade.Utility)
                {
                    GradeString = Grade.ToString();
                    if (b <= 3)
                    {
                        b = 3;
                    }
                    else
                    {
                        b = 4;
                    }
                }
                else if (Grade == CommercialGrade.Stud)
                {
                    GradeString = Grade.ToString();

                    if (b <= 4)
                    {
                        b = 4;
                    }
                    else if (b >= 7)
                    {
                        b = 8;
                    }
                }
                else
                {
                    GradeString = "Other";


                    //Adjust depth
                    if (b <= 4)
                    {
                        b = 4;
                    }
                    else if (b == 7)
                    {
                        b = 8;
                    }
                    else if (b == 9)
                    {
                        b = 10;
                    }
                    else if (b >= 10)
                    {
                        b = 14;
                    }
                }

                #region Read Table Data

                var Tv11       = new { Grade = "", Depth = 0.0, Thickness = 0.0, Fb = 0.0, Ft = 0.0, Fc = 0.0 }; // sample
                var ResultList = ListFactory.MakeList(Tv11);

                using (StringReader reader = new StringReader(Resources.NDS2015_Table4A_SizeFactor))
                {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        string[] Vals = line.Split(',');
                        if (Vals.Count() == 6)
                        {
                            string _Grade     = Vals[0];
                            double _Depth     = double.Parse(Vals[1], CultureInfo.InvariantCulture);
                            double _Thickness = double.Parse(Vals[2], CultureInfo.InvariantCulture);
                            double _Fb        = double.Parse(Vals[3], CultureInfo.InvariantCulture);
                            double _Ft        = double.Parse(Vals[4], CultureInfo.InvariantCulture);
                            double _Fc        = double.Parse(Vals[5], CultureInfo.InvariantCulture);

                            ResultList.Add(new
                            {
                                Grade     = _Grade,
                                Depth     = _Depth,
                                Thickness = _Thickness,
                                Fb        = _Fb,
                                Ft        = _Ft,
                                Fc        = _Fc
                            });
                        }
                    }
                }

                #endregion

                var RValues = from v in ResultList
                              where
                              (v.Grade == GradeString &&
                               v.Depth == b &&
                               v.Thickness == t)
                              select v;
                var foundValue = (RValues.ToList()).FirstOrDefault();
                if (foundValue == null)
                {
                    throw new Exception("Combination of lumber grade and size was not found. Check input");
                }
                else
                {
                    switch (ReferenceDesignValueType)
                    {
                    case ReferenceDesignValueType.Bending:
                        SizeFactor = foundValue.Fb;
                        break;

                    case ReferenceDesignValueType.TensionParallelToGrain:
                        SizeFactor = foundValue.Ft;
                        break;

                    case ReferenceDesignValueType.CompresionParallelToGrain:
                        SizeFactor = foundValue.Fc;
                        break;

                    default:
                        SizeFactor = 1.0;
                        break;
                    }
                }
                if (SizeFactor == 0)
                {
                    throw new Exception("Combination of lumber grade and size was not found. Check input");
                }
            }

            return(SizeFactor);
        }
Exemplo n.º 12
0
        private double GetTimberC_fu(double b, double t, CommercialGrade CommercialGrade,
                                     ReferenceDesignValueType ReferenceDesignValueType)
        {
            double C_fu = 1.0;

            if (CommercialGrade == Entities.CommercialGrade.SelectStructural)
            {
                if (ReferenceDesignValueType == Entities.ReferenceDesignValueType.Bending)
                {
                    C_fu = 0.86;
                }
                else if (ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin ||
                         ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin)
                {
                    C_fu = 1.0;
                }
                else
                {
                    C_fu = 1.0;
                }
            }

            if (CommercialGrade == Entities.CommercialGrade.No2)
            {
                if (ReferenceDesignValueType == Entities.ReferenceDesignValueType.Bending)
                {
                    C_fu = 1.0;
                }
                else if (ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin ||
                         ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin)
                {
                    C_fu = 1.0;
                }
                else
                {
                    C_fu = 1.0;
                }
            }

            else
            {
                //(CommercialGrade == Entities.CommercialGrade.No1)

                if (ReferenceDesignValueType == Entities.ReferenceDesignValueType.Bending)
                {
                    C_fu = 0.74;
                }
                else if (ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin ||
                         ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin)
                {
                    C_fu = 0.9;
                }
                else
                {
                    C_fu = 1.0;
                }
            }


            return(C_fu);
        }
        public static string GetCommercialGradeString(CommercialGrade Grade)
        {
            string GradeString = "";

            switch (Grade)
            {
            case CommercialGrade.SelectStructural:
                GradeString = "Select Structural";
                break;

            case CommercialGrade.No1:
                GradeString = "No.1";
                break;

            case CommercialGrade.No2:
                GradeString = "No.2";
                break;

            case CommercialGrade.No3:
                GradeString = "No.3";
                break;

            case CommercialGrade.Stud:
                GradeString = "Stud";
                break;

            case CommercialGrade.Construction:
                GradeString = "Construction";
                break;

            case CommercialGrade.Standard:
                GradeString = "Standard";
                break;

            case CommercialGrade.Utility:
                GradeString = "Utility";
                break;

            case CommercialGrade.ClearStructural:
                GradeString = "Clear Structural";
                break;

            case CommercialGrade.SelectStructuralOpenGrain:
                GradeString = "Select Structural Open Grain";
                break;

            case CommercialGrade.No1OpenGrain:
                GradeString = "No.1 Open Grain";
                break;

            case CommercialGrade.No2OpenGrain:
                GradeString = "No.2 Open Grain";
                break;

            case CommercialGrade.No3OpenGrain:
                GradeString = "No.3 Open Grain";
                break;

            case CommercialGrade.No1AndBetter:
                GradeString = "No.1 And Better";
                break;

            default:
                break;
            }
            return(GradeString);
        }
Exemplo n.º 14
0
        private double GetTimberC_fu(double b, double t, CommercialGrade CommercialGrade, 
            ReferenceDesignValueType ReferenceDesignValueType)
        {
            double C_fu = 1.0;

            if (CommercialGrade == Entities.CommercialGrade.SelectStructural)
            {
                if (ReferenceDesignValueType ==  Entities.ReferenceDesignValueType.Bending)
                {
                    C_fu = 0.86;
                }
                else if (ReferenceDesignValueType ==  ReferenceDesignValueType.ModulusOfElasticityMin || 
                    ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin)
                {
                    C_fu = 1.0;
                }
                else
                {
                    C_fu = 1.0;
                }
            }
           
            if (CommercialGrade == Entities.CommercialGrade.No2)
            {
                if (ReferenceDesignValueType ==  Entities.ReferenceDesignValueType.Bending)
                {
                    C_fu =1.0;
                }
                else if (ReferenceDesignValueType ==  ReferenceDesignValueType.ModulusOfElasticityMin || 
                    ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin)
                {
                    C_fu = 1.0;
                }
                else
                {
                    C_fu = 1.0;
                }
            }

            else
	        {
                     //(CommercialGrade == Entities.CommercialGrade.No1)
                    
                        if (ReferenceDesignValueType ==  Entities.ReferenceDesignValueType.Bending)
                        {
                            C_fu =0.74;
                        }
                        else if (ReferenceDesignValueType ==  ReferenceDesignValueType.ModulusOfElasticityMin || 
                            ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin)
                        {
                            C_fu =  0.9;
                        }
                        else
                        {
                            C_fu = 1.0;
                        }
            }
	        

            return C_fu;
        }
Exemplo n.º 15
0
        private double GetDimensionalLumberC_F(double Depth, double Thickness, CommercialGrade Grade, ReferenceDesignValueType ReferenceDesignValueType)
        {
            double SizeFactor;
            string GradeString = "Other";


            if (Grade == CommercialGrade.Standard || Grade == CommercialGrade.Construction)
            {
                SizeFactor = 1.0; 
            }
            else 
            {
                double b = Math.Ceiling(Depth);
                double t = Math.Ceiling(Thickness);

                //Adjust thickness
                if (t <= 3)
                {
                    t = 3.0;
                }
                else if (t > 3 && t <= 5)
                {
                    t = 4.0;
                }
                else
                {
                    throw new Exception("Use timber values for elements having over 5 inches in thickness.");
                }
                
                //adjust the values for lookup (for depth)
                if (Grade == CommercialGrade.Utility)
                {
                    GradeString = Grade.ToString();
                    if (b<=3)
                    {
                        b = 3; 
                    }
                    else
                    {
                        b = 4;
                    }
                }
                else if (Grade == CommercialGrade.Stud)
                {
                    GradeString = Grade.ToString();

                    if (b <= 4)
                    {
                        b = 4;
                    }
                    else if (b >= 7)
                    {
                        b = 8;
                    }

                }
                else
                {
                    
                    GradeString = "Other";


                    //Adjust depth
                    if (b<=4)
                    {
                        b = 4;  
                    }
                    else if (b==7)
                    {
                        b = 8;
                    }
                    else if (b == 9)
                    {
                        b = 10;
                    }
                    else if (b>=10)
                    {
                        b = 14;
                    }

                }
               
                #region Read Table Data

                var Tv11 = new { Grade="",	Depth=0.0,	Thickness=0.0, Fb=0.0,	Ft=0.0,	Fc=0.0}; // sample
                var ResultList = ListFactory.MakeList(Tv11);

                using (StringReader reader = new StringReader(Resources.NDS2015_Table4A_SizeFactor))
                {
                    string line;
                    while ((line = reader.ReadLine()) != null)
                    {
                        string[] Vals = line.Split(',');
                        if (Vals.Count() == 6)
                        {

                            string _Grade = Vals[0];
                            double _Depth     =double.Parse(Vals[1],CultureInfo.InvariantCulture);
                            double _Thickness =double.Parse(Vals[2],CultureInfo.InvariantCulture);
                            double _Fb        =double.Parse(Vals[3],CultureInfo.InvariantCulture);
                            double _Ft        =double.Parse(Vals[4],CultureInfo.InvariantCulture);
                            double _Fc        =double.Parse(Vals[5],CultureInfo.InvariantCulture);

                            ResultList.Add(new
                            {
                                Grade    = _Grade    ,
                                Depth    = _Depth    ,
                                Thickness= _Thickness,
                                Fb       = _Fb       ,
                                Ft       = _Ft       ,
                                Fc       = _Fc       

                            });
                        }
                    }

                }

                #endregion

                var RValues = from v in ResultList
                              where
                                  (v.Grade == GradeString &&
                                  v.Depth == b  &&
                                  v.Thickness ==t)
                              select v;
                var foundValue = (RValues.ToList()).FirstOrDefault();
                if (foundValue == null)
                {
                    throw new Exception("Combination of lumber grade and size was not found. Check input");
                }
                else
                {
                    switch (ReferenceDesignValueType)
                    {
                        case ReferenceDesignValueType.Bending:
                            SizeFactor = foundValue.Fb;
                            break;
                        case ReferenceDesignValueType.TensionParallelToGrain:
                            SizeFactor = foundValue.Ft;
                            break;
                        case ReferenceDesignValueType.CompresionParallelToGrain:
                            SizeFactor = foundValue.Fc;
                            break;
                        default:
                            SizeFactor = 1.0;
                            break;
                    }
                }
                if (SizeFactor == 0)
                {
                    throw new Exception("Combination of lumber grade and size was not found. Check input");
                }
            }

            return SizeFactor;
        }
Exemplo n.º 16
0
        private double GetSPDimensionalLumberC_F(double b, double t, CommercialGrade CommercialGrade)
        {
            double C_F = 1.0;
            if (CommercialGrade != CommercialGrade.DenseStructural65
                && CommercialGrade != CommercialGrade.DenseStructural72
                && CommercialGrade != CommercialGrade.DenseStructural86)
            {
                if (t==4&& b>=8)
                {

                    C_F = 1.1;
                }
                else if (b>12)
                {
                    C_F = 0.9;
                }
            }
            else
            {
                if (b>12)
                {
                    C_F = Math.Pow(12 / d, 1 / 9.0);
                }
            }
            return C_F;
        }