5.2 Plate Tectonics

Plate tectonics is the unifying theory of geology. Earth's lithosphere is divided into plates that move, creating ocean basins, mountain ranges, earthquakes, and volcanoes.

Plate Boundaries

Divergent (Spreading)

Plates move apart. Mid-ocean ridges. New oceanic crust forms. ~2-15 cm/yr.

Convergent (Subduction)

Plates collide. Ocean trenches. Volcanic arcs. Earthquakes. Crust destroyed.

Transform

Plates slide past. Strike-slip faults. San Andreas. No crust created/destroyed.

Seafloor Spreading

\( \text{Age} = \frac{\text{Distance from ridge}}{\text{Spreading rate}} \)

Magnetic anomalies and radiometric dating confirm spreading

Evidence

Magnetic stripes, age progression, heat flow, seismicity

Rate

Atlantic: ~2.5 cm/yr; East Pacific Rise: ~15 cm/yr

Wilson Cycle

Ocean basins open and close over ~200 million years:

1. Rifting → 2. Young ocean → 3. Mature ocean → 4. Declining → 5. Terminal → 6. Collision

Atlantic is opening (~young/mature), Pacific is closing (~declining)

Python: Seafloor Age

#!/usr/bin/env python3
"""plate_tectonics.py - Seafloor spreading calculations"""
import numpy as np
import matplotlib.pyplot as plt

def seafloor_age(distance_km, half_rate_cm_yr):
    """Calculate seafloor age from distance and spreading rate"""
    # Convert: km to cm, cm/yr to Ma
    distance_cm = distance_km * 1e5
    age_yr = distance_cm / half_rate_cm_yr
    age_Ma = age_yr / 1e6
    return age_Ma

# Atlantic Ocean width at different latitudes
# Mid-Atlantic Ridge roughly centered
half_width = 3000  # km from ridge to continent (approximate)

# Different spreading rates
rates = {'Slow (Atlantic)': 1.25, 'Intermediate': 4.0, 'Fast (EPR)': 7.5}

plt.figure(figsize=(10, 6))
distances = np.linspace(0, 5000, 100)

for name, rate in rates.items():
    ages = seafloor_age(distances, rate)
    plt.plot(distances, ages, label=f'{name}: {rate*2} cm/yr')

plt.xlabel('Distance from Ridge (km)')
plt.ylabel('Seafloor Age (Ma)')
plt.title('Seafloor Age vs Distance')
plt.legend()
plt.grid(True, alpha=0.3)

# Maximum ocean crust age
max_age = 280  # Ma (oldest ocean crust)
print(f"Oldest ocean crust: ~{max_age} Ma (Jurassic)")
print(f"Compared to oldest continental crust: ~4000 Ma")