public IShearMember GetShearMemberNonCircular(ShearNonCircularCase ShearCase, double h, double t_w, double a, double F_y, double E) { ISteelMaterial material = new SteelMaterial(F_y, E); IShearMember member = null; bool IsTeeShape; switch (ShearCase) { case ShearNonCircularCase.MemberWithStiffeners: IsTeeShape = false; member = new ShearMemberWithStiffeners(h, t_w, a, material, IsTeeShape); break; case ShearNonCircularCase.Tee: IsTeeShape = true; member = new ShearMemberWithoutStiffeners(h, t_w, material, IsTeeShape); break; case ShearNonCircularCase.Box: member = new ShearMemberBox(h, t_w, material); break; default: IsTeeShape = false; member = new ShearMemberWithoutStiffeners(h, t_w, material, IsTeeShape); break; } return(member); }
protected override double GetV_m(double V_mt, double V_mb, double mu, double nu) { double V_m; double V_m1 = V_mt + V_mb; double V_pt = GetV_pt(); double V_mtSH = GetV_mtSH(V_pt); double V_cBar1 = V_pt * (mu / nu - 1.0); V_cBar1 = V_cBar1 < 0 ? 0 :V_cBar1; double V_cBar2 = V_mtSH - V_pt; V_cBar2 = V_cBar2 < 0 ? 0 : V_cBar2; double V_cBar = Math.Min(V_cBar1, V_cBar2); ShearMemberFactory f = new ShearMemberFactory(); //Refine this in future to reflect more possible cases double h = Section.d; double t_w = Section.t_w; double E = 29000; double a = 3 * h; // no stiffeners are accounted here, arbitrarily set the stiffener spacing IShearMember UnperforatedShape = f.GetShearMemberNonCircular(ShearNonCircularCase.MemberWithoutStiffeners, h, t_w, a, F_y, E); double V_pBar = UnperforatedShape.GetShearStrength(); double V_m2 = 2.0 / 3.0 * V_pBar + V_cBar; V_m = Math.Min(V_m1, V_m2); //double V_cBar = V_pt return(V_m); }
public static Dictionary <string, object> ShearStrengthNonCircular(string ShearCase, double F_y, double t_w, double h, double a_s = 0.0, double E = 29000, string Code = "AISC360-10") { //Default values double phiV_n = 0; //Calculation logic: ShearMemberFactory factory = new ShearMemberFactory(); aisc.ShearNonCircularCase shearCase; bool IsValidString = Enum.TryParse(ShearCase, true, out shearCase); if (IsValidString == true) { IShearMember member = factory.GetShearMemberNonCircular(shearCase, h, t_w, a_s, F_y, E); phiV_n = member.GetShearStrength(); } else { throw new Exception("Invalid case selection for non-circular section."); } return(new Dictionary <string, object> { { "phiV_n", phiV_n } }); }
public void ShearBeamIShapeReturnsValue() { double h = 26.3; double t_w = 1.04; double a = 0; double F_y = 50.0; double E = 29000; ShearMemberFactory factory = new ShearMemberFactory(); IShearMember member = factory.GetShearMemberNonCircular(ShearNonCircularCase.MemberWithoutStiffeners, h, t_w, a, F_y, E); double phiV_n = member.GetShearStrength(); double refValue = 821.0; double actualTolerance = EvaluateActualTolerance(phiV_n, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }