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; }
/// <summary> /// When dimension lumber is used where moisture content will exceed 19% for an extended time period, /// design values shall be multiplied by the appropriate wet service factors /// </summary> /// <param name="ValueType"> Distiguishes between bending, shear, tension compression reference values</param> /// <param name="F">Reference design value for bending or compression</param> /// <param name="C_F">Size factor</param> /// <param name="SawnLumberType">Defines the type of lumber</param> /// <returns></returns> public double GetWetServiceFactor(ReferenceDesignValueType ValueType, double F, double C_F, SawnLumberType SawnLumberType) { double Cm = 1.0; switch (SawnLumberType) { case SawnLumberType.DimensionLumber: return(GetDimensionalLumberC_M(ValueType, F, C_F)); //4A case SawnLumberType.SouthernPineDimensionLumber: return(GetDimensionalLumberC_M(ValueType, F, C_F)); //4B case SawnLumberType.MechanicallyGradedDimensionLumber: //4C return(GetDimensionalLumberC_M(ValueType, F, C_F)); case SawnLumberType.VisuallyGradedTimbers: //4D return(GetTimberC_M(ValueType, F, C_F)); case SawnLumberType.VisuallyGradedDecking: //4E return(GetDeckingC_M(ValueType, F, C_F)); case SawnLumberType.NonNorthAmericanVisuallyGradedDimensionLumber: //4F return(GetNonNorthAmericanLumberC_M(ValueType, F, C_F)); default: return(GetDimensionalLumberC_M(ValueType, F, C_F)); //4A } }
private double GetDeckingC_M(ReferenceDesignValueType ValueType, double F_b, double C_F) { switch (ValueType) { case ReferenceDesignValueType.Bending: double Fb = F_b; if (Fb * C_F <= 1.500) //when (Fb)(CF) =1,150 psi, CM= 1.0 form footnote of table { return(1.0); } else { return(0.85); } case ReferenceDesignValueType.TensionParallelToGrain: return(1.0); case ReferenceDesignValueType.ShearParallelToGrain: return(1.0); case ReferenceDesignValueType.CompresionPerpendicularToGrain: return(0.67); case ReferenceDesignValueType.CompresionParallelToGrain: return(1.0); case ReferenceDesignValueType.ModulusOfElasticity: return(0.9); case ReferenceDesignValueType.ModulusOfElasticityMin: return(0.9); default: return(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; }
public double GetWetServiceFactor(ReferenceDesignValueType ValueType) { switch (ValueType) { case ReferenceDesignValueType.Bending: return(0.8); case ReferenceDesignValueType.TensionParallelToGrain: return(0.8); case ReferenceDesignValueType.ShearParallelToGrain: return(0.875); case ReferenceDesignValueType.CompresionPerpendicularToGrain: return(0.53); case ReferenceDesignValueType.CompresionParallelToGrain: return(0.73); case ReferenceDesignValueType.ModulusOfElasticity: return(0.833); case ReferenceDesignValueType.ModulusOfElasticityMin: return(0.833); default: return(0.8); } }
public virtual double GetTemperatureFactorCt(ReferenceDesignValueType ValueType, double Temperature, ServiceMoistureConditions Conditions) { double T =Temperature; double Ct=1.0; if (ValueType == ReferenceDesignValueType.TensionParallelToGrain || ValueType == ReferenceDesignValueType.ModulusOfElasticity || ValueType == ReferenceDesignValueType.ModulusOfElasticityMin) { if (T<=100) { Ct= 1.0; } else if (T>100 && T<=125) { Ct = 0.9; } else { Ct = 0.9; } } else { if (Conditions == ServiceMoistureConditions.Dry) { if (T<=100) { Ct = 1.0; } else if (T>100 && T<=125) { Ct = 0.8; } else { Ct = 0.7; } } else { if (T<=100) { Ct = 1.0; } else if (T>100 && T<=125) { Ct = 0.7; } else { Ct = 0.5; } } } return Ct; }
public double GetResistanceFactor(ReferenceDesignValueType ValueType ) { double phi=1.0; switch (ValueType) { case ReferenceDesignValueType.Bending: phi = 0.85; break; case ReferenceDesignValueType.TensionParallelToGrain: phi = 0.80; break; case ReferenceDesignValueType.ShearParallelToGrain: phi = 0.75; break; case ReferenceDesignValueType.CompresionPerpendicularToGrain: phi = 0.9; break; case ReferenceDesignValueType.CompresionParallelToGrain: phi = 0.9; break; case ReferenceDesignValueType.ModulusOfElasticity: phi = 1.0; break; case ReferenceDesignValueType.ModulusOfElasticityMin: phi = 0.85; break; default: break; } return phi; }
public double GetFormatConversionFactor(ReferenceDesignValueType ValueType ) { double K_F; switch (ValueType) { case ReferenceDesignValueType.Bending: K_F = 2.54; break; case ReferenceDesignValueType.TensionParallelToGrain: K_F = 2.70; break; case ReferenceDesignValueType.ShearParallelToGrain: K_F = 2.88; break; case ReferenceDesignValueType.CompresionPerpendicularToGrain: K_F = 1.67; break; case ReferenceDesignValueType.CompresionParallelToGrain: K_F = 2.4; break; case ReferenceDesignValueType.ModulusOfElasticity: K_F = 1.0; break; case ReferenceDesignValueType.ModulusOfElasticityMin: K_F = 1.76; break; default: K_F = 1.0; break; } return K_F; }
public double GetStrengthReductionFactor_phi(ReferenceDesignValueType ValueType) { switch (ValueType) { case ReferenceDesignValueType.Bending: return(0.85); case ReferenceDesignValueType.TensionParallelToGrain: return(0.8); case ReferenceDesignValueType.ShearParallelToGrain: return(0.75); case ReferenceDesignValueType.CompresionPerpendicularToGrain: return(0.9); case ReferenceDesignValueType.CompresionParallelToGrain: return(0.9); case ReferenceDesignValueType.ModulusOfElasticity: return(0.85); case ReferenceDesignValueType.ModulusOfElasticityMin: return(0.85); default: return(0.85); } }
private double GetDeckingC_M(ReferenceDesignValueType ValueType, double F_b, double C_F) { switch (ValueType) { case ReferenceDesignValueType.Bending: double Fb = F_b; if (Fb*C_F<=1.500) //when (Fb)(CF) ≤1,150 psi, CM= 1.0 form footnote of table { return 1.0; } else { return 0.85; } case ReferenceDesignValueType.TensionParallelToGrain: return 1.0; case ReferenceDesignValueType.ShearParallelToGrain: return 1.0; case ReferenceDesignValueType.CompresionPerpendicularToGrain: return 0.67; case ReferenceDesignValueType.CompresionParallelToGrain: return 1.0; case ReferenceDesignValueType.ModulusOfElasticity: return 0.9; case ReferenceDesignValueType.ModulusOfElasticityMin: return 0.9; default: return 1.0; } }
public double GetFormatConversionFactor_K_F(ReferenceDesignValueType ValueType) { switch (ValueType) { case ReferenceDesignValueType.Bending: return(2.54); case ReferenceDesignValueType.TensionParallelToGrain: return(2.7); case ReferenceDesignValueType.ShearParallelToGrain: return(2.88); case ReferenceDesignValueType.CompresionPerpendicularToGrain: return(1.67); case ReferenceDesignValueType.CompresionParallelToGrain: return(2.4); case ReferenceDesignValueType.ModulusOfElasticity: return(1.0); case ReferenceDesignValueType.ModulusOfElasticityMin: return(1.76); default: return(2.54); } }
public virtual double GetTemperatureFactorCt(ReferenceDesignValueType ValueType, double Temperature, ServiceMoistureConditions Conditions) { double T = Temperature; double Ct = 1.0; if (ValueType == ReferenceDesignValueType.TensionParallelToGrain || ValueType == ReferenceDesignValueType.ModulusOfElasticity || ValueType == ReferenceDesignValueType.ModulusOfElasticityMin) { if (T <= 100) { Ct = 1.0; } else if (T > 100 && T <= 125) { Ct = 0.9; } else { Ct = 0.9; } } else { if (Conditions == ServiceMoistureConditions.Dry) { if (T <= 100) { Ct = 1.0; } else if (T > 100 && T <= 125) { Ct = 0.8; } else { Ct = 0.7; } } else { if (T <= 100) { Ct = 1.0; } else if (T > 100 && T <= 125) { Ct = 0.7; } else { Ct = 0.5; } } } return(Ct); }
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; }
public double GetInsizingFactor( ReferenceDesignValueType ReferenceDesignValueType ) { //NDS 2015 Table 4.3.8 if (ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticity || ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin) { return 0.95; } else if (ReferenceDesignValueType == ReferenceDesignValueType.CompresionPerpendicularToGrain) { return 1.0; } else { return 0.8; } }
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); }
public double GetInsizingFactor( ReferenceDesignValueType ReferenceDesignValueType ) { //NDS 2015 Table 4.3.8 if (ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticity || ReferenceDesignValueType == ReferenceDesignValueType.ModulusOfElasticityMin) { return(0.95); } else if (ReferenceDesignValueType == ReferenceDesignValueType.CompresionPerpendicularToGrain) { return(1.0); } else { return(0.8); } }
public double GetFormatConversionFactor(ReferenceDesignValueType ValueType) { double K_F; switch (ValueType) { case ReferenceDesignValueType.Bending: K_F = 2.54; break; case ReferenceDesignValueType.TensionParallelToGrain: K_F = 2.70; break; case ReferenceDesignValueType.ShearParallelToGrain: K_F = 2.88; break; case ReferenceDesignValueType.CompresionPerpendicularToGrain: K_F = 1.67; break; case ReferenceDesignValueType.CompresionParallelToGrain: K_F = 2.4; break; case ReferenceDesignValueType.ModulusOfElasticity: K_F = 1.0; break; case ReferenceDesignValueType.ModulusOfElasticityMin: K_F = 1.76; break; default: K_F = 1.0; break; } return(K_F); }
private double GetTimberC_F(double Depth, ReferenceDesignValueType ReferenceDesignValueType, bool LoadAppliedToNarrowFace) { double C_F; if (LoadAppliedToNarrowFace == true) { if (Depth > 12.0 && ReferenceDesignValueType == ReferenceDesignValueType.Bending) { C_F = Math.Pow(12 / Depth, 1 / 9.0); } else { C_F = 1.0; } return(C_F); } else { return(1.0); } }
private double GetTimberC_M(ReferenceDesignValueType ValueType, double DesignReferenceValue, double CF) { switch (ValueType) { case ReferenceDesignValueType.Bending: return(1.0); case ReferenceDesignValueType.TensionParallelToGrain: return(1.0); case ReferenceDesignValueType.ShearParallelToGrain: return(1.0); case ReferenceDesignValueType.CompresionPerpendicularToGrain: return(0.67); case ReferenceDesignValueType.CompresionParallelToGrain: return(0.91); case ReferenceDesignValueType.ModulusOfElasticity: return(1.0); case ReferenceDesignValueType.ModulusOfElasticityMin: return(1.0); default: return(1.0); } }
double GetNonNorthAmericanLumberC_M(ReferenceDesignValueType ValueType, double DesignReferenceValue, double CF) { switch (ValueType) { case ReferenceDesignValueType.Bending: double Fb = DesignReferenceValue; if (Fb * CF <= 1.500) //when (Fb)(CF) =1,150 psi, CM= 1.0 { return(1.0); } else { return(0.85); } case ReferenceDesignValueType.TensionParallelToGrain: return(1.0); case ReferenceDesignValueType.ShearParallelToGrain: return(0.97); case ReferenceDesignValueType.CompresionPerpendicularToGrain: return(0.67); case ReferenceDesignValueType.CompresionParallelToGrain: double Fc = DesignReferenceValue; if (Fc * CF <= 0.750) //when (Fb)(CF) =750 psi, CM= 1.0 { return(1.0); } else { return(0.8); } case ReferenceDesignValueType.ModulusOfElasticity: return(0.9); case ReferenceDesignValueType.ModulusOfElasticityMin: return(0.9); default: return(1.0); } }
public double GetResistanceFactor(ReferenceDesignValueType ValueType) { double phi = 1.0; switch (ValueType) { case ReferenceDesignValueType.Bending: phi = 0.85; break; case ReferenceDesignValueType.TensionParallelToGrain: phi = 0.80; break; case ReferenceDesignValueType.ShearParallelToGrain: phi = 0.75; break; case ReferenceDesignValueType.CompresionPerpendicularToGrain: phi = 0.9; break; case ReferenceDesignValueType.CompresionParallelToGrain: phi = 0.9; break; case ReferenceDesignValueType.ModulusOfElasticity: phi = 1.0; break; case ReferenceDesignValueType.ModulusOfElasticityMin: phi = 0.85; break; default: break; } return(phi); }
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); }
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; }
/// <summary> /// When dimension lumber is used where moisture content will exceed 19% for an extended time period, /// design values shall be multiplied by the appropriate wet service factors /// </summary> /// <param name="ValueType"> Distiguishes between bending, shear, tension compression reference values</param> /// <param name="F">Reference design value for bending or compression</param> /// <param name="C_F">Size factor</param> /// <param name="SawnLumberType">Defines the type of lumber</param> /// <returns></returns> public double GetWetServiceFactor(ReferenceDesignValueType ValueType, double F, double C_F, SawnLumberType SawnLumberType) { double Cm = 1.0; switch (SawnLumberType) { case SawnLumberType.DimensionLumber: return GetDimensionalLumberC_M(ValueType, F, C_F); //4A case SawnLumberType.SouthernPineDimensionLumber: return GetDimensionalLumberC_M(ValueType, F, C_F); //4B case SawnLumberType.MechanicallyGradedDimensionLumber: //4C return GetDimensionalLumberC_M(ValueType, F, C_F); case SawnLumberType.VisuallyGradedTimbers: //4D return GetTimberC_M(ValueType, F, C_F); case SawnLumberType.VisuallyGradedDecking: //4E return GetDeckingC_M(ValueType, F, C_F); case SawnLumberType.NonNorthAmericanVisuallyGradedDimensionLumber: //4F return GetNonNorthAmericanLumberC_M(ValueType, F, C_F); default: return GetDimensionalLumberC_M(ValueType, F, C_F); //4A } }
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); }
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); }
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); }
private double GetTimberC_F(double Depth, ReferenceDesignValueType ReferenceDesignValueType, bool LoadAppliedToNarrowFace) { double C_F; if (LoadAppliedToNarrowFace ==true) { if (Depth>12.0 && ReferenceDesignValueType == ReferenceDesignValueType.Bending) { C_F = Math.Pow(12 / Depth, 1 / 9.0); } else { C_F = 1.0; } return C_F; } else { return 1.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); }
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; }
double GetNonNorthAmericanLumberC_M(ReferenceDesignValueType ValueType, double DesignReferenceValue, double CF) { switch (ValueType) { case ReferenceDesignValueType.Bending: double Fb = DesignReferenceValue; if (Fb * CF <= 1.500) //when (Fb)(CF) ≤1,150 psi, CM= 1.0 { return 1.0; } else { return 0.85; } case ReferenceDesignValueType.TensionParallelToGrain: return 1.0; case ReferenceDesignValueType.ShearParallelToGrain: return 0.97; case ReferenceDesignValueType.CompresionPerpendicularToGrain: return 0.67; case ReferenceDesignValueType.CompresionParallelToGrain: double Fc = DesignReferenceValue; if (Fc * CF <= 0.750) //when (Fb)(CF) ≤750 psi, CM= 1.0 { return 1.0; } else { return 0.8; } case ReferenceDesignValueType.ModulusOfElasticity: return 0.9; case ReferenceDesignValueType.ModulusOfElasticityMin: return 0.9; default: return 1.0; } }
public double GetTemperatureFactorCt(ReferenceDesignValueType ValueType, double Temperature, ServiceMoistureConditions Conditions) { return base.GetTemperatureFactorCt(ValueType, Temperature, Conditions); }
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 double GetTemperatureFactorCt(ReferenceDesignValueType ValueType, double Temperature, MoistureCondition Conditions) { return(base.GetTemperatureFactorCt(ValueType, Temperature, Conditions)); }
private double GetTimberC_M(ReferenceDesignValueType ValueType, double DesignReferenceValue, double CF) { switch (ValueType) { case ReferenceDesignValueType.Bending: return 1.0; case ReferenceDesignValueType.TensionParallelToGrain: return 1.0; case ReferenceDesignValueType.ShearParallelToGrain: return 1.0; case ReferenceDesignValueType.CompresionPerpendicularToGrain: return 0.67; case ReferenceDesignValueType.CompresionParallelToGrain: return 0.91; case ReferenceDesignValueType.ModulusOfElasticity: return 1.0; case ReferenceDesignValueType.ModulusOfElasticityMin: return 1.0; default: return 1.0; } }