+ +
+

corfidi_storm_motion#

+
+
+metpy.calc.corfidi_storm_motion(pressure, u, v, *, u_llj=None, v_llj=None)#
+

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 profile

  • +
  • u (pint.Quantity) – Full profile of the U-component of the wind

  • +
  • v (pint.Quantity) – Full profile of the V-component of the wind

  • +
  • u_llj (pint.Quantity, optional) – U-component of low-level jet

  • +
  • v_llj (pint.Quantity, optional) – V-component of low-level jet

  • +
+
+
Returns:
+

+

+
+
+

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.

+
+ +
+ + +