Ejemplo n.º 1
0
        public override SteelLimitStateValue GetFlexuralLegOrStemBucklingStrength(FlexuralCompressionFiberPosition CompressionLocation,
                                                                                  FlexuralAndTorsionalBracingType BracingType)
        {
            CompactnessClassFlexure StemCompactness = this.Compactness.GetWebCompactnessFlexure();
            // for compact angles this limit state is not applicable

            SteelLimitStateValue ls = null;

            if (StemCompactness == General.Compactness.CompactnessClassFlexure.Compact)
            {
                ls = new SteelLimitStateValue(-1, false);
                return(ls);
            }
            else if (StemCompactness == CompactnessClassFlexure.Noncompact)
            {
                double S_c = GetSectionModulus(CompressionLocation, true, BracingType);
                //F10-7
                double M_n    = F_y * S_c * (2.43 - 1.72 * (((b) / (t))) * Math.Sqrt(((F_y) / (E))));
                double phiM_n = 0.9 * M_n;
                ls = new SteelLimitStateValue(phiM_n, true);
            }
            else
            {
                double F_cr = ((0.71 * E) / (Math.Pow((((b) / (t))), 2)));
                double S_c  = GetSectionModulus(CompressionLocation, true, BracingType);
                //(F10-8)
                double M_n    = F_cr * S_c;
                double phiM_n = 0.9 * M_n;
                ls = new SteelLimitStateValue(phiM_n, true);
            }

            return(ls);
        }
Ejemplo n.º 2
0
 private double GetYieldingMomentGeometricXCapacity(FlexuralCompressionFiberPosition compressionFiberLocation, FlexuralAndTorsionalBracingType BracingType)
 {
     double S_x = GetSectionModulus(compressionFiberLocation, false, BracingType);
     double Fy = Section.Material.YieldStress;
     double My = S_x * Fy;
     return My;
 }
Ejemplo n.º 3
0
        public virtual SteelLimitStateValue GetFlexuralLegOrStemBucklingStrength(FlexuralCompressionFiberPosition CompressionLocation,
                                                                                 FlexuralAndTorsionalBracingType BracingType)
        {
            SteelLimitStateValue ls = new SteelLimitStateValue(-1, false);

            return(ls);
        }
Ejemplo n.º 4
0
        public override SteelLimitStateValue GetFlexuralLegOrStemBucklingStrength(FlexuralCompressionFiberPosition CompressionLocation, 
            FlexuralAndTorsionalBracingType BracingType)
        {
            CompactnessClassFlexure StemCompactness = this.Compactness.GetWebCompactnessFlexure() ;
            // for compact angles this limit state is not applicable

            SteelLimitStateValue ls = null;

            if (StemCompactness == General.Compactness.CompactnessClassFlexure.Compact)
            {
                ls = new SteelLimitStateValue(-1, false);
                return ls;
            }
            else if (StemCompactness == CompactnessClassFlexure.Noncompact)
            {
                double S_c = GetSectionModulus(CompressionLocation, true, BracingType);
                //F10-7
                double M_n = F_y * S_c * (2.43 - 1.72 * (((b) / (t))) * Math.Sqrt(((F_y) / (E))));
                double phiM_n = 0.9 * M_n;
                ls = new SteelLimitStateValue(phiM_n, true);
            }
            else
            {
                double F_cr = ((0.71 * E) / (Math.Pow((((b) / (t))), 2)));
                double S_c = GetSectionModulus(CompressionLocation, true, BracingType);
                //(F10-8)
                double M_n = F_cr * S_c;
                double phiM_n = 0.9 * M_n;
                ls = new SteelLimitStateValue(phiM_n, true);
            }

            return ls;
        }
Ejemplo n.º 5
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;
        }
Ejemplo n.º 6
0
 public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation,
     FlexuralAndTorsionalBracingType BracingType)
 {
     SteelLimitStateValue ls;
     if (BracingType == FlexuralAndTorsionalBracingType.FullLateralBracing)
     {
         ls = new SteelLimitStateValue(-1, false);
     }
     else
     {
         double phiM_n = GetLateralTorsionalBucklingStrength(CompressionLocation,L_b, C_b);
         ls = new SteelLimitStateValue(phiM_n, true);
     }
     return ls;
 }
Ejemplo n.º 7
0
        public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation,
            FlexuralAndTorsionalBracingType BracingType)
        {
            if (SectionValuesWereCalculated == false)
            {
                GetSectionValues();
            }

            SteelLimitStateValue ls;
            if (BracingType == FlexuralAndTorsionalBracingType.FullLateralBracing)
            {
                ls = new SteelLimitStateValue(-1, false);
            }
            else
            {
                double phiM_n = GetFlexuralTorsionalBucklingMomentCapacity(L_b, C_b);
                ls = new SteelLimitStateValue(phiM_n, true);
            }
            return ls;
        }
Ejemplo n.º 8
0
        protected double GetSectionModulus(FlexuralCompressionFiberPosition compressionFiberLocation, bool UseCompressionSectionModulusOnly, FlexuralAndTorsionalBracingType BracingType)
        {
            double Sxt = GetSectionModulusTensionSxt(compressionFiberLocation);
            double Sxc = GetSectionModulusCompressionSxc(compressionFiberLocation);

            double Sx;
            if (UseCompressionSectionModulusOnly == true)
            {
                Sx=Sxc;
            }
            else
	        {
                Sx=Math.Min(Sxc, Sxt);
	        }
            if (BracingType == FlexuralAndTorsionalBracingType.NoLateralBracing)
            {
                Sx = 0.8 * Sx;
            }

            return Sx;
        }
Ejemplo n.º 9
0
 public virtual SteelLimitStateValue GetFlexuralLegOrStemBucklingStrength(FlexuralCompressionFiberPosition CompressionLocation, 
     FlexuralAndTorsionalBracingType BracingType)
 {
     SteelLimitStateValue ls = new SteelLimitStateValue(-1, false);
     return ls;
 }
Ejemplo n.º 10
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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 12
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;
        }
Ejemplo n.º 13
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);
        }
Ejemplo n.º 14
0
        private double GetYieldingMomentGeometricXCapacity(FlexuralCompressionFiberPosition compressionFiberLocation, FlexuralAndTorsionalBracingType BracingType)
        {
            double S_x = GetSectionModulus(compressionFiberLocation, false, BracingType);
            double Fy  = Section.Material.YieldStress;
            double My  = S_x * Fy;

            return(My);
        }
Ejemplo n.º 15
0
        protected double GetSectionModulus(FlexuralCompressionFiberPosition compressionFiberLocation, bool UseCompressionSectionModulusOnly, FlexuralAndTorsionalBracingType BracingType)
        {
            double Sxt = GetSectionModulusTensionSxt(compressionFiberLocation);
            double Sxc = GetSectionModulusCompressionSxc(compressionFiberLocation);

            double Sx;

            if (UseCompressionSectionModulusOnly == true)
            {
                Sx = Sxc;
            }
            else
            {
                Sx = Math.Min(Sxc, Sxt);
            }
            if (BracingType == FlexuralAndTorsionalBracingType.NoLateralBracing)
            {
                Sx = 0.8 * Sx;
            }

            return(Sx);
        }
 public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation,
      FlexuralAndTorsionalBracingType BracingType)
 {
     return base.GetFlexuralLateralTorsionalBucklingStrength(C_b, L_b, CompressionLocation, BracingType);
 }
 public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation,
                                                                                  FlexuralAndTorsionalBracingType BracingType)
 {
     return(base.GetFlexuralLateralTorsionalBucklingStrength(C_b, L_b, CompressionLocation, BracingType));
 }
Ejemplo n.º 18
0
        public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation,
            FlexuralAndTorsionalBracingType BracingType)
        {
            SteelLimitStateValue ls = null;
            double b, h;

            if (sectionSolid is ISectionRound)
            {
                ls = new SteelLimitStateValue();
                ls.IsApplicable = false;
                ls.Value = -1;
                return ls;
            }
            else if (sectionSolid is ISectionRectangular)
            {
                ISectionRectangular recangularShape = sectionSolid as ISectionRectangular;

                if (MomentAxis == Common.Entities.MomentAxis.XAxis)
                {
                    
                    b = recangularShape.B ;
                    h = recangularShape.H;


                }
                else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
                {
                    b = recangularShape.H;
                    h = recangularShape.B;
                }

                else
                {
                    throw new FlexuralBendingAxisException();
                }

                
                if (b >= h)
                {
                    ls.IsApplicable = false;
                    ls.Value = -1;
                }
                else
                {
                    ls = GetLateralTorsionalBucklingStrength(L_b, C_b);
                }
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" flexural calculation of solid-shape beam");
            }
            return ls;
        }
Ejemplo n.º 19
0
        public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation,
                                                                                         FlexuralAndTorsionalBracingType BracingType)
        {
            SteelLimitStateValue ls;

            if (BracingType == FlexuralAndTorsionalBracingType.FullLateralBracing)
            {
                ls = new SteelLimitStateValue(-1, false);
            }
            else
            {
                double phiM_n = GetLateralTorsionalBucklingCapacity(CompressionLocation, L_b, C_b);
                ls = new SteelLimitStateValue(phiM_n, true);
            }
            return(ls);
        }
Ejemplo n.º 20
0
        public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation,
                                                                                         FlexuralAndTorsionalBracingType BracingType)
        {
            SteelLimitStateValue ls = null;
            double b, h;

            if (sectionSolid is ISectionRound)
            {
                ls = new SteelLimitStateValue();
                ls.IsApplicable = false;
                ls.Value        = -1;
                return(ls);
            }
            else if (sectionSolid is ISectionRectangular)
            {
                ISectionRectangular recangularShape = sectionSolid as ISectionRectangular;

                if (MomentAxis == Common.Entities.MomentAxis.XAxis)
                {
                    b = recangularShape.B;
                    h = recangularShape.H;
                }
                else if (MomentAxis == Common.Entities.MomentAxis.YAxis)
                {
                    b = recangularShape.H;
                    h = recangularShape.B;
                }

                else
                {
                    throw new FlexuralBendingAxisException();
                }


                if (b >= h)
                {
                    ls.IsApplicable = false;
                    ls.Value        = -1;
                }
                else
                {
                    ls = GetLateralTorsionalBucklingStrength(L_b, C_b);
                }
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" flexural calculation of solid-shape beam");
            }
            return(ls);
        }