Chapter 5

Seismology

Earthquakes, seismic waves, and the Earth’s interior structure.

Seismology

Seismology is the scientific study of earthquakes and the propagation of seismic waves through Earth's interior. This field provides crucial insights into Earth's internal structure, tectonic processes, and seismic hazards. By analyzing how seismic waves behave as they travel through different materials, seismologists can "see" inside our planet.

Earthquake Fundamentals

Earthquake Generation

Earthquakes result from sudden release of strain energy accumulated in rocks:

E=12kx2E = \frac{1}{2}kx^2

Where EE is energy, kk is stiffness (elastic modulus), and xx is displacement.

Elastic Rebound Theory

The most accepted mechanism for earthquake generation:

  1. Stress accumulates in rocks over time
  2. Friction prevents slip initially
  3. Stress eventually overcomes friction
  4. Sudden slip releases stored elastic energy
  5. Rupture propagates along the fault plane

Fault Mechanics

τ=σnμ+C\tau = \sigma_n \mu + C

Where τ\tau is shear stress at failure, σn\sigma_n is normal stress, μ\mu is coefficient of friction, and CC is cohesion.

Seismic Wave Types

Body Waves

P-Waves (Primary Waves)

  • Particle motion: Parallel to direction of propagation (longitudinal)
  • Velocity: Fastest seismic waves
  • Formula: VP=K+43GρV_P = \sqrt{\frac{K + \frac{4}{3}G}{\rho}}
  • Travel: Through solids, liquids, and gases

Where KK is bulk modulus, GG is shear modulus, and ρ\rho is density.

S-Waves (Secondary Waves)

  • Particle motion: Perpendicular to direction of propagation (transverse)
  • Velocity: Slower than P-waves
  • Formula: VS=GρV_S = \sqrt{\frac{G}{\rho}}
  • Travel: Solids only (cannot travel through liquids)

Surface Waves

Love Waves (L-Waves)

  • Particle motion: Horizontal, perpendicular to propagation direction
  • Characteristics: Shear motion in horizontal plane

Rayleigh Waves (R-Waves)

  • Particle motion: Elliptical retrograde motion
  • Characteristics: Combined vertical and longitudinal motion
  • Velocity: Slowest of all seismic waves

Wave Propagation and Velocity

Seismic Wave Velocities in Different Materials

The velocity of seismic waves depends on the elastic properties of the material:

VP=K+43GρV_P = \sqrt{\frac{K + \frac{4}{3}G}{\rho}} VS=GρV_S = \sqrt{\frac{G}{\rho}}

Where KK is bulk modulus (resistance to volume change) and GG is shear modulus (resistance to shape change).

Typical Velocities

  • Unconsolidated sediments: Vp = 1-3 km/s, Vs = 0.1-1.5 km/s
  • Crystalline rocks: Vp = 5-7 km/s, Vs = 2.5-4 km/s
  • Upper mantle: Vp = 7.5-8.5 km/s, Vs = 4-4.5 km/s
  • Lower mantle: Vp = 13-14 km/s, Vs = 6.5-7 km/s

Snell's Law and Wave Refraction

sinθ1v1=sinθ2v2\frac{\sin \theta_1}{v_1} = \frac{\sin \theta_2}{v_2}

Where θ\theta is the angle of incidence/refraction and vv is wave velocity.

Earth's Internal Structure

Major Discontinuities

Mohorovičić Discontinuity (Moho)

  • Depth: ~5-70 km
  • Velocity jump: Vp increases from ~6 to ~8 km/s
  • Significance: Crust-mantle boundary

Gutenberg Discontinuity (CMB)

  • Depth: ~2900 km
  • S-wave shadow zone: S-waves don't travel through outer core
  • Significance: Mantle-core boundary

Lehmann Discontinuity (ICB)

  • Depth: ~5150 km
  • Significance: Solid inner core boundary

Transition Zone

  • Depth: ~410-660 km
  • Phase transitions: Olivine → Spinel → Perovskite
  • Seismic velocity increases

Seismic Tomography

Using seismic wave travel times to create 3D images of Earth's interior:

δt=path1vds\delta t = \int_{path} \frac{1}{v} ds

Where δt\delta t is the travel time anomaly and vv is velocity.

Seismic Energy and Magnitude

Moment Magnitude Scale

The most accurate measure of earthquake size:

Mw=23log10(M0)10.7M_w = \frac{2}{3}\log_{10}(M_0) - 10.7

Where M0M_0 is the seismic moment:

M0=μADM_0 = \mu A D

Where μ\mu is shear modulus, AA is rupture area, and DD is average displacement.

Local Magnitude (Richter Scale)

ML=log10(A)log10(A0(δ))M_L = \log_{10}(A) - \log_{10}(A_0(\delta))

Where AA is maximum amplitude and A0A_0 is amplitude of standard earthquake at distance δ\delta.

Energy Release

log10E=11.8+1.5M\log_{10}E = 11.8 + 1.5M

Where EE is energy in ergs and MM is magnitude.

Intensity Scales

Modified Mercalli Intensity (MMI)

Subjective scale based on observed effects:

  • I: Not felt
  • IV: Light shaking, felt indoors
  • VII: Very strong, damage to poorly built structures
  • X: Extreme, most structures destroyed

Seismic Hazards and Risk Assessment

Factors Controlling Ground Motion

Source Characteristics

  • Magnitude: Larger earthquakes produce stronger shaking
  • Distance: Amplitude decreases with distance
  • Depth: Shallow events cause more surface shaking

Path Effects

  • Attenuation: Energy lost during propagation
  • Focusing/Defocusing: Wave paths can concentrate or disperse energy
  • Site Effects: Local geology affects ground motion

Site Response

PGAsurface=PGAbedrock×A×Q(f)PGA_{surface} = PGA_{bedrock} \times A \times Q(f)

Where PGAPGA is peak ground acceleration, AA is amplification factor, and Q(f)Q(f) is frequency-dependent quality factor.

Seismic Zoning

Maps showing expected ground motion levels:

PGA=A×FR×FS×FTPGA = A \times F_R \times F_S \times F_T

Where FRF_R, FSF_S, FTF_T are factors for regional, site, and topographic effects.

Seismometer Operation

Basic Principles

Seismometers measure ground motion relative to an inertial mass:

mx¨+cx˙+kx=my¨m\ddot{x} + c\dot{x} + kx = -m\ddot{y}

Where mm is mass, cc is damping, kk is spring constant, xx is relative motion, and yy is ground motion.

Modern Digital Seismographs

  • Broadband sensors
  • High-dynamic-range digitizers
  • GPS timing
  • Real-time data transmission

Seismic Phase Analysis

P and S Wave Arrival Times

tP=dVP,tS=dVSt_P = \frac{d}{V_P}, \quad t_S = \frac{d}{V_S}

The time difference (tStPt_S - t_P) helps determine distance to epicenter.

Travel Time Curves

Graphs showing arrival times versus distance for different phases:

  • Direct P and S waves
  • Refracted waves (Pn, Sn)
  • Reflected waves (pP, sP, pS, sS)
  • Surface waves (Lg, LR)

Earthquake Catalogs and Statistics

Gutenberg-Richter Law

log10N=abM\log_{10}N = a - bM

Where NN is number of earthquakes with magnitude M\geq M, and aa, bb are constants.

The bb-value typically equals ~1, meaning each unit increase in magnitude corresponds to 10 times fewer events.

Foreshocks, Mainshocks, and Aftershocks

Omori's Law

Aftershock frequency decays with time:

n(t)=K(c+t)pn(t) = \frac{K}{(c + t)^p}

Where n(t)n(t) is number of aftershocks at time tt, and KK, cc, pp are constants.


Real-World Application: Earthquake Early Warning Systems

Modern seismology enables earthquake early warning systems that can provide seconds to minutes of warning before strong shaking arrives.

Warning System Calculations

import math

# Earthquake early warning system parameters
earthquake_data = {
    'magnitude': 7.1,
    'depth': 10,      # km (hypocenter depth)
    'distance': 100,  # km (distance to city)
    'p_wave_velocity': 6.0,   # km/s
    's_wave_velocity': 3.5,   # km/s
    'warning_threshold': 0.02, # m/s (threshold for warning)
}

# Calculate arrival times
p_arrival_time = earthquake_data['distance'] / earthquake_data['p_wave_velocity']  # seconds
s_arrival_time = earthquake_data['distance'] / earthquake_data['s_wave_velocity']  # seconds

# Warning time available
warning_time = s_arrival_time - p_arrival_time  # seconds

# Calculate peak ground acceleration prediction
# Empirical relationship for PGA (peak ground acceleration)
pga_prediction = 0.1 * (10 ** (0.3 * (earthquake_data['magnitude'] - 3)))  # m/s²
pga_warning_threshold = earthquake_data['warning_threshold']  # m/s²

print(f"Earthquake magnitude: {earthquake_data['magnitude']}")
print(f"Distance to city: {earthquake_data['distance']} km")
print(f"P-wave arrival: {p_arrival_time:.1f} seconds")
print(f"S-wave arrival: {s_arrival_time:.1f} seconds")
print(f"Warning time: {warning_time:.1f} seconds")
print(f"Predicted PGA: {pga_prediction:.3f} m/s²")

# Determine if warning should be issued
if pga_prediction > pga_warning_threshold:
    warning_issued = True
    print("⚠️ WARNING ISSUED - Strong shaking expected")
else:
    warning_issued = False
    print("No warning issued - shaking below threshold")

# Calculate energy released
seismic_energy = 10 ** (1.5 * earthquake_data['magnitude'] + 4.8)  # Joules
print(f"Estimated energy released: {seismic_energy:.2e} Joules")

Real-Time Seismic Monitoring Networks

Multiple stations detect and locate earthquakes simultaneously across networks.


Your Challenge: Seismic Wave Analysis and Earthquake Location

Analyze seismic data from multiple stations to locate an earthquake and determine its magnitude.

Goal: Use P and S wave arrival times from multiple seismic stations to locate the earthquake and estimate its magnitude.

Seismic Data from Three Stations

import math

# Seismic station data
stations = {
    'StationA': {
        'coordinates': (40.0, -120.0),  # (latitude, longitude) in degrees
        'p_arrival': 15.2,            # seconds after reference time
        's_arrival': 25.8,            # seconds after reference time
        'pga': 0.08                   # peak ground acceleration in m/s²
    },
    'StationB': {
        'coordinates': (40.5, -119.5),  # (latitude, longitude)
        'p_arrival': 18.1,            # seconds
        's_arrival': 30.9,            # seconds
        'pga': 0.05                   # peak ground acceleration
    },
    'StationC': {
        'coordinates': (39.7, -119.8),  # (latitude, longitude)
        'p_arrival': 16.7,            # seconds
        's_arrival': 28.1,            # seconds
        'pga': 0.06                   # peak ground acceleration
    }
}

# Average seismic velocities (km/s)
avg_p_velocity = 6.0
avg_s_velocity = 3.5

# Calculate distance to epicenter from each station using S-P time
epicentral_distances = {}
for station, data in stations.items():
    s_p_time = data['s_arrival'] - data['p_arrival']  # seconds
    # Use relationship: distance = (S-P time) * (Vp*Vs)/(Vp-Vs)
    distance = s_p_time * (avg_p_velocity * avg_s_velocity) / (avg_p_velocity - avg_s_velocity)  # km
    epicentral_distances[station] = distance

# Calculate earthquake origin time
# Average origin time from all stations
origin_times = []
for station, data in stations.items():
    distance = epicentral_distances[station]
    p_travel_time = distance / avg_p_velocity
    origin_time = data['p_arrival'] - p_travel_time
    origin_times.append(origin_time)

estimated_origin_time = sum(origin_times) / len(origin_times)

# Estimate magnitude from amplitude data
# Using empirical relationship with distance correction
magnitudes = []
for station, data in stations.items():
    # Correct amplitude for distance
    distance_km = epicentral_distances[station]
    corrected_amplitude = data['pga'] * distance_km  # Simplified correction
    # Estimate magnitude from amplitude (simplified)
    magnitude = math.log10(corrected_amplitude) + 2.0  # Simplified relationship
    magnitudes.append(magnitude)

estimated_magnitude = sum(magnitudes) / len(magnitudes)

Calculate the epicenter location using triangulation from the three seismic stations.

Hint:

  • Calculate distance from each station to epicenter using S-P time
  • Use these distances as radii to find intersection point
  • The epicenter is where circles from all stations intersect
  • Correct for focal depth to get precise location
# TODO: Calculate epicenter coordinates
epicenter_latitude = 0  # degrees (estimated epicenter latitude)
epicenter_longitude = 0 # degrees (estimated epicenter longitude)
hypocenter_depth = 0    # km (estimated focal depth)
estimated_magnitude = 0 # magnitude (calculated from amplitude data)
origin_time = 0         # seconds (estimated origin time)
epicentral_distances = {} # Dictionary with distances to each station

# Calculate epicentral distances from S-P times
for station_name, station_data in stations.items():
    s_p_time = station_data['s_arrival'] - station_data['p_arrival']
    distance = s_p_time * (avg_p_velocity * avg_s_velocity) / (avg_p_velocity - avg_s_velocity)
    epicentral_distances[station_name] = distance

# Print results
print(f"Epicenter latitude: {epicenter_latitude:.2f}°")
print(f"Epicenter longitude: {epicenter_longitude:.2f}°")
print(f"Hypocenter depth: {hypocenter_depth:.1f} km")
print(f"Estimated magnitude: {estimated_magnitude:.1f}")
print(f"Origin time: {origin_time:.1f} seconds")
print(f"Epicentral distances: {epicentral_distances}")

# Determine seismic hazard level
if estimated_magnitude > 7.0:
    hazard_level = "Very High"
elif estimated_magnitude > 5.5:
    hazard_level = "High"
elif estimated_magnitude > 4.0:
    hazard_level = "Moderate"
else:
    hazard_level = "Low"
    
print(f"Seismic hazard level: {hazard_level}")

How does the precision of earthquake location depend on the geometry of the seismic network and the accuracy of arrival time measurements?

ELI10 Explanation

Simple analogy for better understanding

Think of seismology like having a super-power that lets geologists see inside Earth using earthquake waves as a kind of 'x-ray.' Just as doctors use ultrasound or x-rays to see inside the human body, seismologists use earthquake vibrations that travel through Earth to map what's inside. When an earthquake happens, it sends waves through the Earth that bounce off different layers (like echoes) and travel at different speeds through different materials. By measuring how these waves travel and arrive at different times at different places, scientists can figure out what's inside Earth - the liquid outer core, solid inner core, and layers of rock in between. It's like having a cosmic stethoscope listening to Earth's heartbeat!

Self-Examination

Q1.

What are the different types of seismic waves and how do they travel through Earth?

Q2.

How do seismologists use seismic data to determine the structure of Earth's interior?

Q3.

What factors control earthquake magnitude and intensity?