AdjustmentFactors GetAdjustmentFactors(double F_c, double E_min, LoadCombinationType LoadCombinationType)
        {
            double C_M_Fc   = MoistureCondition == MoistureCondition.Wet ? Member.GetWetServiceFactor(ReferenceDesignValueType.CompresionParallelToGrain) : 1.0;
            double C_M_E    = MoistureCondition == MoistureCondition.Wet ? Member.GetWetServiceFactor(ReferenceDesignValueType.ModulusOfElasticity) : 1.0;
            double C_M_Emin = MoistureCondition == MoistureCondition.Wet ? Member.GetWetServiceFactor(ReferenceDesignValueType.ModulusOfElasticityMin) : 1.0;

            double C_t_Fc   = Member.GetTemperatureFactorCt(ReferenceDesignValueType.CompresionParallelToGrain, Temperature, MoistureCondition);
            double C_t_E    = Member.GetTemperatureFactorCt(ReferenceDesignValueType.ModulusOfElasticity, Temperature, MoistureCondition);
            double C_t_Emin = Member.GetTemperatureFactorCt(ReferenceDesignValueType.ModulusOfElasticityMin, Temperature, MoistureCondition);


            double lambda = Member.GetTimeEffectFactor(LoadCombinationType, false, IsPressureTreated);
            double phi    = Member.GetStrengthReductionFactor_phi(ReferenceDesignValueType.Bending); //Table N.3.2
            double K_F    = Member.GetFormatConversionFactor_K_F(ReferenceDesignValueType.Bending);

            double F_c_Star    = Member.Get_FcStar(F_c, C_M_Fc, C_t_Fc, lambda);
            double E_min_prime = Member.GetAdjustedMinimumModulusOfElasticityForStability(E_min, C_M_E, C_t_E);
            double C_P_strong  = Member.GetColumnStabilityFactor_C_P(F_c_Star, E_min_prime, l_e, d);
            double C_P_weak    = Member.GetColumnStabilityFactor_C_P(F_c_Star, E_min_prime, l_e, b);

            return(new AdjustmentFactors()
            {
                C_M_Fc = C_M_Fc,
                C_M_E = C_M_E,
                C_M_Emin = C_M_Emin,
                C_t_Fc = C_t_Fc,
                C_t_E = C_t_E,
                C_t_Emin = C_t_Emin,
                C_P = Math.Min(C_P_strong, C_P_weak),
                lambda = lambda,
                phi = phi,
                K_F = K_F
            });
        }
Exemplo n.º 2
0
        /// <summary>
        /// Time effect factor from NDS 2015 section N.3.3 (lambda)
        /// </summary>
        /// <param name="CombinationType"> Type of combination, Table N3.</param>
        /// <param name="IsConnection">If connection, lambda greater than 1.0 will not apply. </param>
        /// <param name="IsConnection">If pressure-treated with water-borne preservativesor fire retardant chemicals, lambda greater than 1.0 will not apply. </param>
        /// <returns></returns>
        ///
        public double GetTimeEffectFactor(LoadCombinationType CombinationType,
                                          bool IsConnection, bool IsTreated = false)
        {
            switch (CombinationType)
            {
            case LoadCombinationType.DeadLoadOnly:
                return(0.6);

                break;

            case LoadCombinationType.FullLiveLoadStorage:
                return(0.7);

                break;

            case LoadCombinationType.FullLiveLoad:
                return(0.8);

                break;

            case LoadCombinationType.FullLiveLoadImpact:
                if (!IsConnection && !IsTreated)
                {
                    return(1.25);
                }
                else
                {
                    return(1.0);
                }

                break;

            case LoadCombinationType.FullLiveLoadWithWind:
                return(0.8);

                break;

            case LoadCombinationType.FullWind:
                return(1.0);

                break;

            case LoadCombinationType.FullEarthquake:
                return(1.0);

                break;

            default:
                return(1.0);

                break;
            }
        }
Exemplo n.º 3
0
        public double GetFlexuralStrengthMajorAxis(LoadCombinationType LoadCombinationType)
        {
            double F_bx_plus = Member.Material.F_bx_p;
            var    f         = GetAdjustmentFactors(F_bx_plus, LoadCombinationType, true);

            //The beam stability factor, CL, shall not apply simultaneously with the volume factor, CV, for structural glued laminated timber bending
            //members.Therefore, the lesser of these adjustment factors shall apply.

            double F_b_prime = F_bx_plus * f.C_M_Fb * f.C_t_Fb * Math.Min(f.C_L, f.C_v) * f.C_fu * f.C_c * f.C_I * f.K_F * f.phi * f.lambda;
            double S_x       = this.Member.Section.S_xBot;

            return(F_b_prime * S_x);
        }
        public double GetCompressionStrength(LoadCombinationType LoadCombinationType)
        {
            double F_c   = NumberLaminations < 4 ? Member.Material.Fc_23 : Member.Material.F_c4;
            double E_min = Member.Material.E_min;
            var    f     = GetAdjustmentFactors(F_c, E_min, LoadCombinationType);

            //The beam stability factor, CL, shall not apply simultaneously with the volume factor, CV, for structural glued laminated timber bending
            //members.Therefore, the lesser of these adjustment factors shall apply.

            double F_c_prime = F_c * f.C_M_Fc * f.C_t_Fc * f.C_P * f.K_F * f.phi * f.lambda;
            double A         = this.Member.Section.A;

            return(F_c_prime * A);
        }
Exemplo n.º 5
0
        AdjustmentFactors GetAdjustmentFactors(double F_b, LoadCombinationType CombinationType, bool IsStrongAxis)
        {
            double C_M_Fb   = MoistureCondition == MoistureCondition.Wet?  Member.GetWetServiceFactor(ReferenceDesignValueType.Bending) :1.0;
            double C_M_E    = MoistureCondition == MoistureCondition.Wet ? Member.GetWetServiceFactor(ReferenceDesignValueType.ModulusOfElasticity):1.0;
            double C_M_Emin = MoistureCondition == MoistureCondition.Wet ? Member.GetWetServiceFactor(ReferenceDesignValueType.ModulusOfElasticityMin):1.0;

            double C_t_Fb   = Member.GetTemperatureFactorCt(ReferenceDesignValueType.Bending, Temperature, MoistureCondition);
            double C_t_E    = Member.GetTemperatureFactorCt(ReferenceDesignValueType.ModulusOfElasticity, Temperature, MoistureCondition);
            double C_t_Emin = Member.GetTemperatureFactorCt(ReferenceDesignValueType.ModulusOfElasticityMin, Temperature, MoistureCondition);

            double C_c = Member.GetCurvatureFactor_C_c();
            double C_I = Member.GetCurvatureFactor_C_I();

            double lambda = Member.GetTimeEffectFactor(CombinationType, false, IsPressureTreated);
            double phi    = Member.GetStrengthReductionFactor_phi(ReferenceDesignValueType.Bending); //Table N.3.2
            double K_F    = Member.GetFormatConversionFactor_K_F(ReferenceDesignValueType.Bending);

            bool   IsSouthernPine = (WoodSpecies == GlulamWoodSpeciesSimple.DouglasFir || WoodSpecies == GlulamWoodSpeciesSimple.Other) ? false : true;
            double C_L            = Member.GetStabilityFactorC_L(b, d, F_b, L, l_e, Member.Material.E_x_min, C_M_Fb, C_M_E, C_t_Fb, C_t_E, C_c, C_I, lambda, IsSouthernPine);
            double C_v            = Member.GetVolumeFactor_C_v(d, L, IsSouthernPine);


            double C_fu = IsStrongAxis? 1.0: Member.GetFlatUseFactor();

            return(new AdjustmentFactors()
            {
                C_M_Fb = C_M_Fb,
                C_M_E = C_M_E,
                C_M_Emin = C_M_Emin,
                C_t_Fb = C_t_Fb,
                C_t_E = C_t_E,
                C_t_Emin = C_t_Emin,
                C_c = C_c,
                C_I = C_I,
                C_L = C_L,
                C_v = C_v,
                C_fu = C_fu,
                lambda = lambda,
                phi = phi,
                K_F = K_F
            });
        }
Exemplo n.º 6
0
 /// <summary>
 /// Time effect factor from NDS 2015 section N.3.3 (lambda)
 /// </summary>
 /// <param name="CombinationType"> Type of combination, Table N3.</param>
 /// <param name="IsConnection">If connection, lambda greater than 1.0 will not apply. </param>
 /// <param name="IsConnection">If pressure-treated with water-borne preservativesor fire retardant chemicals, lambda greater than 1.0 will not apply. </param>
 /// <returns></returns>
 /// 
 public double GetTimeEffectFactor(LoadCombinationType CombinationType, 
     bool IsConnection, bool IsTreated=false)
 {
     switch (CombinationType)
     {
         case LoadCombinationType.DeadLoadOnly:
             return 0.6;
             break;
         case LoadCombinationType.FullLiveLoadStorage:
             return 0.7;
             break;
         case LoadCombinationType.FullLiveLoad:
             return 0.8;
             break;
         case LoadCombinationType.FullLiveLoadImpact:
             if (!IsConnection && !IsTreated)
             {
                 return 1.25;
             }
             else
             {
                 return 1.0;
             }
             
             break;
         case LoadCombinationType.FullLiveLoadWithWind:
             return 0.8;
             break;
         case LoadCombinationType.FullWind:
             return 1.0;
             break;
         case LoadCombinationType.FullEarthquake:
             return 1.0;
             break;
         default:
             return 1.0;
             break;
     }
 }