public void HssRhsConcentratedForceThroughPlateReturnsValue() { SectionTube ch = new SectionTube(null, 8, 8, 0.25,0.93*0.25,1.5*0.25); SteelMaterial matE = new SteelMaterial(46.0); SteelRhsSection Element = new SteelRhsSection(ch, matE); SectionRectangular rec = new SectionRectangular(0.25,8.0); SteelMaterial matR = new SteelMaterial(36.0); SteelPlateSection pl = new SteelPlateSection(rec,matR); CalcLog log = new CalcLog(); RhsLongitudinalThroughPlate concForceConnection = new RhsLongitudinalThroughPlate(Element, pl, log, false,45.0, 148.0, 0.0); double phiR_n = concForceConnection.GetHssWallPlastificationStrengthUnderAxialLoad().Value; double refValueSec = 46.2; double actualToleranceSec = EvaluateActualTolerance(phiR_n, refValueSec); Assert.LessOrEqual(actualToleranceSec, tolerance); }
public static Dictionary<string, object> HssToLongitudinalPlateWallPlastification(CustomProfile HssSection,CustomProfile PlateSection, double F_y,double F_yp, double P_uHss, double M_uHss,double theta=90.0, bool IsTensionHss=false, bool IsThroughPlate=false) { //Default values double phiR_n = 0; bool IsApplicableLimitState = false; //Calculation logic: CalcLog log = new CalcLog(); SteelLimitStateValue limitState = null; //PLATE SteelPlateSection pl = null; if (!(PlateSection.Section is ISectionRectangular)) { throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input."); } else { SteelMaterial mat = new SteelMaterial(F_y); ISectionRectangular rect = PlateSection.Section as ISectionRectangular; double t_pl, b_pl = 0.0; WosadSection.SectionRectangular rSect; if (rect.B <= rect.H) { rSect = new WosadSection.SectionRectangular(rect.B, rect.H); } else { rSect = new WosadSection.SectionRectangular(rect.H, rect.B); } pl = new SteelPlateSection(rSect, mat); } //HSS if (!(HssSection.Section is ISectionHollow)) { throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input."); } else { SteelMaterial mat = new SteelMaterial(F_y); if (HssSection.Section is ISectionPipe) { SteelChsSection sec = new SteelChsSection(HssSection.Section as ISectionPipe, mat); ChsLongitudinalPlate longitudinalPlateChs = new ChsLongitudinalPlate(sec, pl, log, IsTensionHss,theta, P_uHss, M_uHss); limitState = longitudinalPlateChs.GetHssWallPlastificationStrengthUnderAxialLoad(); if (IsThroughPlate == false) { phiR_n = limitState.Value; } else { phiR_n = 2.0* limitState.Value; //analogous to Rectangular HSS provsions } IsApplicableLimitState = limitState.IsApplicable; } else if (HssSection.Section is ISectionTube) { SteelRhsSection sec = new SteelRhsSection(HssSection.Section as ISectionTube, mat); if (IsThroughPlate == false) { RhsLongitudinalPlate longitudinalPlateRhs = new RhsLongitudinalPlate(sec, pl, log, IsTensionHss,theta, P_uHss, M_uHss); limitState = longitudinalPlateRhs.GetHssWallPlastificationStrengthUnderAxialLoad(); phiR_n = limitState.Value; IsApplicableLimitState = limitState.IsApplicable; } else { RhsLongitudinalThroughPlate longitudinalPlateRhs = new RhsLongitudinalThroughPlate(sec, pl, log, IsTensionHss,theta, P_uHss, M_uHss); limitState = longitudinalPlateRhs.GetHssWallPlastificationStrengthUnderAxialLoad(); phiR_n = limitState.Value; IsApplicableLimitState = limitState.IsApplicable; } } else { throw new Exception("Unsupported type of hollow section. Please use Tube or Pipe."); } } return new Dictionary<string, object> { { "phiR_n", phiR_n } ,{ "IsApplicableLimitState", IsApplicableLimitState } }; }