Natural Gas Transmission

The Weymouth equation for compressible flow and the AECO–Henry Hub basis differential derived from transport cost arithmetic

pipelines
natural gas
hydraulics
energy
Alberta
economic geography
Alberta produces 70% of Canada’s natural gas. The NOVA Gas Transmission system moves it across 25,000 kilometres of Alberta pipe to markets that price it CAD 1–2 per gigajoule below what the same gas would fetch in Louisiana. This article derives the Weymouth equation for compressible gas flow from first principles, applies it to real NGTL infrastructure, and shows how transport cost arithmetic produces the AECO discount — and why that discount occasionally collapses to near zero when production outgrows capacity.
Published

May 12, 2026

Part of the Alberta Pipeline Geography cluster. This is P3 of five articles. P1 — Crude Oil Pipelines · P2 — NGL and Condensate Systems · P4 — Refined Products Distribution · P5 — The Integrated Network


Before You Start

You should know What pressure means physically. That gases compress and expand when pressure changes, unlike liquids. Basic calculus: what an integral is, conceptually. The P1 derivation of the Darcy-Weisbach equation for liquid pipelines is useful context but not a strict prerequisite.

You will learn Why the Darcy-Weisbach equation from P1 does not work for gas pipelines and what replaces it. How to derive the Weymouth equation from the momentum equation for compressible flow. How compressor stations differ from pump stations mechanically and thermodynamically. How to convert the Weymouth flow equation into the tariff arithmetic that produces the AECO–Henry Hub basis differential. And why the differential occasionally collapses to near zero when Alberta’s production growth temporarily outpaces the pipeline system’s capacity.

Why this matters Alberta producers received approximately CAD 1.50–2.00 per gigajoule less than Henry Hub for their gas in 2024 — a discount that, applied across Alberta’s roughly 15 billion cubic feet of daily production, represents several billion dollars per year in reduced provincial and industry revenue (Canada Energy Regulator 2024). Understanding whether this discount is the unavoidable price of distance, a regulatory failure, or a temporary capacity constraint requires examining the physics of gas transmission and the cost arithmetic of moving compressible fluid across thousands of kilometres. This article does that.

If this gets hard, focus on… The key difference between gas and liquid pipelines is that gas density changes with pressure. As gas flows along the pipe and pressure drops, the gas expands — it gets less dense, so velocity must increase to maintain the same mass flow. Higher velocity means higher friction. The integral that produces the P_1^2 - P_2^2 form of the Weymouth equation is the mathematical consequence of this expansion. Once you see that, the rest follows.


At 7:00 every morning, the AECO C price — the benchmark price for Alberta natural gas at the storage hub near Suffield, in southeastern Alberta — is set by overnight trading on the NGX exchange in Calgary. Traders, gas utilities, industrial buyers, and producers post bids and offers; the system clears at a price that balances supply and demand for next-day delivery. The same morning, Henry Hub in Sabine Parish, Louisiana posts its own price. The two numbers are related but not equal. Henry Hub almost always trades higher than AECO. The gap between them — the basis differential — is what Alberta’s upstream gas industry calls its structural problem, and what financial analysts call the AECO discount.

This article derives the basis differential from transport cost arithmetic. It starts from the physics of compressible flow — fundamentally different from the incompressible crude oil physics of P1 — derives the Weymouth equation that governs gas pipeline capacity, builds the compressor station model that makes long-distance transmission possible, and assembles those components into the tariff formula that connects a price in Louisiana to a price in southeastern Alberta. The 2018 AECO collapse — when the differential briefly exploded to CAD 2.00/GJ and beyond — is then explained as a capacity arithmetic event, not a pricing anomaly.


1. The Question

Three connected questions drive this article:

First: how is the flow of compressible gas through a pipeline governed, and how does the governing equation differ from the liquid pipeline case?

Second: what determines where compressor stations must be placed, and how much power does each station consume?

Third: how does the physics of gas transmission translate into the tariff arithmetic that produces the AECO–Henry Hub basis differential, and under what conditions does the physical capacity constraint, rather than the tariff, become the binding limit?

These are a fluid mechanics question, an energy question, and a market structure question. They have the same answer: the Weymouth equation and its consequences, applied to 25,000 kilometres of Alberta pipe and the continental gas markets those kilometres connect to.


2. The Conceptual Model

Why Liquid Pipeline Physics Fails for Gas

In P1, the Darcy-Weisbach equation assumed fluid density is constant along the pipe. For crude oil — approximately 900 kg/m³ whether the pipeline pressure is 8 MPa or 6.5 MPa — this is an excellent approximation. For natural gas, it is wrong by a factor of roughly two.

Natural gas at 8 MPa and 10°C has a density of approximately 63 kg/m³. At 6.5 MPa (roughly the delivery pressure after 150 km of friction), density is approximately 51 kg/m³ — a 19% reduction over a single pipeline segment. As the gas expands along the line, it occupies more volume. The mass flow rate is conserved (no gas disappears in transit), so the gas must accelerate as its density decreases. Higher velocity means higher friction losses per unit length, which means larger pressure drops in the downstream sections of any given segment.

The Darcy-Weisbach equation \Delta P = f (L/D) (\rho v^2/2) treats \rho as a constant. If \rho changes by 19% over a segment, the simple form is inaccurate by that amount. For engineering purposes — particularly for high-pressure transmission pipelines where the compressibility effect accumulates over hundreds of kilometres — we need the proper compressible flow formulation.

The Three Core Properties

Three properties govern compressible gas pipeline flow, all of which change along the pipe:

Density: \rho = PM/(ZRT) — the real gas law, where P is absolute pressure, M is the molecular weight of the gas, Z is the compressibility factor (1.0 for an ideal gas, typically 0.85–0.93 for high-pressure natural gas), R is the universal gas constant, and T is absolute temperature. At constant temperature, density is proportional to pressure.

Velocity: conservation of mass means \dot{m} = \rho v A = constant. As \rho falls (lower pressure downstream), v must rise to keep \dot{m} constant. The pipe carries the same mass per second at every cross-section, but the gas moves faster downstream.

Friction: the Darcy friction factor f behaves similarly to the liquid case — it depends on the Reynolds number and pipe roughness, with f \approx 0.0080.012 for fully turbulent flow in large-diameter gas lines. The Weymouth approximation replaces f with a simple function of diameter that fits field data well over the relevant Reynolds number range.


3. Building the Mathematical Model

3.1 The Real Gas Law and Compressibility

For a real gas at pressure P, temperature T, molecular weight M, and compressibility factor Z:

\rho = \frac{PM}{ZRT} \quad [\text{kg/m}^3]

The compressibility factor Z corrects for non-ideal behaviour. At pressures typical for gas transmission pipelines (5–10 MPa), Z = 0.850.92 — the gas is about 8–15% denser than an ideal gas prediction would suggest, because intermolecular attractive forces at high pressure partially counteract the kinetic energy that pushes molecules apart.

For the worked example below, Z = 0.88 is used — appropriate for a lean WCSB natural gas (specific gravity G = 0.60, meaning 60% the molecular weight of air) at 283 K and 7–8 MPa.

Gas specific gravity G relates molecular weight M_{\text{gas}} to air (M_{\text{air}} = 28.97 kg/kmol):

G = \frac{M_{\text{gas}}}{M_{\text{air}}} \implies M_{\text{gas}} = 28.97\, G

For Alberta Montney gas with G \approx 0.60, M \approx 17.4 kg/kmol — consistent with a methane-dominant stream with some ethane and propane (Alberta Energy Regulator 2025).

3.2 Continuity and Momentum for Compressible Flow

The steady-state momentum equation for flow in a horizontal pipe, in the direction of flow, is:

\frac{dP}{dL} = -\frac{f \rho v^2}{2D} - \rho v \frac{dv}{dL}

The first term is friction; the second is the acceleration pressure drop (kinetic energy change as gas expands and accelerates). For gas transmission pipelines at subsonic speeds, the kinetic energy term is small — typically less than 1% of the friction term — and can be dropped:

\frac{dP}{dL} \approx -\frac{f \rho v^2}{2D}

From the real gas law, \rho = PM/(ZRT) at constant T.

From mass continuity, $v = /A = $ const, so \rho v^2 = (\rho v) \cdot v = (\dot{m}/A) \cdot v.

Because \rho v = \dot{m}/A is constant and \rho = PM/(ZRT):

v = \frac{\dot{m}}{A\rho} = \frac{\dot{m} ZRT}{APM}

Therefore:

\rho v^2 = \rho \cdot v^2 = \frac{PM}{ZRT} \cdot \left(\frac{\dot{m}ZRT}{APM}\right)^2 = \frac{\dot{m}^2 ZRT}{A^2 PM}

Substituting into the momentum equation:

\frac{dP}{dL} = -\frac{f}{2D} \cdot \frac{\dot{m}^2 ZRT}{A^2 PM}

Rearranging:

P \, dP = -\frac{f \dot{m}^2 ZRT}{2DA^2 M} \, dL

3.3 The General Isothermal Pipeline Equation

Integrating the momentum equation along the pipe from L = 0 (inlet, pressure P_1) to L = L (outlet, pressure P_2), at constant temperature T:

\int_{P_1}^{P_2} P \, dP = -\frac{f \dot{m}^2 ZRT}{2DA^2 M} \int_0^L dL

\boxed{\frac{P_1^2 - P_2^2}{2} = \frac{f \dot{m}^2 ZRT L}{2DA^2 M}}

P_1^2 - P_2^2 = \frac{f \dot{m}^2 ZRT L}{DA^2 M}

This is the general isothermal compressible flow equation. Compare to the Darcy-Weisbach result from P1, which gave \Delta P = f(L/D)(\rho v^2/2) — a linear pressure difference. For gas pipelines, the natural variable is P^2, not P, because integrating the pressure-dependent density produces the squared form.

Converting mass flow to volumetric flow at standard conditions:

Pipelines are commercial instruments; flow is measured and contracted in standard cubic metres (Sm³) or cubic feet at defined base conditions (T_{sc} = 288.15 K, P_{sc} = 101.325 kPa). The mass flow \dot{m} relates to volumetric flow at standard conditions Q_{sc} as:

\dot{m} = \rho_{sc} \, Q_{sc} = \frac{P_{sc} M}{R T_{sc}} \, Q_{sc}

Substituting into the general equation and with A = \pi D^2/4:

P_1^2 - P_2^2 = \frac{f \left(\dfrac{P_{sc} M}{R T_{sc}}\right)^2 Q_{sc}^2 \cdot ZRT \cdot L}{D \cdot (\pi D^2/4)^2 \cdot M}

= \frac{16 f P_{sc}^2 M \, Q_{sc}^2 \, Z T \, L}{\pi^2 R \, T_{sc}^2 \, D^5}

Substituting M = 28.97 G, R = 8{,}314 J/(kmol·K), P_{sc} = 101{,}325 Pa, T_{sc} = 288.15 K:

P_1^2 - P_2^2 = \underbrace{\frac{16 \times 28.97 \times (101{,}325)^2}{\pi^2 \times 8{,}314 \times (288.15)^2}}_{= 6{,}987} \cdot \frac{f \, G \, Z \, T \, L}{D^5} \cdot Q_{sc}^2

At standard conditions, this constant equals 6,987 (units: Pa²·m⁻⁵·s²·K⁻¹, with Q_{sc} in m³/s, D in m, L in m, T in K).

3.4 The Weymouth Approximation

The general equation above requires knowing the friction factor f. For liquid pipelines (P1), we used the Churchill formula, which accurately models how f varies with Reynolds number and roughness. For gas pipelines, the Reynolds number for a large-diameter high-pressure line is typically 10^610^8 — deep in the fully turbulent, rough-pipe regime — where f varies only weakly with Re and is primarily a function of relative roughness.

Thomas R. Weymouth (1912), working with field measurements from early U.S. gas distribution systems, found that a simple friction factor (Weymouth 1912):

f_w = \frac{0.032}{D_{\text{in}}^{1/3}}

where D_{\text{in}} is the inner diameter in inches, gave a good empirical fit to observed pressure drops over the Reynolds number range of practical interest. Converting to SI (with D_m in metres, using D_{\text{in}} = D_m / 0.0254):

f_w = \frac{0.032}{(D_m / 0.0254)^{1/3}} = \frac{0.032 \times 0.0254^{1/3}}{D_m^{1/3}} = \frac{0.009354}{D_m^{1/3}}

Substituting into the general equation:

P_1^2 - P_2^2 = 6{,}987 \times \frac{0.009354 / D^{1/3}}{D^5} \cdot G \, Z \, T \, L \cdot Q_{sc}^2 = \frac{65.34 \, G \, Z \, T \, L}{D^{16/3}} \cdot Q_{sc}^2

Solving for flow rate:

\boxed{Q_{sc} = \left(\frac{(P_1^2 - P_2^2) \, D^{16/3}}{65.34 \, G \, Z \, T \, L}\right)^{1/2}}

where Q_{sc} is in m³/s at standard conditions, pressures in Pa, temperatures in K, and lengths in m. This is the Weymouth equation.

The D^{16/3} = D^{5.333} diameter dependence arises from the combination of the D^5 in the pressure-drop formula and the D^{-1/3} in the Weymouth friction factor. Compare to P1’s incompressible result: Q \propto D^{5/2} = D^{2.5} from the Darcy-Weisbach equation at constant pressure drop. Gas pipelines have a slightly steeper diameter dependence (D^{2.667} vs D^{2.5}), meaning that increasing pipe diameter yields slightly larger capacity gains for gas than for liquid at the same flow regime.

3.5 Compressor Stations: Compression Ratio and Power

Gas pipelines use compressor stations rather than pump stations. The physical difference is significant. A pump adds energy to a liquid by increasing its pressure directly — the liquid barely changes density. A compressor must increase a gas’s pressure by doing work against the resistance of the gas to compression.

The compression ratio is the ratio of outlet to inlet absolute pressure:

r = \frac{P_{\text{out}}}{P_{\text{in}}}

Practical single-stage centrifugal compressors achieve compression ratios of 1.2–1.6 before the temperature rise at the outlet makes multi-stage compression preferable. Reciprocating compressors can achieve higher ratios but at lower flow rates.

For adiabatic (isentropic) compression of a real gas, the outlet temperature after compression is:

T_2 = T_1 \cdot r^{(k-1)/k}

where k = C_p/C_v is the heat capacity ratio. For lean natural gas, k \approx 1.28, so:

(k-1)/k = 0.28/1.28 = 0.2188

The shaft power required by the compressor, correcting for isentropic efficiency \eta_c:

\boxed{P_{\text{shaft}} = \frac{\dot{m} \, Z R T_1}{\eta_c \, M} \cdot \frac{k}{k-1} \cdot \left[r^{(k-1)/k} - 1\right]}

where \dot{m} is mass flow [kg/s], R = 8{,}314 J/(kmol·K), M in kg/kmol, and \eta_c \approx 0.85 for modern centrifugal compressors.

Note the structural parallel to P1’s pump power equation: P_{\text{pump}} = Q \Delta P / \eta. For a compressor, the bracketed term [r^{(k-1)/k} - 1] plays the role of \Delta P — it measures the work done against the gas per unit of mass flow, normalised to the inlet conditions. The Mayer relation and the gas law connect it back to temperature rise, which is why compressor outlet gas arrives hot and is often cooled before entering the downstream pipe.

3.6 The Basis Differential: Transport Cost Arithmetic

The AECO–Henry Hub basis differential is the market’s representation of the cost of moving natural gas from southeastern Alberta to the North American pricing hub in Louisiana. The transport cost sets a theoretical floor on the basis: in competitive markets with adequate capacity, the price difference between any two trading points should not persistently exceed the cost of moving gas between them.

The full transport cost from AECO to a Henry Hub equivalent has several components:

\text{Basis}_{\text{AECO-HH}} = T_{\text{NGTL}} + T_{\text{Mainline}} + T_{\text{US-transit}} + \varepsilon

where: - T_{\text{NGTL}} — NGTL gathering and Alberta system tariff: approximately CAD 0.35–0.50/GJ - T_{\text{Mainline}} — TC Canadian Mainline tariff from AECO to Ontario Dawn Hub: approximately CAD 1.00–1.60/GJ (TC Energy Corporation 2024c) - T_{\text{US-transit}} — U.S. pipeline connections from Dawn/Niagara southward: approximately USD 0.25–0.50/GJ - \varepsilon — quality adjustment and commodity losses

In normal market conditions with adequate pipeline capacity, the AECO price should satisfy:

P_{\text{AECO}} \approx P_{\text{HH}} \times \frac{\text{USD}}{\text{CAD}} - \text{Basis}_{\text{AECO-HH}}

At an exchange rate of 0.74 USD/CAD and a Henry Hub price of USD 2.60/MMBTU (≈ CAD 3.30/GJ), the transport-cost-implied AECO floor is approximately:

P_{\text{AECO}} \approx \text{CAD }3.30 - \text{CAD }1.75 = \text{CAD }1.55/\text{GJ}

When AECO trades above the implied floor, the market is comfortably supplied and the basis reflects pure transport cost. When it trades below the implied floor — as it did dramatically in 2018 — physical pipeline capacity, not tariff economics, has become the binding constraint.


4. Worked Example by Hand

Scenario: A 36-inch NGTL trunk line segment runs 150 km from a major gathering hub in west-central Alberta toward the AECO interconnection. Calculate: (a) the throughput at a given pressure differential; (b) the compressor station spacing requirement; and (c) the power needed at each compressor station.

Given parameters:

Parameter Value
Pipe inner diameter D 0.914 m (36 inches)
Segment length L 150 km = 150,000 m
Gas specific gravity G 0.60 (lean WCSB Montney gas)
Average temperature T 283 K (10°C)
Compressibility factor Z 0.88
Inlet pressure P_1 8.5 MPa
Outlet pressure P_2 6.0 MPa
Max allowable operating pressure P_{\max} 8.5 MPa
Min compressor suction pressure P_{\min} 6.0 MPa

Step 1 — Pressure-squared difference

P_1^2 - P_2^2 = (8.5 \times 10^6)^2 - (6.0 \times 10^6)^2 = 72.25 \times 10^{12} - 36.00 \times 10^{12} = 36.25 \times 10^{12} \;\text{Pa}^2

Step 2 — Diameter factor D^{16/3}

D^{16/3} = (0.914)^{5.333}

(0.914)^5 = 0.914^2 \times 0.914^2 \times 0.914 = 0.8354 \times 0.8354 \times 0.914 = 0.638

(0.914)^{1/3} \approx 0.970

D^{16/3} = 0.638 \times 0.970 = 0.619

Step 3 — Throughput from Weymouth equation

Q_{sc} = \left(\frac{36.25 \times 10^{12} \times 0.619}{65.34 \times 0.60 \times 0.88 \times 283 \times 150{,}000}\right)^{1/2}

Numerator: 36.25 \times 10^{12} \times 0.619 = 22.44 \times 10^{12}

Denominator: 65.34 \times 0.60 = 39.20; \times 0.88 = 34.50; \times 283 = 9{,}761; \times 150{,}000 = 1.464 \times 10^{9}

Q_{sc} = \left(\frac{22.44 \times 10^{12}}{1.464 \times 10^9}\right)^{1/2} = \sqrt{15{,}327} = 123.8 \;\text{m}^3/\text{s at standard conditions}

Converting to industry units:

Q_{sc} = 123.8 \;\text{m}^3/\text{s} \times 86{,}400 \;\text{s/day} = 10.7 \times 10^6 \;\text{m}^3/\text{day}

In billion cubic feet per day: 10.7 \times 10^6 \;\text{m}^3/\text{day} \times 0.03531 = 378{,}000 \;\text{MCF/day} \approx \mathbf{378 \;\text{MMSCFD}}

A single 36-inch trunk segment at these conditions can carry approximately 378 MMSCFD — about 2.5% of Alberta’s daily production — over 150 km before requiring a booster station. The NGTL system’s 25,000 km of pipeline includes many such trunks operating in parallel.

Step 4 — Compressor station spacing and power

The pressure budget per station is \Delta P^2_{\text{budget}} = P_{\max}^2 - P_{\min}^2 = 72.25 \times 10^{12} - 36.00 \times 10^{12} = 36.25 \times 10^{12} Pa² (same as Step 1 — this is by design for this example). Station spacing L_{\text{station}} scales linearly with the pressure budget:

L_{\text{station}} = L \times \frac{\Delta P^2_{\text{budget}}}{\Delta P^2_{\text{actual}}} = 150 \;\text{km} \times \frac{36.25 \times 10^{12}}{36.25 \times 10^{12}} = \mathbf{150 \;\text{km}}

The selected pressure differential exactly fills one station’s budget — one station every 150 km, consistent with NGTL’s actual spacing of 100–200 km on major trunk lines (TC Energy Corporation 2024b).

Compression ratio:

r = P_{\max} / P_{\min} = 8.5 / 6.0 = 1.417

Temperature rise (isentropic, k = 1.28):

T_2 = T_1 \cdot r^{(k-1)/k} = 283 \times (1.417)^{0.2188}

(1.417)^{0.2188} = e^{0.2188 \times \ln 1.417} = e^{0.2188 \times 0.3481} = e^{0.07617} = 1.079

T_2 = 283 \times 1.079 = \mathbf{305 \;K} = 32°C

Gas exits each compressor at 32°C — warm, but within the range that avoids soil heating issues on most NGTL routes. No intercooler is required.

Compressor shaft power (mass flow \dot{m} = Q_{sc} \times \rho_{sc}):

\rho_{sc} = \frac{P_{sc} M}{R T_{sc}} = \frac{101{,}325 \times 17.38}{8{,}314 \times 288.15} = \frac{1{,}761{,}000}{2{,}395{,}000} = 0.735 \;\text{kg/m}^3

\dot{m} = 123.8 \times 0.735 = 91.0 \;\text{kg/s}

P_{\text{shaft}} = \frac{\dot{m} \, Z R T_1}{\eta_c M} \cdot \frac{k}{k-1} \cdot \left[r^{(k-1)/k} - 1\right]

= \frac{91.0 \times 0.88 \times 8{,}314 \times 283}{0.85 \times 17{,}380} \times \frac{1.28}{0.28} \times (1.079 - 1)

Numerator of first fraction: 91.0 \times 0.88 \times 8{,}314 \times 283 = 91.0 \times 2{,}069{,}000 = 1.883 \times 10^8

Denominator: 0.85 \times 17{,}380 = 14{,}770

First factor: 1.883 \times 10^8 / 14{,}770 = 12{,}750 W/(kg/s) · (kg/s) = … let me compute as:

P_{\text{shaft}} = 91.0 \times \frac{0.88 \times 8{,}314 \times 283}{0.85 \times 17{,}380} \times 4.571 \times 0.079

= 91.0 \times \frac{2{,}069{,}000}{14{,}773} \times 0.361

= 91.0 \times 140.1 \times 0.361 = 91.0 \times 50.6 = \mathbf{4{,}600 \;\text{kW} \approx 4.6 \;\text{MW}}

A 4.6 MW compressor station for a single 36-inch line at 378 MMSCFD. NGTL’s major stations, which serve multiple parallel lines and handle combined throughputs of 2–5 BCF/day, are rated at 20–80 MW — consistent with scaling this single-line result by 5–15 parallel lines.


5. Computational Implementation

import numpy as np
import matplotlib.pyplot as plt

# ── Parameters ─────────────────────────────────────────────────────────────────
G    = 0.60    # specific gravity
Z    = 0.88    # compressibility factor
T    = 283.0   # average temperature [K]
P1   = 8.5e6   # inlet pressure [Pa]
P2   = 6.0e6   # outlet pressure [Pa]
P_max = 8.5e6
P_min = 6.0e6
L    = 150_000.0  # segment length [m]

# Weymouth constant (SI units, pressures in Pa, D in m, L in m, T in K)
C_W  = 65.34  # derived in text

def weymouth_Q(dP2, D, G, Z, T, L):
    """Volumetric flow at standard conditions [m³/s] from Weymouth eq."""
    D_exp = D ** (16.0 / 3.0)
    return np.sqrt(dP2 * D_exp / (C_W * G * Z * T * L))

def weymouth_dP2(Q, D, G, Z, T, L):
    """P₁²−P₂² [Pa²] from Weymouth eq given flow."""
    D_exp = D ** (16.0 / 3.0)
    return C_W * G * Z * T * L * Q**2 / D_exp

M3_S_TO_MMSCFD = 86_400.0 / (28.317 * 1e3)  # 1 m³/s → MMSCFD

diameters_in = [24, 36, 48]
diameters_m  = [d * 0.0254 for d in diameters_in]
colours      = ['#e74c3c', '#2980b9', '#27ae60']

fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(9, 9))

# ── Top: Q vs dP² for different diameters ──────────────────────────────────────
dP2_range = np.logspace(11, 13.5, 300)   # Pa²

for D_m, D_in, col in zip(diameters_m, diameters_in, colours):
    Q = weymouth_Q(dP2_range, D_m, G, Z, T, L)
    Q_MMSCFD = Q * M3_S_TO_MMSCFD
    ax1.loglog(dP2_range / 1e12, Q_MMSCFD, color=col, linewidth=2.2,
               label=f'{D_in} in ({D_m*39.37:.0f} in)')

# Design point
dP2_design = P1**2 - P2**2
Q_design   = weymouth_Q(dP2_design, diameters_m[1], G, Z, T, L)
Q_design_MMSCFD = Q_design * M3_S_TO_MMSCFD
ax1.plot(dP2_design / 1e12, Q_design_MMSCFD, 'D', color='#2980b9',
         markersize=11, zorder=6,
         label=f'Design point: {Q_design_MMSCFD:.0f} MMSCFD @ 36 in')
ax1.axvline(dP2_design / 1e12, color='#7f8c8d', linestyle='--',
            linewidth=1.0, alpha=0.7)
ax1.axhline(Q_design_MMSCFD, color='#7f8c8d', linestyle='--',
            linewidth=1.0, alpha=0.7)

ax1.set_xlabel(r'Pressure-squared differential  $P_1^2 - P_2^2$  [MPa²]', fontsize=10)
ax1.set_ylabel('Flow rate  $Q_{sc}$  [MMSCFD]', fontsize=10)
ax1.set_title('Weymouth Equation — Flow Rate vs Pressure Budget\n'
              f'G = {G}, Z = {Z}, T = {T} K, L = {L/1000:.0f} km', fontsize=11, pad=8)
ax1.legend(fontsize=9)
ax1.grid(alpha=0.3, which='both')

# ── Bottom: station spacing vs throughput ────────────────────────────────────
Q_range_MMSCFD = np.linspace(50, 900, 400)
Q_range_SI = Q_range_MMSCFD / M3_S_TO_MMSCFD

budget_dP2 = P_max**2 - P_min**2

for D_m, D_in, col in zip(diameters_m, diameters_in, colours):
    # dP2 per metre at each Q
    dP2_per_m = weymouth_dP2(Q_range_SI, D_m, G, Z, T, 1.0)
    L_station_km = budget_dP2 / dP2_per_m / 1000.0
    L_station_km = np.clip(L_station_km, 0, 800)
    ax2.semilogy(Q_range_MMSCFD, L_station_km, color=col, linewidth=2.2,
                 label=f'{D_in} in')

ax2.axvline(Q_design_MMSCFD, color='#2980b9', linestyle=':', linewidth=1.5,
            label=f'Design point — {Q_design_MMSCFD:.0f} MMSCFD')
ax2.axhline(150, color='#7f8c8d', linestyle='--', linewidth=1.0, alpha=0.7,
            label='Design spacing — 150 km')

ax2.set_xlabel('Throughput  $Q_{sc}$  [MMSCFD]', fontsize=10)
ax2.set_ylabel('Max compressor station spacing  [km]', fontsize=10)
ax2.set_title(f'Station Spacing vs Throughput\n'
              f'MAOP {P_max/1e6:.1f} MPa, suction min {P_min/1e6:.1f} MPa',
              fontsize=11, pad=8)
ax2.legend(fontsize=9)
ax2.grid(alpha=0.3, which='both')
ax2.set_ylim(5, 1000)

plt.tight_layout()
plt.show()
Figure 1: Top: Weymouth flow rate as a function of the pressure-squared differential (P₁²−P₂²) for three pipe diameters on the NGTL system. The linear relationship on this log-log plot confirms the Q ∝ (P₁²−P₂²)^0.5 scaling. Dashed lines mark the worked-example design point (36 in, P₁=8.5 MPa, P₂=6.0 MPa, Q≈378 MMSCFD). Bottom: maximum compressor station spacing at constant flow rate for each diameter — a 48-inch trunk requires stations every 350+ km at 600 MMSCFD, while a 24-inch feeder needs a station every 30 km at the same throughput.
import numpy as np
import matplotlib.pyplot as plt

k     = 1.28    # heat capacity ratio for lean natural gas
T1    = 283.0   # inlet temperature [K]
eta_c = 0.85    # isentropic efficiency
G     = 0.60
Z     = 0.88
M     = 28.97 * G   # [kg/kmol]
R     = 8_314.0     # [J/(kmol·K)]
L     = 150_000.0
D     = 0.914

# Standard density
rho_sc = (101_325.0 * M) / (R * 288.15)  # [kg/m³]
Q_sc   = 123.8  # m³/s (design point from worked example)
m_dot  = Q_sc * rho_sc  # [kg/s]

r_range = np.linspace(1.05, 2.20, 300)
exponent = (k - 1) / k

T2_range = T1 * r_range**exponent
bracket  = r_range**exponent - 1.0
power_kW = (m_dot * Z * R * T1 / (eta_c * M)) * (k / (k - 1)) * bracket / 1000.0

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 5.5))

# ── Left: temperature and power vs compression ratio ──────────────────────────
ax1b = ax1.twinx()

l1, = ax1.plot(r_range, T2_range - 273.15, color='#c0392b', linewidth=2.2,
               label='Outlet temperature $T_2$')
l2, = ax1b.plot(r_range, power_kW, color='#2980b9', linewidth=2.2, linestyle='--',
                label='Shaft power  $P_{shaft}$')

# Design point
r_des = 8.5 / 6.0
T2_des = T1 * r_des**exponent - 273.15
P_des  = (m_dot * Z * R * T1 / (eta_c * M)) * (k / (k - 1)) * (r_des**exponent - 1) / 1000
ax1.plot(r_des, T2_des, 'o', color='#c0392b', markersize=10, zorder=6)
ax1b.plot(r_des, P_des, 's', color='#2980b9', markersize=10, zorder=6)

ax1.axvline(r_des, color='#7f8c8d', linestyle=':', linewidth=1.2,
            label=f'Design  r = {r_des:.2f}')
ax1.axhline(40, color='#f39c12', linestyle='--', linewidth=1.0, alpha=0.8,
            label='40°C soil-heating threshold')
ax1.axvline(1.80, color='#8e44ad', linestyle=':', linewidth=0.9, alpha=0.8,
            label='Single-stage practical limit')

ax1.set_xlabel('Compression ratio  $r = P_{out}/P_{in}$', fontsize=10)
ax1.set_ylabel('Outlet temperature  $T_2$  [°C]', fontsize=10, color='#c0392b')
ax1b.set_ylabel('Shaft power  [kW]', fontsize=10, color='#2980b9')
ax1.tick_params(axis='y', colors='#c0392b')
ax1b.tick_params(axis='y', colors='#2980b9')
ax1.set_title('Compressor Performance\n36-in line, 378 MMSCFD', fontsize=11, pad=8)

lines = [l1, l2]
labels = [l.get_label() for l in lines]
extra_lines = [
    plt.Line2D([0], [0], color='#7f8c8d', linestyle=':',
               label=f'Design r = {r_des:.2f}, T₂ = {T2_des:.0f}°C, {P_des:.0f} kW'),
    plt.Line2D([0], [0], color='#f39c12', linestyle='--',
               label='40°C threshold'),
    plt.Line2D([0], [0], color='#8e44ad', linestyle=':',
               label='Single-stage limit'),
]
ax1.legend(handles=lines + extra_lines, fontsize=8, loc='upper left')
ax1.grid(alpha=0.3)
ax1.set_xlim(1.05, 2.20)

# ── Right: Q² analogy between liquid and gas ────────────────────────────────
ax2.set_facecolor('#fafafa')
Q_mult = np.linspace(0.5, 2.5, 300)   # flow relative to design

# Liquid: ΔP ∝ Q² (approximately, since f changes slightly)
liquid_dP = Q_mult**2   # normalised

# Gas: (P1²-P2²) ∝ Q²
gas_dP2 = Q_mult**2     # same quadratic form but different variable

ax2.plot(Q_mult, liquid_dP, color='#2980b9', linewidth=2.2,
         label=r'Liquid (P1): $\Delta P \propto Q^2$')
ax2.plot(Q_mult, gas_dP2, color='#c0392b', linewidth=2.2, linestyle='--',
         label=r'Gas (P3): $(P_1^2-P_2^2) \propto Q^2$')

ax2.axvline(1.0, color='#7f8c8d', linestyle=':', linewidth=1.0, alpha=0.8)
ax2.axhline(1.0, color='#7f8c8d', linestyle=':', linewidth=1.0, alpha=0.8)
ax2.plot(1.0, 1.0, 'o', color='#2c3e50', markersize=9, zorder=6,
         label='Design point (normalised)')

ax2.annotate('Double the flow\n→ 4× the pressure budget', xy=(2.0, 4.0),
             xytext=(1.4, 5.5),
             arrowprops=dict(arrowstyle='->', color='#2c3e50', lw=1.2),
             fontsize=8.5, ha='left')

ax2.set_xlabel('Flow rate (relative to design)', fontsize=10)
ax2.set_ylabel('Pressure budget (relative to design)', fontsize=10)
ax2.set_title('The Q² Law Applies to Both\nLiquid ΔP and Gas (P₁²−P₂²)', fontsize=11, pad=8)
ax2.legend(fontsize=9)
ax2.grid(alpha=0.3)
ax2.set_xlim(0.4, 2.6)
ax2.set_ylim(0, 7)

plt.tight_layout()
plt.show()
Figure 2: Left: Outlet temperature and compressor shaft power as functions of compression ratio, for the 36-inch line at 378 MMSCFD. At the design compression ratio r=1.42, gas exits at 32°C — warm but below the 40°C threshold above which soil heating in clay-rich soils becomes a concern. Power rises steeply beyond r=1.8 (dashed line marks the practical limit for single-stage centrifugal compression without intercooling). Right: The velocity-squared analogy between gas and liquid pipelines. In P1, the key result was ΔP ∝ Q² for liquid (incompressible). For gas, the result is (P₁²−P₂²) ∝ Q² — the same quadratic dependence, but in the pressure-squared domain. This means doubling gas throughput requires four times the pressure-squared budget, just as doubling liquid throughput requires four times the pressure drop.
import numpy as np
import matplotlib.pyplot as plt

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(13, 5.5))

# ── Left: tariff stack by market ──────────────────────────────────────────────
markets = ['Dawn Hub\n(Ontario)', 'Chicago\n(Alliance)', 'Henry Hub\n(Louisiana, equiv.)']

# CAD/GJ components (approximate, 2023-2024 averages)
ngtl      = [0.40, 0.40, 0.40]    # NGTL within Alberta
mainline  = [1.30, 0.00, 1.40]    # TC Mainline or TC Canadian Mainline
alliance  = [0.00, 0.95, 0.00]    # Alliance direct route (Chicago)
eastern   = [0.00, 0.00, 0.20]    # Eastern Triangle / Dawn connection fee
us_transit= [0.00, 0.25, 0.45]    # U.S. connections to Henry Hub equiv.

comp_labels = ['NGTL (Alberta)', 'TC Mainline', 'Alliance Pipeline',
               'Eastern connections', 'U.S. transit']
comp_vals   = [ngtl, mainline, alliance, eastern, us_transit]
comp_clrs   = ['#2980b9', '#e74c3c', '#27ae60', '#f39c12', '#8e44ad']

x = np.arange(len(markets))
bottoms = np.zeros(len(markets))

for vals, label, col in zip(comp_vals, comp_labels, comp_clrs):
    vals_arr = np.array(vals)
    bars = ax1.bar(x, vals_arr, bottom=bottoms, color=col,
                   alpha=0.85, label=label, width=0.5, edgecolor='white')
    for i, (v, b) in enumerate(zip(vals_arr, bottoms)):
        if v > 0.05:
            ax1.text(x[i], b + v/2, f'{v:.2f}', ha='center', va='center',
                     fontsize=8.5, color='white', fontweight='bold')
    bottoms += vals_arr

# Label totals
for i, tot in enumerate(bottoms):
    ax1.text(x[i], tot + 0.04, f'Total:\nCAD {tot:.2f}/GJ',
             ha='center', va='bottom', fontsize=8.5, fontweight='bold')

ax1.set_xticks(x)
ax1.set_xticklabels(markets, fontsize=10)
ax1.set_ylabel('Transport cost [CAD/GJ]', fontsize=10)
ax1.set_title('AECO Transport Cost to Market\n(approximate 2024 tariff levels)', fontsize=11, pad=8)
ax1.legend(fontsize=8, loc='upper right')
ax1.grid(axis='y', alpha=0.3)
ax1.set_ylim(0, 2.8)

# ── Right: AECO price as function of HH price ─────────────────────────────────
HH_CAD = np.linspace(1.5, 6.0, 300)  # Henry Hub price in CAD/GJ

basis_normal = 1.80     # CAD/GJ — normal transport-cost basis to HH equiv.
basis_tight  = 3.20     # CAD/GJ — constrained market (effective basis)

aeco_normal  = np.maximum(HH_CAD - basis_normal, 0.05)
aeco_tight   = np.maximum(HH_CAD - basis_tight,  0.05)

ax2.plot(HH_CAD, aeco_normal, color='#2980b9', linewidth=2.2,
         label=f'Adequate capacity  (basis = CAD {basis_normal}/GJ)')
ax2.plot(HH_CAD, aeco_tight, color='#c0392b', linewidth=2.2, linestyle='--',
         label=f'Capacity-constrained  (effective basis = CAD {basis_tight}/GJ)')
ax2.plot(HH_CAD, HH_CAD, color='#95a5a6', linewidth=0.8, linestyle=':',
         label='AECO = Henry Hub (no basis)')

# Annotate 2018 episode
HH_2018  = 3.30   # CAD/GJ
AECO_2018 = 1.10  # CAD/GJ observed
AECO_2018_implied = HH_2018 - basis_normal  # where AECO "should" be
ax2.plot(HH_2018, AECO_2018, 'X', color='#e67e22', markersize=14, zorder=8,
         label=f'2018 collapse episode: HH = CAD {HH_2018}/GJ, AECO = CAD {AECO_2018}/GJ')
ax2.annotate(f'2018: actual AECO\nCAD {AECO_2018}/GJ\n(implied floor: CAD {AECO_2018_implied:.2f})',
             xy=(HH_2018, AECO_2018), xytext=(HH_2018 + 0.55, AECO_2018 + 0.4),
             arrowprops=dict(arrowstyle='->', color='#e67e22', lw=1.3),
             fontsize=8, color='#e67e22',
             bbox=dict(boxstyle='round,pad=0.2', fc='white', alpha=0.8))

ax2.fill_between(HH_CAD, aeco_tight, aeco_normal, alpha=0.08, color='#c0392b',
                 label='Constraint rent — captured by pipeline, not paid to AECO')

ax2.set_xlabel('Henry Hub equivalent price [CAD/GJ]', fontsize=10)
ax2.set_ylabel('AECO price [CAD/GJ]', fontsize=10)
ax2.set_title('AECO Price: Transport-Cost Floor vs\nCapacity-Constrained Reality', fontsize=11, pad=8)
ax2.legend(fontsize=7.8, loc='upper left')
ax2.grid(alpha=0.3)
ax2.set_xlim(1.5, 6.0)
ax2.set_ylim(0, 5.2)

plt.tight_layout()
plt.show()
Figure 3: Left: Transport cost components stacked from AECO to key downstream markets, showing why the basis differentials for different destinations have different theoretical floors. The Henry Hub equivalent includes TC Mainline tariff, Eastern Triangle connection, and an approximate U.S. transit component. The Dawn Hub (Ontario) differential is dominated by TC Mainline tolls and is the most directly observable. Right: Theoretical vs constrained AECO price as a function of Henry Hub price, at two scenarios — adequate capacity (basis = transport cost floor) and capacity-constrained (AECO decoupled from HH, trades below the floor). The 2018 episode is annotated: AECO fell to CAD 1.10/GJ while Henry Hub held near CAD 3.30/GJ, far below the transport-cost-implied floor of CAD 1.90/GJ.

6. The NGTL System and Alberta’s Gas Geography

The NOVA Gas Transmission Ltd. system — acquired by TransCanada Corporation (now TC Energy) in 1998 — is the gathering and transmission network that underlies all Alberta natural gas production. Its 25,000 kilometres of pipeline within Alberta connect more than 1,000 receipt points (gas plant outlets, processing plant tailgates, gathering system outlets) to 118 delivery points, including the major interconnections with export pipelines and the AECO storage hub (TC Energy Corporation 2024b).

NGTL operates as a postage-stamp rate system within Alberta: the tariff for moving gas from any point in Alberta to any other point in Alberta (or to an interconnection with an export pipeline) is the same regardless of distance. This is unusual in pipeline economics — most systems charge by distance — and it was deliberately designed to avoid discriminating against remote gas producers in the northeastern Montney or the Deep Basin. The practical consequence is that a gas producer 700 kilometres from AECO pays the same system access fee as one 50 kilometres away.

The AECO hub near Suffield, in southeastern Alberta near the Saskatchewan border, functions as the primary pricing and balancing point. Gas from across Alberta flows into the NGTL system, moves to AECO via trunk lines, and is then dispatched into export corridors. The major export routes are:

TC Canadian Mainline — eastward through Saskatchewan and Manitoba, then into Ontario. 4,900 kilometres to Dawn Hub in Ontario. Capacity approximately 10 billion cubic feet per day (BCF/day) across multiple lines, now running at reduced utilisation as eastern markets have diversified away from Alberta supply (TC Energy Corporation 2024a).

Alliance Pipeline — a direct, rich-gas route from northeastern Alberta to Chicago, bypassing AECO entirely for producers with direct Alliance connections. 3,848 kilometres. Alliance is a high-pressure system (12 MPa maximum operating pressure) that moves natural gas liquids still dissolved in the gas stream, fractionating at the Chicago terminus — the reverse of the conventional sequence. Capacity approximately 1.6 BCF/day (Alliance Pipeline Ltd. 2024).

Westcoast Energy (now Enbridge Gas Transmission) — southward through British Columbia to the U.S. Pacific Northwest and California markets. Connects to the T-South system near Prince George.

NGTL/LNG Canada connection — gas routed to the LNG Canada facility at Kitimat via the Coastal GasLink pipeline, which enters service in 2024–2025. A new export corridor representing approximately 2.1 BCF/day of additional demand for WCSB gas (LNG Canada 2024).

Alberta’s total gas production of approximately 15–17 BCF/day must all move through or around this network. Of that, roughly 7–9 BCF/day is consumed within Alberta itself — by oil sands SAGD operations, petrochemical plants, power generation, and residential and commercial heating. The remainder is available for export (Canada Energy Regulator 2025).


7. The 2018 AECO Collapse: When Capacity Becomes the Price

The Weymouth equation is an equation about potential flow. It describes the maximum flow a given pipe can carry at given pressures. When actual production approaches that maximum — when the system approaches full utilisation — the equation shifts from describing an engineering parameter to describing a market price.

In early 2018, Alberta’s Montney and Deep Basin gas production was growing at approximately 10–15% per year. TC Energy’s NGTL expansion programs, planned in response to earlier production forecasts, were proceeding — but the Montney’s growth had outrun the schedule. The NGTL system, particularly the northwest portion connecting Montney production to the main trunks running southeast toward AECO, was running at near-capacity utilisation on peak production days (Canada Energy Regulator 2024).

When a pipeline system approaches maximum flow — when Q \to Q_{\max} in the Weymouth equation — it cannot physically move more gas regardless of price. Producers who cannot move their gas cannot sell it. Gas backs up at the wellhead, or more precisely, accumulates in the system at pressures higher than buyers are willing to bid for delivery commitment. The AECO price — the price at the point where gas can be physically transferred to the export grid — falls to whatever buyers will pay for gas that cannot leave Alberta.

In several months of 2018, AECO traded below CAD 1.00/GJ on some days. Henry Hub held around USD 2.50–3.00/MMBTU (approximately CAD 3.00–3.60/GJ at prevailing exchange rates). The basis differential reached CAD 2.50–3.50/GJ — roughly twice the transport cost that would prevail with adequate capacity. On the worst days, AECO spot prices touched near zero: producers were literally unable to find buyers for gas that had nowhere to go.

This is the capacity constraint expressing itself as a price. The Weymouth equation quantifies what was missing: additional pipe diameter, additional compression horsepower, or both. TC Energy accelerated its NGTL expansion program — the Merrick, NGTL System 2021, and North Corridor Expansion projects added several BCF/day of capacity between 2019 and 2022. The AECO basis recovered to more normal levels (CAD 0.50–1.50/GJ) by 2020.

The arithmetic is clear in retrospect. The production growth rate exceeded the pipeline capacity addition rate by a margin that the Weymouth equation would have made visible to anyone tracking utilisation against nameplate capacity. The collapse was physically predictable; it was commercially surprising only to those who read the pipeline system as a background infrastructure rather than as the binding constraint it periodically becomes.


8. Interpretation

The P^2 form and why it matters for capacity planning

The Weymouth equation’s P_1^2 - P_2^2 form has a practical implication that operators and planners exploit. At a given flow rate, the pressure squared difference is fixed. If the inlet pressure is high (MAOP), the outlet pressure is determined. But as you extend the pipe length, the required pressure squared difference grows linearly with L — the station spacing shortens. The full system can be described entirely in terms of the pressure-squared budget available at each compressor station and the budget consumed per kilometre by the Weymouth friction term.

This is structurally identical to the Darcy-Weisbach analysis in P1 — a pressure budget per station, consumed by friction, with station spacing determined by the budget-to-consumption ratio. The difference is that gas uses squared pressures, not linear pressures, and the Weymouth friction factor scales with D^{-1/3} rather than the Moody chart value.

Why the AECO discount is not a policy failure

The transport-cost-implied AECO basis of CAD 1.75–2.00/GJ is the price that physics and distance charge for moving gas from southeastern Alberta to the most liquid U.S. markets. No regulatory change, no policy intervention, and no pipeline renegotiation can reduce this below its physical floor — the Weymouth equation, the compressor power equation, and the tariff arithmetic all have to recover real capital and real energy costs.

What policy can affect is the margin above the physical floor: whether the system is built with adequate capacity (so the market operates near the floor) or is capacity-constrained (so the market operates above the floor, disadvantaging producers). The 2018 collapse showed that constrained capacity produces basis differentials much wider than the physical floor — not because the physics changed, but because the physics became the binding constraint rather than just the cost floor.

Alliance Pipeline as a basis arbitrage vehicle

Alliance Pipeline’s direct Chicago connection, entering the U.S. market near Chicago rather than routing through Ontario, provides Alberta producers an alternative to TC Mainline pricing. The Alliance tariff is approximately CAD 1.40–1.60/GJ from Alberta to Chicago — comparable to the TC Mainline tariff to Dawn — but the Chicago delivery point prices against a different reference basis than Dawn/AECO does. In periods when the Chicago-Henry Hub basis favours Alliance producers, the alternative route improves Alberta’s aggregate basis arithmetic.

The existence of multiple export corridors with different terminal market pricing is the natural gas equivalent of the multi-corridor crude oil story in P1: the Trans Mountain expansion improved Alberta’s oil netback by providing access to a second price benchmark. The Alliance connection provides Alberta gas producers with a basis arbitrage option relative to TC Mainline routing, moderating the Mainline’s pricing power.


9. What Could Go Wrong

TC Mainline underutilisation and eastward basis erosion

The TC Canadian Mainline’s utilisation for eastward Alberta gas delivery has declined substantially as Ontario and Quebec have diversified to U.S. Appalachian supply, LNG imports, and increased Québec hydroelectricity. A pipeline with very low throughput has high per-unit tariffs (fixed capital costs divided by fewer units of gas) — which further disadvantages Alberta gas relative to closer-to-market competitors, reducing utilisation further. This is the fixed-cost trap from P1 applied to gas transmission: declining utilisation creates rising tariffs, which reduce competitiveness, which reduces utilisation. The TC Mainline’s East division is approaching this cycle, and TC Energy has proposed various restructuring options in regulatory filings (TC Energy Corporation 2024c).

LNG Canada demand surge and NGTL adequacy

LNG Canada at full capacity (14 million tonnes per year, approximately 2.1 BCF/day gas feed) represents a new, large, and constant demand source on the WCSB. Unlike interruptible industrial customers, LNG export trains run continuously — they cannot reduce demand when NGTL is tight. If Montney production growth is slower than expected, the combination of LNG Canada demand and existing Alberta consumption could tighten NGTL in ways that reproduce a 2018-type episode. The adequacy of NGTL’s Coastal GasLink interconnection and the northwest trunks is the key engineering question (LNG Canada 2024).

Compression energy and gas prices

NGTL compressor stations run on natural gas — the same commodity they transport. Fuel consumption for compression is approximately 2–4% of throughput for a full Alberta-to-border delivery. When gas prices are high (above CAD 4–5/GJ), the fuel cost of compression becomes a meaningful fraction of the wellhead value of the gas being moved. This is not typically a crisis — the tariff structure adjusts over regulatory periods — but it creates a natural hedge: high gas prices raise the value of gas saved by operating compressors more efficiently.

Elevation and terrain effects on the Weymouth equation

The Weymouth equation as derived above assumes a horizontal pipe. The elevation correction adds a static pressure head term:

P_1^2 - P_2^2 = \frac{65.34\, G\, Z\, T\, L}{D^{16/3}} Q_{sc}^2 + \frac{2 P_{\text{avg}} M g \Delta z}{Z R T}

where \Delta z is net elevation gain and P_{\text{avg}} is average pipeline pressure. Alberta’s major NGTL trunk lines traverse relatively flat terrain — elevation changes of a few hundred metres over hundreds of kilometres. The correction term is small (a few percent) and is handled by pipeline operators as a routine additive to the Weymouth calculation. The Rocky Mountain corridors relevant to LNG Canada’s Coastal GasLink are a different matter: elevation changes of 1,000–1,500 metres over 100 km segments require careful elevation head accounting and significantly increase compression requirements.


10. Extension: Compressor Power Scaling and the Cubic Law

In P1, pump power for liquid pipelines scaled as Q^3: doubling throughput required eight times the power. Gas compressor power has a similar relationship, derived from the Weymouth equation:

From Weymouth: (P_1^2 - P_2^2) \propto Q_{sc}^2 at constant pipe geometry and gas properties.

At constant inlet pressure P_1 = P_{\max} (the compressor outlet), the outlet pressure P_2 decreases as Q increases. The compression ratio for the next station is r = P_{\max}/P_2, which increases as P_2 falls.

Compressor power: P_{\text{shaft}} \propto \dot{m} \cdot [r^{(k-1)/k} - 1] \propto Q_{sc} \cdot [r^{(k-1)/k} - 1]

As Q_{sc} increases, r also increases (because P_2 = \sqrt{P_{\max}^2 - C Q_{sc}^2} falls), so both factors in the power expression grow. The combined effect is steeper than cubic near the capacity ceiling.

This is why pipeline systems have a usable capacity range significantly below nameplate: as throughput approaches the maximum the Weymouth equation allows at maximum compression ratio, the power required grows superlinearly and operating costs per unit of gas rise sharply. The practical capacity ceiling — where tariff recovery and compressor fuel costs are still competitive — is typically 85–90% of maximum Weymouth capacity, not 100%.

For NGTL’s northeast trunk lines during the 2018 capacity crisis, the system was operating at 90–95% of Weymouth maximum capacity on peak production days — well into the region where incremental compression was extremely expensive and even small production increases produced large AECO basis widening.


11. Math Refresher: Dimensional Analysis of the P^2 Form

Why squared pressures, not linear?

The Darcy-Weisbach equation for liquids integrates trivially because density is constant:

\int_{P_1}^{P_2} dP = -\frac{f \rho v^2}{2D} L \implies \Delta P = \text{const} \times L

For gas, density \rho = PM/(ZRT) varies with P. The momentum equation becomes P \, dP = \text{const} \times dL, which integrates to:

\int_{P_1}^{P_2} P \, dP = \frac{P_2^2 - P_1^2}{2} = \text{const} \times L

The squared-pressure form is the direct consequence of integrating a pressure-proportional density. It is not a special property of gas pipelines — it would apply to any isothermal flow where density is linearly proportional to pressure.

The D^{16/3} exponent

Starting from Q_{sc} \propto \left[(P_1^2 - P_2^2) D^5 / (f_w L)\right]^{1/2}, substitute the Weymouth friction f_w \propto D^{-1/3}:

Q_{sc} \propto \left[\frac{(P_1^2 - P_2^2) D^5}{D^{-1/3} L}\right]^{1/2} = \left[\frac{(P_1^2 - P_2^2) D^{5 + 1/3}}{L}\right]^{1/2}

5 + 1/3 = 16/3. So Q_{sc} \propto D^{8/3} = D^{2.667}.

The extra D^{1/3} factor relative to the liquid incompressible result (D^{2.5}) comes entirely from the Weymouth friction factor’s diameter dependence — the empirical observation that the fully turbulent friction factor in gas pipelines decreases with increasing diameter faster than the smooth-pipe Moody chart would predict. If we used a constant friction factor f, the gas result would also give D^{2.5}, identical to the liquid case.

Exponent Context Source
D^{2.5} Liquid pipeline at constant f Darcy-Weisbach
D^{2.5} Gas pipeline at constant f General isothermal eq.
D^{2.667} Gas pipeline, Weymouth friction Weymouth friction \propto D^{-1/3}
D^{2.633} Gas pipeline, Panhandle-A friction Alternative empirical fit
D^{2.530} Gas pipeline, AGA fully turbulent Moody-based, fully rough

Different friction approximations give slightly different diameter exponents. The Weymouth equation is conservative (tends to underestimate capacity for large-diameter modern pipe) and remains widely used as a safe design basis.


Summary

Concept Key equation What it governs
Real gas density \rho = PM/(ZRT) Why gas compressibility matters
General isothermal flow P_1^2 - P_2^2 = f \dot{m}^2 ZRT L / (DA^2 M) Foundation of gas pipeline hydraulics
Weymouth friction f_w = 0.009354 / D^{1/3} Empirical friction for large-diameter gas lines
Weymouth equation Q_{sc} = \left[(P_1^2-P_2^2)D^{16/3}/(65.34\,GZTL)\right]^{1/2} Gas pipeline capacity
Diameter scaling Q_{sc} \propto D^{2.667} Why large-diameter pipe carries disproportionately more gas
Compressor temperature T_2 = T_1 r^{(k-1)/k} Outlet temperature, single-stage
Compressor power P_{\text{shaft}} = \dot{m}ZRT_1k/[\eta_c M(k-1)] \cdot [r^{(k-1)/k}-1] Energy cost of each compression stage
AECO basis floor P_{\text{AECO}} \approx P_{\text{HH}} \times \text{FX} - T_{\text{NGTL}} - T_{\text{Mainline}} - T_{\text{US}} Minimum AECO-HH spread from transport cost

The physical result that matters most: The P_1^2 - P_2^2 form of the gas pipeline equation is not a cosmetic difference from the liquid case — it changes how capacity scales with pressure at the system edges and how the capacity ceiling manifests in market prices. As the system approaches maximum Weymouth capacity, the pressure-squared budget is exhausted not linearly but as a nonlinear function of throughput, and compressor power requirements accelerate. The 2018 AECO collapse was this nonlinearity expressing itself in the gas price.

The economic result that matters most: The AECO–Henry Hub basis differential has a physical floor set by transport cost arithmetic. That floor is approximately CAD 1.75–2.00/GJ under current tariff structures — an unavoidable consequence of geography and pipeline capital costs. What is avoidable is the constraint rent that appears when production growth exceeds capacity: the additional basis widening that benefits pipeline capacity holders at the expense of producers and royalty revenue. The arithmetic that distinguishes floor from constraint rent is exactly the Weymouth equation applied to system utilisation.


Next: P4 — Refined Products Distribution — batch scheduling, the Cola equation for transmix volume, and terminal inventory design from Edmonton to Burnaby.

References

Alberta Energy Regulator. 2025. ST98: Alberta Energy Outlook — Reserves and Production Report. Alberta Energy Regulator. https://www.aer.ca/providing-information/data-and-reports/statistical-reports/st98.
Alliance Pipeline Ltd. 2024. Alliance Pipeline: System Overview and Commercial Terms. Alliance Pipeline Ltd. https://www.alliancepipeline.com.
Canada Energy Regulator. 2024. Market Snapshot: AECOHenry Hub Natural Gas Price Differential. Canada Energy Regulator. https://www.cer-rec.gc.ca/en/data-analysis/energy-markets/market-snapshots/.
Canada Energy Regulator. 2025. Natural Gas Market Assessment. Canada Energy Regulator. https://www.cer-rec.gc.ca/en/data-analysis/energy-commodities/natural-gas/.
LNG Canada. 2024. LNG Canada Project Overview. LNG Canada Development Inc. https://www.lngcanada.ca/project-overview/.
TC Energy Corporation. 2024a. Annual Report 2024. TC Energy Corporation. https://www.tcenergy.com/investor-centre/annual-report/.
TC Energy Corporation. 2024b. NOVA Gas Transmission Ltd. System Overview. TC Energy Corporation. https://www.tcenergy.com/operations/natural-gas/nova-gas-transmission/.
TC Energy Corporation. 2024c. TC Canadian Mainline Tolls and Tariff. TC Energy Corporation. https://www.cer-rec.gc.ca/en/applications-hearings/view-applications-decisions/.
Weymouth, Thomas R. 1912. “Problems in Natural Gas Engineering.” Transactions of the American Society of Mechanical Engineers 34: 185–231.
Back to top