예제 #1
0
        public ISteelCompressionMember GetIshape(ISteelSection Section, bool IsRolled, double L_x, double L_y, double L_z, ICalcLog CalcLog)
        {

            ISteelCompressionMember column = null;
            IShapeCompactness compactnessTop = new ShapeCompactness.IShapeMember(Section, IsRolled, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top);
            IShapeCompactness compactnessBot = new ShapeCompactness.IShapeMember(Section, IsRolled, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Bottom);
            ICalcLog Log = new CalcLog();


            CompactnessClassAxialCompression flangeCompactnessTop = compactnessTop.GetFlangeCompactnessCompression();
            CompactnessClassAxialCompression flangeCompactnessBot = compactnessTop.GetFlangeCompactnessCompression();
            CompactnessClassAxialCompression webCompactness = compactnessTop.GetWebCompactnessCompression();

            if (flangeCompactnessTop == CompactnessClassAxialCompression.NonSlender && webCompactness == CompactnessClassAxialCompression.NonSlender
                && flangeCompactnessBot == CompactnessClassAxialCompression.NonSlender)
            {
                column = new IShapeCompact(Section, IsRolled, L_x, L_y, L_z, Log);
                //if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop)
                //{
                //    return new IShapeCompact(SectionI, IsRolledShape, L_ex, L_ey, L_ez, log);
                //}
                //else
                //{
                //    throw new NotImplementedException();
                //}
            }
            else
            {
                column = new IShapeSlenderElements(Section, IsRolled, L_x, L_y, L_z, Log);
            }
            return column;
        }
예제 #2
0
        public double GetWebPlastificationFactorForTensionRpt(FlexuralCompressionFiberPosition compressionFiberPosition)
        {
            double Rpt = 0.0;

            double Mp = GetMajorNominalPlasticMoment();
            double Myt = GetTensionFiberYieldMomentMyt(compressionFiberPosition);

            double hc = Gethc(compressionFiberPosition);
            double tw = this.Gettw();

            ShapeCompactness.IShapeMember compactness = new ShapeCompactness.IShapeMember(Section, IsRolledMember, compressionFiberPosition);
            double lambdaWeb = compactness.GetWebLambda();
            double lambdapw = compactness.GetWebLambda_p(StressType.Flexure);
            double lambdarw = compactness.GetWebLambda_r(StressType.Flexure);

            //double lambda = hc / tw;
            double lambda = compactness.GetWebLambda();

            if (lambda <= lambdapw)
            {
                Rpt = Mp / Myt; //(F4-16a)
            }

            else
            {
                Rpt = Mp / Myt - (Mp / Myt - 1) * ((lambda - lambdapw) / (lambdarw - lambdapw)); //(F4-16b)
            }


            return Rpt;
        } 
        public double GetLambdaCompressionFlange(FlexuralCompressionFiberPosition compressionFiberPosition)
        {

             compactness = new ShapeCompactness.IShapeMember
        (this.Section, this.isRolledMember, compressionFiberPosition);
            return compactness.GetCompressionFlangeLambda();
        }
예제 #4
0
파일: FLB.cs 프로젝트: Wosad/Wosad.Design
        public double GetCompressionFlangeLocalBucklingCapacity()
        {
            // compactness criteria is selected by the most slender flange

            double Mn = 0;

            ShapeCompactness.IShapeMember compactnessTop = new ShapeCompactness.IShapeMember(Section, IsRolledMember, FlexuralCompressionFiberPosition.Top);
            CompactnessClassFlexure flangeCompactnessTop = compactnessTop.GetFlangeCompactnessFlexure();

            ShapeCompactness.IShapeMember compactnessBot= new ShapeCompactness.IShapeMember(Section, IsRolledMember, FlexuralCompressionFiberPosition.Top);
            CompactnessClassFlexure flangeCompactnessBot= compactnessTop.GetFlangeCompactnessFlexure();

            double lambda = 0.0;
            double lambdaTop = compactnessTop.GetCompressionFlangeLambda();
            double lambdaBot = compactnessBot.GetCompressionFlangeLambda();

            CompactnessClassFlexure flangeCompactness;
            ShapeCompactness.IShapeMember compactness;
            double b = 0;
            double tf = 0.0;

            if (lambdaTop>lambdaBot)
            {
                compactness = compactnessTop;
                flangeCompactness = flangeCompactnessTop;
                lambda = lambdaTop;
                b = GetBfTop();
                tf = Get_tfTop();
            }
            else
            {
                compactness = compactnessBot;
                flangeCompactness = flangeCompactnessBot;
                lambda = lambdaBot;
                b = GetBfBottom();
                tf = Get_tfBottom();
            }

            double Mp = Zy * Fy;
            double lambdapf = compactness.GetFlangeLambda_p( StressType.Flexure);
            double lambdarf = compactness.GetFlangeLambda_r(StressType.Flexure);

            switch (flangeCompactness)
            {
                case CompactnessClassFlexure.Compact:
                    Mn = double.PositiveInfinity;
                    break;
                case CompactnessClassFlexure.Noncompact:
                    Mn = Mp - (Mp - 0.7 * Fy * Sy) * ((lambda - lambdapf) / (lambdarf - lambdapf)); //(F6-2)
                    break;
                case CompactnessClassFlexure.Slender:

                    double Fcr = 0.69 * E / Math.Pow(b / tf, 2.0); //(F6-4)
                    Mn = Fcr * Sy; //(F6-3)
                    break;
            }
            double phiM_n = 0.9 * Mn;
            return phiM_n;
        }
 public double GetLambdaWeb()
 {
     double Lambda = 0.0;
     compactness = new ShapeCompactness.IShapeMember
     (this.Section, this.isRolledMember, FlexuralCompressionFiberPosition.Top);
     // for web location of compression fiber does not matter
     Lambda = compactness.GetWebLambda();
     return Lambda;
 }
        public ISteelBeamFlexure GetBeamCase()
        {
            ISteelBeamFlexure beam = null;
            IShapeCompactness compactness = new ShapeCompactness.IShapeMember(section, IsRolledMember, compressionFiberPosition);

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

            if (flangeCompactness == CompactnessClassFlexure.Compact && webCompactness == CompactnessClassFlexure.Compact)
            {
                return new BeamIDoublySymmetricCompact(section, IsRolledMember, CalcLog);
            }
            else
            {
                if (webCompactness == CompactnessClassFlexure.Compact)
                {
                    return new BeamIDoublySymmetricCompactWebOnly(section, IsRolledMember, CalcLog);
                }
                else if ( webCompactness == CompactnessClassFlexure.Noncompact)
                {
                    if (flangeCompactness == CompactnessClassFlexure.Compact)
                    {
                        return new BeamINoncompactWebCompactFlange(section, IsRolledMember, CalcLog);
                    }
                    else
	                {
                        return new BeamINoncompactWeb(section, IsRolledMember, CalcLog);
	                }

                }

                else //slender web
                {
                    if (flangeCompactness == CompactnessClassFlexure.Compact)
                    {
                        return new BeamISlenderWebCompactFlange(section, IsRolledMember, CalcLog);
                    }
                    else
                    {
                        return new BeamISlenderWeb(section, IsRolledMember, CalcLog);
                    }

                }

              }
            return beam;

        }
예제 #7
0
파일: FLB.cs 프로젝트: Wosad/Wosad.Design
        //Compression Flange Local Buckling F3.2

        public double GetCompressionFlangeLocalBucklingCapacity()
        {
            double M_n = 0.0;
            double phiM_n = 0.0;
            ISectionI sectionI = Section as ISectionI;
            if (sectionI!=null)
	            {
                ShapeCompactness.IShapeMember compactness = new ShapeCompactness.IShapeMember(Section, IsRolledMember,FlexuralCompressionFiberPosition.Top);
                CompactnessClassFlexure cClass = compactness.GetFlangeCompactnessFlexure();
                if (cClass== CompactnessClassFlexure.Noncompact || cClass== CompactnessClassFlexure.Slender)
                {
                    double lambda = this.GetLambdaCompressionFlange(FlexuralCompressionFiberPosition.Top);
                    double lambdapf = this.GetLambdapf(FlexuralCompressionFiberPosition.Top);
                    double lambdarf = this.GetLambdarf(FlexuralCompressionFiberPosition.Top);
                    //note: section is doubly symmetric so top flange is taken

                    double Sx = this.Section.Shape.S_xTop;
                    double Fy = this.Section.Material.YieldStress;
                    double E = this.Section.Material.ModulusOfElasticity;
                    //double Zx = Section.SectionBase.Z_x;

                    if (cClass== CompactnessClassFlexure.Noncompact)
	                {
                        double Mp = this.GetMajorNominalPlasticMoment();
		                 M_n = Mp - (Mp - 0.7 * Fy * Sx) * ((lambda - lambdapf) / (lambdarf - lambdapf)); //(F3-1)
	                }
                      else
	                {
                        double kc = this.Getkc();
                        M_n = 0.9 * E * kc * Sx / Math.Pow(lambda, 2); //(F3-2)
	                }

                }
                else
                {

                }
                if (cClass == CompactnessClassFlexure.Compact)
                {
                    throw new LimitStateNotApplicableException("Flange local buckling");
                }

	            }
            phiM_n = 0.9 * M_n;
            return phiM_n;
        }
예제 #8
0
파일: FLB.cs 프로젝트: Wosad/Wosad.Design
        //Compression Flange Local Buckling F4.3
        public  double GetCompressionFlangeLocalBucklingCapacity(FlexuralCompressionFiberPosition compressionFiberPosition)
        {
            double Mn = 0.0;

                double bf = GetCompressionFlangeWidthbfc(compressionFiberPosition);
                double tf = GetCompressionFlangeThicknesstfc(compressionFiberPosition);

                ShapeCompactness.IShapeMember compactness = new ShapeCompactness.IShapeMember(Section, IsRolledMember, compressionFiberPosition);
                CompactnessClassFlexure flangeCompactness = compactness.GetFlangeCompactnessFlexure();

                double lambda = compactness.GetCompressionFlangeLambda();
                double Sxc = GetSectionModulusCompressionSxc(compressionFiberPosition);

                switch (flangeCompactness)
                {
                    case CompactnessClassFlexure.Compact:

                        throw new LimitStateNotApplicableException("Compression Flange Local buckling");

                    case CompactnessClassFlexure.Noncompact:

                        double Rpc = GetRpc(compressionFiberPosition);
                        double Myc =  GetCompressionFiberYieldMomentMyc(compressionFiberPosition);
                        double lambdapf = compactness.GetFlangeLambda_p(StressType.Flexure);
                        double lambdarf = compactness.GetFlangeLambda_r(StressType.Flexure);
                        double FL = GetStressFL(compressionFiberPosition);

                        Mn = Rpc * Myc - (Rpc * Myc - FL * Sxc) * ((lambda - lambdapf) / (lambdarf - lambdapf)); //(F4-13)

                        break;
                    case CompactnessClassFlexure.Slender:

                        double kc = Getkc();
                        double E = this.Section.Material.ModulusOfElasticity;

                        Mn = 0.9 * E * kc * Sxc / Math.Pow(lambda, 2);

                        break;

                }


                double phiM_n = 0.9 * Mn;
                return phiM_n;
        }
 protected virtual double GetLambdarf(FlexuralCompressionFiberPosition compressionFiberPosition)
 {
     compactness = new ShapeCompactness.IShapeMember
         (this.Section, this.isRolledMember, compressionFiberPosition);
     return compactness.GetFlangeLambda_r(StressType.Flexure);
 }