public void RectangularBeamReturnsInteractionValue() { double h = 24.0; double d = 21.5; double b = 14.0; double N_u = 0.0; double V_u = 57100.0; double T_u = 28.0 * 12000.0; double fc = 3000.0; double c_center = 1.75; bool IsLightWeight = false; //double phiV_c = beam.GetConcreteShearStrength(N_u, rho_w, M_u, V_u); IConcreteMaterial mat = GetConcreteMaterial(fc, IsLightWeight); CrossSectionRectangularShape section = new CrossSectionRectangularShape(mat, null, b, h); ConcreteSectionOneWayShearNonPrestressed beam = new ConcreteSectionOneWayShearNonPrestressed(d, section); double phiV_c = beam.GetConcreteShearStrength(0, 0, 0, 0); ConcreteSectionTorsion tb = GetConcreteTorsionBeam(b, h, fc, d, false, c_center); double IR = tb.GetMaximumForceInteractionRatio(V_u, T_u, phiV_c, b, d); double refValue = 326.0 / 411.0; //Example 7-2 double actualTolerance = EvaluateActualTolerance(IR, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
public static Dictionary <string, object> MaximumTorsionalAndShearStrengthInteraction(ConcreteFlexureAndAxiaSection ConcreteSection, double c_transv_ctr, double V_u, double T_u, double V_c, double b, double d, bool IsPrestressed = false, string Code = "ACI318-14") { //Default values double InteractionRatio = 0; //Calculation logic: TorsionShapeFactory tss = new TorsionShapeFactory(); ConcreteSectionFlexure sec = (ConcreteSectionFlexure)ConcreteSection.FlexuralSection; IConcreteTorsionalShape shape = tss.GetShape(sec.Section.SliceableShape, ConcreteSection.ConcreteMaterial.Concrete, c_transv_ctr); ConcreteSectionTorsion s = new ConcreteSectionTorsion(shape); double V_u_lb = V_u * 1000.0; //internally Kodestruct uses lb - in units for concrete double T_u_lb_in = T_u * 1000.0; //internally Kodestruct uses lb - in units for concrete InteractionRatio = s.GetMaximumForceInteractionRatio(V_u_lb, T_u_lb_in, V_c, b, d); return(new Dictionary <string, object> { { "InteractionRatio", InteractionRatio } }); }