public ChsTrussTConnection(SteelChsSection Chord, SteelChsSection MainBranch, double thetaMain, AxialForceType ForceTypeMain, 
 SteelChsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeSecond, bool IsTensionChord,
 double P_uChord, double M_uChord): base( Chord,  MainBranch,  thetaMain,  ForceTypeMain, 
 SecondBranch,  thetaSecond,  ForceTypeSecond,  IsTensionChord,
 P_uChord,  M_uChord)
 {
 }
Exemple #2
0
 public ChsTrussYConnection(SteelChsSection Chord, SteelChsSection MainBranch, double thetaMain, AxialForceType ForceTypeMain,
                            SteelChsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeSecond, bool IsTensionChord,
                            double P_uChord, double M_uChord) : base(Chord, MainBranch, thetaMain, ForceTypeMain,
                                                                     SecondBranch, thetaSecond, ForceTypeSecond, IsTensionChord,
                                                                     P_uChord, M_uChord)
 {
 }
        public RhsTYXTrussBranchConnection(SteelRhsSection Chord, SteelRhsSection BranchMain, double thetaMain,
            SteelRhsSection BranchSecondary, double thetaSecondary, AxialForceType ForceTypeMain, AxialForceType ForceTypeSecond, bool IsTensionChord,
            double P_uChord, double M_uChord)
            : base( Chord,  BranchMain,  thetaMain, ForceTypeMain,  BranchSecondary,  thetaSecondary, ForceTypeSecond, IsTensionChord,  P_uChord,  M_uChord)
        {

        }
 public ChsTrussBranchConnection(SteelChsSection Chord, SteelChsSection MainBranch, double thetaMain, AxialForceType ForceTypeMain, 
     SteelChsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeSecond, bool IsTensionChord,
     double P_uChord, double M_uChord): base(IsTensionChord,P_uChord,M_uChord)
 {
     this.Chord = Chord;
     this.MainBranch       =MainBranch   ;
     this.thetaMain        =thetaMain    ;             
 }
        //no overrides compared to base RhsTYXTrussConnection class

        public RhsTrussYConnection(SteelRhsSection Chord, SteelRhsSection MainBranch, double thetaMain,
                                   SteelRhsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeMain, AxialForceType ForceTypeSecond, bool IsTensionChord,
                                   double P_uChord, double M_uChord)
            : base(Chord, MainBranch, thetaMain, SecondBranch, thetaSecond, ForceTypeMain, ForceTypeSecond, IsTensionChord,
                   P_uChord, M_uChord)
        {
            if (thetaSecond != thetaMain)
            {
                throw new Exception("Please specify same angles theta_Main and theta_Second for Y connection");
            }
            if (MainBranch.Section.B != SecondBranch.Section.B || MainBranch.Section.H != SecondBranch.Section.H)
            {
                throw new Exception("Please specify same values for main and secondary branch for Y connection.");
            }
        }
Exemple #6
0
 public RhsTrussXConnection(SteelRhsSection Chord, SteelRhsSection MainBranch, double thetaMain,
                            SteelRhsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeMain, AxialForceType ForceTypeSecond, bool IsTensionChord,
                            double P_uChord, double M_uChord)
     : base(Chord, MainBranch, thetaMain, SecondBranch, thetaSecond, ForceTypeMain, ForceTypeSecond, IsTensionChord,
            P_uChord, M_uChord)
 {
     if (ForceTypeMain == AxialForceType.Tension && ForceTypeSecond != AxialForceType.Tension)
     {
         throw new Exception("Specify the same type of force for both branches or switch to K connection");
     }
     if (ForceTypeSecond == AxialForceType.Tension && ForceTypeMain != AxialForceType.Tension)
     {
         throw new Exception("Specify the same type of force for both branches or switch to K connection");
     }
 }
        public RhsTrussXConnection(SteelRhsSection Chord, SteelRhsSection MainBranch, double thetaMain,
            SteelRhsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeMain, AxialForceType ForceTypeSecond, bool IsTensionChord,
            double P_uChord, double M_uChord)
            : base(Chord, MainBranch, thetaMain, SecondBranch, thetaSecond, ForceTypeMain, ForceTypeSecond, IsTensionChord,
            P_uChord, M_uChord)
        {
            if (ForceTypeMain == AxialForceType.Tension && ForceTypeSecond != AxialForceType.Tension )
            {
                throw new Exception("Specify the same type of force for both branches or switch to K connection");
            }
            if (ForceTypeSecond == AxialForceType.Tension && ForceTypeMain != AxialForceType.Tension)
            {
                throw new Exception("Specify the same type of force for both branches or switch to K connection");
            }

        }
        /// <summary>
        /// K-connection base class
        /// NOTE THAT IT IS CRITICAL TO SPECIFY MAIN BRANCH AS COMPRESSION BRANCH
        /// </summary>
        /// <param name="Chord">Chord object instance</param>
        /// <param name="MainBranch">Branch object instance</param>
        /// <param name="thetaMain">Main branch angle</param>
        /// <param name="ForceTypeMain">Main branch force type</param>
        /// <param name="SecondBranch">Branch object instance</param>
        /// <param name="thetaSecond">Secondary branch angle</param>
        /// <param name="ForceTypeSecond">Secondary branch force type</param>
        /// <param name="IsTensionChord">Identifies if branch is in tension</param>
        /// <param name="P_uChord">Design axial force in chord</param>
        /// <param name="M_uChord">Design moment in chord</param>
        /// <param name="g">Gap</param>
        public ChsTrussKConnection(SteelChsSection Chord, SteelChsSection MainBranch, double thetaMain, AxialForceType ForceTypeMain, 
            SteelChsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeSecond, bool IsTensionChord,
            double P_uChord, double M_uChord, double g): base( Chord,  IsTensionChord,
             P_uChord,  M_uChord)
       {
           this.g = g;
           
            #region Assign chord sections based on forces
           if (ForceTypeMain == AxialForceType.Compression && ForceTypeSecond == AxialForceType.Compression)
           {
               throw new Exception("Branch force types need to be specified to have opposite signs for K conncection");
           }
           if (ForceTypeMain == AxialForceType.Tension && ForceTypeSecond == AxialForceType.Tension)
           {
               throw new Exception("Branch force types need to be specified to have opposite signs for K conncection");
           }
           //if (ForceTypeMain == AxialForceType.Reversible && ForceTypeSecond == AxialForceType.Reversible)
           //{
           //    this.MainBranch = MainBranch;
           //    this.thetaMain = thetaMain;
           //    this.ForceTypeMain = ForceTypeMain;
           //    this.SecondBranch = SecondBranch;
           //    this.thetaSecond = thetaSecond;
           //    this.ForceTypeSecond = ForceTypeSecond;
           //}
           //if (ForceTypeMain == AxialForceType.Compression && ForceTypeSecond == AxialForceType.Reversible)
           //{
               this.MainBranch = MainBranch;
               this.thetaMain = thetaMain;
               this.ForceTypeMain = ForceTypeMain;
               this.SecondBranch = SecondBranch;
               this.thetaSecond = thetaSecond;
               this.ForceTypeSecond = ForceTypeSecond;
           //}
           //if (ForceTypeMain == AxialForceType.Tension && ForceTypeSecond == AxialForceType.Reversible)
           //{

           //    this.MainBranch = SecondBranch;
           //    this.thetaMain = thetaSecond;
           //    this.ForceTypeMain = ForceTypeSecond;
           //    this.SecondBranch = MainBranch;
           //    this.thetaSecond = thetaMain;
           //    this.ForceTypeSecond = ForceTypeMain;
           //} 
           #endregion

       }
        //no overrides compared to base RhsTYXTrussConnection class

        public RhsTrussYConnection(SteelRhsSection Chord, SteelRhsSection MainBranch, double thetaMain,
            SteelRhsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeMain, AxialForceType ForceTypeSecond, bool IsTensionChord,
            double P_uChord, double M_uChord)
            : base(Chord, MainBranch, thetaMain, SecondBranch, thetaSecond, ForceTypeMain, ForceTypeSecond, IsTensionChord,
            P_uChord, M_uChord)
        {

            if (thetaSecond != thetaMain)
            {
                throw new Exception("Please specify same angles theta_Main and theta_Second for Y connection");
            }
            if (MainBranch.Section.B != SecondBranch.Section.B || MainBranch.Section.H != SecondBranch.Section.H)
            {
                throw new Exception("Please specify same values for main and secondary branch for Y connection.");
            }

        }
        /// <summary>
        /// K-connection base class
        /// NOTE THAT IT IS CRITICAL TO SPECIFY MAIN BRANCH AS COMPRESSION BRANCH
        /// </summary>
        /// <param name="Chord">Chord object instance</param>
        /// <param name="MainBranch">Branch object instance</param>
        /// <param name="thetaMain">Main branch angle</param>
        /// <param name="ForceTypeMain">Main branch force type</param>
        /// <param name="SecondBranch">Branch object instance</param>
        /// <param name="thetaSecond">Secondary branch angle</param>
        /// <param name="ForceTypeSecond">Secondary branch force type</param>
        /// <param name="IsTensionChord">Identifies if branch is in tension</param>
        /// <param name="P_uChord">Design axial force in chord</param>
        /// <param name="M_uChord">Design moment in chord</param>
        /// <param name="g">Gap</param>
        public ChsTrussKConnection(SteelChsSection Chord, SteelChsSection MainBranch, double thetaMain, AxialForceType ForceTypeMain,
                                   SteelChsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeSecond, bool IsTensionChord,
                                   double P_uChord, double M_uChord, double g) : base(Chord, IsTensionChord,
                                                                                      P_uChord, M_uChord)
        {
            this.g = g;

            #region Assign chord sections based on forces
            if (ForceTypeMain == AxialForceType.Compression && ForceTypeSecond == AxialForceType.Compression)
            {
                throw new Exception("Branch force types need to be specified to have opposite signs for K conncection");
            }
            if (ForceTypeMain == AxialForceType.Tension && ForceTypeSecond == AxialForceType.Tension)
            {
                throw new Exception("Branch force types need to be specified to have opposite signs for K conncection");
            }
            //if (ForceTypeMain == AxialForceType.Reversible && ForceTypeSecond == AxialForceType.Reversible)
            //{
            //    this.MainBranch = MainBranch;
            //    this.thetaMain = thetaMain;
            //    this.ForceTypeMain = ForceTypeMain;
            //    this.SecondBranch = SecondBranch;
            //    this.thetaSecond = thetaSecond;
            //    this.ForceTypeSecond = ForceTypeSecond;
            //}
            //if (ForceTypeMain == AxialForceType.Compression && ForceTypeSecond == AxialForceType.Reversible)
            //{
            this.MainBranch      = MainBranch;
            this.thetaMain       = thetaMain;
            this.ForceTypeMain   = ForceTypeMain;
            this.SecondBranch    = SecondBranch;
            this.thetaSecond     = thetaSecond;
            this.ForceTypeSecond = ForceTypeSecond;
            //}
            //if (ForceTypeMain == AxialForceType.Tension && ForceTypeSecond == AxialForceType.Reversible)
            //{

            //    this.MainBranch = SecondBranch;
            //    this.thetaMain = thetaSecond;
            //    this.ForceTypeMain = ForceTypeSecond;
            //    this.SecondBranch = MainBranch;
            //    this.thetaSecond = thetaMain;
            //    this.ForceTypeSecond = ForceTypeMain;
            //}
            #endregion
        }
 public RhsTYXTrussBranchConnection(SteelRhsSection Chord, SteelRhsSection BranchMain, double thetaMain,
                                    SteelRhsSection BranchSecondary, double thetaSecondary, AxialForceType ForceTypeMain, AxialForceType ForceTypeSecond, bool IsTensionChord,
                                    double P_uChord, double M_uChord)
     : base(Chord, BranchMain, thetaMain, ForceTypeMain, BranchSecondary, thetaSecondary, ForceTypeSecond, IsTensionChord, P_uChord, M_uChord)
 {
 }
 public RhsTrussBranchConnection(SteelRhsSection Chord, SteelRhsSection MainBranch, double thetaMain, AxialForceType ForceTypeMain,
                                 SteelRhsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeSecond, bool IsTensionChord,
                                 double P_uChord, double M_uChord) : base(IsTensionChord, P_uChord, M_uChord)
 {
     this.Chord           = Chord;
     this.MainBranch      = MainBranch;
     this.thetaMain       = thetaMain;
     this.SecondBranch    = SecondBranch;
     this.thetaSecond     = thetaSecond;
     this.ForceTypeMain   = ForceTypeMain;
     this.ForceTypeSecond = ForceTypeSecond;
 }
        public IHssTrussBranchConnection GetConnection(HssTrussConnectionMemberType MemberType,
                                                       HssTrussConnectionClassification Classification, ISectionHollow ChordSection, ISectionHollow MainBranchSection,
                                                       ISectionHollow SecondaryBranchSection, double F_yChord, double F_yBranch,
                                                       double thetaMainBranch, double thetaSecondaryBranch, AxialForceType ForceTypeMainBranch,
                                                       AxialForceType ForceTypeSecondaryBranch, bool IsTensionChord,
                                                       double P_uChord, double M_uChord,
                                                       double O_v = 0)
        {
            if (MemberType == HssTrussConnectionMemberType.Rhs)
            {
                if (ChordSection is ISectionTube && MainBranchSection is ISectionTube && SecondaryBranchSection is ISectionTube)
                {
                    SteelMaterial   matChord = new SteelMaterial(F_yChord);
                    SteelRhsSection Chord    = new SteelRhsSection(ChordSection as ISectionTube, matChord);


                    SteelMaterial   matBr      = new SteelMaterial(F_yBranch);
                    SteelRhsSection MainBranch = new SteelRhsSection(MainBranchSection as ISectionTube, matBr);

                    SteelRhsSection SecondaryBranch = new SteelRhsSection(SecondaryBranchSection as ISectionTube, matBr);


                    switch (Classification)
                    {
                    case HssTrussConnectionClassification.T:
                        return(new RhsTrussTConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch, ForceTypeMainBranch, ForceTypeSecondaryBranch,
                                                       IsTensionChord, P_uChord, M_uChord));

                        break;

                    case HssTrussConnectionClassification.Y:
                        return(new RhsTrussYConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch, ForceTypeMainBranch, ForceTypeSecondaryBranch,
                                                       IsTensionChord, P_uChord, M_uChord));

                        break;

                    case HssTrussConnectionClassification.X:
                        return(new RhsTrussXConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch, ForceTypeMainBranch, ForceTypeSecondaryBranch,
                                                       IsTensionChord, P_uChord, M_uChord));

                        break;

                    case HssTrussConnectionClassification.GappedK:
                        return(new RhsTrussGappedKConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch,
                                                             ForceTypeMainBranch, ForceTypeSecondaryBranch, IsTensionChord, P_uChord, M_uChord));

                        break;

                    case HssTrussConnectionClassification.OverlappedK:
                        return(new RhsTrussOverlappedConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch,
                                                                ForceTypeMainBranch, ForceTypeSecondaryBranch, IsTensionChord, P_uChord, M_uChord, O_v));

                        break;

                    default:
                        throw new Exception("Connection classification not recognized.");
                        break;
                    }
                }
                else
                {
                    throw new Exception("One of the member section is not of type ISectionTube. Ensure that a rectangular hollow section object type is used for chord and branches.");
                }
            }
            else
            {
                throw new NotImplementedException("Circular HSS truss connections are not supported yet.");
            }
        }
        public IHssTrussBranchConnection GetConnection(HssTrussConnectionMemberType MemberType,
            HssTrussConnectionClassification Classification, ISectionHollow ChordSection, ISectionHollow MainBranchSection,
            ISectionHollow SecondaryBranchSection, double F_yChord, double F_yBranch,
            double thetaMainBranch, double thetaSecondaryBranch, AxialForceType ForceTypeMainBranch, 
            AxialForceType ForceTypeSecondaryBranch, bool IsTensionChord,
            double P_uChord, double M_uChord,
            double O_v=0)
        {
            if (MemberType == HssTrussConnectionMemberType.Rhs)
            {
                if (ChordSection is ISectionTube && MainBranchSection is ISectionTube && SecondaryBranchSection is ISectionTube)
                {

                    SteelMaterial matChord = new SteelMaterial(F_yChord);
                    SteelRhsSection Chord = new SteelRhsSection(ChordSection as ISectionTube, matChord);


                    SteelMaterial matBr = new SteelMaterial(F_yBranch);
                    SteelRhsSection MainBranch = new SteelRhsSection(MainBranchSection as ISectionTube, matBr);

                    SteelRhsSection SecondaryBranch = new SteelRhsSection(SecondaryBranchSection as ISectionTube, matBr);


                    switch (Classification)
                    {
                        case HssTrussConnectionClassification.T:
                            return new RhsTrussTConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch, ForceTypeMainBranch, ForceTypeSecondaryBranch,
                                IsTensionChord, P_uChord, M_uChord);
                            break;
                        case HssTrussConnectionClassification.Y:
                            return new RhsTrussYConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch, ForceTypeMainBranch, ForceTypeSecondaryBranch,
                                IsTensionChord, P_uChord, M_uChord);
                            
                            break;
                        case HssTrussConnectionClassification.X:
                            return new RhsTrussXConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch, ForceTypeMainBranch, ForceTypeSecondaryBranch,
                                IsTensionChord, P_uChord, M_uChord);
                            break;
                        case HssTrussConnectionClassification.GappedK:
                            return new RhsTrussGappedKConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch,
                                ForceTypeMainBranch, ForceTypeSecondaryBranch, IsTensionChord, P_uChord,M_uChord);
                            break;
                        case HssTrussConnectionClassification.OverlappedK:
                            return new RhsTrussOverlappedConnection(Chord, MainBranch, thetaMainBranch, SecondaryBranch, thetaSecondaryBranch,
                                ForceTypeMainBranch, ForceTypeSecondaryBranch, IsTensionChord, P_uChord, M_uChord,O_v);
                            break;
                        default:
                            throw new Exception("Connection classification not recognized.");
                            break;
                    }
                }
                else
                {
                    throw new Exception("One of the member section is not of type ISectionTube. Ensure that a rectangular hollow section object type is used for chord and branches.");
                }

            }
            else
            {
                throw new NotImplementedException("Circular HSS truss connections are not supported yet.");
            }
        }
Exemple #15
0
 public RhsTrussOverlappedConnection(SteelRhsSection Chord, SteelRhsSection MainBranch, double thetaMain,
                                     SteelRhsSection SecondBranch, double thetaSecond, AxialForceType ForceTypeMain, AxialForceType ForceTypeSecond, bool IsTensionChord,
                                     double P_uChord, double M_uChord,
                                     double O_v)
     : base(Chord, MainBranch, thetaMain, ForceTypeMain, SecondBranch, thetaSecond, ForceTypeSecond, IsTensionChord, P_uChord, M_uChord)
 {
     this.O_v = O_v;
 }