internal virtual double GetBranchShearYielding(HssTrussConnectionBranch branch) { double P = 0; double Pn; double theta = branch.Angle; double sinTheta = Math.Sin(theta.ToRadians()); double pi = Math.PI; ISectionPipe section = GetBranchSection(branch); double Fy = branch.Section.Material.YieldStress; double t = section.t_des; double Db = section.D; if (Db < (Db - 2.0 * t)) { //(K2-1) Pn = 0.6 * Fy * t * pi * Db * (1.0 + sinTheta / (2.0 * Math.Pow(sinTheta, 2))); P = Pn * 0.95; } else { P = double.PositiveInfinity; } return(P); }
internal double GetVerticalComponentOfCompressionBranchChordPlastificationForce(string LoadCaseName, double D, double Qf, double Qg) { double PnSinTheta = 0; //var thisLoadCaseData = loadCases.Where(c => c.LoadCaseName == LoadCaseName).ToList()[0]; HssKConnectionLoadCaseData thisLoadCaseData; loadCases.TryGetValue(LoadCaseName, out thisLoadCaseData); if (thisLoadCaseData != null) { HssTrussConnectionBranch branch = thisLoadCaseData.CompressionBranch; ISectionPipe section = GetBranchSection(branch); double Fy = branch.Section.Material.YieldStress; double t = section.t_des; double Db = section.D; //(K2-4) PnSinTheta = Fy * Math.Pow(t, 2) * (2.0 + 11.33 * Db / D) * Qg * Qf; } else { throw new Exception("Could not find branch data for the given load case name"); } return(PnSinTheta); }
internal virtual double GetBranchShearYielding(HssTrussConnectionBranch branch) { double P = 0; double Pn; double theta = branch.Angle; double sinTheta = Math.Sin(theta.ToRadians()); double pi = Math.PI; ISectionPipe section = GetBranchSection(branch); double Fy = branch.Section.Material.YieldStress; double t = section.t_des; double Db = section.D; if (Db<(Db-2.0*t)) { //(K2-1) Pn = 0.6 * Fy * t * pi * Db * (1.0 + sinTheta / (2.0 * Math.Pow(sinTheta, 2))); P = Pn * 0.95; } else { P = double.PositiveInfinity; } return P; }
internal ISectionPipe GetBranchSection(HssTrussConnectionBranch branch) { ISectionPipe chord = branch.Section as ISectionPipe; if (chord == null) { throw new SectionWrongTypeException(typeof(ISectionPipe)); } return chord; }
internal ISectionPipe GetBranchSection(HssTrussConnectionBranch branch) { ISectionPipe chord = branch.Section as ISectionPipe; if (chord == null) { throw new SectionWrongTypeException(typeof(ISectionPipe)); } return(chord); }
internal double GetTensionBranchCapacity(HssKConnectionLoadCaseData loadCase, double D, double Qg, double Qf) { HssTrussConnectionBranch tensionBranch = loadCase.TensionBranch; double P_ChordPlastification = CheckChordPlastificationForTensionBranch(loadCase.LoadCaseName, D, Qf, Qg); double P = Math.Abs(P_ChordPlastification); //add capacity to branch info tensionBranch.AddStrengthValue(P, loadCase.LoadCaseName); return(P); }
internal double GetTensionBranchCapacity(double D, double Qg, double Qf) { HssTrussConnectionBranch tensionBranch = loadCase.TensionBranch; double P_ChordPlastification = CheckChordPlastificationForTensionBranch(loadCase.LoadCaseName, D, Qf, Qg); double P_ShearYielding = GetBranchShearYielding(tensionBranch); double P = Math.Min(Math.Abs(P_ChordPlastification), Math.Abs(P_ShearYielding)); //add capacity to branch info tensionBranch.AddStrengthValue(P, loadCase.LoadCaseName); return(P); }
internal double GetCompressionBranchCapacity(HssKConnectionLoadCaseData loadCase, double D, double Qg, double Qf) { HssTrussConnectionBranch compressionBranch = loadCase.CompressionBranch; double P_ChordPlastification = CheckChordPlastificationForCompressionBranch(loadCase.LoadCaseName, D, Qf, Qg); double P_ShearYielding = GetBranchShearYielding(compressionBranch); double P = Math.Min(Math.Abs(P_ChordPlastification), Math.Abs(P_ShearYielding)); //add capacity to branch info here compressionBranch.AddStrengthValue(P, loadCase.LoadCaseName); return(P); }
internal List <string> GetUniqueCaseNames(HssTrussConnectionBranch branch) { List <string> caseNames = new List <string>(); foreach (var f in branch.Forces) { if (caseNames.Contains(f.LoadCaseName) != true) { caseNames.Add(f.LoadCaseName); } } return(caseNames); }
public double CheckChordPlastificationForCompressionBranch(string LoadCaseName, double D, double Qf, double Qg) { double P = 0.0; HssKConnectionLoadCaseData thisLoadCaseData; loadCases.TryGetValue(LoadCaseName, out thisLoadCaseData); if (thisLoadCaseData != null) { HssTrussConnectionBranch branch = thisLoadCaseData.CompressionBranch; P = this.CheckChordPlastificationForBranch(branch, LoadCaseName, D, Qf, Qg); } else { throw new Exception("Could not find branch data for the given load case name"); } return(P); }
internal double CheckChordPlastification(HssTrussConnectionBranch branch,double D, double Qf) { double P = 0; double Pn; double theta = branch.Angle; double sinTheta = Math.Sin(theta.ToRadians()); ISectionPipe section = GetBranchSection(branch); double Fy = branch.Section.Material.YieldStress; double t = section.t_des; double Db = section.D; double beta = Db / D; //(K2-3) Pn = Fy*Math.Pow(t,2)*(5.7/(1.0-0.81*beta)*Qf)/sinTheta; P = 0.9 * Pn; return P; }
internal double CheckChordPlastification(HssTrussConnectionBranch branch, double D, double gamma, double Qf) { double P = 0; double Pn; double theta = branch.Angle; double sinTheta = Math.Sin(theta.ToRadians()); ISectionPipe section = GetBranchSection(branch); double Fy = Chord.Section.Material.YieldStress; double t = section.t_des; double Db = section.D; double beta = Db / D; //(K2-2) Pn = (Fy * Math.Pow(t, 2) * (3.1 + 15.6 * Math.Pow(beta, 2)) * Math.Pow(gamma, 0.2) * Qf) / sinTheta; P = 0.9 * Pn; return P; }
internal void DetermineTensionCompressionBranches(List <string> loadCaseList) { //prior to calculation of connection capacity need to determine //which branches are nesion and which are compression foreach (var caseName in loadCaseList) { HssTrussConnectionBranch compBranch = null; HssTrussConnectionBranch tensBranch = null; foreach (var b in Branches) { //chnage this!!!! double Fx = b.Forces.Where(f => f.LoadCaseName == caseName).ToList()[0].Fx; // first item in found forces if (Fx <= 0.0) { compBranch = b; } else { tensBranch = b; } } HssKConnectionLoadCaseData data = null; if (compBranch != null && tensBranch != null) { data = new HssKConnectionLoadCaseData(caseName, compBranch, tensBranch); } else { throw new Exception("Failed to identify tension and compression branches in the connection"); } if (this.loadCases == null) { loadCases = new Dictionary <string, HssKConnectionLoadCaseData>(); } loadCases.Add(caseName, data); } }
internal double CheckChordPlastification(HssTrussConnectionBranch branch, double D, double gamma, double Qf) { double P = 0; double Pn; double theta = branch.Angle; double sinTheta = Math.Sin(theta.ToRadians()); ISectionPipe section = GetBranchSection(branch); double Fy = Chord.Section.Material.YieldStress; double t = section.t_des; double Db = section.D; double beta = Db / D; //(K2-2) Pn = (Fy * Math.Pow(t, 2) * (3.1 + 15.6 * Math.Pow(beta, 2)) * Math.Pow(gamma, 0.2) * Qf) / sinTheta; P = 0.9 * Pn; return(P); }
internal double CheckChordPlastification(HssTrussConnectionBranch branch, double D, double Qf) { double P = 0; double Pn; double theta = branch.Angle; double sinTheta = Math.Sin(theta.ToRadians()); ISectionPipe section = GetBranchSection(branch); double Fy = branch.Section.Material.YieldStress; double t = section.t_des; double Db = section.D; double beta = Db / D; //(K2-3) Pn = Fy * Math.Pow(t, 2) * (5.7 / (1.0 - 0.81 * beta) * Qf) / sinTheta; P = 0.9 * Pn; return(P); }
internal double CheckChordPlastificationForBranch(HssTrussConnectionBranch branch, string LoadCaseName, double D, double Qf, double Qg) { double P = 0; double Pn; //var thisLoadCaseData = loadCases.Where(c => c.LoadCaseName == LoadCaseName).ToList()[0]; double theta = branch.Angle; double sinTheta = Math.Sin(theta.ToRadians()); double PnSinTheta = GetVerticalComponentOfCompressionBranchChordPlastificationForce( LoadCaseName, D, Qf, Qg); Pn = PnSinTheta / sinTheta; P = 0.9 * Pn; return(P); }
internal List<string> GetUniqueCaseNames(HssTrussConnectionBranch branch) { List<string> caseNames = new List<string>(); foreach (var f in branch.Forces) { if (caseNames.Contains(f.LoadCaseName)!=true) { caseNames.Add(f.LoadCaseName); } } return caseNames; }
internal override double GetBranchShearYielding(HssTrussConnectionBranch branch) { //this limit state does not apply to overlap connections return(double.PositiveInfinity); }
internal double CheckChordPlastificationForBranch(HssTrussConnectionBranch branch, string LoadCaseName, double D, double Qf, double Qg) { double P = 0; double Pn; //var thisLoadCaseData = loadCases.Where(c => c.LoadCaseName == LoadCaseName).ToList()[0]; double theta = branch.Angle; double sinTheta = Math.Sin(theta.ToRadians()); double PnSinTheta = GetVerticalComponentOfCompressionBranchChordPlastificationForce( LoadCaseName,D,Qf,Qg); Pn = PnSinTheta / sinTheta; P = 0.9 * Pn; return P; }
internal override double GetBranchShearYielding(HssTrussConnectionBranch branch) { //this limit state does not apply to overlap connections return double.PositiveInfinity; }