Verification of calcnote's ACI 318-19 beam engine
calcnote's beam design checks (flexure, shear, deflection, crack control, and T-beam geometry) are verified against independent first-principles hand calculations. The same reference cases run as regression tests on every code change, so these claims are re-checked continuously.
Verdict
Each beam design check is exercised by at least one witness test case with pinned intermediate and final values:
| Check | Witness-pinned cases | Reference | Result |
|---|---|---|---|
| Flexure (Whitney block, φ, As,min) | W1, W3, W6, W9, phi-transition, T1, T2, four-thirds | Hand calculation | All PASS |
| Shear (Vc, Vs, stirrup spacing) | W4, W5, W10, W11, W12, s_max | Hand calculation | All PASS |
| Deflection (Bischoff Ie, hmin, long-term) | D1, D2, D3, D4, D5 | Hand calculation | All PASS |
| Crack control (Cl 24.3.2 spacing) | C1, C2, C3, C4, C5 | Hand calculation | All PASS |
| T-beam flange width (Table 6.3.2.1) | T3 | Hand calculation | All PASS |
| Input validation (strain, bar fit) | W2, W7, W8 | ACI limits | All PASS |
| Full engine integration | Int-1, Int-2 | All checks combined | All PASS |
The 30 test cases
Every case below is locked by regression tests that run on each code change. Key values are the engine outputs pinned by the witness test suite; a drift beyond tolerance fails the build before it can deploy.
| Case | What it verifies | Beam | Key values | Overall |
|---|---|---|---|---|
| W1 | Rectangular flexure, φ=0.90 | 12×20, 3#8, f′c 4 ksi, fy 60 ksi | a=3.485, c=4.100, φMn=169.39 k-ft | PASS |
| W2 | Strain rejection (εt < 0.004) | 10×15, 4#9 (2 layers), fy 60 ksi | Raises StrainError | REJECT |
| W3 | Phi transition, Grade 80 | 12×20.5, 4#8, fy 80 ksi | φ=0.7917, φMn=250.64 k-ft | PASS |
| W4 | Shear with stirrups | 12×23, 3#8, #3@5, Vu=60 k | Vc=30.55, status=PASS | PASS |
| W5 | Size effect (λs, no stirrups) | 12×39, 3#8, Vu=5 k | λs=0.6594 | PASS |
| W6 | As,min check | b=12, d=20, f′c 4 ksi | As,min=0.800 in2 | PASS |
| W7 | Multi-layer effective depth | 12×24, 6#8 (2 layers) | d verified per Cl 25.2.2 | PASS |
| W8 | Bar fit rejection (Cl 25.2.1) | 12×24, 5#10 (1 layer) | Raises ReinforcementError | REJECT |
| W9 | β1 for f′c > 4 ksi | f′c=6: 0.75, f′c=4: 0.85, f′c=8: 0.65 | Per Table 22.2.2.4.3 | PASS |
| W10 | fyt cap at 60 ksi | 12×23, fy 80 ksi, #4@6 | fyt=60.0, Vs from capped fyt | PASS |
| W11 | Vs,max limit | 12×23, heavy stirrups, Vu=150 k | Raises ShearSectionError | REJECT |
| W12 | Av,min trigger (Cl 9.6.3.1) | 12×23, no stirrups, Vu=5/15 k | Low Vu passes; high Vu warns | PASS/FAIL |
| phi-trans | φ factor boundary values | fy 60/80, εt at limits | φ=0.90 (tension), 0.65 (compression), interpolation | PASS |
| s_max | Stirrup spacing > smax (Cl 9.7.6.2.2) | 12×23, #3@12 | smax=d/2, warns 9.7.6.2.2 | FAIL |
| 4/3 | Four-thirds exception (Cl 9.6.1.3) | 24×20, 2#4, light Mu | As < As,min but ≥ (4/3)As,req | PASS |
| T1 | T-beam NA in flange | bf=48, bw=12, hf=6, h=24, 4#8 | a=1.162, φMn=299.25 k-ft | PASS |
| T2 | T-beam NA in web | bf=24, bw=12, hf=4, h=24, 8#8 | Asf=2.72, Asw=3.60, φMn=519.21 k-ft | PASS |
| T3 | T-beam flange width (Table 6.3.2.1) | T-beam and L-beam geometries | bf computed per overhang limits | PASS |
| D1 | Simply supported deflection | 12×20, L=20 ft, 3#8, wD=1.0 | Ec=3605, Ig=8000, Mcr=379.47, δLT=0.747 | FAIL (L/480) |
| D2 | Cantilever deflection | 12×20, L=10 ft, 3#8 | hmin=15.0, δLT=0.448 | FAIL (L/480) |
| D3 | hmin fail | 12×20, L=30 ft | hmin=22.5, h=20 < hmin | FAIL |
| D4 | Bischoff threshold | 12×20, L=10 ft, light load | Ma ≤ (2/3)Mcr, Ie=Ig | PASS |
| D5 | T-beam deflection | bf=24, h=24, L=20 ft, 8#8 | Ig=18002, Icr=11938, δLT=0.203 | PASS |
| C1 | Crack control, standard | 12×24, 3#8, cc=1.875 | smax=10.31, sactual=3.63 | PASS |
| C2 | Crack control fail | 36×24, 2#8 | sactual > smax | FAIL |
| C3 | Skin reinforcement trigger | 18×40, 4#8 | h=40 > 36, skin_req=True | PASS |
| C4 | Crack control, Grade 80 | 12×24, 3#8, fy 80 ksi | fs=53.33, tighter smax | PASS |
| C5 | Single bar per layer | 12×24, 2#10 (2 layers) | sactual=6.98 | PASS |
| Int-1 | Full engine (rect, all checks) | 12×24, 3#8, stirrups | overall_status=PASS | PASS |
| Int-2 | Full engine (T-beam + deflection) | T-beam, bf=48, L=20 ft | flexure T, deflection present | PASS |
Product scope
calcnote's beam module covers rectangular and T-beam (including L-beam flange width) designs per ACI 318-19 within the input envelope below. The verification exercises 30 reference test cases inside this envelope (beams 10 to 39 in deep, f′c 3,000 to 8,000 psi, bars #4 to #10, Grade 60 and Grade 80); the full range is accepted by the engine.
| Parameter | Supported range |
|---|---|
| Beam type | Rectangular and T-beam (including L-beam flange width) |
| Concrete strength f′c | 3,000 to 10,000 psi (normal-weight) |
| Steel grade | Grade 60, Grade 80 (fy 40 to 100 ksi accepted) |
| Reinforcement | #3 to #11, 1 or 2 layers |
| Checks | Flexure, shear, deflection, crack control, T-beam flange width |
| Deflection | Optional (requires span, loads, support condition) |
Out of scope (not covered by this verification): torsion, seismic detailing, prestressed beams, deep beams (a/d < 2), and multi-span continuous analysis. See the beam design methodology for the full design-check rationale.
Continuous revalidation
The reference cases above are encoded as automated regression tests that run against the engine on every code change. A drift beyond the stated tolerances fails the build before it can deploy; the numbers on this page cannot silently rot as the engine evolves.