public static Dictionary <string, object> RequiredLongitudinalTorsionRebar(ConcreteFlexureAndAxiaSection ConcreteSection, double T_u, RebarMaterial RebarMaterial, double c_transv_ctr, double theta = 45, string Code = "ACI318-14") { //Default values double A_l = 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_l = secT.GetRequiredTorsionLongitudinalReinforcementArea(T_u_lb_in, RebarMaterial.Material.YieldStress); return(new Dictionary <string, object> { { "A_l", A_l } }); }
public void RectangularBeamReturnsRequiredLongitudinalRebarValue() { 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.GetRequiredTorsionLongitudinalReinforcementArea(T_u, 60000); //Conversion from ACI psi units to ksi units double refValue = 1.26; //Example 7-2 double actualTolerance = EvaluateActualTolerance(A_s, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }