corfidi_storm_motion#
- metpy.calc.corfidi_storm_motion(pressure, u, v, *, u_llj=None, v_llj=None)[source]#
Calculate upwind- and downwind-developing MCS storm motions using the Corfidi method.
Method described by ([Corfidi2003]):
Cloud-layer winds, estimated as the mean of the wind from 850 hPa to 300 hPa
- Convergence along the cold pool, defined as the negative of the low-level jet
(estimated as maximum in winds below 850 hPa unless specified in u_llj and v_llj)
The vector sum of the above is used to describe upwind propagating MCSes
- Downwind propagating MCSes are taken as propagating along the sum of the cloud-layer wind
and negative of the low level jet, therefore the cloud-level winds are doubled to re-add storm motion
- Parameters:
pressure (
pint.Quantity
) – Pressure from full profileu (
pint.Quantity
) – Full profile of the U-component of the windv (
pint.Quantity
) – Full profile of the V-component of the windu_llj (
pint.Quantity
, optional) – U-component of low-level jetv_llj (
pint.Quantity
, optional) – V-component of low-level jet
- Returns:
upwind_prop ((
pint.Quantity
,pint.Quantity
)) – Scalar U- and V- components of Corfidi upwind propagating MCS motiondownwind_prop ((
pint.Quantity
,pint.Quantity
)) – Scalar U- and V- components of Corfidi downwind propagating MCS motion
Examples
>>> from metpy.calc import corfidi_storm_motion, wind_components >>> from metpy.units import units >>> p = [1000, 925, 850, 700, 500, 400] * units.hPa >>> wdir = [165, 180, 190, 210, 220, 250] * units.degree >>> speed = [5, 15, 20, 30, 50, 60] * units.knots >>> u, v = wind_components(speed, wdir) >>> corfidi_storm_motion(p, u, v) (<Quantity([16.4274315 7.75758388], 'knot')>, <Quantity([36.32782655 35.21132283], 'knot')>) >>> # Example with manually specified low-level jet as max wind below 1500m >>> import numpy as np >>> h = [100, 250, 700, 1500, 3100, 5720] * units.meters >>> lowest1500_index = np.argmin(h <= units.Quantity(1500, 'meter')) >>> llj_index = np.argmax(speed[:lowest1500_index]) >>> llj_u, llj_v = u[llj_index], v[llj_index] >>> corfidi_storm_motion(p, u, v, u_llj=llj_u, v_llj=llj_v) (<Quantity([4.90039505 1.47297683], 'knot')>, <Quantity([24.8007901 28.92671577], 'knot')>)
Notes
Only functions on 1D profiles (not higher-dimension vertical cross sections or grids). Since this function returns scalar values when given a profile, this will return Pint Quantities even when given xarray DataArray profiles.