Beispiel #1
0
        private void CreateBeam()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection      section = AiscShapeFactory.GetShape("C15X33.9", ShapeTypeSteel.Channel);
            SteelMaterial mat     = new SteelMaterial(36.0, 29000);

            beam = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);
        }
        private void CreateBeam()
        {
            FlexuralMemberFactory factory = new FlexuralMemberFactory();

            ISection      section = new SectionTee("", 8, 4, 0.5, 0.5);
            SteelMaterial mat     = new SteelMaterial(36.0, 29000);

            beam = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);
        }
        private void CreateBeam()
        {
            FlexuralMemberFactory factory = new FlexuralMemberFactory();
            AiscShapeFactory AiscShapeFactory = new AiscShapeFactory();
            ISection section = AiscShapeFactory.GetShape("W18X35", ShapeTypeSteel.IShapeRolled);
            SteelMaterial mat = new SteelMaterial(50.0,29000);
            beam = factory.GetBeam(section,mat,null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);

        }
        private void CreateBeam()
        {
            FlexuralMemberFactory factory = new FlexuralMemberFactory();
            AiscShapeFactory AiscShapeFactory = new AiscShapeFactory();
            ISection section = AiscShapeFactory.GetShape("HSS8X6X.500", ShapeTypeSteel.RectangularHSS);
            SteelMaterial mat = new SteelMaterial(46.0,29000);
            beam = factory.GetBeam(section,mat,null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);

        }
        private void CreateBeam()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection      section = AiscShapeFactory.GetShape("HSS8X6X.500", ShapeTypeSteel.RectangularHSS);
            SteelMaterial mat     = new SteelMaterial(46.0, 29000);

            beam = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);
        }
Beispiel #6
0
        private ISteelBeamFlexure CreateRhsBeam(CompactnessClassFlexure FlangeCompactness, FlexuralCompressionFiberPosition compressionFiberPosition,
                                                CompactnessClassFlexure WebCompactness,
                                                ISectionTube RhsSec, ISteelMaterial Material, MomentAxis MomentAxis, ICalcLog Log)
        {
            SteelRhsSection   steelSection = new SteelRhsSection(RhsSec, Material);
            ISteelBeamFlexure beam         = null;

            beam = new BeamRectangularHss(steelSection, compressionFiberPosition, MomentAxis, Log);
            return(beam);
        }
Beispiel #7
0
        public static Dictionary <string, object> FlexuralLateralTorsionalBuckling(CustomProfile Shape, double F_y,
                                                                                   double L_b, double C_b = 1.0, string BendingAxis = "XAxis", string FlexuralCompressionLocation = "Top", string FlexuralBracingCase = "NoLateralBracing", double E = 29000, bool IsRolledMember = true, string Code = "AISC360-10")
        {
            //Default values
            double phiM_n = 0;
            bool   IsApplicableLimitState = false;


            //Calculation logic:

            MomentAxis Axis;

            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.");
            }

            FlexuralAndTorsionalBracingType Bracing;
            //Calculation logic:
            bool IsValidStringBracing = Enum.TryParse(FlexuralBracingCase, true, out Bracing);

            if (IsValidStringBracing == false)
            {
                throw new Exception("Flexural bracing case 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 LTB = beam.GetFlexuralLateralTorsionalBucklingStrength(C_b, L_b, FlexuralCompression, Bracing);

            phiM_n = LTB.Value;

            IsApplicableLimitState = LTB.IsApplicable;

            return(new Dictionary <string, object>
            {
                { "phiM_n", phiM_n }
                , { "IsApplicableLimitState", IsApplicableLimitState }
            });
        }
        public void PipeShapeBeam()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection r = AiscShapeFactory.GetShape("HSS2.5X.188");


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

            Assert.IsTrue(beam12 != null);
        }
        public void FactoryReturnsChannel()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISectionChannel       r = new SectionChannel("", 12.0, 6, 0.4, 0.25);


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

            Assert.IsTrue(true);
        }
        public static Dictionary <string, object> LimitingLengthForFlexuralYielding(CustomProfile Shape, double F_y, string BendingAxis = "XAxis", string FlexuralCompressionLocation = "Top",
                                                                                    double E = 29000, bool IsRolledMember = true, string Code = "AISC360-10")
        {
            //Default values
            double L_pValue     = 0;
            bool   IsApplicable = 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 L_p =
                beam.GetLimitingLengthForFullYielding_Lp(FlexuralCompression);

            L_pValue = L_p.Value;

            IsApplicable = L_p.IsApplicable;

            IsApplicable = L_p.IsApplicable;

            return(new Dictionary <string, object>
            {
                { "L_p", L_pValue }
                , { "IsApplicable", IsApplicable }
            });
        }
Beispiel #11
0
        public void AngleReturnsFlexuralLTBStrengthL3X3()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection          section  = AiscShapeFactory.GetShape("L3X3X3/8", ShapeTypeSteel.Angle);
            SteelMaterial     mat      = new SteelMaterial(36.0, 29000);
            ISteelBeamFlexure thisBeam = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);

            SteelLimitStateValue LTB =
                beam.GetFlexuralLateralTorsionalBucklingStrength(1.0, 4.5 * 12, FlexuralCompressionFiberPosition.Top, Steel.AISC.FlexuralAndTorsionalBracingType.NoLateralBracing);
            double phiM_n          = LTB.Value;
            double refValue        = 88.9;
            double actualTolerance = EvaluateActualTolerance(phiM_n, refValue);

            Assert.True(actualTolerance <= tolerance);
        }
Beispiel #12
0
        public void DoublySymmetricIReturnsFlexuralLateralTorsionalBucklingStrengthInelasticW12()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection          section = AiscShapeFactory.GetShape("W12X26", ShapeTypeSteel.IShapeRolled);
            SteelMaterial     mat     = new SteelMaterial(50.0, 29000);
            ISteelBeamFlexure beam12  = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top);

            SteelLimitStateValue LTB =
                beam12.GetFlexuralLateralTorsionalBucklingStrength(1.0, 19 * 12, FlexuralCompressionFiberPosition.Top, Steel.AISC.FlexuralAndTorsionalBracingType.NoLateralBracing);
            double phiM_n          = LTB.Value;
            double refValue        = 60 * 12; // from AISC Steel Manual Table 3-10
            double actualTolerance = EvaluateActualTolerance(phiM_n, refValue);

            Assert.True(actualTolerance <= tolerance);
        }
        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 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);
        }
Beispiel #15
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 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);
        }
        public void DoublySymmetricIReturnsLateralTorsionalStrength()
        {
            FlexuralMemberFactory factory          = new FlexuralMemberFactory();
            AiscShapeFactory      AiscShapeFactory = new AiscShapeFactory();
            ISection r = new  SectionI("", 12.2, 6.49, 0.38, 0.23);


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

            SteelLimitStateValue LTB =
                beam12.GetFlexuralLateralTorsionalBucklingStrength(1.0, 19 * 12, FlexuralCompressionFiberPosition.Top, Steel.AISC.FlexuralAndTorsionalBracingType.NoLateralBracing);
            double phiM_n          = LTB.Value;
            double refValue        = 60 * 12; // from AISC Steel Manual Table 3-10
            double actualTolerance = EvaluateActualTolerance(phiM_n, refValue);


            Assert.LessOrEqual(actualTolerance, tolerance);
        }
Beispiel #18
0
        private ISteelBeamFlexure CreateIBeam(CompactnessClassFlexure FlangeCompactness,
                                              CompactnessClassFlexure WebCompactness, ISectionI Section, ISteelMaterial Material,
                                              ICalcLog Log, bool IsRolled)
        {
            SteelSectionI     steelSection = new SteelSectionI(Section, Material);
            ISteelBeamFlexure beam         = null;

            if (FlangeCompactness == CompactnessClassFlexure.Compact && WebCompactness == CompactnessClassFlexure.Compact)
            {
                //F2
                beam = new BeamIDoublySymmetricCompact(steelSection, IsRolled, Log);
            }
            else if (WebCompactness == CompactnessClassFlexure.Compact && FlangeCompactness != CompactnessClassFlexure.Compact)
            {
                //F3
                throw new NotImplementedException();
            }

            return(beam);
        }
        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);
            }
        }
Beispiel #21
0
        public ISteelBeamFlexure GetBeam(ISection Shape, ISteelMaterial Material, ICalcLog Log, MomentAxis MomentAxis,
                                         FlexuralCompressionFiberPosition compressionFiberPosition, bool IsRolledMember = true)
        {
            ISteelBeamFlexure beam = null;

            if (MomentAxis == Common.Entities.MomentAxis.XAxis)
            {
                if (Shape is ISectionI)
                {
                    ISectionI     IShape   = Shape as ISectionI;
                    SteelSectionI SectionI = new SteelSectionI(IShape, Material);
                    if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop)     // doubly symmetric
                    {
                        DoublySymmetricIBeam dsBeam = new DoublySymmetricIBeam(SectionI, Log, compressionFiberPosition, IsRolledMember);
                        beam = dsBeam.GetBeamCase();
                    }
                    else
                    {
                        SinglySymmetricIBeam ssBeam = new SinglySymmetricIBeam(SectionI, IsRolledMember, compressionFiberPosition, Log);
                        beam = ssBeam.GetBeamCase();
                    }
                }
                else if (Shape is ISolidShape)
                {
                    ISolidShape       solidShape   = Shape as ISolidShape;
                    SteelSolidSection SectionSolid = new SteelSolidSection(solidShape, Material);
                    beam = new BeamSolid(SectionSolid, Log, MomentAxis);
                }

                else if (Shape is ISectionChannel)
                {
                    ISectionChannel     ChannelShape   = Shape as ISectionChannel;
                    SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material);
                    beam = new BeamChannel(ChannelSection, IsRolledMember, Log);


                    IShapeCompactness compactness = new ShapeCompactness.ChannelMember(ChannelSection, IsRolledMember, compressionFiberPosition);

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

                    if (flangeCompactness != CompactnessClassFlexure.Compact || webCompactness != CompactnessClassFlexure.Compact)
                    {
                        throw new Exception("Channels with non-compact and slender flanges or webs are not supported. Revise input.");
                    }
                }


                else if (Shape is ISectionPipe)
                {
                    ISectionPipe     SectionPipe = Shape as ISectionPipe;
                    SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material);
                    beam = new BeamCircularHss(PipeSection, Log);
                }

                else if (Shape is ISectionTube)
                {
                    ISectionTube    TubeShape       = Shape as ISectionTube;
                    SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material);
                    beam = new BeamRectangularHss(RectHSS_Section, compressionFiberPosition, MomentAxis, Log);
                }


                else if (Shape is ISectionBox)
                {
                    ISectionBox     BoxShape   = Shape as ISectionBox;
                    SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material);
                    beam = new BeamRectangularHss(BoxSection, compressionFiberPosition, MomentAxis, Log);
                }

                else if (Shape is ISectionTee)
                {
                    ISectionTee     TeeShape   = Shape as ISectionTee;
                    SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material);
                    beam = new BeamTee(TeeSection, Log);
                }
                else if (Shape is ISectionAngle)
                {
                    ISectionAngle     Angle        = Shape as ISectionAngle;
                    SteelAngleSection AngleSection = new SteelAngleSection(Angle, Material);
                    beam = new BeamAngle(AngleSection, Log, Angle.AngleRotation, MomentAxis, Angle.AngleOrientation);
                }
                else if (Shape is ISolidShape)
                {
                    ISolidShape       SolidShape   = Shape as ISolidShape;
                    SteelSolidSection SolidSection = new SteelSolidSection(SolidShape, Material);
                    beam = new BeamSolid(SolidSection, Log, MomentAxis);
                }
                else
                {
                    throw new Exception("Specified section type is not supported for this node.");
                }
            }
            else  // weak axis
            {
                if (Shape is ISectionI)
                {
                    ISectionI     IShape   = Shape as ISectionI;
                    SteelSectionI SectionI = new SteelSectionI(IShape, Material);

                    beam = new BeamIWeakAxis(SectionI, IsRolledMember, Log);
                }
                else
                {
                    throw new NotImplementedException();
                }
            }

            return(beam);
        }