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()