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