コード例 #1
0
ファイル: IShapeFactory.cs プロジェクト: Wosad/Wosad.Design
        public ISteelCompressionMember GetIshape(ISteelSection Section, bool IsRolled, double L_x, double L_y, double L_z, ICalcLog CalcLog)
        {

            ISteelCompressionMember column = null;
            IShapeCompactness compactnessTop = new ShapeCompactness.IShapeMember(Section, IsRolled, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top);
            IShapeCompactness compactnessBot = new ShapeCompactness.IShapeMember(Section, IsRolled, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Bottom);
            ICalcLog Log = new CalcLog();


            CompactnessClassAxialCompression flangeCompactnessTop = compactnessTop.GetFlangeCompactnessCompression();
            CompactnessClassAxialCompression flangeCompactnessBot = compactnessTop.GetFlangeCompactnessCompression();
            CompactnessClassAxialCompression webCompactness = compactnessTop.GetWebCompactnessCompression();

            if (flangeCompactnessTop == CompactnessClassAxialCompression.NonSlender && webCompactness == CompactnessClassAxialCompression.NonSlender
                && flangeCompactnessBot == CompactnessClassAxialCompression.NonSlender)
            {
                column = new IShapeCompact(Section, IsRolled, L_x, L_y, L_z, Log);
                //if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop)
                //{
                //    return new IShapeCompact(SectionI, IsRolledShape, L_ex, L_ey, L_ez, log);
                //}
                //else
                //{
                //    throw new NotImplementedException();
                //}
            }
            else
            {
                column = new IShapeSlenderElements(Section, IsRolled, L_x, L_y, L_z, Log);
            }
            return column;
        }
コード例 #2
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);
                }
            }
コード例 #3
0
        public ISteelCompressionMember GetIshape(ISteelSection Section, bool IsRolled, double L_x, double L_y, double L_z, ICalcLog CalcLog)
        {
            ISteelCompressionMember column         = null;
            IShapeCompactness       compactnessTop = new ShapeCompactness.IShapeMember(Section, IsRolled, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top);
            IShapeCompactness       compactnessBot = new ShapeCompactness.IShapeMember(Section, IsRolled, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Bottom);
            ICalcLog Log = new CalcLog();


            CompactnessClassAxialCompression flangeCompactnessTop = compactnessTop.GetFlangeCompactnessCompression();
            CompactnessClassAxialCompression flangeCompactnessBot = compactnessTop.GetFlangeCompactnessCompression();
            CompactnessClassAxialCompression webCompactness       = compactnessTop.GetWebCompactnessCompression();

            if (flangeCompactnessTop == CompactnessClassAxialCompression.NonSlender && webCompactness == CompactnessClassAxialCompression.NonSlender &&
                flangeCompactnessBot == CompactnessClassAxialCompression.NonSlender)
            {
                column = new IShapeCompact(Section, IsRolled, L_x, L_y, L_z, Log);
                //if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop)
                //{
                //    return new IShapeCompact(SectionI, IsRolledShape, L_ex, L_ey, L_ez, log);
                //}
                //else
                //{
                //    throw new NotImplementedException();
                //}
            }
            else
            {
                column = new IShapeSlenderElements(Section, IsRolled, L_x, L_y, L_z, Log);
            }
            return(column);
        }
コード例 #4
0
 public BeamRectangularHss(ISteelSection section, FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis, ICalcLog CalcLog)
     : base(section, CalcLog)
 {
     GetSectionValues();
     this.MomentAxis        = MomentAxis;
     FlangeCompactnessClass = GetFlangeCompactness(compressionFiberPosition, MomentAxis);
 }
コード例 #5
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);

	            }
            }
コード例 #6
0
 public SinglySymmetricIBeam(ISteelSection section, bool IsRolledMember, FlexuralCompressionFiberPosition compressionFiberPosition, ICalcLog CalcLog)
 {
     this.section = section;
     this.IsRolledMember = IsRolledMember;
     this.CalcLog = CalcLog;
     this.compressionFiberPosition = compressionFiberPosition;
 }
コード例 #7
0
 public SinglySymmetricIBeam(ISteelSection section, bool IsRolledMember, FlexuralCompressionFiberPosition compressionFiberPosition, ICalcLog CalcLog)
 {
     this.section                  = section;
     this.IsRolledMember           = IsRolledMember;
     this.CalcLog                  = CalcLog;
     this.compressionFiberPosition = compressionFiberPosition;
 }
コード例 #8
0
        public double GetUtilizationRatio(HssKConnectionLoadCaseData LoadCase, out double RequiredAxialStrenghPro,
                                          out double RequiredMomentStrengthMro)
        {
            ISteelSection chordSec = Chord as ISteelSection;
            double        Umax     = 0.0;
            double        Fx       = 0.0;
            double        M        = 0.0;

            if (chordSec != null)
            {
                double D      = GetChordDiameter();
                var    forces = Chord.Forces.Where(f => f.LoadCaseName == LoadCase.LoadCaseName).ToList();
                foreach (var f in forces)
                {
                    Fx = Math.Abs(f.Fx);
                    M  = Math.Sqrt(Math.Pow(f.My, 2) + Math.Pow(f.Mz, 2));
                    double U = GetUtilizationRatio(chordSec, Fx, M);
                }
            }
            else
            {
                throw new Exception("Chord Member must implement ISteelSection interface");
            }

            RequiredAxialStrenghPro   = Fx;
            RequiredMomentStrengthMro = M;
            return(Umax);
        }
コード例 #9
0
        public BeamRectangularHss(ISteelSection section, FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis, ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            GetSectionValues();
            this.MomentAxis = MomentAxis;
            FlangeCompactnessClass = GetFlangeCompactness(compressionFiberPosition, MomentAxis);

        }
コード例 #10
0
ファイル: F10-Angle.cs プロジェクト: jerem48/Wosad.Design
        public BeamAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation, MomentAxis MomentAxis,
                         AngleOrientation AngleOrientation = AngleOrientation.ShortLegVertical)
            : base(section, CalcLog, AngleOrientation)
        {
            this.AngleRotation    = AngleRotation;
            this.AngleOrientation = AngleOrientation;
            this.MomentAxis       = MomentAxis;

            GetSectionValues();
        }
コード例 #11
0
ファイル: I-SlenderWeb.cs プロジェクト: jerem48/Wosad.Design
 public BeamISlenderWeb(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog)
     : base(section, IsRolledMember, CalcLog)
 {
     SectionI = this.Section as ISectionI;
     if (section == null)
     {
         throw new SectionWrongTypeException(typeof(ISectionI));
     }
     GetSectionValues();
 }
コード例 #12
0
        public ISteelSection GetHssSteelSection()
        {
            ISteelSection s = Hss.Section as ISteelSection;

            if (s == null)
            {
                throw new Exception("Hss must implement ISteelSection interface");
            }
            return(s);
        }
コード例 #13
0
ファイル: I-SlenderWeb.cs プロジェクト: Wosad/Wosad.Design
        public BeamISlenderWeb(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog)
            : base(section, IsRolledMember, CalcLog)
        {

            SectionI = this.Section as ISectionI;
            if (section == null)
            {
                throw new SectionWrongTypeException(typeof(ISectionI));
            }
            GetSectionValues();
        }
コード例 #14
0
ファイル: F10-Angle.cs プロジェクト: Wosad/Wosad.Design
        public BeamAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation,  MomentAxis MomentAxis, 
            AngleOrientation AngleOrientation= AngleOrientation.ShortLegVertical)
            : base(section, CalcLog, AngleOrientation)
        {
            this.AngleRotation = AngleRotation;
            this.AngleOrientation = AngleOrientation;
            this.MomentAxis = MomentAxis;

            GetSectionValues();

        }
コード例 #15
0
 public RhsNonSlender(ISteelSection Section, double L_ex, double L_ey, double L_ez)
     : base(Section, L_ex, L_ey, L_ez)
 {
     if (Section.Shape is ISectionTube)
     {
         SectionRhs = Section.Shape as ISectionTube;
     }
     else
     {
         throw new Exception("Section of wrong type: Need ISectionTube");
     }
 }
コード例 #16
0
            public IShapeMember(ISteelSection Section, bool IsRolledShape,
                                FlexuralCompressionFiberPosition compressionFiberPosition)
            {
                double b;
                double tf;


                if (Section.Shape is ISectionI)
                {
                    ISectionI sectI = Section.Shape as ISectionI;

                    switch (compressionFiberPosition)
                    {
                    case FlexuralCompressionFiberPosition.Top:
                        b  = sectI.b_fTop;
                        tf = sectI.t_fTop;
                        break;

                    case FlexuralCompressionFiberPosition.Bottom:
                        b  = sectI.b_fBot;
                        tf = sectI.t_fBot;
                        break;

                    default:
                        throw new CompressionFiberPositionException();
                    }


                    //flange compactness
                    if (IsRolledShape == true)
                    {
                        this.FlangeCompactness = new FlangeOfRolledIShape(Section.Material, b / 2.0, tf);
                    }
                    else
                    {
                        this.FlangeCompactness = new FlangeOfBuiltUpI(Section.Material, sectI, compressionFiberPosition);
                    }

                    //web compactness

                    bool isDoublySymmetric = ShapeISymmetry.IsDoublySymmetric(Section.Shape);


                    if (isDoublySymmetric == true)
                    {
                        WebCompactness = new WebOfDoublySymI(Section.Material, sectI);
                    }
                    else
                    {
                        WebCompactness = new WebOfSinglySymI(Section.Material, sectI, compressionFiberPosition);
                    }
                }
            }
コード例 #17
0
ファイル: RhsSlender.cs プロジェクト: jerem48/Wosad.Design
 public RhsSlender(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog)
     : base(Section, L_x, L_y, L_z, CalcLog)
 {
     if (Section.Shape is ISectionTube)
     {
         SectionRhs = Section.Shape as ISectionTube;
     }
     else
     {
         throw new Exception("Section of wrong type: Need ISectionTube");
     }
 }
コード例 #18
0
 public ChsSlender(ISteelSection Section, double L_x, double L_y, double L_z)
     : base(Section, L_x, L_y, L_z)
 {
     if (Section.Shape is ISectionPipe)
     {
         this.SectionPipe = Section.Shape as ISectionPipe;
     }
     else
     {
         throw new Exception("Section of wrong type: Need ISectionPipe");
     }
 }
コード例 #19
0
            public IShapeMember(ISteelSection Section, bool IsRolledShape, 
                FlexuralCompressionFiberPosition compressionFiberPosition)
            {

                double b;
                double tf;


                if (Section.Shape is ISectionI)
	            {
                ISectionI sectI = Section.Shape as ISectionI;

                switch (compressionFiberPosition)
                {
                    case FlexuralCompressionFiberPosition.Top:
                        b = sectI.b_fTop;
                        tf = sectI.t_fTop;
                        break;
                    case FlexuralCompressionFiberPosition.Bottom:
                        b = sectI.b_fBot;
                        tf = sectI.t_fBot;
                        break;
                    default:
                        throw new CompressionFiberPositionException();
                }


                //flange compactness
                if (IsRolledShape == true)
                {
                    this.FlangeCompactness = new FlangeOfRolledIShape(Section.Material, b / 2.0, tf);
                }
                else
                {
                    this.FlangeCompactness = new FlangeOfBuiltUpI(Section.Material, sectI, compressionFiberPosition);
                }

                //web compactness

                bool isDoublySymmetric = ShapeISymmetry.IsDoublySymmetric(Section.Shape);


                if (isDoublySymmetric == true)
                {
                    WebCompactness = new WebOfDoublySymI(Section.Material, sectI);
                }
                else
                {
                    WebCompactness = new WebOfSinglySymI(Section.Material, sectI, compressionFiberPosition);
                } 
	            }
            }
コード例 #20
0
ファイル: F9-Tee.cs プロジェクト: jerem48/Wosad.Design
 public BeamTee(ISteelSection section, ICalcLog CalcLog)
     : base(section, CalcLog)
 {
     if (section is ISectionTee)
     {
         SectionTee = section as ISectionTee;
     }
     else
     {
         throw new SectionWrongTypeException(typeof(ISectionTee));
     }
     GetSectionValues();
 }
コード例 #21
0
ファイル: RhsNonSlender.cs プロジェクト: Wosad/Wosad.Design
        public RhsNonSlender(ISteelSection Section, double L_ex, double L_ey, double L_ez, ICalcLog CalcLog)
            : base(Section,L_ex,L_ey, L_ez, CalcLog)
        {
            if (Section.Shape is ISectionTube)
            {
                SectionRhs = Section.Shape as ISectionTube;
            }
            else
            {
                throw new Exception("Section of wrong type: Need ISectionTube");
            }

        }
コード例 #22
0
        public BeamSolid(ISteelSection section, ICalcLog CalcLog, MomentAxis MomentAxis) :
            base(section, CalcLog)
        {
            this.MomentAxis = MomentAxis;
            GetSectionValues();
            sectionSolid = null;
            ISolidShape s = Section.Shape as ISolidShape;

            if (s == null)
            {
                throw new SectionWrongTypeException(typeof(ISolidShape));
            }
        }
コード例 #23
0
 public TeeMember(ISteelSection Section)
 {
     if (Section.Shape is ISectionTee)
     {
         ISectionTee tee = Section.Shape as ISectionTee;
         FlangeCompactness = new FlangeOfTee(Section.Material, tee);
         WebCompactness    = new StemOfTee(Section.Material, tee);
     }
     else
     {
         throw new SectionWrongTypeException(typeof(ISectionTee));
     }
 }
コード例 #24
0
           //ICompactnessElement FlangeCompactness;
           //ICompactnessElement WebCompactness;

           public HollowMember(ISteelSection section,
                FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
            {
                ISection Section = section.Shape;
                if (Section is ISectionTube|| Section is ISectionPipe || Section is ISectionBox)
                {
                    if (Section is ISectionTube)
                    {
                        ISectionTube tube = Section as ISectionTube;
                        if (MomentAxis == MomentAxis.XAxis)
                        {
                            FlangeCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis);
                            WebCompactness = new WebOfRhs(section.Material, tube, MomentAxis);
                        }
                        else
                        {
                            WebCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis);
                            FlangeCompactness = new WebOfRhs(section.Material, tube, MomentAxis);
                        }
                        

                    }

                    if (Section is ISectionPipe)
                    {
                        ISectionPipe pipe = Section as ISectionPipe;
                        FlangeCompactness = new WallOfChs(section.Material, pipe);
                        WebCompactness = new WallOfChs(section.Material, pipe);
                    }

                    if (Section is ISectionBox)
                    {
                        ISectionBox box = Section as ISectionBox;
                        if (MomentAxis == MomentAxis.XAxis)
                        {
                            FlangeCompactness = new FlangeOfBox(section.Material, box);
                            WebCompactness = new WebOfBox(section.Material, box);
                        }
                        else
                        {
                            WebCompactness = new FlangeOfBox(section.Material, box);
                            FlangeCompactness = new WebOfBox(section.Material, box);
                        }
                    } 
                }
                else
                {
                    throw new SectionWrongTypeException("ISectionTube, ISectionPipe or ISectionBox");
                }

            }
コード例 #25
0
ファイル: F11-SolidShape.cs プロジェクト: Wosad/Wosad.Design
        public BeamSolid(ISteelSection section, ICalcLog CalcLog, MomentAxis MomentAxis) : 
            base(section, CalcLog)
        {
            this.MomentAxis = MomentAxis;
                GetSectionValues();
                sectionSolid = null;
                ISolidShape s = Section.Shape as ISolidShape;

                if (s == null)
                {
                    throw new SectionWrongTypeException(typeof(ISolidShape));
                }

        }
コード例 #26
0
ファイル: IShapeCompact.cs プロジェクト: jerem48/Wosad.Design
        public IShapeCompact(ISteelSection Section, bool IsRolled, double L_x, double L_y, double L_z, ICalcLog CalcLog)
            : base(Section, L_x, L_y, L_z, CalcLog)
        {
            if (Section.Shape is ISectionI)
            {
                SectionI = Section.Shape as ISectionI;
            }
            else
            {
                throw new Exception("Section of wrong type: Need ISectionI");
            }

            this.IsRolled = IsRolled;
        }
コード例 #27
0
            //ICompactnessElement FlangeCompactness;
            //ICompactnessElement WebCompactness;

            public HollowMember(ISteelSection section,
                                FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis)
            {
                ISection Section = section.Shape;

                if (Section is ISectionTube || Section is ISectionPipe || Section is ISectionBox)
                {
                    if (Section is ISectionTube)
                    {
                        ISectionTube tube = Section as ISectionTube;
                        if (MomentAxis == MomentAxis.XAxis)
                        {
                            FlangeCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis);
                            WebCompactness    = new WebOfRhs(section.Material, tube, MomentAxis);
                        }
                        else
                        {
                            WebCompactness    = new FlangeOfRhs(section.Material, tube, MomentAxis);
                            FlangeCompactness = new WebOfRhs(section.Material, tube, MomentAxis);
                        }
                    }

                    if (Section is ISectionPipe)
                    {
                        ISectionPipe pipe = Section as ISectionPipe;
                        FlangeCompactness = new WallOfChs(section.Material, pipe);
                        WebCompactness    = new WallOfChs(section.Material, pipe);
                    }

                    if (Section is ISectionBox)
                    {
                        ISectionBox box = Section as ISectionBox;
                        if (MomentAxis == MomentAxis.XAxis)
                        {
                            FlangeCompactness = new FlangeOfBox(section.Material, box);
                            WebCompactness    = new WebOfBox(section.Material, box);
                        }
                        else
                        {
                            WebCompactness    = new FlangeOfBox(section.Material, box);
                            FlangeCompactness = new WebOfBox(section.Material, box);
                        }
                    }
                }
                else
                {
                    throw new SectionWrongTypeException("ISectionTube, ISectionPipe or ISectionBox");
                }
            }
コード例 #28
0
        public BeamCircularHss(ISteelSection section, ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            if (section is ISectionPipe)
            {
                SectionPipe = section as ISectionPipe;
            }
            else
            {
                throw new SectionWrongTypeException(typeof(ISectionTube));
            }


            GetSectionValues();
        }
コード例 #29
0
ファイル: F8-CircularHSS.cs プロジェクト: Wosad/Wosad.Design
 public BeamCircularHss(ISteelSection section, ICalcLog CalcLog)
     : base(section, CalcLog)
 {
     if (section is ISectionPipe)
     {
         SectionPipe = section as ISectionPipe;
     }
     else
     {
         throw new SectionWrongTypeException(typeof(ISectionTube));
     }
         
     
     GetSectionValues();
 }
コード例 #30
0
           ICompactnessElement FlangeCompactness;
           ICompactnessElement WebCompactness;

           public TeeMember(ISteelSection Section)
            {

                if (Section.Shape is ISectionTee)
                {
                    ISectionTee tee = Section.Shape as ISectionTee;
                    FlangeCompactness = new FlangeOfTee(Section.Material, tee);
                    WebCompactness = new StemOfTee(Section.Material, tee);
                }
                else
                {
                    throw new SectionWrongTypeException(typeof(ISectionTee));
コード例 #31
0
        public IShapeCompact(ISteelSection Section, bool IsRolled, double L_x, double L_y, double L_z)
            : base(Section, L_x, L_y, L_z)
        {
            bool IsValidShape = CheckValidShape(Section.Shape);

            if (IsValidShape == true)
            {
                SetShape(Section.Shape);
            }
            else
            {
                throw new Exception("Section of wrong type: Need ISectionI");
            }

            this.IsRolled = IsRolled;
        }
コード例 #32
0
        public FlexuralMemberChsBase(ISteelSection section, ICalcLog CalcLog)
            : base(section,  CalcLog)
        {
            sectionPipe = null;
            ISectionPipe s = Section as ISectionPipe;

            if (s == null)
            {
                throw new SectionWrongTypeException(typeof(ISectionPipe));
            }
            else
            {
                sectionPipe = s;
                //compactness = new ShapeCompactness.HollowMember(Section, CompressionLocation.Top);
            }
        }
コード例 #33
0
        public FlexuralMemberAngleBase(ISteelSection section, ICalcLog CalcLog, AngleOrientation AngleOrientation)
            : base(section, CalcLog)
        {
            sectionAngle = null;
            ISectionAngle s = Section.Shape as ISectionAngle;

            if (s == null)
            {
                throw new SectionWrongTypeException(typeof(ISectionAngle));
            }
            else
            {
                sectionAngle = s;
                compactness = new ShapeCompactness.AngleMember(s, section.Material, AngleOrientation);
            }
        }
コード例 #34
0
        public BeamDoubleAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation, AngleOrientation AngleOrientation)
            : base(section, CalcLog, AngleOrientation)
        {
            if (section is ISectionDoubleAngle)
            {
                SectionDoubleAngle = section as ISectionDoubleAngle;
            }
            else
            {
                throw new SectionWrongTypeException(typeof(ISectionTube));
            }
            this.AngleOrientation = AngleOrientation;
            this.AngleRotation    = AngleRotation;

            GetSectionValues();
        }
コード例 #35
0
        public FlexuralMemberChsBase(ISteelSection section, ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            sectionPipe = null;
            ISectionPipe s = Section as ISectionPipe;

            if (s == null)
            {
                throw new SectionWrongTypeException(typeof(ISectionPipe));
            }
            else
            {
                sectionPipe = s;
                //compactness = new ShapeCompactness.HollowMember(Section, CompressionLocation.Top);
            }
        }
コード例 #36
0
        public FlexuralMemberAngleBase(ISteelSection section, ICalcLog CalcLog, AngleOrientation AngleOrientation)
            : base(section, CalcLog)
        {
            sectionAngle = null;
            ISectionAngle s = Section.Shape as ISectionAngle;

            if (s == null)
            {
                throw new SectionWrongTypeException(typeof(ISectionAngle));
            }
            else
            {
                sectionAngle = s;
                compactness  = new ShapeCompactness.AngleMember(s, section.Material, AngleOrientation);
            }
        }
コード例 #37
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;
            }
        }
コード例 #38
0
        public FlexuralMemberIBase(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            this.isRolledMember = IsRolledMember;


            if (!(Section.Shape is IDoubleFlangeMember))
            {
                throw new SectionWrongTypeException("I-section or Channel");
            }
            else
            {
                if (Section.Shape is ISectionI)
                {
                    ISectionI s = Section.Shape as ISectionI;
                }
            }
        }
コード例 #39
0
        public double GetUtilizationRatio(ISteelSection Section, double RequiredAxialStrenghPro, double RequiredMomentStrengthMro)
        {
            double U = 0;
            double Fy = Section.Material.YieldStress;
            double Fc = 0.0;

            Fc = Fy;


            ISection sec = Section.Shape;
            double Ag = sec.A;
            double S = Math.Min(sec.S_xBot, sec.S_xTop);
            double Pro = RequiredAxialStrenghPro;
            double Mro = RequiredMomentStrengthMro;
            //(K1-6) from TABLE K1.2
            U = Math.Abs(Pro / (Fc * Ag) + Mro / (Fc * S));
            return U;
        }
コード例 #40
0
        public double GetUtilizationRatio(ISteelSection Section, double RequiredAxialStrenghPro, double RequiredMomentStrengthMro)
        {
            double U  = 0;
            double Fy = Section.Material.YieldStress;
            double Fc = 0.0;

            Fc = Fy;


            ISection sec = Section.Shape;
            double   Ag  = sec.A;
            double   S   = Math.Min(sec.S_xBot, sec.S_xTop);
            double   Pro = RequiredAxialStrenghPro;
            double   Mro = RequiredMomentStrengthMro;

            //(K1-6) from TABLE K1.2
            U = Math.Abs(Pro / (Fc * Ag) + Mro / (Fc * S));
            return(U);
        }
コード例 #41
0
        public double  GetChordStressInteractionFactorQf(bool ConnectingSurfaceInTension, double RequiredAxialStrenghPro, double RequiredMomentStrengthMro)
        {
            double Qf = 0.0;

            if (ConnectingSurfaceInTension == true)
            {
                //(K1-5a)
                Qf = 1.0;
            }
            else
            {
                ISteelSection s = Chord.Section;
                double        U = GetUtilizationRatio(s, RequiredAxialStrenghPro, RequiredMomentStrengthMro);
                //(K1-5b)
                Qf = 1.0 - 0.3 * U * (1.0 + U);
            }

            return(Qf);
        }
コード例 #42
0
ファイル: F9-DoubleAngle.cs プロジェクト: Wosad/Wosad.Design
        public BeamDoubleAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation, AngleOrientation AngleOrientation)
            : base(section, CalcLog, AngleOrientation)
        {

            if (section is ISectionDoubleAngle)
            {

                    SectionDoubleAngle = section as ISectionDoubleAngle;


            }
            else
            {
                throw new SectionWrongTypeException(typeof(ISectionTube));
            }
            this.AngleOrientation = AngleOrientation;
            this.AngleRotation = AngleRotation;

            GetSectionValues();
        }
コード例 #43
0
        public ISteelCompressionMember GetChsShape(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog)
        {
            ISteelCompressionMember column       = null;
            IShapeCompactness       compactnessX = new ShapeCompactness.HollowMember(Section, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Common.Entities.MomentAxis.XAxis);
            IShapeCompactness       compactnessY = new ShapeCompactness.HollowMember(Section, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Common.Entities.MomentAxis.YAxis);
            ICalcLog Log = new CalcLog();

            CompactnessClassAxialCompression webCompactnessX = compactnessX.GetWebCompactnessCompression();
            CompactnessClassAxialCompression webCompactnessY = compactnessY.GetWebCompactnessCompression();

            if (webCompactnessX == CompactnessClassAxialCompression.NonSlender && webCompactnessY == CompactnessClassAxialCompression.NonSlender)
            {
                return(new ChsNonSlender(Section, L_x, L_y, L_z, CalcLog));
            }
            else
            {
                return(new ChsSlender(Section, L_x, L_y, L_z, CalcLog));
            }
            return(column);
        }
コード例 #44
0
        public FlexuralMemberIBase(ISteelSection section, bool IsRolledMember,  ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            
            this.isRolledMember = IsRolledMember;


            if (!(Section.Shape is IDoubleFlangeMember))
            {
                throw new SectionWrongTypeException("I-section or Channel");

            }
            else
            {
                if (Section.Shape is ISectionI)
                {
                    ISectionI s = Section.Shape as ISectionI;
                }
            }
        }
コード例 #45
0
ファイル: RhsShapeFactory.cs プロジェクト: Wosad/Wosad.Design
        public ISteelCompressionMember GetRhsShape(ISteelSection Section, double L_ex, double L_ey, double L_ez, ICalcLog CalcLog)
        {

            ISteelCompressionMember column = null;
            IShapeCompactness compactnessX = new ShapeCompactness.HollowMember(Section, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Common.Entities.MomentAxis.XAxis);
            IShapeCompactness compactnessY = new ShapeCompactness.HollowMember(Section, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Common.Entities.MomentAxis.YAxis);
            ICalcLog Log = new CalcLog();

            CompactnessClassAxialCompression webCompactnessX = compactnessX.GetWebCompactnessCompression();
            CompactnessClassAxialCompression webCompactnessY = compactnessY.GetWebCompactnessCompression();

            if (webCompactnessX ==  CompactnessClassAxialCompression.NonSlender && webCompactnessY == CompactnessClassAxialCompression.NonSlender )
            {
                return new RhsNonSlender(Section, L_ex, L_ey, L_ez, CalcLog);
            }
            else
            {
                return new RhsSlender(Section, L_ex, L_ey, L_ez, CalcLog);
            }
            return column;
        }
コード例 #46
0
        public FlexuralMemberRhsBase(ISteelSection section, ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            //sectionTube = null;

            if (Section.Shape is ISectionTube || Section.Shape is ISectionBox)
            {
                this.Section = section;
                if (Section.Shape is ISectionTube)
                {
                    ShapeTube = Section.Shape as ISectionTube;
                }
                else
                {
                    ShapeBox = Section.Shape as ISectionBox;
                }
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" flexural calculation of box or rectangular HSS beam");
            }
        }
コード例 #47
0
        public FlexuralMemberTeeBase(ISteelSection section, ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            sectionTee   = null;
            this.Section = section;

            ISectionTee sTee = section as ISectionTee;

            if (sTee == null)
            {
                ISectionDoubleAngle sDL = section as ISectionDoubleAngle;
                if (sDL == null)
                {
                    throw new Exception("Section must be of type SectionTee or SectionDoubleAngle");
                }
            }
            else
            {
                sectionTee  = sTee;
                Compactness = GetShapeCompactness();
            }
        }
コード例 #48
0
        public FlexuralMemberTeeBase(ISteelSection section, ICalcLog CalcLog)
            : base(section, CalcLog)
        {
            sectionTee = null;
            this.Section = section;

            ISectionTee sTee = section as ISectionTee;

            if (sTee == null)
            {
                ISectionDoubleAngle sDL = section as ISectionDoubleAngle;
                if (sDL ==null)
                {
                    throw new Exception("Section must be of type SectionTee or SectionDoubleAngle");
                }
                
            }
            else
            {
                sectionTee = sTee;
                Compactness = GetShapeCompactness();
            }
        }
コード例 #49
0
        public FlexuralMemberRhsBase(ISteelSection section, ICalcLog CalcLog)
            : base(section,  CalcLog)
        {
            //sectionTube = null;

            if (Section.Shape is ISectionTube || Section.Shape is ISectionBox)
            {
                this.Section = section;
                if (Section.Shape is ISectionTube)
                {
                    ShapeTube = Section.Shape as ISectionTube;
                }
                else
                {
                    ShapeBox = Section.Shape as ISectionBox;
                }
            }
            else
            {
                throw new ShapeTypeNotSupportedException(" flexural calculation of box or rectangular HSS beam");
            }

        }
コード例 #50
0
ファイル: AffectedElement.cs プロジェクト: Wosad/Wosad.Design
 public AffectedElement(ISteelSection Section, ICalcLog CalcLog)
     : base(CalcLog)
 {
     this.section = Section;
 }
コード例 #51
0
            public ColumnFlexuralAndTorsionalBuckling(ISteelSection Section, double L_ex, double L_ey, double L_ez, ICalcLog CalcLog)
            : base(Section,L_ex,L_ey, CalcLog)
        {
                this.L_ez = L_ez;

        }
        public ColumnFlexuralAndTorsionalBucklingSinglySymmetric(ISteelSection Section, double L_x, double L_y,  double L_z, ICalcLog CalcLog)
            : base(Section,L_x,L_y, L_z, CalcLog)
        {

        }
コード例 #53
0
            //    public CompressionMemberRectangle(ISteelSection Section, double L_x, double L_y, double K_x, double K_y, ICalcLog CalcLog) :
            //base(Section, L_x,L_y,K_x,K_y, CalcLog)

        public CompressionMemberRectangle(ISteelSection Section, double L_x, double L_y, double L_z,  ICalcLog CalcLog) :
            base(Section, L_x,L_y, L_z, CalcLog)
        {

        }
        //public ColumnDoublySymmetric(ISteelSection Section, double L_x, double L_y, double K_x, double K_y, ICalcLog CalcLog)
        //    : base(Section,L_x,L_y,K_x,K_y, CalcLog)
             public ColumnDoublySymmetric(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog)
            : base(Section,L_x,L_y,L_z, CalcLog)
        {

        }
コード例 #55
0
 public BeamINoncompactWebCompactFlange(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog)
     : base(section, IsRolledMember, CalcLog)
 {
 }
コード例 #56
0
ファイル: ColumnTee.cs プロジェクト: Wosad/Wosad.Design
        //        public ColumnTee(ISteelSection Section, double L_x, double L_y, double K_x, double K_y, ICalcLog CalcLog)
        //    : base(Section, L_x, L_y,K_x,K_y, CalcLog)
        //{


        public ColumnTee(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog)
            : base(Section, L_x, L_y, L_z,  CalcLog)
        {
            //(E4-2)
        }
コード例 #57
0
ファイル: I-WeakAxis.cs プロジェクト: Wosad/Wosad.Design
 public BeamIWeakAxis (ISteelSection section, bool IsRolledMember, ICalcLog CalcLog)
     : base(section, IsRolledMember, CalcLog)
 {
 }
コード例 #58
0
        public AffectedElementInShear(ISteelSection Section,ICalcLog CalcLog)
            : base(Section, CalcLog)
        {

        }
コード例 #59
0
 public ColumnFlexuralBuckling(ISteelSection Section, double L_ex, double L_ey, ICalcLog CalcLog)
     : base(Section, L_ex, L_ey, CalcLog)
 {
 }
コード例 #60
0
ファイル: FlexuralMember.cs プロジェクト: Wosad/Wosad.Design
        public FlexuralMember(ISteelSection section, ICalcLog CalcLog)
            : base(section, CalcLog)
        {

        }