Wind Modeling#

The wind model in erad is built using typical hurricane data. The model can be imported using the command below

[WPW+20] [BTDeCarolis+21]

from IPython.display import display, HTML
import plotly.graph_objects as go
import plotly.io as pio

pio.renderers.default = "notebook_connected"
from erad.models.hazard import WindModel

An instance of WindModel requires the following pieces of information,

  • timestamp: The timestamp for the hurricane event

  • center: Center of the hurricane in lat / long format

  • max_wind_speed: Maximum wind speed

  • air_pressure: Air pressuse of the hurricame

  • radius_of_max_wind: Radius of the maximum wind speed

  • radius_of_closest_isobar: Radius of closest isobar

from datetime import datetime

from gdm.quantities import Distance
from shapely.geometry import Point

from erad.quantities import Speed, Pressure

hurricane = WindModel(
    name="hurricane 1",
    timestamp=datetime.now(),
    center=Point(87, 20),
    max_wind_speed=Speed(20, "miles/hour"),
    air_pressure=Pressure(10000, "hPa"),
    radius_of_max_wind=Distance(30, "miles"),
    radius_of_closest_isobar=Distance(100, "miles"),
)
hurricane.pprint()
WindModel(
    name='hurricane 1',
    timestamp=datetime.datetime(2025, 10, 28, 17, 35, 4, 238717),
    center=<POINT (87 20)>,
    max_wind_speed=<Quantity(20, 'mile / hour')>,
    radius_of_max_wind=<Quantity(30, 'mile')>,
    radius_of_closest_isobar=<Quantity(100, 'mile')>,
    air_pressure=<Quantity(10000, 'hectopascal')>
)

An example of the WindModel can be built using the example() methods for testing purposes.

earthquake = WindModel.example()
earthquake.pprint()
WindModel(
    name='hurricane 1',
    timestamp=datetime.datetime(2025, 10, 28, 17, 35, 4, 263083),
    center=<POINT (-121.93 36.601)>,
    max_wind_speed=<Quantity(50, 'mile / hour')>,
    radius_of_max_wind=<Quantity(50, 'mile')>,
    radius_of_closest_isobar=<Quantity(300, 'mile')>,
    air_pressure=<Quantity(1013.25, 'hectopascal')>
)

Building from historical events#

Erad allows users to build wind models from historic hurricane events as well. The from_hurricane_sid class method can be used to build wind models representing historic events.

hurricane_track = WindModel.from_hurricane_sid("2017228N14314")
for h in hurricane_track:
    h.pprint()
    break
print(f"number of hurricane points : {len(hurricane_track)}")
WindModel(
    name='2017228N14314',
    timestamp=Timestamp('2017-08-16 06:00:00'),
    center=<POINT (-45.8 13.7)>,
    max_wind_speed=<Quantity(25.0, 'knot')>,
    radius_of_max_wind=<Quantity(80.0, 'nautical_mile')>,
    radius_of_closest_isobar=<Quantity(150.0, 'nautical_mile')>,
    air_pressure=<Quantity(1013.0, 'millibar')>
)
number of hurricane points : 141

Plotting the Wind Model#

fig = go.Figure()
for track in hurricane_track:
    track.plot(figure=fig)
display(HTML(pio.to_html(fig, include_plotlyjs="cdn", full_html=False)))