예제 #1
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 GetLambdapf(FlexuralCompressionFiberPosition compressionFiberPosition)
 {
      compactness = new ShapeCompactness.IShapeMember
         (this.Section, this.isRolledMember, compressionFiberPosition);
     return compactness.GetFlangeLambda_p(StressType.Flexure);
 }