Esempio n. 1
0
        protected double GetFcrGeneral()
        {
            SectionRectangular r   = new SectionRectangular(t_w, h_o);
            SteelMaterial      mat = new SteelMaterial(Material.YieldStress);
            CalcLog            log = new CalcLog();

            AffectedElementInFlexure flexuralElement = new AffectedElementInFlexure(r, mat, log);

            return(flexuralElement.GetPlateBucklingCriticalStress(c));

            #region Obsolete
            //double lambda = GetLambda();
            //double F_y = Material.YieldStress;

            //double Q;
            //if (lambda<=0.7)
            //{
            //    Q = 1.0;
            //}
            //else if (lambda<=1.41)
            //{
            //    Q = (1.34 - 0.468 * lambda);
            //}
            //else
            //{
            //    Q = ((1.3) / (Math.Pow(lambda, 2)));
            //}
            //double F_cr = F_y * Q;
            //return F_cr;
            #endregion
        }
        public void ConnectedPlateReturnsFlexuralStrength()
        {
            ICalcLog                 log      = new  CalcLog();
            SectionRectangular       Section  = new SectionRectangular(0.5, 8);
            ISteelMaterial           Material = new SteelMaterial(50);
            AffectedElementInFlexure element  = new AffectedElementInFlexure(Section, Material, log);
            double phiM_n = element.GetFlexuralStrength();

            Assert.AreEqual(360.0, phiM_n);
        }
        public double GetExtendedSinglePlateFlexuralBucklingStrength(double F_y, double t_pl, double d_pl, double L_pl)
        {
            SectionRectangular r   = new SectionRectangular(t_pl, d_pl);
            SteelMaterial      mat = new SteelMaterial(F_y);
            CalcLog            log = new CalcLog();

            AffectedElementInFlexure flexuralElement = new AffectedElementInFlexure(r, mat, log);

            return(flexuralElement.GetPlateFlexuralBucklingStrength(L_pl));
        }
Esempio n. 4
0
        public double GetFlexuralStrength()
        {
            AffectedElementInFlexure ae = new AffectedElementInFlexure(Section,
                                                                       null, Material.YieldStress, Material.UltimateStress, true, true);

            //Confirm if need to use Z_x
            //double F_y = Material.YieldStress;
            //double S_x = Math.Min(this.Section.S_xTop, this.Section.S_xBot);
            return(ae.GetFlexuralStrength(0.0));
        }
        public void ConnectedPlateReturnsFlexuralStrength()
        {
            ICalcLog                 log        = new  CalcLog();
            SectionRectangular       Section    = new SectionRectangular(0.5, 8);
            SectionOfPlateWithHoles  NetSection = new SectionOfPlateWithHoles("", 0.5, 8, 2, 0.01, 2, 2, new Common.Mathematics.Point2D(0, 0));
            AffectedElementInFlexure element    = new AffectedElementInFlexure(Section, NetSection, 50, 65.0);

            double phiM_n = element.GetFlexuralStrength(0);

            Assert.True(360.0 == phiM_n);
        }
        public void ExtendedPlateBucklingFlexuralStrength()
        {
            double             phiR_n;
            double             h_o = 9.0;
            double             t_w = 0.5;
            SectionRectangular r   = new SectionRectangular(t_w, h_o);
            SteelMaterial      mat = new SteelMaterial(36);
            CalcLog            log = new CalcLog();

            AffectedElementInFlexure flexuralElement = new AffectedElementInFlexure(r, mat, log);
            double lambda   = flexuralElement.GetLambda(10);
            double refValue = 0.408;

            double actualTolerance = EvaluateActualTolerance(lambda, refValue);

            Assert.LessOrEqual(actualTolerance, tolerance);
        }
Esempio n. 7
0
        public static Dictionary <string, object> ConnectedElementStrengthInFlexure(CustomProfile GrossShape,
                                                                                    CustomProfile NetShape,
                                                                                    double F_y, double F_u, double L_b      = 0,
                                                                                    bool IsCompactDoublySymmetricForFlexure = true, double C_b = 1,
                                                                                    string Code = "AISC360-10")
        {
            //Default values
            double phiM_n = 0;


            //Calculation logic:
            ICalcLog log = new CalcLog();
            bool     grossShapeValid = false, netShapeValid = false;

            //if (GrossShape.Section is ISectionRectangular || GrossShape.Section is ISectionI)
            //{
            //    grossShapeValid = true;
            //}

            //if (NetShape.Section is ISectionRectangular || NetShape.Section is ISectionI)
            //{
            //    netShapeValid = true;
            //}

            //if (grossShapeValid != true || netShapeValid!=true)
            //{
            //    throw new Exception("Specify an I-shape or Rectangular shape as gross and net sections");
            //}

            AffectedElementInFlexure element = new AffectedElementInFlexure(GrossShape.Section, NetShape.Section, F_y, F_u, IsCompactDoublySymmetricForFlexure);

            phiM_n = element.GetFlexuralStrength(L_b);

            return(new Dictionary <string, object>
            {
                { "phiM_n", phiM_n }
            });
        }
Esempio n. 8
0
        public static Dictionary <string, object> ConnectedElementStrengthInFlexure(CustomProfile GrossShape,
                                                                                    CustomProfile NetShape,
                                                                                    double F_y, double F_u, double L_b      = 0,
                                                                                    bool IsCompactDoublySymmetricForFlexure = true, double C_b = 1,
                                                                                    string Code = "AISC360-10")
        {
            //Default values
            double phiM_n = 0;


            ICalcLog log = new CalcLog();
            bool     grossShapeValid = false, netShapeValid = false;


            AffectedElementInFlexure element = new AffectedElementInFlexure(GrossShape.Section, NetShape.Section, F_y, F_u, IsCompactDoublySymmetricForFlexure);

            phiM_n = element.GetFlexuralStrength(L_b);

            return(new Dictionary <string, object>
            {
                { "phiM_n", phiM_n }
            });
        }