protected virtual double GetCompressionFlangeWidth_b(MomentAxis MomentAxis)
        {
            // since section is symmetrical the location of compression fiber
            // does not matter

            double b_c = 0.0;
            double B   = 0.0;

            B = GetSectionWidth(MomentAxis);

            if (ShapeTube != null)
            {
                if (ShapeTube.CornerRadiusOutside == -1.0)
                {
                    b_c = ShapeTube.B - 3.0 * ShapeTube.t_des;
                }
                else
                {
                    b_c = ShapeTube.B - 2.0 * ShapeTube.CornerRadiusOutside;
                }
            }
            else if (ShapeBox != null)
            {
                b_c = ShapeBox.B;
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" effective moment of interia calculation for hollow section");
            }
            return(b_c);



            return(b_c);
        }
        private double GetFlangeThickness(MomentAxis MomentAxis)
        {
            double t_flange = 0.0;

            if (ShapeTube != null)
            {
                t_flange = ShapeTube.t_des;
            }
            else if (ShapeBox != null)
            {
                if (MomentAxis == Common.Entities.MomentAxis.XAxis)
                {
                    t_flange = ShapeBox.t_f;
                }
                else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
                {
                    t_flange = ShapeBox.t_w;
                }
                else
                {
                    throw new Exception("Principal flexure calculation not supported. Select X-axis and Y-axis");
                }
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" effective moment of interia calculation for hollow section");
            }
            return(t_flange);
        }
Beispiel #3
0
        public SteelLimitStateValue GetPlasticMomentCapacity(MomentAxis MomentAxis)

        {
            SteelLimitStateValue ls = new SteelLimitStateValue();
            double phiM_n;
            double M_n = 0.0;

            switch (MomentAxis)
            {
            case MomentAxis.XAxis:
                M_n = GetMajorNominalPlasticMoment();
                break;

            case MomentAxis.YAxis:
                M_n = GetMinorNominalPlasticMoment();
                break;

            default:
                throw new FlexuralBendingAxisException();
                break;
            }
            phiM_n          = 0.9 * M_n;
            ls.Value        = phiM_n;
            ls.IsApplicable = true;
            return(ls);
        }
        private double GetEffectiveSectionModulusX(MomentAxis MomentAxis)
        {
            double Se        = 0.0;
            double be        = GetEffectiveFlangeWidth_beff(MomentAxis);
            double b         = GetCompressionFlangeWidth_b(MomentAxis);
            double AOriginal = Section.Shape.A;


            double t_f       = GetFlangeThickness(MomentAxis);
            double bRemoved  = (b - be);
            double ADeducted = bRemoved * t_f;

            double h = GetSectionHeight(MomentAxis);

            //Find I reduced
            double I_Reduced = GetReducedMomentOfInertiaX(MomentAxis, ADeducted, bRemoved, t_f);


            double yCentroidModifiedFromBottom = h / 2.0 - ADeducted / AOriginal;
            double yCentroidModifiedFromTop    = h / 2.0 + ADeducted / AOriginal;

            Se = I_Reduced / yCentroidModifiedFromTop;


            return(Se);
        }
Beispiel #5
0
        public double GetWebLocalBucklingCapacity(MomentAxis MomentAxis,
            FlexuralCompressionFiberPosition CompressionLocation)
        {
            double M_n = 0.0;
            double S;
            double Mp;

            if (MomentAxis ==MomentAxis.XAxis)
            {
                Mp = GetMajorNominalPlasticMoment();
                S = Math.Min(Section.Shape.S_yLeft, Section.Shape.S_yRight);
            }
            else if (MomentAxis == MomentAxis.YAxis)
            {
                 Mp = GetMinorNominalPlasticMoment();
                 S = Math.Min(Section.Shape.S_xTop, Section.Shape.S_xBot);
            }
            else
            {
                throw new FlexuralBendingAxisException();
            }


            double lambdaWeb = GetLambdaWeb(CompressionLocation,MomentAxis);
                M_n = Mp - (Mp - Fy * S) * (0.305 * lambdaWeb * Math.Sqrt(Fy / E) - 0.738); //(F7-5)
                M_n = M_n > Mp ? Mp : M_n;

                double phiM_n = 0.9 * M_n;
            return phiM_n;
        }
Beispiel #6
0
        public double GetWebLocalBucklingCapacity(MomentAxis MomentAxis,
                                                  FlexuralCompressionFiberPosition CompressionLocation)
        {
            double M_n = 0.0;
            double S;
            double Mp;

            if (MomentAxis == MomentAxis.XAxis)
            {
                Mp = GetMajorNominalPlasticMoment();
                S  = Math.Min(Section.Shape.S_yLeft, Section.Shape.S_yRight);
            }
            else if (MomentAxis == MomentAxis.YAxis)
            {
                Mp = GetMinorNominalPlasticMoment();
                S  = Math.Min(Section.Shape.S_xTop, Section.Shape.S_xBot);
            }
            else
            {
                throw new FlexuralBendingAxisException();
            }


            double lambdaWeb = GetLambdaWeb(CompressionLocation, MomentAxis);

            M_n = Mp - (Mp - Fy * S) * (0.305 * lambdaWeb * Math.Sqrt(Fy / E) - 0.738);     //(F7-5)
            M_n = M_n > Mp ? Mp : M_n;

            double phiM_n = 0.9 * M_n;

            return(phiM_n);
        }
 public BeamRectangularHss(ISteelSection section, FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis, ICalcLog CalcLog)
     : base(section, CalcLog)
 {
     GetSectionValues();
     this.MomentAxis        = MomentAxis;
     FlangeCompactnessClass = GetFlangeCompactness(compressionFiberPosition, MomentAxis);
 }
Beispiel #8
0
        protected virtual double GetFlangeWidth_bf(MomentAxis MomentAxis)
        {
            double b = 0 ;

            double tdes = SectionTube.t_des;
            double h;
            //B4-1b. Stiffened Elements
            if (MomentAxis == MomentAxis.XAxis)
            {
                b = SectionTube.B - 3.0 * tdes;
            }
            else if (MomentAxis == MomentAxis.YAxis)
            {
                b = SectionTube.H - 3.0 * tdes;
            }

            return b;
            //if (sectionTube.CornerRadiusOutside == -1.0)
            //{
            //    b = SectionTube.B - 3.0 * sectionTube.t_des;
            //}
            //else
            //{
            //    b = sectionTube.B - 2.0 * sectionTube.CornerRadiusOutside;
            //}

        }
        protected virtual double GetFlangeWidth_bf(MomentAxis MomentAxis)
        {
            double b = 0;

            double tdes = SectionTube.t_des;
            double h;

            //B4-1b. Stiffened Elements
            if (MomentAxis == MomentAxis.XAxis)
            {
                b = SectionTube.B - 3.0 * tdes;
            }
            else if (MomentAxis == MomentAxis.YAxis)
            {
                b = SectionTube.H - 3.0 * tdes;
            }

            return(b);
            //if (sectionTube.CornerRadiusOutside == -1.0)
            //{
            //    b = SectionTube.B - 3.0 * sectionTube.t_des;
            //}
            //else
            //{
            //    b = sectionTube.B - 2.0 * sectionTube.CornerRadiusOutside;
            //}
        }
Beispiel #10
0
        private double GetEffectiveSectionModulusX(MomentAxis MomentAxis)
        {
            double Se=0.0;
            double be = GetEffectiveFlangeWidth_beff(MomentAxis);
            double b = GetCompressionFlangeWidth_b(MomentAxis);
            double AOriginal = Section.Shape.A;


            double t_f = GetFlangeThickness(MomentAxis);
            double bRemoved = (b - be);
            double ADeducted = bRemoved * t_f;

            double h = GetSectionHeight(MomentAxis);

            //Find I reduced
            double I_Reduced = GetReducedMomentOfInertiaX(MomentAxis, ADeducted, bRemoved, t_f);


		     double yCentroidModifiedFromBottom = h / 2 - ADeducted / AOriginal;
             double yCentroidModifiedFromTop = h / 2 + ADeducted / AOriginal;

             Se = I_Reduced / yCentroidModifiedFromTop;
            

            return Se;
        }
Beispiel #11
0
        private double GetFlexuralTorsionalBucklingMomentCapacity(double L_b, double C_b,
            FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis)
        {

            double M_n = 0.0;
            double M_n1 = 0.0;
            double M_n2 = 0.0;
            double M_e = GetM_e(L_b, C_b, CompressionLocation, BracingType, MomentAxis);
            double M_y = GetYieldingMomentGeometricXCapacity(CompressionLocation, BracingType);

            if (M_e<=M_y)
            {
                //F10-2
                M_n1=(0.92-((0.17*M_e) / (M_y)))*M_e;
            }
            else
            {
                //F10-3
                M_n1=(1.92-1.17*Math.Sqrt(((M_y) / (M_e))))*M_y; 
            }

            M_n2 = 1.5*M_y;
            M_n= Math.Min(M_n1,M_n2);
            double phiM_n = 0.9 * M_n;
            return phiM_n;
        }
Beispiel #12
0
        public BeamRectangularHss(ISteelSection section, FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis, ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            GetSectionValues();
            this.MomentAxis = MomentAxis;
            FlangeCompactnessClass = GetFlangeCompactness(compressionFiberPosition, MomentAxis);

        }
Beispiel #13
0
        public BeamAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation, MomentAxis MomentAxis,
                         AngleOrientation AngleOrientation = AngleOrientation.ShortLegVertical)
            : base(section, CalcLog, AngleOrientation)
        {
            this.AngleRotation    = AngleRotation;
            this.AngleOrientation = AngleOrientation;
            this.MomentAxis       = MomentAxis;

            GetSectionValues();
        }
        protected double GetEffectiveFlangeWidth_beff(MomentAxis MomentAxis)
        {
            double b  = GetCompressionFlangeWidth_b(MomentAxis);
            double tf = GetFlangeThickness(MomentAxis);
            double be = 1.92 * tf * SqrtE_Fy() * (1.0 - 0.38 / (b / tf) * SqrtE_Fy() - 0.738); //(F7-4)

            be = be > b? b :be;
            be = be < 0? 0 : be;

            return(be);
        }
        private double GetReducedMomentOfInertiaX(MomentAxis MomentAxis, double ADeducted, double bRemoved, double tdes)
        {
            double IOriginal = GetMomentOfInertia(MomentAxis); //Section.Shape.I_x;
            double h         = GetSectionHeight(MomentAxis);
            double yDeducted = (h - tdes) / 2.0;
            double Ideducted = bRemoved * Math.Pow(tdes, 3) / 12.0;
            //Use parallel axis theorem:
            double IFinal = IOriginal - (ADeducted * Math.Pow(yDeducted, 2) + Ideducted);

            return(IFinal);
        }
Beispiel #16
0
        public BeamAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation,  MomentAxis MomentAxis, 
            AngleOrientation AngleOrientation= AngleOrientation.ShortLegVertical)
            : base(section, CalcLog, AngleOrientation)
        {
            this.AngleRotation = AngleRotation;
            this.AngleOrientation = AngleOrientation;
            this.MomentAxis = MomentAxis;

            GetSectionValues();

        }
        public BeamSolid(ISteelSection section, ICalcLog CalcLog, MomentAxis MomentAxis) :
            base(section, CalcLog)
        {
            this.MomentAxis = MomentAxis;
            GetSectionValues();
            sectionSolid = null;
            ISolidShape s = Section.Shape as ISolidShape;

            if (s == null)
            {
                throw new SectionWrongTypeException(typeof(ISolidShape));
            }
        }
           //ICompactnessElement FlangeCompactness;
           //ICompactnessElement WebCompactness;

           public HollowMember(ISteelSection section,
                FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
            {
                ISection Section = section.Shape;
                if (Section is ISectionTube|| Section is ISectionPipe || Section is ISectionBox)
                {
                    if (Section is ISectionTube)
                    {
                        ISectionTube tube = Section as ISectionTube;
                        if (MomentAxis == MomentAxis.XAxis)
                        {
                            FlangeCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis);
                            WebCompactness = new WebOfRhs(section.Material, tube, MomentAxis);
                        }
                        else
                        {
                            WebCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis);
                            FlangeCompactness = new WebOfRhs(section.Material, tube, MomentAxis);
                        }
                        

                    }

                    if (Section is ISectionPipe)
                    {
                        ISectionPipe pipe = Section as ISectionPipe;
                        FlangeCompactness = new WallOfChs(section.Material, pipe);
                        WebCompactness = new WallOfChs(section.Material, pipe);
                    }

                    if (Section is ISectionBox)
                    {
                        ISectionBox box = Section as ISectionBox;
                        if (MomentAxis == MomentAxis.XAxis)
                        {
                            FlangeCompactness = new FlangeOfBox(section.Material, box);
                            WebCompactness = new WebOfBox(section.Material, box);
                        }
                        else
                        {
                            WebCompactness = new FlangeOfBox(section.Material, box);
                            FlangeCompactness = new WebOfBox(section.Material, box);
                        }
                    } 
                }
                else
                {
                    throw new SectionWrongTypeException("ISectionTube, ISectionPipe or ISectionBox");
                }

            }
Beispiel #19
0
        public BeamSolid(ISteelSection section, ICalcLog CalcLog, MomentAxis MomentAxis) : 
            base(section, CalcLog)
        {
            this.MomentAxis = MomentAxis;
                GetSectionValues();
                sectionSolid = null;
                ISolidShape s = Section.Shape as ISolidShape;

                if (s == null)
                {
                    throw new SectionWrongTypeException(typeof(ISolidShape));
                }

        }
        public double GetFlexuralStrength_Vertical(sCrossSection section, eColorMode forceType, IFrameSet fs)
        {
            sKodeStructConverter kcon = new sKodeStructConverter();
            SteelMaterial        mat  = kcon.ToKodeStructMaterial_Steel(section);

            string Code   = "AISC360-10";
            double phiM_n = 0;

            double b_eff  = this.GetBeamEffectiveSlabWidth(fs);
            double SumQ_n = this.GetSumOfStudsStrength(fs);
            // assuming,
            // Shear Stud Anchor
            // Light Weight Concrete : 4ksi
            // solid concrete thickness = 2.5"
            // rib thickness = 3"
            //
            double h_solid  = 2.5;
            double h_rib    = 3.0;
            double F_y      = mat.YieldStress; //?? unit ?? F_y of what??
            double fc_prime = 4.0;             //?? unit ??

            MomentAxis Axis = kcon.ToKodeStructMomentAxis(forceType);

            //?? just this for composite?
            ISection shape = kcon.ToKodeStructCrossSection(section);

            if (shape is ISliceableShapeProvider)
            {
                ISliceableShapeProvider prov = shape as ISliceableShapeProvider;
                ISliceableSection       sec  = prov.GetSliceableShape();
                CompositeBeamSection    cs   = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                phiM_n = cs.GetFlexuralStrength(SumQ_n);
            }
            else
            {
                if (shape is ISliceableSection)
                {
                    ISliceableSection    sec = shape as ISliceableSection;
                    CompositeBeamSection cs  = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                    phiM_n = cs.GetFlexuralStrength(SumQ_n);
                }
                else
                {
                    throw new Exception("Shape type not supported. Please provide a shape object of standard geometry");
                }
            }
            return(phiM_n);
        }
Beispiel #21
0
        protected virtual double GetWebWallHeight_h(MomentAxis MomentAxis)
        {
            double tdes = SectionTube.t_des;
            double h =0;
            //B4-1b. Stiffened Elements
            if (MomentAxis == MomentAxis.XAxis)
            {
                h = SectionTube.H - 3.0 * tdes;
            }
            else if (MomentAxis == MomentAxis.YAxis)
            {
                h = SectionTube.B - 3.0 * tdes;
            }

            return h;
        }
        protected virtual double GetWebWallHeight_h(MomentAxis MomentAxis)
        {
            double tdes = SectionTube.t_des;
            double h    = 0;

            //B4-1b. Stiffened Elements
            if (MomentAxis == MomentAxis.XAxis)
            {
                h = SectionTube.H - 3.0 * tdes;
            }
            else if (MomentAxis == MomentAxis.YAxis)
            {
                h = SectionTube.B - 3.0 * tdes;
            }

            return(h);
        }
Beispiel #23
0
 private double GetSectionModulus(MomentAxis MomentAxis)
 {
     double S = 0 ;
     if (MomentAxis == MomentAxis.XAxis)
     {
         S = this.Section.Shape.S_xTop;
     }
     else if (MomentAxis == MomentAxis.YAxis)
     {
         S = this.Section.Shape.S_yLeft;
     }
     else
     {
         throw new FlexuralBendingAxisException();
     }
     return S;
 }
        private double GetMomentOfInertia(MomentAxis MomentAxis)
        {
            double I;

            if (MomentAxis == Common.Entities.MomentAxis.XAxis)
            {
                I = Section.Shape.I_x;
            }
            else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
            {
                I = Section.Shape.I_y;
            }
            else
            {
                throw new Exception("Principal flexure calculation not supported. Select X-axis and Y-axis");
            }
            return(I);
        }
Beispiel #25
0
        private double GetSectionModulus(MomentAxis MomentAxis)
        {
            double S = 0;

            if (MomentAxis == MomentAxis.XAxis)
            {
                S = this.Section.Shape.S_xTop;
            }
            else if (MomentAxis == MomentAxis.YAxis)
            {
                S = this.Section.Shape.S_yLeft;
            }
            else
            {
                throw new FlexuralBendingAxisException();
            }
            return(S);
        }
Beispiel #26
0
        private double GetSectionHeight(MomentAxis MomentAxis)
        {
            double h = 0.0;
            if (ShapeTube != null)
            {

                if (MomentAxis == Common.Entities.MomentAxis.XAxis)
                {
                    h = ShapeTube.H;
                }
                else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
                {
                    h = ShapeTube.B;
                }
                else
                {
                    throw new Exception("Principal flexure calculation not supported. Select X-axis and Y-axis");
                }
            }
            else if (ShapeBox != null)
            {

                if (MomentAxis == Common.Entities.MomentAxis.XAxis)
                {
                    h = ShapeBox.H;
                }
                else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
                {
                    h = ShapeBox.B;
                }
                else
                {
                    throw new Exception("Principal flexure calculation not supported. Select X-axis and Y-axis");
                }
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" effective moment of interia calculation for hollow section");
            }
            return h;
        }
        private double GetSectionHeight(MomentAxis MomentAxis)
        {
            double h = 0.0;

            if (ShapeTube != null)
            {
                if (MomentAxis == Common.Entities.MomentAxis.XAxis)
                {
                    h = ShapeTube.H;
                }
                else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
                {
                    h = ShapeTube.B;
                }
                else
                {
                    throw new Exception("Principal flexure calculation not supported. Select X-axis and Y-axis");
                }
            }
            else if (ShapeBox != null)
            {
                if (MomentAxis == Common.Entities.MomentAxis.XAxis)
                {
                    h = ShapeBox.H;
                }
                else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
                {
                    h = ShapeBox.B;
                }
                else
                {
                    throw new Exception("Principal flexure calculation not supported. Select X-axis and Y-axis");
                }
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" effective moment of interia calculation for hollow section");
            }
            return(h);
        }
Beispiel #28
0
        public FlangeOfRhs(ISteelMaterial Material, ISectionTube SectionTube, MomentAxis MomentAxis) //double OutsideCornerRadius=-1.0)
            :base(Material)
        {
            this.SectionTube = SectionTube;
            ISectionTube s = SectionTube;
            double td = s.t_des;
            //if (OutsideCornerRadius==-1.0)
            //{
            //    this.Width = s.B - 3.0 * td;
            //}
            //else
            //{
            //    if (OutsideCornerRadius<0)
            //    {
            //        throw new Exception("Invalid RHS corner radius. Must be over 0");
            //    }
            //    this.Width = s.B - 2.0 * OutsideCornerRadius;
            //}
            this.Width = GetFlangeWidth_bf(MomentAxis);

            this.Thickness = td;
        }
        public double GetFlexuralStrength_Vertical(sCrossSection section, eColorMode forceType)
        {
            sKodeStructConverter kcon = new sKodeStructConverter();
            SteelMaterial        mat  = kcon.ToKodeStructMaterial_Steel(section);

            string flexuralCompressional = "Top";
            string Code           = "AISC360-10";
            bool   IsRolledMember = true;
            double phiM_n         = 0;

            MomentAxis Axis = kcon.ToKodeStructMomentAxis(forceType);

            FlexuralCompressionFiberPosition FlexuralCompression;
            bool IsValidStringCompressionLoc = Enum.TryParse(flexuralCompressional, true, out FlexuralCompression);

            if (IsValidStringCompressionLoc == false)
            {
                throw new Exception("Flexural compression location selection not recognized. Check input string.");
            }

            ISection shape = kcon.ToKodeStructCrossSection(section);

            FlexuralMemberFactory factory = new FlexuralMemberFactory();
            ISteelBeamFlexure     beam    = factory.GetBeam(shape, mat, null, Axis, FlexuralCompression, IsRolledMember);

            SteelLimitStateValue Y = beam.GetFlexuralYieldingStrength(FlexuralCompression);

            phiM_n = Y.Value;

            if (Y.IsApplicable)
            {
                return(phiM_n);
            }
            else
            {
                return(-1);
            }
        }
        public FlangeOfRhs(ISteelMaterial Material, ISectionTube SectionTube, MomentAxis MomentAxis) //double OutsideCornerRadius=-1.0)
            : base(Material)
        {
            this.SectionTube = SectionTube;
            ISectionTube s  = SectionTube;
            double       td = s.t_des;

            //if (OutsideCornerRadius==-1.0)
            //{
            //    this.Width = s.B - 3.0 * td;
            //}
            //else
            //{
            //    if (OutsideCornerRadius<0)
            //    {
            //        throw new Exception("Invalid RHS corner radius. Must be over 0");
            //    }
            //    this.Width = s.B - 2.0 * OutsideCornerRadius;
            //}
            this.Width = GetFlangeWidth_bf(MomentAxis);

            this.Thickness = td;
        }
Beispiel #31
0
        public SteelLimitStateValue GetPlasticMomentCapacity(MomentAxis MomentAxis)

        {
            SteelLimitStateValue ls = new SteelLimitStateValue();
            double phiM_n;
            double M_n=0.0;
            switch (MomentAxis)
            {
                case MomentAxis.XAxis:
                    M_n = GetMajorNominalPlasticMoment();
                    break;
                case MomentAxis.YAxis:
                    M_n = GetMinorNominalPlasticMoment();
                    break;
                default:
                    throw new FlexuralBendingAxisException();
                    break;
           }
            phiM_n =0.9*M_n;
            ls.Value = phiM_n;
            ls.IsApplicable = true;
            return ls;
        }
Beispiel #32
0
        //Compression Flange Local Buckling F7.2


        public double GetCompressionFlangeLocalBucklingCapacity(FlexuralCompressionFiberPosition CompressionLocation, MomentAxis MomentAxis)
        {
            double Mn = 0.0;
            double phiM_n = 0.0;

            if (Section != null)
            {

                    double lambda = this.GetLambdaCompressionFlange(CompressionLocation, MomentAxis);
                    double lambdapf = this.GetLambdapf(CompressionLocation, MomentAxis);
                    double lambdarf = this.GetLambdarf(CompressionLocation, MomentAxis);
                    //note: section is doubly symmetric so top flange is taken

                    double S = GetSectionModulus(MomentAxis);
                    double Fy = this.Section.Material.YieldStress;
                    double E = this.Section.Material.ModulusOfElasticity;

                    CompactnessClassFlexure cClass = GetFlangeCompactness(CompressionLocation, MomentAxis);

                    if (cClass == CompactnessClassFlexure.Noncompact)
                    {
                        double Mp = this.GetMajorNominalPlasticMoment();
                        Mn = GetMnNoncompact(Mp, Fy, S, lambda);

                    }
                    else
                    {
                        double Sxe = GetEffectiveSectionModulusX(MomentAxis);
                        Mn = GetMnSlender(Sxe, Fy);
                    }

                
            }
            phiM_n = 0.9 * Mn;
            return phiM_n;
        }
Beispiel #33
0
        public virtual SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation,
                                                                                        FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis)
        {
            double phiM_n           = GetFlexuralTorsionalBucklingMomentCapacity(CompressionLocation, L_b);
            SteelLimitStateValue ls = new SteelLimitStateValue(-1, false);

            return(ls);
        }
Beispiel #34
0
        //Compression Flange Local Buckling F7.2


        public double GetCompressionFlangeLocalBucklingCapacity(FlexuralCompressionFiberPosition CompressionLocation, MomentAxis MomentAxis)
        {
            double Mn     = 0.0;
            double phiM_n = 0.0;

            if (Section != null)
            {
                double lambda   = this.GetLambdaCompressionFlange(CompressionLocation, MomentAxis);
                double lambdapf = this.GetLambdapf(CompressionLocation, MomentAxis);
                double lambdarf = this.GetLambdarf(CompressionLocation, MomentAxis);
                //note: section is doubly symmetric so top flange is taken

                double S  = GetSectionModulus(MomentAxis);
                double Fy = this.Section.Material.YieldStress;
                double E  = this.Section.Material.ModulusOfElasticity;

                CompactnessClassFlexure cClass = GetFlangeCompactness(CompressionLocation, MomentAxis);

                if (cClass == CompactnessClassFlexure.Noncompact)
                {
                    double Mp = this.GetMajorNominalPlasticMoment();
                    Mn = GetMnNoncompact(Mp, Fy, S, lambda);
                }
                else
                {
                    double Sxe = GetEffectiveSectionModulusX(MomentAxis);
                    Mn = GetMnSlender(Sxe, Fy);
                }
            }
            phiM_n = 0.9 * Mn;
            return(phiM_n);
        }
 public double GetLambdaWeb(FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
 {
     ShapeCompactness.HollowMember compactness = new ShapeCompactness.HollowMember(this.Section, compressionFiberPosition, MomentAxis);
     return(compactness.GetWebLambda());
 }
 protected virtual double GetLambdarf(FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
 {
     compactness = new ShapeCompactness.HollowMember(this.Section, compressionFiberPosition, MomentAxis);
     return compactness.GetFlangeLambda_r(StressType.Flexure);
 }
 public double GetLambdaWeb(FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
 {
     ShapeCompactness.HollowMember compactness = new ShapeCompactness.HollowMember(this.Section, compressionFiberPosition, MomentAxis);
     return compactness.GetWebLambda();
 }
 public CompactnessClassFlexure GetFlangeCompactness(FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
 {
     ShapeCompactness.HollowMember compactness = new ShapeCompactness.HollowMember(this.Section, compressionFiberPosition, MomentAxis);
    return compactness.GetFlangeCompactnessFlexure();
 }
Beispiel #39
0
        public ISteelBeamFlexure GetBeam(ISection Shape, ISteelMaterial Material, ICalcLog Log, MomentAxis MomentAxis,
                                         FlexuralCompressionFiberPosition compressionFiberPosition, bool IsRolledMember = true)
        {
            ISteelBeamFlexure beam = null;

            if (MomentAxis == Common.Entities.MomentAxis.XAxis)
            {
                if (Shape is ISectionI)
                {
                    ISectionI     IShape   = Shape as ISectionI;
                    SteelSectionI SectionI = new SteelSectionI(IShape, Material);
                    if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop)     // doubly symmetric
                    {
                        DoublySymmetricIBeam dsBeam = new DoublySymmetricIBeam(SectionI, Log, compressionFiberPosition, IsRolledMember);
                        beam = dsBeam.GetBeamCase();
                    }
                    else
                    {
                        SinglySymmetricIBeam ssBeam = new SinglySymmetricIBeam(SectionI, IsRolledMember, compressionFiberPosition, Log);
                        beam = ssBeam.GetBeamCase();
                    }
                }
                else if (Shape is ISolidShape)
                {
                    ISolidShape       solidShape   = Shape as ISolidShape;
                    SteelSolidSection SectionSolid = new SteelSolidSection(solidShape, Material);
                    beam = new BeamSolid(SectionSolid, Log, MomentAxis);
                }

                else if (Shape is ISectionChannel)
                {
                    ISectionChannel     ChannelShape   = Shape as ISectionChannel;
                    SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material);
                    beam = new BeamChannel(ChannelSection, IsRolledMember, Log);


                    IShapeCompactness compactness = new ShapeCompactness.ChannelMember(ChannelSection, IsRolledMember, compressionFiberPosition);

                    CompactnessClassFlexure flangeCompactness = compactness.GetFlangeCompactnessFlexure();
                    CompactnessClassFlexure webCompactness    = compactness.GetWebCompactnessFlexure();

                    if (flangeCompactness != CompactnessClassFlexure.Compact || webCompactness != CompactnessClassFlexure.Compact)
                    {
                        throw new Exception("Channels with non-compact and slender flanges or webs are not supported. Revise input.");
                    }
                }


                else if (Shape is ISectionPipe)
                {
                    ISectionPipe     SectionPipe = Shape as ISectionPipe;
                    SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material);
                    beam = new BeamCircularHss(PipeSection, Log);
                }

                else if (Shape is ISectionTube)
                {
                    ISectionTube    TubeShape       = Shape as ISectionTube;
                    SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material);
                    beam = new BeamRectangularHss(RectHSS_Section, compressionFiberPosition, MomentAxis, Log);
                }


                else if (Shape is ISectionBox)
                {
                    ISectionBox     BoxShape   = Shape as ISectionBox;
                    SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material);
                    beam = new BeamRectangularHss(BoxSection, compressionFiberPosition, MomentAxis, Log);
                }

                else if (Shape is ISectionTee)
                {
                    ISectionTee     TeeShape   = Shape as ISectionTee;
                    SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material);
                    beam = new BeamTee(TeeSection, Log);
                }
                else if (Shape is ISectionAngle)
                {
                    ISectionAngle     Angle        = Shape as ISectionAngle;
                    SteelAngleSection AngleSection = new SteelAngleSection(Angle, Material);
                    beam = new BeamAngle(AngleSection, Log, Angle.AngleRotation, MomentAxis, Angle.AngleOrientation);
                }
                else if (Shape is ISolidShape)
                {
                    ISolidShape       SolidShape   = Shape as ISolidShape;
                    SteelSolidSection SolidSection = new SteelSolidSection(SolidShape, Material);
                    beam = new BeamSolid(SolidSection, Log, MomentAxis);
                }
                else
                {
                    throw new Exception("Specified section type is not supported for this node.");
                }
            }
            else  // weak axis
            {
                if (Shape is ISectionI)
                {
                    ISectionI     IShape   = Shape as ISectionI;
                    SteelSectionI SectionI = new SteelSectionI(IShape, Material);

                    beam = new BeamIWeakAxis(SectionI, IsRolledMember, Log);
                }
                else
                {
                    throw new NotImplementedException();
                }
            }

            return(beam);
        }
Beispiel #40
0
        private ISteelBeamFlexure CreateRhsBeam(CompactnessClassFlexure FlangeCompactness, FlexuralCompressionFiberPosition compressionFiberPosition,
                                                CompactnessClassFlexure WebCompactness,
                                                ISectionTube RhsSec, ISteelMaterial Material, MomentAxis MomentAxis, ICalcLog Log)
        {
            SteelRhsSection   steelSection = new SteelRhsSection(RhsSec, Material);
            ISteelBeamFlexure beam         = null;

            beam = new BeamRectangularHss(steelSection, compressionFiberPosition, MomentAxis, Log);
            return(beam);
        }
Beispiel #41
0
 private double GetFlangeThickness(MomentAxis MomentAxis )
 {
     double t_flange = 0.0;
     if (ShapeTube!=null)
     {
         t_flange = ShapeTube.t_des;
     }
     else if (ShapeBox!=null)
     {
         
         if (MomentAxis == Common.Entities.MomentAxis.XAxis)
         {
             t_flange = ShapeBox.t_f;
         }
         else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
         {
             t_flange = ShapeBox.t_w;
         }
         else
         {
             throw new Exception("Principal flexure calculation not supported. Select X-axis and Y-axis");
         }
     }
     else
     {
         throw new ShapeTypeNotSupportedException(" effective moment of interia calculation for hollow section"); 
     }
     return t_flange;
 }
 protected virtual double GetLambdarf(FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
 {
     compactness = new ShapeCompactness.HollowMember(this.Section, compressionFiberPosition, MomentAxis);
     return(compactness.GetFlangeLambda_r(StressType.Flexure));
 }
 private ISteelBeamFlexure CreateRhsBeam(CompactnessClassFlexure FlangeCompactness, FlexuralCompressionFiberPosition compressionFiberPosition,
     CompactnessClassFlexure WebCompactness,
     ISectionTube RhsSec, ISteelMaterial Material, MomentAxis MomentAxis, ICalcLog Log)
 {
     SteelRhsSection steelSection = new SteelRhsSection(RhsSec, Material);
     ISteelBeamFlexure beam = null;
     beam = new BeamRectangularHss(steelSection,compressionFiberPosition, MomentAxis, Log);
     return beam;
 }
 public CompactnessClassFlexure GetFlangeCompactness(FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
 {
     ShapeCompactness.HollowMember compactness = new ShapeCompactness.HollowMember(this.Section, compressionFiberPosition, MomentAxis);
     return(compactness.GetFlangeCompactnessFlexure());
 }
        public ISteelBeamFlexure GetBeam(ISection Shape, ISteelMaterial Material, ICalcLog Log, MomentAxis MomentAxis,
                 FlexuralCompressionFiberPosition compressionFiberPosition, bool IsRolledMember=true)
        {
            ISteelBeamFlexure beam = null;

            if (MomentAxis == Common.Entities.MomentAxis.XAxis)
	        {
                    if (Shape is ISectionI)
                    {
                        ISectionI IShape = Shape as ISectionI;
                        SteelSectionI SectionI = new SteelSectionI(IShape, Material);
                        if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop) // doubly symmetric
                        {
                            DoublySymmetricIBeam dsBeam = new DoublySymmetricIBeam(SectionI, Log, compressionFiberPosition, IsRolledMember);
                            beam = dsBeam.GetBeamCase();
                        }
                        else
                        {
                            SinglySymmetricIBeam ssBeam = new SinglySymmetricIBeam(SectionI, IsRolledMember, compressionFiberPosition, Log );
                            beam = ssBeam.GetBeamCase();
                        }
                    }
                    else if (Shape is ISolidShape)
                    {
                        ISolidShape solidShape = Shape as ISolidShape;
                        SteelSolidSection SectionSolid = new SteelSolidSection(solidShape, Material);
                        beam = new BeamSolid(SectionSolid, Log, MomentAxis);
                    }

                    else if (Shape is ISectionChannel)
                    {
                        ISectionChannel ChannelShape = Shape as ISectionChannel;
                        SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material);
                        beam = new BeamChannel(ChannelSection, IsRolledMember, Log);


                        IShapeCompactness compactness = new ShapeCompactness.ChannelMember(ChannelSection, IsRolledMember, compressionFiberPosition);

                        CompactnessClassFlexure flangeCompactness = compactness.GetFlangeCompactnessFlexure();
                        CompactnessClassFlexure webCompactness = compactness.GetWebCompactnessFlexure();

                        if (flangeCompactness != CompactnessClassFlexure.Compact || webCompactness != CompactnessClassFlexure.Compact)
                        {
                            throw new Exception("Channels with non-compact and slender flanges or webs are not supported. Revise input.");
                        }
                    }


                    else if (Shape is ISectionPipe)
                    {
                        ISectionPipe SectionPipe = Shape as ISectionPipe;
                        SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material);
                        beam = new BeamCircularHss(PipeSection, Log);
                    }

                    else if (Shape is ISectionTube)
                    {
                        ISectionTube TubeShape = Shape as ISectionTube;
                        SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material);
                        beam = new BeamRectangularHss(RectHSS_Section,compressionFiberPosition, MomentAxis, Log);
                    }


                    else if (Shape is ISectionBox)
                    {
                        ISectionBox BoxShape = Shape as ISectionBox;
                        SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material);
                        beam = new BeamRectangularHss(BoxSection, compressionFiberPosition, MomentAxis, Log);
                    }

                    else if (Shape is ISectionTee)
                    {
                        ISectionTee TeeShape = Shape as ISectionTee;
                        SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material);
                        beam = new BeamTee(TeeSection, Log);
                    }
                    else if (Shape is ISectionAngle)
                    {
                        ISectionAngle Angle = Shape as ISectionAngle;
                        SteelAngleSection AngleSection = new SteelAngleSection(Angle,Material);
                        beam = new BeamAngle(AngleSection, Log, Angle.AngleRotation, MomentAxis, Angle.AngleOrientation);
                    }
                    else if (Shape is ISolidShape)
                    {
                        ISolidShape SolidShape = Shape as ISolidShape;
                        SteelSolidSection SolidSection = new SteelSolidSection(SolidShape, Material);
                        beam = new BeamSolid(SolidSection, Log,MomentAxis);
                        
                    }
                    else
                    {
                        throw new Exception("Specified section type is not supported for this node.");
                    }
	        }
            else  // weak axis
	        {
                if (Shape is ISectionI)
                {
                    ISectionI IShape = Shape as ISectionI;
                    SteelSectionI SectionI = new SteelSectionI(IShape, Material);

                    beam = new BeamIWeakAxis(SectionI, IsRolledMember, Log);
                }
                else
                {
                    throw new NotImplementedException();
                }
	        }

            return beam;
        }
Beispiel #46
0
        protected virtual double GetCompressionFlangeWidth_b(MomentAxis MomentAxis)
        {
            // since section is symmetrical the location of compression fiber
            // does not matter

            double b_c = 0.0;
            double B = 0.0;
            B = GetSectionWidth(MomentAxis);

            if (ShapeTube != null)
            {



                            if (ShapeTube.CornerRadiusOutside == -1.0)
                            {
                                b_c = ShapeTube.B - 3.0 * ShapeTube.t_des;
                            }
                            else
                            {
                                b_c = ShapeTube.B - 2.0 * ShapeTube.CornerRadiusOutside;
                            }
            }
            else if (ShapeBox != null)
            {
                b_c = ShapeBox.B;
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" effective moment of interia calculation for hollow section");
            }
            return b_c;


            
            return b_c;

        }
Beispiel #47
0
        private double GetFlexuralTorsionalBucklingMomentCapacity(double L_b, double C_b,
                                                                  FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis)
        {
            double M_n  = 0.0;
            double M_n1 = 0.0;
            double M_n2 = 0.0;
            double M_e  = GetM_e(L_b, C_b, CompressionLocation, BracingType, MomentAxis);
            double M_y  = GetYieldingMomentGeometricXCapacity(CompressionLocation, BracingType);

            if (M_e <= M_y)
            {
                //F10-2
                M_n1 = (0.92 - ((0.17 * M_e) / (M_y))) * M_e;
            }
            else
            {
                //F10-3
                M_n1 = (1.92 - 1.17 * Math.Sqrt(((M_y) / (M_e)))) * M_y;
            }

            M_n2 = 1.5 * M_y;
            M_n  = Math.Min(M_n1, M_n2);
            double phiM_n = 0.9 * M_n;

            return(phiM_n);
        }
Beispiel #48
0
        protected double GetEffectiveFlangeWidth_beff(MomentAxis MomentAxis)
        {
            double b = GetCompressionFlangeWidth_b(MomentAxis);
            double tf = GetFlangeThickness(MomentAxis);
            double be = 1.92*tf*SqrtE_Fy()*(1.0-0.38/(b/tf)*SqrtE_Fy()-0.738); //(F7-4)
            be = be > b? b :be;
            be= be<0? 0 : be;

            return be;
        }
Beispiel #49
0
        private double GetM_e(double L_b, double C_b, FlexuralCompressionFiberPosition CompressionLocation,
                              FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis)
        {
            double M_e;

            if (MomentAxis == MomentAxis.MajorPrincipalAxis)
            {
                if (IsEqualLeg == true)
                {
                    M_e = ((0.46 * E * Math.Pow(b, 2) * Math.Pow(t, 2) * C_b) / (L_b)); //F10-4
                }
                else
                {
                    double beta_wCorrected;
                    //F10-5
                    if (CompressionLocation == FlexuralCompressionFiberPosition.Top)
                    {
                        if (AngleRotation == AngleRotation.FlatLegBottom)
                        {
                            if (d < b) //short leg in compression
                            {
                                beta_wCorrected = beta_w;
                            }
                            else
                            {
                                beta_wCorrected = -beta_w;
                            }
                        }
                        else
                        {
                            if (d > b) //short leg in compression
                            {
                                beta_wCorrected = beta_w;
                            }
                            else
                            {
                                beta_wCorrected = -beta_w;
                            }
                        }
                    }
                    else if (CompressionLocation == FlexuralCompressionFiberPosition.Bottom)
                    {
                        if (AngleRotation == AngleRotation.FlatLegBottom)
                        {
                            if (d > b)
                            {
                                beta_wCorrected = beta_w;
                            }
                            else
                            {
                                beta_wCorrected = -beta_w;
                            }
                        }
                        else
                        {
                            if (d < b)
                            {
                                beta_wCorrected = beta_w;
                            }
                            else
                            {
                                beta_wCorrected = -beta_w;
                            }
                        }
                    }
                    else
                    {
                        throw new CompressionFiberPositionException();
                    }
                    M_e = ((4.9 * E * I_z * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(Math.Pow(beta_wCorrected, 2) + 0.052 * Math.Pow((((L_b * t) / (r_z))), 2)) + beta_wCorrected);
                }
            }
            else
            {
                if (CompressionLocation == FlexuralCompressionFiberPosition.Top)
                {
                    //F10-6a
                    M_e = ((0.66 * E * Math.Pow(b, 4) * t * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(1 + 0.78 * Math.Pow((((L_b * t) / (Math.Pow(b, 2)))), 2)) - 1);
                }
                else
                {
                    //F10-6b
                    M_e = ((0.66 * E * Math.Pow(b, 4) * t * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(1 + 0.78 * Math.Pow((((L_b * t) / (Math.Pow(b, 2)))), 2)) + 1);
                }
                if (BracingType == FlexuralAndTorsionalBracingType.AtPointOfMaximumMoment)
                {
                    M_e = 1.25 * M_e;
                }
            }
            return(M_e);
        }
Beispiel #50
0
            //ICompactnessElement FlangeCompactness;
            //ICompactnessElement WebCompactness;

            public HollowMember(ISteelSection section,
                                FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
            {
                ISection Section = section.Shape;

                if (Section is ISectionTube || Section is ISectionPipe || Section is ISectionBox)
                {
                    if (Section is ISectionTube)
                    {
                        ISectionTube tube = Section as ISectionTube;
                        if (MomentAxis == MomentAxis.XAxis)
                        {
                            FlangeCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis);
                            WebCompactness    = new WebOfRhs(section.Material, tube, MomentAxis);
                        }
                        else
                        {
                            WebCompactness    = new FlangeOfRhs(section.Material, tube, MomentAxis);
                            FlangeCompactness = new WebOfRhs(section.Material, tube, MomentAxis);
                        }
                    }

                    if (Section is ISectionPipe)
                    {
                        ISectionPipe pipe = Section as ISectionPipe;
                        FlangeCompactness = new WallOfChs(section.Material, pipe);
                        WebCompactness    = new WallOfChs(section.Material, pipe);
                    }

                    if (Section is ISectionBox)
                    {
                        ISectionBox box = Section as ISectionBox;
                        if (MomentAxis == MomentAxis.XAxis)
                        {
                            FlangeCompactness = new FlangeOfBox(section.Material, box);
                            WebCompactness    = new WebOfBox(section.Material, box);
                        }
                        else
                        {
                            WebCompactness    = new FlangeOfBox(section.Material, box);
                            FlangeCompactness = new WebOfBox(section.Material, box);
                        }
                    }
                }
                else
                {
                    throw new SectionWrongTypeException("ISectionTube, ISectionPipe or ISectionBox");
                }
            }
Beispiel #51
0
        private double GetReducedMomentOfInertiaX(MomentAxis MomentAxis, double ADeducted, double bRemoved, double tdes)
        {

            double IOriginal = GetMomentOfInertia(MomentAxis); //Section.Shape.I_x;
            double h = GetSectionHeight(MomentAxis);
            double yDeducted = (h - tdes) / 2.0;
            double Ideducted = bRemoved * Math.Pow(tdes, 3) / 12.0;
            //Use parallel axis theorem:
            double IFinal = IOriginal - (ADeducted * Math.Pow(yDeducted, 2) + Ideducted);
            return IFinal;
        }
Beispiel #52
0
        private double GetMomentOfInertia(MomentAxis MomentAxis)
        {
            double I;

            if (MomentAxis == Common.Entities.MomentAxis.XAxis)
            {
                I = Section.Shape.I_x;
            }
            else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
            {
                I = Section.Shape.I_y;
            }
            else
            {
                throw new Exception("Principal flexure calculation not supported. Select X-axis and Y-axis");
            }
            return I;
        }
Beispiel #53
0
        private double GetM_e(double L_b, double C_b, FlexuralCompressionFiberPosition CompressionLocation, 
            FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis)
        {
            double M_e;
            if (MomentAxis == MomentAxis.MajorPrincipalAxis)
            {
                if (IsEqualLeg == true)
                {
                    M_e = ((0.46 * E * Math.Pow(b, 2) * Math.Pow(t, 2) * C_b) / (L_b)); //F10-4
                }
                else
                {
                    double beta_wCorrected;
                    //F10-5
                    if (CompressionLocation == FlexuralCompressionFiberPosition.Top)
                    {
                        if (AngleRotation == AngleRotation.FlatLegBottom)
                        {
                            if (d < b) //short leg in compression
                            {
                                beta_wCorrected = beta_w;
                            }
                            else
                            {
                                beta_wCorrected = -beta_w;
                            }
                        }
                        else
                        {
                            if (d > b) //short leg in compression
                            {
                                beta_wCorrected = beta_w;
                            }
                            else
                            {
                                beta_wCorrected = -beta_w;
                            }
                        }

                    }
                    else if (CompressionLocation == FlexuralCompressionFiberPosition.Bottom)
                    {

                        if (AngleRotation == AngleRotation.FlatLegBottom)
                        {
                            if (d > b) 
                            {
                                beta_wCorrected = beta_w;
                            }
                            else
                            {
                                beta_wCorrected = -beta_w;
                            }
                        }
                        else
                        {
                            if (d < b)
                            {
                                beta_wCorrected = beta_w;
                            }
                            else
                            {
                                beta_wCorrected = -beta_w;
                            }
                        }
                    }
                    else
                    {
                        throw new CompressionFiberPositionException();
                    }
                    M_e = ((4.9 * E * I_z * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(Math.Pow(beta_wCorrected, 2) + 0.052 * Math.Pow((((L_b * t) / (r_z))), 2)) + beta_wCorrected);
                }
            }
            else
            {
                if (CompressionLocation == FlexuralCompressionFiberPosition.Top)
                {
                    //F10-6a
                    M_e = ((0.66 * E * Math.Pow(b, 4) * t * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(1 + 0.78 * Math.Pow((((L_b * t) / (Math.Pow(b, 2)))), 2)) - 1);
                }
                else
                {
                    //F10-6b
                    M_e = ((0.66 * E * Math.Pow(b, 4) * t * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(1 + 0.78 * Math.Pow((((L_b * t) / (Math.Pow(b, 2)))), 2)) + 1);
                }
                if (BracingType == FlexuralAndTorsionalBracingType.AtPointOfMaximumMoment)
                {
                    M_e = 1.25 * M_e;
                }
            }
            return M_e;
        }