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