act.retrievals.calculate_pbl_bulk_richardson#

act.retrievals.calculate_pbl_bulk_richardson(ds, temperature='tdry', pressure='pres', rh='rh', u_wind='u_wind', v_wind='v_wind', height='alt', smooth_height=3, base=5.0, thresholds=(0.25, 0.5), vapor_pressure_method='vap', max_pbl_height=4000.0)[source]#

Function for calculating the PBL height from a radiosonde profile using the bulk Richardson number technique. The bulk Richardson number relates vertical stability to vertical shear, representing the ratio of thermally produced turbulence to that generated by vertical shear. The method assumes there is no turbulence production at the top of the boundary layer, so the bulk Richardson number exceeds its critical value there. The PBL height is taken as the lowest height at which it reaches a critical threshold.

The literature does not settle on a single critical threshold, so the ARM VAP reports heights for both 0.25 and 0.5. Both are returned by default.

Parameters:
  • ds (xarray Dataset) – Dataset housing radiosonde profile for calculations

  • temperature (str) – The name of the temperature field.

  • pressure (str) – The name of the pressure field. Expected to be in hPa.

  • rh (str) – The name of the relative humidity field, in percent.

  • u_wind (str) – The name of the eastward wind component field.

  • v_wind (str) – The name of the northward wind component field.

  • height (str) – The name of the height field

  • smooth_height (int) – Number of points to do a moving average on sounding height data to reduce noise

  • base (int) – Interval for pressure gridding. In testing, 5 mb was found to produce results with the lowest RMS

  • thresholds (tuple or list) – Critical bulk Richardson number thresholds to evaluate. One PBL height variable is returned per threshold, named from the threshold value, so the default of (0.25, 0.5) produces ‘pblht_bulk_richardson_pt25’ and ‘pblht_bulk_richardson_pt5’ to match the ARM VAP field names.

  • vapor_pressure_method (str) – Method used to calculate saturation vapor pressure. ‘vap’ (default) reproduces Eq 12 of Sivaraman et al. (2013); ‘metpy’ uses metpy.calc.saturation_vapor_pressure. See the note below.

  • max_pbl_height (float) – Maximum PBL height AGL, in meters. Following the VAP, heights above this are flagged as bad and set to -9999.

Returns:

ds (xarray Dataset) – xarray dataset with results stored in pblht_bulk_richardson_* variables

References

Seibert, P., F. Beyrich, S. E. Gryning, S. Joffre, A. Rasmussen, and P. Tercier, 2000:

Review and Intercomparison of Operational Methods for the Determination of the Mixing Height. Atmospheric Environment, 34(7), 1001-1027. https://doi.org/10.1016/S1352-2310(99)00349-0

Sivaraman, C., S. McFarlane, E. Chapman, M. Jensen, T. Toto, S. Liu, and M. Fischer.

“Planetary boundary layer (PBL) height value added product (VAP): Radiosonde retrievals.” Department of Energy Office of Science Atmospheric Radiation Measurement (ARM) Program (United States) (2013).

Sørensen, J. H., A. Rasmussen, T. Ellermann, and E. Lyck, 1998: Mesoscale Influence on

Long-range Transport - Evidence From ETEX Modelling and Observations. Atmospheric Environment, 32(24), 4207-4217. https://doi.org/10.1016/S1352-2310(98)00183-6

Note

Eq 12 of Sivaraman et al. (2013) approximates the saturation vapor pressure assuming the latent heat of vaporization is constant. That holds near the surface but degrades at the cold temperatures aloft, where it departs from the formulation used by MetPy by as much as ~50%. It is the default here because it reproduces the ARM pblhtsonde1mcfarl VAP; set vapor_pressure_method=’metpy’ for the more accurate form.