public static Dictionary <string, object> RequiredTransverseTorsionAndShearRebar(ConcreteFlexureAndAxiaSection ConcreteSection, double T_u, RebarMaterial RebarMaterial, double c_transv_ctr, double s, double theta = 45, string Code = "ACI318-14") { //Default values double A_v = 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 secT = new ConcreteSectionTorsion(shape); double T_u_lb_in = T_u * 1000.0; //internally Kodestruct uses lb - in units for concrete A_v = secT.GetRequiredTorsionTransverseReinforcementArea(T_u_lb_in, s, RebarMaterial.Material.YieldStress, theta); return(new Dictionary <string, object> { { "A_v", A_v } }); }
public void RectangularBeamReturnsRequiredTransverseRebarValue() { 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 s = 1.0; double c_center = 1.75; bool IsLightWeight = false; ConcreteSectionTorsion tb = GetConcreteTorsionBeam(b, h, fc, d, false, c_center); double A_s = tb.GetRequiredTorsionTransverseReinforcementArea(T_u, s, 60000.00); //Conversion from ACI psi units to ksi units double refValue = 0.0204; //Example 7-2 double actualTolerance = EvaluateActualTolerance(A_s, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }