public static Dictionary <string, object> HssToLongitudinalPlateMaximumPlateThicknessForShear(CustomProfile HssSection, CustomProfile PlateSection, double F_y, double F_u, double F_yp, bool IsTensionHss, double P_uHss, double M_uHss) { //Default values double t_max = 0; //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, F_u, SteelConstants.ModulusOfElasticity, SteelConstants.ShearModulus); ISectionRectangular rect = PlateSection.Section as ISectionRectangular; double t_pl, b_pl = 0.0; SectionRectangular rSect; if (rect.B <= rect.H) { rSect = new SectionRectangular(rect.B, rect.H); } else { rSect = new 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, 90.0, P_uHss, M_uHss); //limitState = longitudinalPlateChs.ge //phiR_n = limitState.Value; //IsApplicableLimitState = limitState.IsApplicable; t_max = longitudinalPlateChs.GetHssMaximumPlateThicknessForShearLoad().Value; } else if (HssSection.Section is ISectionTube) { SteelRhsSection sec = new SteelRhsSection(HssSection.Section as ISectionTube, mat); RhsLongitudinalPlate longitudinalPlateRhs = new RhsLongitudinalPlate(sec, pl, log, IsTensionHss, 90.0, P_uHss, M_uHss); //limitState = longitudinalPlateRhs.GetHssYieldingOrCrippling(); //phiR_n = limitState.Value; //IsApplicableLimitState = limitState.IsApplicable; t_max = longitudinalPlateRhs.GetHssMaximumPlateThicknessForShearLoad().Value; } else { throw new Exception("Unsupported type of hollow section. Please use Tube or Pipe."); } } return(new Dictionary <string, object> { { "t_max", t_max } }); }
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; KodestructSection.SectionRectangular rSect; if (rect.B <= rect.H) { rSect = new KodestructSection.SectionRectangular(rect.B, rect.H); } else { rSect = new KodestructSection.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 } }); }