The Calgary Water Treatment Plant Expansion is a major essential-facility build for the City of Calgary. I led the structural analysis and modeling of the Main Treatment Building - roughly 150 m x 73 m, a 10,400 m² footprint with 8 m-deep liquid-retaining tanks and below-grade reservoirs, founded on collapsible soils - and built the Python automation that drove the analysis and generated the deliverables.
My Role
Structural engineer responsible for the ETABS model, foundation and lateral design, and the analysis toolchain for the Main Treatment Building.
Modeling
Staged model development
- Four staged ETABS builds - preliminary raft, preliminary pile, Actiflo zone, full building - each with its own design-notes journal
- Final model runs clean with no analysis errors
Foundation strategy
- Settlement analysis demonstrated a raft foundation was infeasible on the site’s collapsible soils, with differential settlement reaching ~96 mm against a 200 kPa bearing pressure
- Produced the model results justifying the pile foundation for the pretreatment structure
- Modeled 600 mm cast-in-place piles bearing to a gravel toe ~14 m deep using geotechnically derived support stiffnesses (30 kN/mm vertical, 3 kN/mm lateral)
- Advanced base supports from springs to fixed to correctly represent pile-cap rotational restraint
Open-web steel joists
- ETABS has no native joist element. Modeled SJI K/KCS joists (20K10, 24K12, 30KCS5) as W460x60 base sections with a first-principles property and stiffness-modifier set capturing open-web shear flexibility
- Ran the ULS joist design check and pinpointed over-utilized runs for targeted resizing - penthouse roof up to 1.74, main roof up to 1.26
Base slab idealization
- A 3600 mm base-slab thickening with an embedded 2400 mm pipe was idealized as an equivalent 300 mm shell
- Derived the complete membrane, bending, and shear modifier set analytically at a 15.5% void fraction, then sanity-checked self-weight and stiffness against the solid section
Loads
- Wind for a post-disaster essential facility to NBCC 2020 / NBC 2025 - 0.74 kPa reference velocity pressure, importance factors 1.25 ULS and 0.75 SLS
- Escalated the internal-pressure category from 2 to 3 with written justification for the dominant-opening scenario, adopting the more conservative +/-1.22 kPa envelope
- Full design load set: operating dead 10.8 kPa, filter-train fill 40 kN/m², coagulant fluid 54 kN/m², operating live 15 kPa, plus snow and wind
Lateral system
- Modeled and verified the perimeter bracing across 12 braced bays
- Modal analysis showed over 90% mass participation in both directions, confirming a static equivalent-lateral-force seismic procedure governed - avoiding an unnecessary response-spectrum analysis
- Traced anomalous 500-600 kN lateral pile loads to mesh eccentricity at wall ends
The Python Toolchain
The analysis is driven by aktabs, a Python wrapper over the ETABS CSI OAPI I built for this and other projects, plus a suite of scripts:
pile_postprocess.py- turns an ETABS pile-reaction export into an interactive Plotly key plan and a print-ready ANSI-D PDF report, with color-by-reaction and box-select live statisticssteel_design_ratios.py- attaches to the live model over the OAPI and extracts governing steel design ratios; worked around an ETABS v21 OAPI documentation-versus-runtime drift by reading the design-summary table directlyload_map.py- builds a self-contained interactive floor-load map from a database export, with per-storey and per-load-pattern dropdowns and centroid/color load renderingfind_missing_nodes.py/build_beam_connectivity.py- staged geometry-import pipeline that deduplicates joints by tolerance and generates paste-ready connectivity CSVs, failing fast on any invalid endpoint or beamCleanSchedule.py/PileJoints.py- parse a Revit column schedule against grid definitions to compute absolute pile coordinates, then write ETABS-importable pile joint definitions with tolerance-based duplicate detection
Delivery
Produced pile-reaction and steel-quantity outputs from the finalized model to meet the estimating team’s quantity-takeoff deadline, and contributed to the concept peer-review engagement validating the structural concept for a large, complex essential facility.
Codes and Standards
NBCC 2020, NBC 2025, CSA A23.3, CSA S16, SJI joist specifications.