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)))
