public static Dictionary <string, object> FlexuralYielding(CustomProfile Shape, double F_y, string BendingAxis = "XAxis", string FlexuralCompressionLocation = "Top",
                                                                   double E = 29000, bool IsRolledMember = true, string Code = "AISC360-10")
        {
            //Default values
            double phiM_n = 0;
            bool   IsApplicableLimitState = false;


            //Calculation logic:
            MomentAxis Axis;
            //Calculation logic:
            bool IsValidStringAxis = Enum.TryParse(BendingAxis, true, out Axis);

            if (IsValidStringAxis == false)
            {
                throw new Exception("Axis selection not recognized. Check input string.");
            }

            FlexuralCompressionFiberPosition FlexuralCompression;
            //Calculation logic:
            bool IsValidStringCompressionLoc = Enum.TryParse(FlexuralCompressionLocation, true, out FlexuralCompression);

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


            SteelMaterial         mat     = new SteelMaterial(F_y, E);
            FlexuralMemberFactory factory = new FlexuralMemberFactory();
            ISteelBeamFlexure     beam    = factory.GetBeam(Shape.Section, mat, null, Axis, FlexuralCompression, IsRolledMember);

            SteelLimitStateValue Y =
                beam.GetFlexuralYieldingStrength(FlexuralCompression);

            phiM_n = Y.Value;

            IsApplicableLimitState = Y.IsApplicable;

            return(new Dictionary <string, object>
            {
                { "phiM_n", phiM_n }
                , { "IsApplicableLimitState", IsApplicableLimitState }
            });
        }
        public void RectangleShapeReturnsYieldStrength()
        {
            FlexuralMemberFactory factory = new FlexuralMemberFactory();
            SectionRectangular    r       = new SectionRectangular(0.5, 12.0);


            SteelMaterial     mat    = new SteelMaterial(50.0, 29000);
            ISteelBeamFlexure beam12 = factory.GetBeam(r, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);

            SteelLimitStateValue Y =
                beam12.GetFlexuralYieldingStrength(FlexuralCompressionFiberPosition.Top);
            double phiM_n          = Y.Value;
            double refValue        = 67.5;
            double actualTolerance = EvaluateActualTolerance(phiM_n, refValue);


            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        public void IShapeReturnsYieldStrength()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection r = AiscShapeFactory.GetShape("W18X35");


            SteelMaterial     mat    = new SteelMaterial(50.0, 29000);
            ISteelBeamFlexure beam12 = factory.GetBeam(r, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);

            SteelLimitStateValue Y =
                beam12.GetFlexuralYieldingStrength(FlexuralCompressionFiberPosition.Top);
            double phiM_n          = Y.Value;
            double refValue        = 249 * 12; // from AISC Steel Manual Table 3-2
            double actualTolerance = EvaluateActualTolerance(phiM_n, refValue);


            Assert.LessOrEqual(actualTolerance, tolerance);
        }
Beispiel #4
0
        public void IShapeReturnsWeakAxisYieldStrength()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection r = AiscShapeFactory.GetShape("W18X35");


            SteelMaterial     mat    = new SteelMaterial(50.0, 29000);
            ISteelBeamFlexure beam12 = factory.GetBeam(r, mat, null, MomentAxis.YAxis, FlexuralCompressionFiberPosition.Left);

            SteelLimitStateValue Y =
                beam12.GetFlexuralYieldingStrength(FlexuralCompressionFiberPosition.Top);
            double phiM_n          = Y.Value;
            double refValue        = 0.9 * 8.06 * 50; // phi*Z_y*Fy
            double actualTolerance = EvaluateActualTolerance(phiM_n, refValue);


            Assert.True(actualTolerance <= tolerance);
        }
        public void TubeReturnsWeakAxisYieldStrength()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();

            ISection r = AiscShapeFactory.GetShape("HSS8X3X.375");


            SteelMaterial     mat    = new SteelMaterial(46.0, 29000);
            ISteelBeamFlexure beam12 = factory.GetBeam(r, mat, null, MomentAxis.YAxis, FlexuralCompressionFiberPosition.Top);

            SteelLimitStateValue Y =
                beam12.GetFlexuralYieldingStrength(FlexuralCompressionFiberPosition.Top);
            double phiM_n          = Y.Value;
            double refValue        = 326.23;
            double actualTolerance = EvaluateActualTolerance(phiM_n, refValue);


            Assert.LessOrEqual(actualTolerance, tolerance);
        }
        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);
            }
        }