sstData = [ {month:"Jan",sst:25.5,hurricanes:0}, {month:"Feb",sst:25.0,hurricanes:0}, {month:"Mar",sst:25.2,hurricanes:0}, {month:"Apr",sst:26.0,hurricanes:0}, {month:"May",sst:27.0,hurricanes:0.2}, {month:"Jun",sst:27.8,hurricanes:0.6}, {month:"Jul",sst:28.3,hurricanes:0.8}, {month:"Aug",sst:28.8,hurricanes:3.2}, {month:"Sep",sst:28.9,hurricanes:4.5}, {month:"Oct",sst:28.4,hurricanes:2.8}, {month:"Nov",sst:27.5,hurricanes:0.8}, {month:"Dec",sst:26.2,hurricanes:0.1}]Plot.plot({title:"Tropical Atlantic: Sea Surface Temperature vs. Hurricane Activity",subtitle:"What's the connection between water temperature and storm formation?",width:700,height:380,x: {label:"Month",domain: sstData.map(d => d.month)},y: {label:"Sea Surface Temperature (°C)",domain: [24,30]},marks: [ Plot.barY(sstData, {x:"month",y:"sst",fill: d => d.sst>=26.5? (d.sst>=27.5?"#e74c3c":"#f39c12") :"#3498db",dx:-3,tip:true}), Plot.ruleY([26.5], {stroke:"#e74c3c",strokeWidth:2,strokeDasharray:"8,4"}), Plot.text([{x:"Mar",y:26.8}], {x:"x",y:"y",text: d =>"← 26.5°C threshold for hurricane formation",fill:"#e74c3c",fontSize:11,textAnchor:"start"}), Plot.dot(sstData, {x:"month",y: d =>24+ d.hurricanes*1.2,fill:"#6c5ce7",r: d =>Math.max(d.hurricanes*3,2),tip:true}), Plot.line(sstData, {x:"month",y: d =>24+ d.hurricanes*1.2,stroke:"#6c5ce7",strokeWidth:1.5,tip:true}) ]})
32.2.1 📝 Analyzing the SST–Hurricane Connection
During which months does SST exceed 26.5°C?
During which months do most hurricanes form?
What’s the relationship between the two?
Why do you think 26.5°C is the magic number? (We’ll find out in the Explain section!)
32.3 The 2005 Season: Month by Month
Code
storms2005 = [ {name:"Arlene",month:"Jun",category:"TS",peak:1}, {name:"Bret",month:"Jun",category:"TS",peak:1}, {name:"Cindy",month:"Jul",category:1,peak:1}, {name:"Dennis",month:"Jul",category:4,peak:4}, {name:"Emily",month:"Jul",category:5,peak:5}, {name:"Franklin",month:"Jul",category:"TS",peak:1}, {name:"Gert",month:"Jul",category:"TS",peak:1}, {name:"Harvey",month:"Aug",category:"TS",peak:1}, {name:"Irene",month:"Aug",category:2,peak:2}, {name:"Jose",month:"Aug",category:"TS",peak:1}, {name:"Katrina",month:"Aug",category:5,peak:5}, {name:"Lee",month:"Aug",category:"TS",peak:1}, {name:"Maria",month:"Sep",category:3,peak:3}, {name:"Nate",month:"Sep",category:1,peak:1}, {name:"Ophelia",month:"Sep",category:1,peak:1}, {name:"Philippe",month:"Sep",category:1,peak:1}, {name:"Rita",month:"Sep",category:5,peak:5}, {name:"Stan",month:"Oct",category:1,peak:1}, {name:"Tammy",month:"Oct",category:"TS",peak:1}, {name:"Vince",month:"Oct",category:1,peak:1}, {name:"Wilma",month:"Oct",category:5,peak:5}, {name:"Alpha",month:"Oct",category:"TS",peak:1}, {name:"Beta",month:"Oct",category:3,peak:3}, {name:"Epsilon",month:"Nov",category:1,peak:1}]Plot.plot({title:"2005 Atlantic Hurricane Season — Every Named Storm",subtitle:"Peak intensity (Saffir-Simpson category or TS=Tropical Storm)",width:700,height:380,x: {label:"Storm Name"},y: {label:"Peak Category",domain: [0,6]},color: {legend:true,domain: ["Jun","Jul","Aug","Sep","Oct","Nov"],range: ["#3498db","#2ecc71","#e74c3c","#f39c12","#9b59b6","#1abc9c"]},marks: [ Plot.barY(storms2005, {x:"name",y:"peak",fill:"month",sort: {x:null},tip:true}), Plot.ruleY([3], {stroke:"#999",strokeDasharray:"5,5"}), Plot.text([{x:"Katrina",y:5.5}], {x:"x",y:"y",text: d =>"🌀",fontSize:25}), Plot.text([{x:"Arlene",y:3.3}], {x:"x",y:"y",text: d =>"← Major hurricane threshold (Cat 3+)",fontSize:10,textAnchor:"start"}) ]})
🌀 The 2005 season produced FOUR Category 5 hurricanes (Dennis, Emily, Katrina, Rita, Wilma) — the most ever recorded in a single season! 🌀
33 Explain: The Hurricane Engine
33.1 ⚡ How Does a Hurricane Work?
A hurricane is essentially a giant heat engine — it converts thermal energy from warm ocean water into the kinetic energy of powerful winds. Let’s build a model of how this works.
33.2 Step 1: Warm Water Evaporation
Code
viewof oceanTemp = Inputs.range([22,32], {label:"Ocean Surface Temperature (°C)",step:0.5,value:28})
Code
{const width =750;const height =500;const svg = d3.create("svg").attr("width", width).attr("height", height).attr("viewBox",`0 0 ${width}${height}`); svg.append("rect").attr("width", width).attr("height", height).attr("fill","#e3f2fd").attr("rx",10);// Oceanconst oceanColor = d3.interpolateRdBu(1- (oceanTemp -22) /10); svg.append("rect").attr("x",0).attr("y",380).attr("width", width).attr("height",120).attr("fill", oceanColor).attr("rx","0 0 10 10"); svg.append("text").attr("x",375).attr("y",420).attr("text-anchor","middle").attr("font-size",16).attr("fill","white").attr("font-weight","bold").text(`Ocean: ${oceanTemp}°C`);const canForm = oceanTemp >=26.5;const intensity = canForm ?Math.min((oceanTemp -26.5) /5,1) :0;if (canForm) {// Evaporation arrowsconst numArrows =Math.floor(intensity *8) +3;for (let i =0; i < numArrows; i++) {const x =100+ i * (550/ numArrows); svg.append("line").attr("x1", x).attr("y1",370).attr("x2", x).attr("y2",280- intensity *50).attr("stroke","#e74c3c").attr("stroke-width",2+ intensity *2).attr("opacity",0.5+ intensity *0.3); svg.append("text").attr("x", x).attr("y",280- intensity *55).attr("text-anchor","middle").attr("font-size",14).text("💨"); }// Central updraft / eyeconst cx =375, cy =200;const eyeR =20+ intensity *30;// Spiral bandsfor (let angle =0; angle <Math.PI*4; angle +=0.1) {const r =30+ angle * (15+ intensity *10);const x = cx + r *Math.cos(angle);const y = cy + r *Math.sin(angle) *0.6;if (x >50&& x <700&& y >40&& y <360) { svg.append("circle").attr("cx", x).attr("cy", y).attr("r",2).attr("fill","#6c5ce7").attr("opacity",0.3+ intensity *0.3); } }// Eye svg.append("circle").attr("cx", cx).attr("cy", cy).attr("r", eyeR).attr("fill","#e3f2fd").attr("stroke","#6c5ce7").attr("stroke-width",3); svg.append("text").attr("x", cx).attr("y", cy -5).attr("text-anchor","middle").attr("font-size",12).attr("font-weight","bold").text("EYE"); svg.append("text").attr("x", cx).attr("y", cy +10).attr("text-anchor","middle").attr("font-size",10).text("(calm)");// Labels svg.append("text").attr("x",375).attr("y",30).attr("text-anchor","middle").attr("font-size",18).attr("font-weight","bold").attr("fill","#c62828").text(`🌀 Hurricane CAN form — Intensity: ${(intensity *100).toFixed(0)}%`);// Wind speed estimateconst windSpeed =74+ intensity *100; svg.append("rect").attr("x",520).attr("y",50).attr("width",200).attr("height",60).attr("fill","#fff3e0").attr("rx",8); svg.append("text").attr("x",620).attr("y",75).attr("text-anchor","middle").attr("font-size",13).attr("font-weight","bold").text(`Est. Wind: ${windSpeed.toFixed(0)} mph`); svg.append("text").attr("x",620).attr("y",95).attr("text-anchor","middle").attr("font-size",11).text(`Cat ${windSpeed <96?1: windSpeed <111?2: windSpeed <130?3: windSpeed <157?4:5}`);// Process labelsconst steps = [ {x:100,y:330,text:"① Warm water\nevaporates"}, {x:250,y:160,text:"② Moist air rises\n& spirals inward"}, {x:500,y:100,text:"③ Vapor condenses\n→ releases heat"}, {x:600,y:250,text:"④ Heat fuels more\nrising → stronger winds"} ]; steps.forEach(s => {const lines = s.text.split("\n"); lines.forEach((line, i) => { svg.append("text").attr("x", s.x).attr("y", s.y+ i *16).attr("font-size",12).attr("fill","#2d3436").text(line); }); }); } else { svg.append("text").attr("x",375).attr("y",200).attr("text-anchor","middle").attr("font-size",22).attr("font-weight","bold").attr("fill","#3498db").text("❌ Too cold for hurricane formation"); svg.append("text").attr("x",375).attr("y",230).attr("text-anchor","middle").attr("font-size",14).attr("fill","#636e72").text(`Need at least 26.5°C — currently ${oceanTemp}°C (${(26.5- oceanTemp).toFixed(1)}°C too cold)`); svg.append("text").attr("x",375).attr("y",260).attr("text-anchor","middle").attr("font-size",13).text("Not enough evaporation to fuel a tropical cyclone"); }// Evaporation explanation svg.append("rect").attr("x",50).attr("y",440).attr("width",650).attr("height",50).attr("fill","rgba(255,255,255,0.8)").attr("rx",8); svg.append("text").attr("x",375).attr("y",465).attr("text-anchor","middle").attr("font-size",12).attr("fill","#2d3436").text(canForm ?"✅ Warm water provides massive evaporation → water vapor carries latent heat energy into the atmosphere":"Increase ocean temperature above 26.5°C to see hurricane formation");return svg.node();}
33.2.1 💡 Key Concept: The Hurricane Heat Engine
A hurricane is powered by a positive feedback loop:
Warm ocean water (≥ 26.5°C / 80°F) evaporates rapidly
Water vapor rises and carries latent heat (hidden energy)
As vapor rises and cools, it condenses into clouds, releasing latent heat
This released heat warms the air, making it rise faster
Faster rising air creates lower pressure at the surface
Lower pressure pulls in more air (= stronger winds)
Stronger winds cause more evaporation → back to step 2
This is why hurricanes intensify over warm water and weaken over land or cool water — they lose their energy source!
Atlantic hurricane season runs June 1 – November 30, with peak activity in August–October. This isn’t random — it’s directly tied to ocean temperature cycles.
34.2 Ocean Temperature Through the Year
The ocean’s temperature follows a seasonal cycle, but it lags behind the Sun’s position because water has a very high heat capacity — it takes a long time to heat up and a long time to cool down.
Code
seasonData = [ {month:"Jan",solarInput:220,sst:25.5,lag:"Ocean cooling (still losing summer heat)"}, {month:"Feb",solarInput:240,sst:25.0,lag:"Minimum SST (coldest ocean)"}, {month:"Mar",solarInput:290,sst:25.2,lag:"Solar input increasing but ocean slow to respond"}, {month:"Apr",solarInput:340,sst:26.0,lag:"Ocean beginning to warm"}, {month:"May",solarInput:370,sst:27.0,lag:"Warming accelerating"}, {month:"Jun",solarInput:390,sst:27.8,lag:"Approaching threshold — season begins"}, {month:"Jul",solarInput:395,sst:28.3,lag:"Peak solar input (but SST still rising!)"}, {month:"Aug",solarInput:380,sst:28.8,lag:"Solar input declining but ocean still warming"}, {month:"Sep",solarInput:340,sst:28.9,lag:"PEAK SST — peak hurricane season!"}, {month:"Oct",solarInput:290,sst:28.4,lag:"Ocean slowly cooling"}, {month:"Nov",solarInput:240,sst:27.5,lag:"Below threshold soon — season ending"}, {month:"Dec",solarInput:215,sst:26.2,lag:"Cooling continues"}]Plot.plot({title:"Solar Input vs. Sea Surface Temperature — The Seasonal Lag",subtitle:"Peak solar input is in June, but peak SST doesn't arrive until September!",width:700,height:380,x: {label:"Month",domain: seasonData.map(d => d.month)},y: {label:"Relative Value (normalized)"},color: {legend:true},marks: [ Plot.areaY(seasonData, {x:"month",y: d => (d.sst-24) /6,fill:"#e74c3c",fillOpacity:0.15,curve:"catmull-rom",tip:true}), Plot.line(seasonData, {x:"month",y: d => (d.sst-24) /6,stroke:"#e74c3c",strokeWidth:3,curve:"catmull-rom",tip:true}), Plot.line(seasonData, {x:"month",y: d => (d.solarInput-200) /200,stroke:"#f39c12",strokeWidth:2,strokeDasharray:"5,3",curve:"catmull-rom",tip:true}), Plot.ruleY([(26.5-24) /6], {stroke:"#e74c3c",strokeWidth:1,strokeDasharray:"3,3"}), Plot.text([{x:"Jan",y:0.5}], {x:"x",y:"y",text: d =>"26.5°C threshold",fill:"#e74c3c",fontSize:10}), Plot.text([{x:"Jul",y:0.95}], {x:"x",y:"y",text: d =>"🌞 Solar Input",fill:"#f39c12",fontSize:11}), Plot.text([{x:"Oct",y:0.85}], {x:"x",y:"y",text: d =>"🌊 Sea Surface Temp",fill:"#e74c3c",fontSize:11}) ]})
34.2.1 💡 Key Concept: The Seasonal Lag Explains Hurricane Season
Peak solar input occurs around the summer solstice (June 21)
But peak ocean temperature doesn’t occur until September — a 2–3 month lag
This is because water has high specific heat capacity — it absorbs a lot of energy before its temperature rises
Hurricane season peaks in August–September–October because that’s when ocean temperatures are highest
The season ends in November as ocean temperatures fall below the 26.5°C threshold
34.2.2 📝 Seasonal Analysis
Why does peak SST occur ~2 months after peak solar input? (Think: specific heat capacity of water)
If ocean waters warm an additional 1°C due to climate change, how might that affect hurricane season? (Start earlier? End later? Both?)
Could a year with unusually warm winter SST lead to earlier hurricane formation?
One of the most dangerous trends is rapid intensification — when a hurricane’s wind speed increases by 35+ mph in just 24 hours. This makes evacuations nearly impossible.
Code
riData = [ {period:"1980–1990",events:12,pctMajor:25}, {period:"1991–2000",events:15,pctMajor:30}, {period:"2001–2010",events:22,pctMajor:40}, {period:"2011–2020",events:30,pctMajor:50}, {period:"2021–2024*",events:16,pctMajor:55}]Plot.plot({title:"Rapid Intensification Events in the Atlantic",subtitle:"Storms are strengthening faster — giving communities less warning time",width:700,height:350,x: {label:"Period"},y: {label:"Number of Rapid Intensification Events"},marks: [ Plot.barY(riData, {x:"period",y:"events",fill:"#e74c3c",tip:true}), Plot.text(riData, {x:"period",y: d => d.events+2,text: d =>`${d.pctMajor}% became\nmajor (Cat 3+)`,fontSize:10,lineAnchor:"bottom"}) ]})
Research shows that climate change affects hurricanes in several ways:
Change
Mechanism
Evidence
Stronger peak winds
More warm water → more evaporation → more latent heat release
Proportion of Cat 4-5 storms increasing
More rapid intensification
Deeper warm water layers → sustained energy
RI events up ~150% since 1980s
More rainfall
Warmer air holds ~7% more moisture per °C
Hurricane Harvey: 60+ inches in TX
Longer season
Warmer water above threshold for more months
Recent storms forming earlier/later
Higher storm surge
Sea level rise + stronger storms
Sandy’s surge was amplified by ~1 ft of SLR
35.3.2 📝 Evidence-Based Reasoning
Using the data above:
Calculate the approximate trend in SST anomaly from 1980 to 2024. How much has the tropical Atlantic warmed?
If SST continues rising at this rate, what anomaly would you predict for 2050?
How might a longer hurricane season affect NYC specifically? Consider: When do nor’easters also form?
Hurricane Sandy (2012) hit NYC as a post-tropical cyclone in late October. Was this timing unusual? What does it suggest about future risks?
36 Explain: Why Hurricanes Weaken Over Land
36.1 🏗️ The Land Problem
Hurricanes weaken dramatically once they make landfall. Understanding why helps explain the fundamental energy source of these storms.
Code
{const width =700;const height =350;const svg = d3.create("svg").attr("width", width).attr("height", height).attr("viewBox",`0 0 ${width}${height}`); svg.append("rect").attr("width", width).attr("height", height).attr("fill","#f8f9fa").attr("rx",10); svg.append("text").attr("x",350).attr("y",30).attr("text-anchor","middle").attr("font-size",18).attr("font-weight","bold").text("Why Hurricanes Weaken Over Land");// Ocean section svg.append("rect").attr("x",0).attr("y",250).attr("width",350).attr("height",100).attr("fill","#3498db").attr("opacity",0.4).attr("rx","0 0 0 10"); svg.append("text").attr("x",175).attr("y",280).attr("text-anchor","middle").attr("font-weight","bold").text("🌊 OCEAN");// Land section svg.append("rect").attr("x",350).attr("y",250).attr("width",350).attr("height",100).attr("fill","#8B7355").attr("opacity",0.5).attr("rx","0 0 10 0"); svg.append("text").attr("x",525).attr("y",280).attr("text-anchor","middle").attr("font-weight","bold").text("🏗️ LAND");// Hurricane over ocean (strong) svg.append("text").attr("x",175).attr("y",150).attr("text-anchor","middle").attr("font-size",50).text("🌀"); svg.append("text").attr("x",175).attr("y",210).attr("text-anchor","middle").attr("font-size",13).attr("font-weight","bold").text("Cat 4 — 145 mph");// Arrow svg.append("line").attr("x1",280).attr("y1",180).attr("x2",420).attr("y2",180).attr("stroke","#2d3436").attr("stroke-width",3).attr("marker-end","url(#arrowBlack)");// Hurricane over land (weak) svg.append("text").attr("x",525).attr("y",150).attr("text-anchor","middle").attr("font-size",30).attr("opacity",0.5).text("🌀"); svg.append("text").attr("x",525).attr("y",210).attr("text-anchor","middle").attr("font-size",13).attr("font-weight","bold").attr("fill","#636e72").text("Cat 1 — 80 mph");// Reasonsconst reasons = [ {x:350,y:60,text:"❌ No warm water → no evaporation → no fuel"}, {x:350,y:85,text:"❌ Increased friction → winds slow down"}, {x:350,y:110,text:"❌ No moisture supply → rain decreases"} ]; reasons.forEach(r => { svg.append("text").attr("x", r.x).attr("y", r.y).attr("text-anchor","middle").attr("font-size",12).attr("fill","#c62828").text(r.text); });// Evaporation arrows over oceanfor (let x =80; x <280; x +=40) { svg.append("line").attr("x1", x).attr("y1",245).attr("x2", x).attr("y2",220).attr("stroke","#e74c3c").attr("stroke-width",1.5).attr("opacity",0.5); } svg.append("text").attr("x",175).attr("y",240).attr("text-anchor","middle").attr("font-size",10).attr("fill","#e74c3c").text("Evaporation ↑↑↑");const defs = svg.append("defs"); defs.append("marker").attr("id","arrowBlack").attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerWidth",6).attr("markerHeight",6).attr("orient","auto-start-reverse").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("fill","#2d3436");return svg.node();}
36.1.1 💡 Key Concept: Three Reasons Hurricanes Weaken Over Land
No warm water = no evaporation = no latent heat = fuel supply cut off
Increased surface friction from buildings, trees, mountains = winds slow down
No moisture resupply = precipitation diminishes = energy release decreases
This confirms that warm ocean water is the essential energy source for hurricanes. Without it, the hurricane engine shuts down within 12–24 hours.
37 Evaluate: Hurricane Science Assessment
37.1 ✅ Show What You Know
37.1.1 🧠 Check Your Understanding
Question 1: A hurricane is fundamentally powered by:
Code
viewof q1_hurr = Inputs.radio( ["Wind blowing over the ocean surface","The Coriolis effect spinning the storm","Latent heat released when water vapor condenses","Cold fronts colliding with warm fronts"], {label:"Select the best answer:"})
Code
q1_hurr ==="Latent heat released when water vapor condenses"?html`<div style="background: #d4edda; padding: 12px; border-radius: 8px; border-left: 4px solid #28a745;">✅ <strong>Correct!</strong> Warm ocean water evaporates, and when that vapor rises and condenses into clouds, it releases latent heat. This heat is the PRIMARY energy source driving the hurricane's circulation.</div>`: q1_hurr ?html`<div style="background: #f8d7da; padding: 12px; border-radius: 8px; border-left: 4px solid #dc3545;">❌ Think about the feedback loop: evaporation → rising → condensation → ??? → more rising</div>`:html``
Question 2: Atlantic hurricane season peaks in September (not June) because:
Code
viewof q2_hurr = Inputs.radio( ["The Sun is closest to Earth in September","Ocean water has high heat capacity and reaches peak temperature ~2 months after peak solar input","Wind patterns change in September to allow hurricane formation","September has the most rain globally"], {label:"Select the best answer:"})
Code
q2_hurr ==="Ocean water has high heat capacity and reaches peak temperature ~2 months after peak solar input"?html`<div style="background: #d4edda; padding: 12px; border-radius: 8px; border-left: 4px solid #28a745;">✅ <strong>Excellent!</strong> Water's high specific heat capacity means it absorbs energy slowly. Peak solar input is in June, but ocean temperatures don't peak until August-September. This "thermal lag" is why hurricane season peaks later than summer solstice.</div>`: q2_hurr ?html`<div style="background: #f8d7da; padding: 12px; border-radius: 8px; border-left: 4px solid #dc3545;">❌ Think about the "seasonal lag" graph. When is the Sun's energy highest? When is the ocean warmest? Why the delay?</div>`:html``
Question 3: How could a 1°C rise in average ocean temperature affect hurricanes?
Code
viewof q3_hurr = Inputs.radio( ["It would have no meaningful effect","All hurricanes would become Category 5","More available energy could fuel stronger storms, more rapid intensification, and a potentially longer season","Hurricanes would form over colder water too"], {label:"Select the best answer:"})
Code
q3_hurr ==="More available energy could fuel stronger storms, more rapid intensification, and a potentially longer season"?html`<div style="background: #d4edda; padding: 12px; border-radius: 8px; border-left: 4px solid #28a745;">✅ <strong>Correct!</strong> Warmer water means more evaporation (Clausius-Clapeyron), more latent heat available, and the 26.5°C threshold is exceeded for a longer portion of the year. This doesn't mean every storm is stronger, but the potential ceiling is raised and the season could expand.</div>`: q3_hurr ?html`<div style="background: #f8d7da; padding: 12px; border-radius: 8px; border-left: 4px solid #dc3545;">❌ Think about what warmer water means for evaporation rates, available latent heat, and how long SST exceeds 26.5°C each year.</div>`:html``
37.1.2 📝 Culminating Task: Hurricane Energy Model
Create a detailed diagram + written explanation that answers:
“How did the 2005 Atlantic hurricane season produce so many powerful storms, and what role did ocean temperature play?”
Your model should include:
The energy cycle of a hurricane (evaporation → condensation → heat release → wind → more evaporation)
Why 26.5°C is the threshold for formation (relate to evaporation rates and latent heat)
The seasonal timing and why September is the peak (thermal lag)
How 2005 SST anomalies contributed to the record-breaking season
A claim about the future: will seasons like 2005 become more common? Use SST trend data as evidence.
Use the vocabulary: latent heat, evaporation, condensation, specific heat capacity, sea surface temperature, rapid intensification, thermal lag
38 Summary: Key Takeaways
Concept
Key Idea
Energy source
Latent heat from condensation of evaporated warm ocean water
26.5°C threshold
Minimum SST for enough evaporation to fuel a tropical cyclone