Exemple #1
0
        // Lateral-Torsional Buckling F4.2
        public double GetLateralTorsionalBucklingCapacity(FlexuralCompressionFiberPosition compressionFiberPosition, double L_b, double Cb)
        {
            double M_n = 0.0;

            double R_pc = GetRpc(compressionFiberPosition);
            double M_yc = GetCompressionFiberYieldMomentMyc(compressionFiberPosition);

            F_L = GetStressFL(compressionFiberPosition);

            switch (compressionFiberPosition)
            {
            case FlexuralCompressionFiberPosition.Top:
                Sxc = Section.Shape.S_xTop;
                break;

            case FlexuralCompressionFiberPosition.Bottom:
                Sxc = Section.Shape.S_xBot;
                break;

            default:
                throw new CompressionFiberPositionException();
            }
            double r_t = GetEffectiveRadiusOfGyration_r_t(compressionFiberPosition);
            double h_o = this.SectionI.h_o;
            double L_r = GetL_r();
            double L_p = GetL_p(r_t);
            LateralTorsionalBucklingType BucklingType = GetLateralTorsionalBucklingType(L_b, L_p, L_r);

            switch (BucklingType)
            {
            case LateralTorsionalBucklingType.NotApplicable:
                M_n = double.PositiveInfinity;
                break;

            case LateralTorsionalBucklingType.Inelastic:
                M_n = Cb * (R_pc * M_yc - (R_pc * M_yc - F_L * Sxc) * ((L_b - L_p) / (L_r - L_p)));     //(F4-2)
                M_n = M_n > R_pc * M_yc ? R_pc * M_yc : M_n;
                break;

            case LateralTorsionalBucklingType.Elastic:
                double Iyc = GetIyc(compressionFiberPosition);
                double Iy  = SectionI.I_x;
                J = Iyc / Iy <= 0.23 ? 0.0 : J;
                double Fcr = GetFcr(L_b);
                break;

            default:
                break;
            }


            double phiM_n = 0.9 * M_n;

            return(phiM_n);
        }
Exemple #2
0
        //Lateral Torsional Buckling F2.2
        public double GetFlexuralTorsionalBucklingMomentCapacity(double L_b, double Cb)
        {
            double Lp = GetLp(r_y, E, F_y); //(F2-5)

            double rts = Getrts(I_y, C_w, S_x);

            double Lr = GetLr(rts, E, F_y, S_x, J, c, ho);  // (F2-6)


            LateralTorsionalBucklingType BucklingType = GetLateralTorsionalBucklingType(L_b, Lp, Lr);
            double M_p;
            double M_n = 0.0;


            switch (BucklingType)
            {
            case LateralTorsionalBucklingType.NotApplicable:
                M_n = double.PositiveInfinity;
                break;

            case LateralTorsionalBucklingType.Inelastic:

                M_p = GetMajorNominalPlasticMoment();
                M_n = Cb * (M_p - (M_p - 0.7 * F_y * S_x) * ((L_b - Lp) / (Lr - Lp)));   //(F2-2)
                M_n = M_n > M_p ? M_p : M_n;
                break;

            case LateralTorsionalBucklingType.Elastic:
                double Fcr = GetFcr(Cb, E, L_b, rts, J, c, S_x, ho);
                M_n = Fcr * S_x;     //(F2-3)
                M_p = GetMajorNominalPlasticMoment();
                M_n = M_n > M_p ? M_p : M_n;
                break;
            }


            double phiM_n = M_n * 0.9;

            return(phiM_n);
        }
Exemple #3
0
        // Lateral-Torsional Buckling F5.2
        public double GetLateralTorsionalBucklingStrength(FlexuralCompressionFiberPosition compressionFiberPosition, double L_b, double Cb)
        {
            double Mn  = 0.0;
            double r_t = GetEffectiveRadiusOfGyration_r_t(compressionFiberPosition);

            L_p = GetLp(r_t);
            Lr  = GetLr(r_t);
            Rpg = GetRpg(compressionFiberPosition);
            double Sxc = compressionFiberPosition == FlexuralCompressionFiberPosition.Top ? Sxtop : Sxbot;


            LateralTorsionalBucklingType BucklingType = GetLateralTorsionalBucklingType(L_b, L_p, Lr);
            double Fcr = 0.0;

            switch (BucklingType)
            {
            case LateralTorsionalBucklingType.NotApplicable:
                Mn = double.PositiveInfinity;
                break;

            case LateralTorsionalBucklingType.Inelastic:
                Fcr = GetFcrLateralTorsionalBucklingInelastic(L_b);

                break;

            case LateralTorsionalBucklingType.Elastic:
                Fcr = GetFcrLateralTorsionalBucklingElastic(r_t, L_b);

                break;
            }
            if (Mn != double.PositiveInfinity)
            {
                Mn = Rpg * Fcr * Sxc; //(F5-2)
            }
            double phiM_n = 0.9 * Mn;

            return(phiM_n);
        }