Esempio n. 1
0
            public ChannelMember(ISteelSection Section, bool IsRolledShape,
                                 FlexuralCompressionFiberPosition compressionFiberPosition)
            {
                double b;
                double tf;


                if (Section.Shape is ISectionChannel)
                {
                    ISectionChannel sectChannel = Section.Shape as ISectionChannel;

                    switch (compressionFiberPosition)
                    {
                    case FlexuralCompressionFiberPosition.Top:
                        b  = sectChannel.b_f;
                        tf = sectChannel.t_f;
                        break;

                    case FlexuralCompressionFiberPosition.Bottom:
                        b  = sectChannel.b_f;
                        tf = sectChannel.t_f;
                        break;

                    default:
                        throw new CompressionFiberPositionException();
                    }


                    //flange compactness
                    FlangeCompactness = new FlangeOfChannel(Section.Material, b / 2.0, tf);

                    //web compactness
                    WebCompactness = new WebOfChannel(Section.Material, sectChannel);
                }
            }
Esempio n. 2
0
        public FlangeOfChannel(ISteelMaterial Material, ISectionChannel s, ElementLocation location)
            : base(Material)
        {
            double bf = 0;
            double tf = 0;

            switch (location)
            {
            case ElementLocation.Top:
                bf = s.b_f;
                tf = s.t_f;
                break;

            case ElementLocation.Bottom:
                bf = s.b_f;
                tf = s.t_f;
                break;

            default:
                throw new Exception("Invalid location is specified for Channel flange");
            }

            base.Overhang  = bf;
            base.Thickness = tf;
        }
Esempio n. 3
0
 public WebOfChannel(ISteelMaterial Material, ISectionChannel SectionChannel)
     :base(Material)
 {
     this.SectionChannel = SectionChannel;
     ISectionChannel s = SectionChannel;
     this.Width = s.d - (2*s.k);
     if (this.Width<=0)
     {
         throw new Exception("Clear web distance cannot be less than or equal to 0");
     }
     this.Thickness = s.t_w;
 }
Esempio n. 4
0
        public WebOfChannel(ISteelMaterial Material, ISectionChannel SectionChannel)
            : base(Material)
        {
            this.SectionChannel = SectionChannel;
            ISectionChannel s = SectionChannel;

            this.Width = s.d - (2 * s.k);
            if (this.Width <= 0)
            {
                throw new Exception("Clear web distance cannot be less than or equal to 0");
            }
            this.Thickness = s.t_w;
        }
Esempio n. 5
0
        public BeamChannel(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog)
            : base(section, IsRolledMember, CalcLog)
        {
            SectionChannel = null;
            ISectionChannel s = Section.Shape as ISectionChannel;

            this.isRolledMember = IsRolledMember;

            if (s == null)
            {
                throw new SectionWrongTypeException(typeof(ISectionChannel));
            }
            else
            {
                SectionChannel = s;
            }
        }
Esempio n. 6
0
        public FlangeOfChannel(ISteelMaterial Material, ISectionChannel s, ElementLocation location)
            :base(Material)
        {
            double bf=0;
            double tf=0;

            switch (location)
            {
                case ElementLocation.Top:
                    bf = s.b_f;
                    tf = s.t_f;
                    break;
                case ElementLocation.Bottom:
                    bf = s.b_f;
                    tf = s.t_f;
                    break;
                default:
                    throw new Exception("Invalid location is specified for Channel flange");
            }

            base.Overhang = bf;
            base.Thickness = tf;
        }
Esempio n. 7
0
 public SteelChannelSection(ISectionChannel Section, ISteelMaterial Material)
     : base(Material)
 {
     this.section = Section;
 }
Esempio n. 8
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);
        }
        public ISteelCompressionMember GetCompressionMember(ISection Shape, double L_ex, double L_ey, double L_ez, double F_y, double E, bool IsRolledShape = true)
        {
            string DEFAULT_EXCEPTION_STRING = "Selected shape is not supported. Select a different shape.";
            ISteelCompressionMember col     = null;
            CalcLog       log      = new CalcLog();
            SteelMaterial Material = new SteelMaterial(F_y, E);

            if (Shape == null)
            {
                return(new ColumnGeneral(null, L_ex, L_ey, L_ez));
            }

            if (Shape is ISectionI)
            {
                ISectionI     IShape        = Shape as ISectionI;
                SteelSectionI SectionI      = new SteelSectionI(IShape, Material);
                IShapeFactory IShapeFactory = new IShapeFactory();
                return(IShapeFactory.GetIshape(SectionI, IsRolledShape, L_ex, L_ey, L_ez));
            }


            else if (Shape is ISectionChannel)
            {
                ISectionChannel     ChannelShape   = Shape as ISectionChannel;
                SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material);
                throw new Exception(DEFAULT_EXCEPTION_STRING);
            }


            else if (Shape is ISectionPipe)
            {
                ISectionPipe     SectionPipe = Shape as ISectionPipe;
                SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material);
                ChsShapeFactory  ChsFactory  = new ChsShapeFactory();
                return(ChsFactory.GetChsShape(PipeSection, L_ex, L_ey, L_ez, log));
            }

            else if (Shape is ISectionTube)
            {
                ISectionTube    TubeShape       = Shape as ISectionTube;
                SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material);
                RhsShapeFactory RhsFactory      = new RhsShapeFactory();
                return(RhsFactory.GetRhsShape(RectHSS_Section, L_ex, L_ey, L_ez));
            }


            else if (Shape is ISectionBox)
            {
                ISectionBox     BoxShape   = Shape as ISectionBox;
                SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material);

                RhsShapeFactory RhsFactory = new RhsShapeFactory();
                return(RhsFactory.GetRhsShape(BoxSection, L_ex, L_ey, L_ez));
            }

            else if (Shape is ISectionRectangular || Shape is ISectionRound)
            {
                ISteelSection solidSec;
                if (Shape is ISectionRectangular)
                {
                    ISectionRectangular RectangleShape = Shape as ISectionRectangular;
                    solidSec = new SteelRectangleSection(RectangleShape, Material);
                }
                else
                {
                    ISectionRound rnd = Shape as ISectionRound;
                    solidSec = new SteelRoundSection(rnd, Material);
                }


                CompressionMemberRectangle SolidShapeSection = new CompressionMemberRectangle(solidSec, L_ex, L_ey, L_ez);
                return(SolidShapeSection);
            }

            else if (Shape is ISectionTee)
            {
                ISectionTee     TeeShape   = Shape as ISectionTee;
                SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material);


                IShapeCompactness compactnessTee = new ShapeCompactness.TeeMember(TeeSection);
                CompactnessClassAxialCompression flangeCompactness = compactnessTee.GetFlangeCompactnessCompression();
                CompactnessClassAxialCompression stemCompactness   = compactnessTee.GetWebCompactnessCompression();

                if (flangeCompactness == CompactnessClassAxialCompression.NonSlender && stemCompactness == CompactnessClassAxialCompression.NonSlender)
                {
                    return(new ColumnTee(TeeSection, IsRolledShape, L_ex, L_ey, L_ez));
                }
                else
                {
                    throw new Exception(DEFAULT_EXCEPTION_STRING);
                }
            }

            else
            {
                throw new Exception(DEFAULT_EXCEPTION_STRING);
            }
        }
Esempio n. 10
0
 public SteelChannelSection(ISectionChannel Section, ISteelMaterial Material)
     :base( Material)
 {
     this.section = Section;
 }
Esempio n. 11
0
        public ISteelCompressionMember GetCompressionMember(ISection Shape, double L_ex, double L_ey, double L_ez, double F_y, double E, bool IsRolledShape = true)
        {
            string DEFAULT_EXCEPTION_STRING = "Selected shape is not supported. Select a different shape.";
            ISteelCompressionMember col     = null;
            CalcLog       log      = new CalcLog();
            SteelMaterial Material = new SteelMaterial(F_y, E);

            if (Shape is ISectionI)
            {
                ISectionI     IShape        = Shape as ISectionI;
                SteelSectionI SectionI      = new SteelSectionI(IShape, Material);
                IShapeFactory IShapeFactory = new IShapeFactory();
                return(IShapeFactory.GetIshape(SectionI, IsRolledShape, L_ex, L_ey, L_ez, log));
            }


            else if (Shape is ISectionChannel)
            {
                ISectionChannel     ChannelShape   = Shape as ISectionChannel;
                SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material);
                throw new Exception(DEFAULT_EXCEPTION_STRING);
            }


            else if (Shape is ISectionPipe)
            {
                ISectionPipe     SectionPipe = Shape as ISectionPipe;
                SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material);
                ChsShapeFactory  ChsFactory  = new ChsShapeFactory();
                return(ChsFactory.GetChsShape(PipeSection, L_ex, L_ey, L_ez, log));
            }

            else if (Shape is ISectionTube)
            {
                ISectionTube    TubeShape       = Shape as ISectionTube;
                SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material);
                RhsShapeFactory RhsFactory      = new RhsShapeFactory();
                return(RhsFactory.GetRhsShape(RectHSS_Section, L_ex, L_ey, L_ez, log));
            }


            else if (Shape is ISectionBox)
            {
                ISectionBox     BoxShape   = Shape as ISectionBox;
                SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material);

                RhsShapeFactory RhsFactory = new RhsShapeFactory();
                return(RhsFactory.GetRhsShape(BoxSection, L_ex, L_ey, L_ez, log));
            }

            else if (Shape is ISectionTee)
            {
                ISectionTee     TeeShape   = Shape as ISectionTee;
                SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material);
                throw new Exception(DEFAULT_EXCEPTION_STRING);
            }
            else
            {
                throw new Exception(DEFAULT_EXCEPTION_STRING);
            }
        }