CHAPTER FOUR
DEVELOPED PROGRAMMING TOOLS
4.1 Column tool Prototype:
4.1.1 Overview
The RC Column Designer is a web-based engineering tool that automates the design of
reinforced concrete columns per ACI 318-19. It handles:
•Rectangular and circular columns
•Uniaxial and biaxial bending
•Slender column effects (sway and non-sway)
•Tied and spiral transverse reinforcement
•Bresler reciprocal / load contour biaxial capacity checks
The entire application is a single self-contained HTML file (~1750 lines) with
embedded CSS and JavaScript. All computation runs client-side in the browser with no
server dependency.
Scan to use the tool!
Last update:2026/6/03
4.1.2 General Workflow:
USER INPUTS
Geometry │ Materials │ Loads │
Slenderness │ Biaxial Moments
STEP 1a: X-Axis Slenderness
STEP 1b: Y-Axis Slenderness
• Compute r_x, kLu/r_x
• Same process as Step 1a but about Y-axis
• Determine slenderness limit (22 or 34−12M1/M2)
• For circular columns: skip (only one axis)
• If slender: compute δns (non-sway) or δns+δs (sway)
• Compute Mc_y = magnified moment
• Compute Mc_x = magnified moment
STEP 2: Biaxial Transformation
• Detect uniaxial vs biaxial loading
• If biaxial: ACI Simplified Method
- Compute Mny/Mnx vs b/h to determine governing axis
- Compute equivalent Mno using β = 0.65
- Mu_eq = Mno × 0.65
- Set governsY flag (swaps b and h for ρ loop)
STEP 3: Minimum Eccentricity & ρ Loop
• e_min = 15 + 0.03 × dim_me
• Mu_min = Pu × e_min / 1000
• Mu_design = max(|Mu_eq|, Mu_min)
• ITERATIVE LOOP: ρ from 1% to 8% (step 0.2%)
- For each ρ: build interaction curve, check capacity
- If DCR ≤ 1.0 on both axial and moment → ACCEPT
• Final: ρ, As, N bars
STEP 4: Bresler & Capacity Check
• If uniaxial: skip (DCR from capacity check)
• If biaxial:
- Build X-axis and Y-axis interaction curves (swapped dims)
- Compute Mux_design = max(|Mu1x|,|Mu2x|)
- Compute Muy_design = max(|Mu1y|,|Mu2y|)
- Reciprocal method (Pn ≥ 0.1fcAg):
• ΦPox at ΦMnx from X-axis curve → Pox = ΦPox/Φ
• ΦPoy at ΦMny from Y-axis curve → Poy = ΦPoy/Φ
• Pn_est = 1/(1/Pox + 1/Poy − 1/Po)
• DCR = Pn / Pn_est
- Contour method (Pn < 0.1fcAg):
• Mox at Pn from X-axis curve
• Moy at Pn from Y-axis curve
• DCR = Mnx/Mox + Mny/Moy
STEP 5: Bar Layout
• Check bar spacing, fit, minimum spacing requirements
• Warning if spacing < db or < min spacing
STEP 6: Transverse Reinforcement
• For spirals: compute ρs_min, pitch, min/max pitch
• For ties: compute s_max = min(16db, 48dtie, dim_least)
• Check face bar spacing ≤ 150mm → crossties required
OUTPUT DISPLAY
• Summary grid (ρ, As, bar layout, transverse, Mu_design)
• Step-by-step calculation log with KaTeX rendering
• Section SVG drawing with bar layout
• P-M interaction diagram on canvas
• PASS / FAIL badge
4.1.3 Detailed Algorithm Description:
[Link] Interaction Curve Generation:
The interaction curve is the foundation of all capacity checks. It is generated by
sweeping the neutral axis depth c from pure compression (c = 5 × dim) to pure tension
(c ≈ 0) in 300 logarithmic steps.
For each c value:
[Link] distribution: Linear strain profile across section, maximum concrete strain
εcu = 0.003 at extreme compression fiber
[Link] strains: Compute strain at each bar location by similar triangles
[Link] force: Rectangular stress block per ACI 318 — a = β₁ × c, concrete
compression = 0.85 × f'c × a × b
[Link] forces: Each bar: fs = εs × Es ≤ fy, force = fs × Ab
[Link]: Pn = Σ(concrete forces) + Σ(steel forces), Mn = Σ(moments about
centroid)
6.φ factor: Pure compression (φ = 0.65/0.75) → tension-controlled (φ = 0.90) with
linear transition in the spiral region
[Link] point: Pure tension point appended: Pn = Ast × fy, Mn = 0, φ = 0.90 The
curve stores nominal values {Pn, Mn} and the associated φ for each point. Factored
values {φPn, φMn} are computed on demand.
[Link] Slenderness (Steps 1a/1b)
For each axis (X and Y):
•Radius of gyration: r = 0.3h (rectangular) or r = 0.25D (circular)
•Slenderness limit: If kLu/r < 22 → short column, Mc = M2 (no magnification). If
kLu/r ≥ 22 → slender:
•Non-sway (δns): Cm = 0.6 + 0.4(M1/M2), EI = 0.4×Ec×Ig/(1+βd), Pc =
π²×EI/(kLu)², δns = Cm/(1 − Pu/0.75Pc) ≥ 1.0
•Sway (δs): Stability index Q method (if Q ≤ 1.5), else ΣPu/ΣPc method, else manual
input. Mc = |M2| + δs × M2s
•Sway + non-sway combined: For sway columns that are also slender in non-sway:
Mc = δns × (|M2| + δs × M2s)
[Link] Biaxial Transformation — ACI Simplified Method (Step 2)
When both X and Y moments exist, the ACI simplified method reduces the biaxial
problem to an equivalent uniaxial moment:
[Link] Mny/Mnx to b/h
[Link] Mny/Mnx > b/h: Y-axis governs, Mno = Mny + Mnx × (b/h) × ((1−β)/β)
[Link] Mny/Mnx ≤ b/h: X-axis governs, Mno = Mnx + Mny × (h/b) × ((1−β)/β)
4.β = 0.65 per ACI 318
5.Mu_eq = Mno × 0.65
3.4 ρ Loop (Step 3)
The reinforcement ratio ρ is found iteratively:
•Start with ρ = 1% (minimum per ACI 318)
•For each ρ:
•Compute N = ceil(ρ × Ag / Ab), enforce even number for rectangular, min bars per
code
•Build interaction curve with current N and ρ
•Check capacity at (Pu, Mu_design)
•If both DCR ≤ 1.0 → accept and break
•Otherwise increment ρ by 0.002 (0.2%)
•Maximum ρ = 8% per ACI 318 (if exceeded, flag rhoLoopFailedMax)
The governing axis flag governsY from Step 2 swaps b and h dimensions in the
interaction curve builder, so the rho loop always checks against the correct orientation.
3.5 Bresler Biaxial Check (Step 6)
Two independent interaction curves are built: - curveX: bending about X-axis (b × h
section) - curveY: bending about Y-axis (h × b section, swapped dimensions)
•Reciprocal Load Method (when Pn ≥ 0.1 × f'c × Ag):
Enter X-axis curve with ΦMnx → read ΦPox → Pox = ΦPox / φ
Enter Y-axis curve with ΦMny → read ΦPoy → Poy = ΦPoy / φ
Po = Pn0 (nominal pure compression capacity = 0.85fc(Ag−Ast) + fy×Ast)
Pn_est = 1 / (1/Pox + 1/Poy − 1/Po)
DCR = Pn / Pn_est (≤ 1.0 → PASS)
•Load Contour Method (when Pn < 0.1 × f'c × Ag):
Mox = find moment on X-axis curve at Pn
Moy = find moment on Y-axis curve at Pn
DCR = Mnx/Mox + Mny/Moy (≤ 1.0 → PASS)
4.1.4. Key Functions:
Function Location Purpose
buildInteractionCurve() — Generates 300-point P-M curve for given section and ρ
checkCapacity() — Interpolates φPn and φMn at applied (Pu, Mu), returns DCR
findMAtPn() — Finds moment capacity at target axial load on curve
findPhiPAtPhiM() — Finds factored axial capacity at target factored moment
Draws SVG column cross-section with bars, dims, centroid
drawSection() —
axes
drawInteractionDiagram() — Draws P-M interaction diagram on HTML5 Canvas
renderLatexLines() — Converts Unicode math text to KaTeX-rendered HTML
runCalc() — Main calculation engine orchestrating all 6 steps
4.2 Beam tool prototype :