Social media is blowing up the term bomb cyclone. The term is everywhere from Twitter to 24/7 news coverage of the storm hitting the East Coast of the United States. The technical term for a bomb cyclone is bombogenesis which is the combination of “bomb” and “cyclogenesis.” Or, you could call it an explosive cyclogenesis to grab views to your blog.
A storm undergoes bombogenesis when its central low pressure drops at least 24 millibars in 24 hours, according to the National Oceanic and Atmospheric Administration (NOAA).
At the MathWorks headquarters in Natick, MA we have a Particle Electron-based weather station sending data to ThingSpeak for the past several years. Here’s what the weather station looks like on a better day.
Not many interesting events emerge from the data, but with something called a bomb cyclone, Rob Purser decided to take a closer look using MATLAB. Our weather station on ThingSpeak channel 12397 collects temperature, humidity, and pressure data. By taking a look at this MATLAB plot of the pressure analyzed over 24 hours, you will the pressure drops at least 24 millibars in 24 hours and in fact over 40 millibars. This storm definitely fits its name of explosive cyclogenesis.
Explosive CyclogenesisThe term "Explosive Cyclogenesis" was coined by MIT professor Fred Sanders in a 1980 article. Sanders and his colleague John Gyakum defined a "bomb" as an extratropical cyclone that deepens by at least (24 sin φ/ sin 60˚)mb in 24 hours, where φ represents latitude in degrees. This is based on the definition, standardized by Bergeron, for explosive development of a cyclone at 60˚N as deepening by 24mb in 24 hours. We're having a classing NorthEaster blizzard here in Natick, right now. So, are we having a bombogenesis event here in Natick? It sure looks impressive:
pressure = thingSpeakRead(12397,'Field',6,'DateRange',[datetime('3-jan-2018'),datetime('5-jan-2018')],'OutputFormat','timetable');
plot(pressure.Timestamps,smoothdata(pressure.PressureHg),'LineWidth',3)
title('Is it Explosive Cyclogenesis?')
ylabel('Pressure (inHg)')
set(gca,'TitleFontSizeMultiplier',2,...
'YGrid','on')
We have a weather station here at MathWorks, which is channel 12397. Let's calculate the drop needed at our latitude to meet the criteria. You can get channel information using thingSpeakRead.
[~,~,weatherStationInfo] = thingSpeakRead(12397)
We can see that the weather station is at latitude 42.299 and longitude -71.350.
imshow(webread(sprintf('https://maps.googleapis.com/maps/api/staticmap?zoom=16&size=400x400¢er=%f,%f',weatherStationInfo.Latitude,weatherStationInfo.Longitude)))
Looks good. The definition of the event is a storm that deepens by at least (24 sin φ/ sin 60˚)mb in 24 hours, where φ represents latitude in degrees. So, since we're at latitude 42, how fast does it have to drop here in Natick to qualify?
dropRequiredInNatick = 24 * deg2rad(weatherStationInfo.Latitude)/deg2rad(60)
dropRequiredInNatick = 16.9199
So, we only need a 17 millibar drop here in Natick to qualify. To test this, we need to convert to millibars, since the station reports pressure in the American unit of inches of mercury (inHg).
pressure.PressureMbar = pressure.PressureHg * 33.86389;
latestMbar = pressure.PressureMbar(end)
latestMbar = 971.8936
Let's compare the latest value with one from 24 hours ago. One of the best things about timetables is that we can ask for the closest reading to the specific time we request.
yesterdayReading = pressure(withtol(pressure.Timestamps(end)-hours(24),seconds(30)),:)
yesterdaysMbar = yesterdayReading.PressureMbar(end);
drop = yesterdaysMbar - latestMbar
drop = 44.0231
Wow! guess we make it!
We can calculate the drop over the course of the storm:
hourlyPressure = retime(pressure(:,'PressureMbar'),'hourly','mean');
oneDayAgo = nan(size(hourlyPressure,1),1);
oneDayAgo(25:end) = hourlyPressure.PressureMbar(1:end-24);
hourlyPressure.OneDayAgo = oneDayAgo;
hourlyPressure(1:24,:) = [];
hourlyPressure.Change = hourlyPressure.PressureMbar - hourlyPressure.OneDayAgo;
hourlyPressure(end-5:end,:)
plot(hourlyPressure.Timestamps,abs(hourlyPressure.Change),...
[hourlyPressure.Timestamps(1) hourlyPressure.Timestamps(end)],[dropRequiredInNatick dropRequiredInNatick],'--r',...
'LineWidth',3)
legend('Change over 24 hours','Explosive Cyclogenesis Event','Location','Southeast')
title('Pressure Drop Through the Storm')
ylabel('24 Hour Drop (Millibars)')
set(gca,'TitleFontSizeMultiplier',2)
Definitely qualified as a Explosive Cyclogenesis event!
Comments