public static Dictionary <string, object> UnbalancedMomentFactors(PunchingShearPerimeter PunchingShearPerimeter) { //Default values double gamma_vx = 0; double gamma_vy = 0; //Calculation logic: PunchingShearPerimeter p = PunchingShearPerimeter; PunchingPerimeterConfiguration Configuration; bool IsValidInputString = Enum.TryParse(p.Configuration, true, out Configuration); if (IsValidInputString == false) { throw new Exception("Failed to convert string. Examples of acceptable values are Interior, EdgeLeft, CornerLeftTop. Please check input"); } ConcreteSectionTwoWayShear sec = new ConcreteSectionTwoWayShear(p.PerimeterData, p.d, p.c_x, p.c_y, Configuration); gamma_vx = sec.Get_gamma_vx(); gamma_vy = sec.Get_gamma_vy(); return(new Dictionary <string, object> { { "gamma_vx", gamma_vx } , { "gamma_vy", gamma_vy } }); }
public static Dictionary <string, object> TwoWayShearStressFromConcentricLoad(double V_u, PunchingShearPerimeter PunchingShearPerimeter) { //Default values double v_u = 0; //Calculation logic: PunchingShearPerimeter p = PunchingShearPerimeter; PunchingPerimeterConfiguration Configuration; bool IsValidInputString = Enum.TryParse(p.Configuration, true, out Configuration); if (IsValidInputString == false) { throw new Exception("Failed to convert string. Examples of acceptable values are Interior, EdgeLeft, CornerLeftTop. Please check input"); } ConcreteSectionTwoWayShear sec = new ConcreteSectionTwoWayShear(p.PerimeterData, p.d, p.c_x, p.c_y, Configuration); v_u = sec.GetConcentricShearStress(V_u); return(new Dictionary <string, object> { { "v_u", v_u } }); }
public static Dictionary <string, object> TwoWayShearStressFromMomentAndShear(double M_ux, double M_uy, double V_u, PunchingShearPerimeter PunchingShearPerimeter, string PunchingPerimeterConfiguration, double gamma_vx, double gamma_vy, bool AllowShearRedistribution = false) { //Default values double v_u_Max = 0; double v_u_Min = 0; //Calculation logic: PunchingShearPerimeter p = PunchingShearPerimeter; PunchingPerimeterConfiguration Configuration; bool IsValidInputString = Enum.TryParse(p.Configuration, true, out Configuration); if (IsValidInputString == false) { throw new Exception("Failed to convert string. Examples of acceptable values are Interior, EdgeLeft, CornerLeftTop. Please check input"); } ConcreteSectionTwoWayShear sec = new ConcreteSectionTwoWayShear(p.PerimeterData, p.d, p.c_x, p.c_y, Configuration, false); //Check gamma's double v_uConcentric = sec.GetConcentricShearStress(V_u); double phi_v_c = sec.GetTwoWayStrengthForUnreinforcedConcrete() / 1000.0; //convert to ksi if (gamma_vx == 1.0 && v_uConcentric > 0.75 * phi_v_c) { throw new Exception("gamma_vx cannot be 1.0 if stress due to concentric shear force exceeds 75% of concrete shear strength"); } if (gamma_vy == 1.0 && v_uConcentric > 0.75 * phi_v_c) { throw new Exception("gamma_vy cannot be 1.0 if stress due to concentric shear force exceeds 75% of concrete shear strength"); } ResultOfShearStressDueToMoment result = sec.GetCombinedShearStressDueToMomementAndShear(M_ux, M_uy, V_u, gamma_vx, gamma_vy, AllowShearRedistribution); v_u_Max = result.v_max; v_u_Min = result.v_min; gamma_vx = result.gamma_vx; gamma_vy = result.gamma_vy; return(new Dictionary <string, object> { { "v_u_Max", v_u_Max } , { "v_u_Min", v_u_Min } , { "gamma_vx", gamma_vx } , { "gamma_vy", gamma_vy } }); }
public static Dictionary <string, object> TwoWayShearStrengthProvidedByReinforcedSection(PunchingShearPerimeter PunchingShearPerimeter, ConcreteMaterial ConcreteMaterial, RebarMaterial RebarMaterial, double A_v, double s, string PunchingReinforcementType) { //Default values double phi_v_n = 0; //Calculation logic: Kodestruct.Concrete.ACI.ACI318_14.SectionalStrength.Shear.TwoWay.PunchingReinforcementType ReinforcementType; bool IsValidInputString = Enum.TryParse(PunchingReinforcementType, true, out ReinforcementType); if (IsValidInputString == false) { throw new Exception("Failed to convert string. Examples of acceptable values are Interior, EdgeLeft, CornerLeftTop. Please check input"); } ReinforcedSectionTwoWayShear sec = new ReinforcedSectionTwoWayShear(ConcreteMaterial.Concrete, RebarMaterial.Material, PunchingShearPerimeter.PerimeterData, A_v, s, ReinforcementType); phi_v_n = sec.GetTwoWayStrength() / 1000.0; //convert to ksi return(new Dictionary <string, object> { { "phi_v_n", phi_v_n } }); }
public static Dictionary <string, object> TwoWayShearStrengthProvidedByConcrete(PunchingShearPerimeter PunchingShearPerimeter, ConcreteMaterial ConcreteMaterial, double d, double c_x, double c_y, bool IsSectionAtColumnFace = true) { //Default values double phi_v_c = 0; //Calculation logic: PunchingPerimeterConfiguration Configuration; bool IsValidInputString = Enum.TryParse(PunchingShearPerimeter.Configuration, true, out Configuration); if (IsValidInputString == false) { throw new Exception("Failed to convert string. Examples of acceptable values are Interior, EdgeLeft, CornerLeftTop. Please check input"); } ConcreteSectionTwoWayShear sec = new ConcreteSectionTwoWayShear(ConcreteMaterial.Concrete, PunchingShearPerimeter.PerimeterData, d, c_x, c_y, Configuration); phi_v_c = sec.GetTwoWayStrengthForUnreinforcedConcrete() / 1000.0; //convert to ksi return(new Dictionary <string, object> { { "phi_v_c", phi_v_c } }); }