3.4 Ocean Acidification

Ocean acidification is "the other CO₂ problem." As the ocean absorbs anthropogenic CO₂, pH decreases, threatening marine calcifiers and ecosystem function.

The Chemistry

\( \text{CO}_2 + \text{H}_2\text{O} + \text{CO}_3^{2-} \rightarrow 2\text{HCO}_3^- \)

CO₂ uptake reduces carbonate ion concentration

8.2

Pre-industrial pH

8.1

Current pH

7.8-7.9

2100 projection (RCP8.5)

Impacts on Marine Life

Calcification Stress

Corals, mollusks, foraminifera struggle to build CaCO₃ shells when [CO₃²⁻] drops

Dissolution

Below the saturation horizon, shells dissolve. This horizon is shoaling (rising).

Ecosystem Effects

Fish behavior affected, coral bleaching amplified, pteropod shells thinning

Aragonite Saturation

\( \Omega_{\text{Ar}} = \frac{[\text{Ca}^{2+}][\text{CO}_3^{2-}]}{K'_{sp}} \)

Ω > 1: supersaturated (shells form); Ω < 1: undersaturated (shells dissolve)

Arctic and Southern Ocean waters will become undersaturated first due to cold temperatures and natural CO₂ enrichment.

Python: pH Change

#!/usr/bin/env python3
"""ocean_acidification.py - pH change projection"""
import numpy as np
import matplotlib.pyplot as plt

# Simplified relationship: pH change ≈ -0.0016 per ppm CO2 increase
def project_ph(co2_ppm, ph_preindustrial=8.2, co2_preindustrial=280):
    """Estimate ocean surface pH from atmospheric CO2"""
    delta_co2 = co2_ppm - co2_preindustrial
    delta_ph = -0.0016 * delta_co2
    return ph_preindustrial + delta_ph

# Project to 2100
years = np.arange(1850, 2101)
# RCP8.5 scenario (simplified)
co2 = 280 + (years - 1850) * 0.5 + 0.02 * (years - 1950)**2 * (years > 1950)
ph = project_ph(co2)

plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.plot(years, co2, 'r-')
plt.xlabel('Year'); plt.ylabel('CO₂ (ppm)')
plt.title('Atmospheric CO₂')

plt.subplot(1, 2, 2)
plt.plot(years, ph, 'b-')
plt.xlabel('Year'); plt.ylabel('pH')
plt.title('Ocean Surface pH')
plt.tight_layout()