Preliminary analysis of continuous bridge girders, in your browser. Envelopes, influence lines, Canadian and US design trucks, non-prismatic haunches, integral abutments and thermal gradients — powered by PyCBA running locally through WebAssembly. No installation, no server, no data leaves your computer.
▶ Open the app: https://acfakkoh.github.io/QuickerBridge/
Version 0.9.7 · 2026-10-02 · Anthony Chéruel · Guide en français
| Moving-load envelopes | CL-625, CL-750-QC (MTQ), AASHTO HL-93 truck & tandem, Cooper E, maintenance vehicle, or a custom 1–7 axle vehicle. CAN/CSA S6 dynamic allowance on every axle subset, lane loads over the full deck, load and axle factors. Optional HL-93 90% two-truck case for negative moments and interior reactions. Click any extreme to see its governing arrangement; one “Δ ranges” switch replaces V, M, δ by ΔV, ΔM, Δδ = max − min, read with the same cursor. |
| Influence lines | V, M and deflection at any station, plus the reaction (and moment reaction) at the nearest support, with the governing axles drawn on the line. |
| Truck crossing animation | 60 pre-computed positions of the full vehicle, played back instantly; the envelope stays as a reference. |
| Supports | Pinned, roller, fixed (integral abutment) or rotational spring k with the resulting degree of fixity. Any span can be made simple (isostatic), hinged at both ends (v0.8.6). Uplift is flagged automatically. |
| Sections | Steel I-girders from plate dimensions, standard precast prestressed NEBT 1000–1800 girders (v0.8.6, concrete E 28 GPa by default) or direct EI, inertia modifier, non-prismatic zones with linear or parabolic depth (steel girders; NEBT bridges stay prismatic), EI(x) diagram and stiffness-step warnings. Girder self-weight is added to the permanent loads by default (steel +15%, NEBT +10%, adjustable, can be switched off). |
| Vibration modes (v0.8) | Up to 12 natural frequencies and periods in vertical bending from the same model (non-prismatic EI, integral abutments, springs), mass from the unfactored permanent loads. Animated deck, mode thumbnails, frequency spectrum with pedestrian resonance bands, modal mass. Six modes and real-time animation by default; optional slow motion. |
| Truck load fraction FT (v0.9–0.9.3) | CSA S6-25 simplified method for slab-on-girder, solid-slab and voided-slab bridges (per metre of width for slabs, with Be; classes A/B and C/D, CL-625 / CL-750-QC): N, S, Sc, Wc, skew → n, RL, We, μ, DVE (≤ 3.0 m), Le (Figure 5.1, 0.20 (L1+L2) over piers), DT, λ, γc, γe, FT for interior/exterior girders, moment and shear, ULS/SLS1 and FLS/SLS2, with Fs. Choose the girder and limit state; when applied, the whole live load of one lane is multiplied zone by zone (M and δ by the moment FT, V and reactions by the shear FT); exterior girders also get Fs on dead-load shear. Data, definitions and compact tables in the “FT · S6-25” tab; Excel sheet. |
| Section properties (v0.9.3bis) | Window opened from a steel section card: steel alone (A, centroid, Ix, S, Iy, J, Cw, Zx and plastic neutral axis, S6 section classes), composite 3n and 1n with slab, haunch and two bar layers (I, section moduli at S1–S5 and a user height), effective properties with FrQr, cross-section drawing with neutral axes. (v0.9.5) Positive / negative region chosen first: in the negative region the cracked slab is ignored and I′ = steel + bars in tension (no 3n / 1n); y of point S3 set per configuration (steel, 3n, 1n, I′), also for the steel section alone. Display only; a ratio can be copied into the inertia modifier M. (v0.9.4) Double-click any diagram (or “σ ↗” in the readout) for the staged stresses over the depth at that station: self-weight and other permanent loads on the steel alone or the 3n section, live envelope max/min on the 1n section, cracked composite section under negative moment. (v0.9.5) A “σ Stresses ↗” button and a hover preview next to the envelopes (small stress profile, neutral axes, compression/tension sides); the window lets you change the station (◀ ▶, x, slider) and the S3 height y, and draws each case as one continuous outline from σ = 0 with the dashed neutral axes. |
| Imposed deformations | Thermal gradient (linear or bilinear), slab shrinkage or slab creep, each alone, with any supports. |
| Outputs | Station table, one formatted Excel workbook including vibration modes and shapes (FR/EN), .quickerbridge.json projects, and comparison of two project envelopes on the same metre axis. |
![]() |
![]() |
| Influence lines and governing axles | Truck crossing over the envelope |
- Web: open https://acfakkoh.github.io/QuickerBridge/ in a recent Chrome, Edge or Firefox.
- Offline copy of the page: download
QuickerBridge-v<version>-<date>.htmlfrom the releases (or the repository root) and double-click it. An Internet connection is still needed the first time to download the Python runtime.
Start-up is fast: the default model's results are pre-computed and shown as soon as the
short opening animation ends (≈ 3 s — Esc skips it). The
calculation engine keeps loading in the background — only NumPy and pydantic (≈ 5 MB);
SciPy is replaced by a verified NumPy subset and matplotlib is not loaded. Excel support
is downloaded on first export.
On restricted company networks, failed or stalled downloads are retried automatically
(up to 4 attempts). If the engine still cannot load, the screen names the blocked step,
library and host (cdn.jsdelivr.net for the runtime, pypi.org for Excel only) with a
Retry button.
Linear-elastic, one-dimensional Euler–Bernoulli continuous beam, one traffic lane, longitudinal effects only. Sagging moment positive, deflection positive downward, reactions positive upward, moment reactions counter-clockwise positive. Vibration modes cover vertical bending of one girder line (no torsion, damping or vehicle-bridge interaction). No automatic self-weight, load combinations, transverse distribution, composite section properties, stresses or code checks.
Indicative preliminary values only — not a substitute for detailed design. These tools are intended for learning and preliminary studies and must not be used to design a bridge. The author cannot be held liable for their results.
119 application tests compare results with closed-form
solutions: continuous beams, fixed and propped beams, rotational springs, influence lines,
thermal curvature, non-prismatic members, mirror symmetry and natural frequencies
(closed forms and PyCBA BeamAnalysis.modal). The application suite also
runs in the browser configuration (no matplotlib, NumPy-only SciPy subset). The CL-750-QC
envelope of the default 2 × 34.8 m bridge matches an independent three-moment solution
to 0.01 %. See VALIDATION.md and NONPRISMATIC.md.
python -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install -r requirements.txt
python -m pytest tests vendor/pycba/tests -q # native suite
QB_MPL_STUB=1 QB_SCIPY_LITE=1 python -m pytest tests -q # browser configuration
python build_portable.py # dist/, portable HTML, release zipsdist/ is the static site published by GitHub Pages (.github/workflows/pages.yml, on
every push to main). In the repository settings, Pages → Source must be set to
GitHub Actions. More details in README_DEVELOPER.md.
Built on PyCBA by Colin Caprani (AGPL-3.0-or-later), vendored with local additions (CL-750-QC, non-prismatic performance); runs on Pyodide. See THIRD_PARTY_NOTICES.md.
- MTQ automatic fraction (CL-750-QC). On by default: the 12.6 kN/m lane load goes with the truck at 63 % or 80 % of its axles per response, as in MTQ Info-structures A2023-05 (63 % for M+ outside the M− zones of the supports, shear, single-span bridges and reactions without deck continuity; 80 % for M−, M+ in the M− zones over piers, reactions at continuous piers and deflections). Untick it to choose 63 % or 80 % by hand. The lane load always covers the whole deck (S6 bumper-to-bumper case), as before. Support reactions are now a fifth diagram with arrows at the supports, replacing the table below the diagrams.
- The vehicle always travels in both directions; the "travel direction" option is removed (older files open unchanged).
- Up to 7 spans. The section at the cursor (girder, slab, or an "EI" box) is drawn in the beam frame.
- "Thermal" becomes Imposed deformation: thermal gradient (with an illustrated profile), slab shrinkage (250 × 10⁻⁶ by default) and slab creep (ε = φ σc / Ec), each analysed alone, on the long-term k·n composite section (k = 3 by default).
- Stresses: the hover preview shows the top-bar stress in both cases, no slab value, and the M max / M min legend; the full window has a beam sketch with a cursor (click or drag to move the station).
- Audit fixes: the v0.9.5 constant support section is removed (it overrode the non-prismatic zones; older files still open); bars must lie inside the slab; the stress load stages are saved with the project; one project schema (9) for Python and the browser.
- NEBT girders: section properties (tabulated A, I, yb, h; composite with n = Eg/Ec and bars m = Es/Eg; negative region I′) and stress diagrams like steel girders. A bridge with NEBT girders cannot be non-prismatic.
- Stresses: instant hover preview from one all-stations calculation, fixed scale from the bridge extreme tension and compression, values in MPa on the drawing coloured by sign, S1–S5 marked in the full window.
- FT tab always visible, no axle factor by default. Slab FLS shear n ≥ 2 follows each printed table (A/B: 3.20 + 0.10 Le; C/D: 3.20 + 0.10/Le). The Excel FT sheet lists every parameter.
- Diagram readout in the colour of each diagram, values next to the dots; "Method and assumptions" window in the header; explanation of standard vs fine precision.





