Project 6 · Earthquake science
Why earthquakes pick certain buildings
In 1985 an earthquake spared some Mexico City buildings and destroyed others. Height was part of why.
- Math
- Algebra II, trigonometry
- You need
- A laptop and published seismic data
- Tools
- Python or a spreadsheet; published seismology data
- Solver
- Wave, 2D
The question
Soft sediment over rock traps seismic waves at a natural period. How do depth, width and wave speed set that period, and when does the quick estimate T = 4H/c stop being good enough?
Objectives
Twelve weeks, in the four stages every TopEdu project follows. Your mentor reviews each checkpoint before you move on.
Weeks 1 to 3
Learn to trust the model
Run 06_basin_resonance.py until its CHECK line says PASS, and explain every line of it to your mentor. Then reproduce a known answer: Modes satisfy ω² = c²π²(m²/W² + (n − ½)²/H²).
Checkpoint: you reproduce a known answer and report how close you got.
Weeks 4 and 5
Ask your own question
Narrow the question above to one sentence that could turn out to be wrong, and write your prediction before you run anything. The first experiments below are a place to start.
Checkpoint: a one-page plan with your question and prediction.
Weeks 6 to 9
Run it, then measure the world
Model a basin cross-section with rock on three sides and a free surface on top, measure its period over many shapes, then map the error of the quick estimate. Then step away from the screen: compare with the well-documented 1985 Mexico City lakebed, where shaking near a 2-second period damaged mid-height buildings; compare with published data for another basin.
Checkpoint: one chart comparing your model with reality.
Weeks 10 to 12
Explain the gap, and share it
Work out why your model and your measurements disagree, test at least one explanation, and write it up yourself. Say which numbers came from the starter and which from the lab. Keep the honest limit in view: wave speed is the same everywhere and the basin is a rectangle, so this is a first-order explanation and not a hazard estimate. Do not present it as a prediction for a real place.
Checkpoint: a final paper, your code and a ten-minute talk.
The data
What the lab lets you change, how the project was checked before we listed it, and what the starter prints on a laptop.
Settings in the online lab
| Setting | Range | Starts at |
|---|---|---|
| Basin width | 100 to 2000 m | 400 |
| Sediment depth | 20 to 100 m | 40 |
| Shear wave speed | 50 to 400 m/s | 80 |
Checked on the research solver
| Solver (Wave, 2D) | fundamental period 1.962 s |
|---|---|
| Known answer | exact 1.961 s; quick estimate 4H/c = 2.000 s |
| Error | 0.04% (limit 1.00%): passed |
What the starter prints
From the run that built this page. Timings depend on your computer; the CHECK line must say PASS.
basin 400 m wide, 40 m deep, c = 80 m/s simulated period 1.961 s, exact 1.961 s, quick estimate 4H/c = 2.000 s CHECK period against the exact formula: error 0.01% -> PASS (limit 1%) width/depth 1: 4H/c is off by 123.6% width/depth 2: 4H/c is off by 41.4% width/depth 4: 4H/c is off by 11.8% width/depth 6: 4H/c is off by 5.4% width/depth 10: 4H/c is off by 2.0% width/depth 20: 4H/c is off by 0.5% width/depth 50: 4H/c is off by 0.1%


The starter code
One Python file that needs only numpy and matplotlib. Run python3 06_basin_resonance.py --show to see the plots. How to set up.
The model
A valley of soft sediment sits in rock. Shear waves bounce between the rock walls and floor and the free ground surface, so the valley rings at a natural period. Buildings whose own sway period is close to it shake hardest.
This model is a rectangle W wide and H deep. Ground motion u obeys the wave equation with u = 0 at the rock (the two sides and the floor) and no stress at the surface. Its slowest ring has period T = 2 pi / omega, omega = c pi sqrt(1/W^2 + 1/(2H)^2). Engineers' quick estimate ignores the width: T = 4H / c.
What it does
- Stage 1: run this file. It shakes the basin, listens at the middle of the surface, and checks the period it hears against the exact one. The CHECK line should say PASS.
- Stage 2: map where the quick estimate is good enough, and compare with a real, documented basin.
Your first experiments
From the YOUR TURN list at the bottom of the file. Write your prediction in your log before you run each one.
- Before running: at what width/depth does 4H/c reach 10% error? Read it off the plot and check with simulate().
- The formula assumes a rectangle. Make the floor slope (set u = 0 below a slanted line each step) and see how the period moves. Explain why.
- Mexico City, 1985: look up published lakebed depth and shear wave speed. Does the model's period come near the roughly 2 s that damaged mid-height buildings? Say clearly that this explains, and does not predict.
- Rule of thumb: a building's sway period is about 0.1 s per storey. Which heights match your basin?
Download 06_basin_resonance.pyAll ten (.zip)Instructions (PDF)
The real world
Compare with the well-documented 1985 Mexico City lakebed, where shaking near a 2-second period damaged mid-height buildings; compare with published data for another basin.
The honest limit
Wave speed is the same everywhere and the basin is a rectangle, so this is a first-order explanation and not a hazard estimate. Do not present it as a prediction for a real place.
Want to work on this one?
Members run it on the research solver in the lab and choose a mentor to guide them.