6.2 Thermohaline Circulation

The thermohaline circulation (THC) is the global "conveyor belt" driven by density differences from temperature and salinity variations. It takes ~1000 years for water to complete the circuit.

Deep Water Formation

North Atlantic Deep Water (NADW)

Forms in Labrador/Nordic Seas. Cold, salty (Gulf Stream delivers salt). Sinks to 2000-4000m.

Antarctic Bottom Water (AABW)

Densest ocean water. Forms on Antarctic shelf (brine rejection). Fills abyssal ocean.

The Global Conveyor

North Atlantic → Deep water flows south → Around Antarctica → Into Indian & Pacific → Slow upwelling → Surface return to Atlantic

~20 Sv

NADW formation

~1000 yr

Full circuit time

~1 PW

Heat transport

Climate Implications

Slowdown Risk

Greenland melt freshens N. Atlantic, could slow NADW formation. Cooling Europe paradox.

Past Shutdowns

Younger Dryas (~12,800 BP): THC shutdown caused rapid cooling. Ice dam lake release.

Python: THC Strength

#!/usr/bin/env python3
"""thermohaline.py - Simple THC box model"""
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

def thc_model(y, t, params):
    """
    Stommel two-box model of THC
    T1, S1: tropical box; T2, S2: polar box
    """
    T1, T2, S1, S2 = y
    k, alpha, beta, T1_eq, T2_eq, S1_eq, S2_eq, gamma = params

    # Density difference
    dT = T1 - T2
    dS = S1 - S2
    q = k * (alpha * dT - beta * dS)  # THC strength

    # Temperature and salinity evolution
    dT1 = gamma * (T1_eq - T1) - abs(q) * dT
    dT2 = gamma * (T2_eq - T2) + abs(q) * dT
    dS1 = gamma * (S1_eq - S1) - abs(q) * dS
    dS2 = gamma * (S2_eq - S2) + abs(q) * dS

    return [dT1, dT2, dS1, dS2]

# Parameters
params = (1.0, 1.0, 2.0, 25, 0, 35, 36, 0.2)
y0 = [25, 5, 35, 35.5]
t = np.linspace(0, 100, 1000)

sol = odeint(thc_model, y0, t, args=(params,))

# Calculate THC strength
dT = sol[:, 0] - sol[:, 1]
dS = sol[:, 2] - sol[:, 3]
q = params[0] * (params[1] * dT - params[2] * dS)

plt.figure(figsize=(10, 5))
plt.plot(t, q, 'b-', lw=2)
plt.xlabel('Time')
plt.ylabel('THC Strength (Sv)')
plt.title('Thermohaline Circulation Strength')
plt.grid(True, alpha=0.3)

print(f"Steady-state THC: {q[-1]:.2f} Sv")