This module contains a variety of meteorological calculations.

Dry Thermodynamics

add_height_to_pressure(pressure, height) Calculate the pressure at a certain height above another pressure level.
add_pressure_to_height(height, pressure) Calculate the height at a certain pressure above another height.
density(pressure, temperature, mixing[, …]) Calculate density.
dry_lapse(pressure, temperature) Calculate the temperature at a level assuming only dry processes.
dry_static_energy(heights, temperature) Calculate the dry static energy of parcels.
geopotential_to_height(geopot) Compute height from a given geopotential.
height_to_geopotential(height) Compute geopotential for a given height.
height_to_pressure_std(height) Convert height data to pressures using the U.S.
mean_pressure_weighted(pressure, *args, **kwargs) Calculate pressure-weighted mean of an arbitrary variable through a layer.
potential_temperature(pressure, temperature) Calculate the potential temperature.
pressure_to_height_std(pressure) Convert pressure data to heights using the U.S.
sigma_to_pressure(sigma, psfc, ptop) Calculate pressure from sigma values.
static_stability(pressure, temperature[, axis]) Calculate the static stability within a vertical profile.
temperature_from_potential_temperature(…) Calculate the temperature from a given potential temperature.
thickness_hydrostatic(pressure, temperature, …) Calculate the thickness of a layer via the hypsometric equation.

Moist Thermodynamics

dewpoint(e) Calculate the ambient dewpoint given the vapor pressure.
dewpoint_from_specific_humidity(…) Calculate the dewpoint from specific humidity, temperature, and pressure.
dewpoint_rh(temperature, rh) Calculate the ambient dewpoint given air temperature and relative humidity.
equivalent_potential_temperature(pressure, …) Calculate equivalent potential temperature.
mixing_ratio(part_press, tot_press[, …]) Calculate the mixing ratio of a gas.
mixing_ratio_from_relative_humidity(…) Calculate the mixing ratio from relative humidity, temperature, and pressure.
mixing_ratio_from_specific_humidity(…) Calculate the mixing ratio from specific humidity.
moist_lapse(pressure, temperature) Calculate the temperature at a level assuming liquid saturation processes.
moist_static_energy(heights, temperature, …) Calculate the moist static energy of parcels.
precipitable_water(dewpt, pressure[, …]) Calculate precipitable water through the depth of a sounding.
psychrometric_vapor_pressure_wet(…[, …]) Calculate the vapor pressure with wet bulb and dry bulb temperatures.
relative_humidity_from_dewpoint(temperature, …) Calculate the relative humidity.
relative_humidity_from_mixing_ratio(…) Calculate the relative humidity from mixing ratio, temperature, and pressure.
relative_humidity_from_specific_humidity(…) Calculate the relative humidity from specific humidity, temperature, and pressure.
relative_humidity_wet_psychrometric(…) Calculate the relative humidity with wet bulb and dry bulb temperatures.
saturation_equivalent_potential_temperature(…) Calculate saturation equivalent potential temperature.
saturation_mixing_ratio(tot_press, temperature) Calculate the saturation mixing ratio of water vapor.
saturation_vapor_pressure(temperature) Calculate the saturation water vapor (partial) pressure.
specific_humidity_from_mixing_ratio(mixing_ratio) Calculate the specific humidity from the mixing ratio.
thickness_hydrostatic_from_relative_humidity(…) Calculate the thickness of a layer given pressure, temperature and relative humidity.
vapor_pressure(pressure, mixing) Calculate water vapor (partial) pressure.
vertical_velocity(omega, pressure, temperature) Calculate w from omega assuming hydrostatic conditions.
vertical_velocity_pressure(w, pressure, …) Calculate omega from w assuming hydrostatic conditions.
virtual_potential_temperature(pressure, …) Calculate virtual potential temperature.
virtual_temperature(temperature, mixing[, …]) Calculate virtual temperature.
wet_bulb_temperature(pressure, temperature, …) Calculate the wet-bulb temperature using Normand’s rule.


bulk_shear(pressure, u, v[, heights, …]) Calculate bulk shear through a layer.
bunkers_storm_motion(pressure, u, v, heights) Calculate the Bunkers right-mover and left-mover storm motions and sfc-6km mean flow.
cape_cin(pressure, temperature, dewpt, …) Calculate CAPE and CIN.
critical_angle(pressure, u, v, heights, …) Calculate the critical angle.
el(pressure, temperature, dewpt[, …]) Calculate the equilibrium level.
lcl(pressure, temperature, dewpt[, …]) Calculate the lifted condensation level (LCL) using from the starting point.
lfc(pressure, temperature, dewpt[, …]) Calculate the level of free convection (LFC).
mixed_layer(p, *args, **kwargs) Mix variable(s) over a layer, yielding a mass-weighted average.
mixed_parcel(p, temperature, dewpt[, …]) Calculate the properties of a parcel mixed from a layer.
most_unstable_cape_cin(pressure, …) Calculate most unstable CAPE/CIN.
most_unstable_parcel(pressure, temperature, …) Determine the most unstable parcel in a layer.
parcel_profile(pressure, temperature, dewpt) Calculate the profile a parcel takes through the atmosphere.
parcel_profile_with_lcl(pressure, …) Calculate the profile a parcel takes through the atmosphere.
significant_tornado(sbcape, …) Calculate the significant tornado parameter (fixed layer).
storm_relative_helicity(u, v, heights, depth) Calculate storm relative helicity.
supercell_composite(mucape, …) Calculate the supercell composite parameter.
surface_based_cape_cin(pressure, …) Calculate surface-based CAPE and CIN.


absolute_momentum(u_wind, v_wind[, index]) Calculate cross-sectional absolute momentum (also called pseudoangular momentum).
absolute_vorticity(u, v, dx, dy, lats[, …]) Calculate the absolute vorticity of the horizontal wind.
advection(scalar, wind, deltas) Calculate the advection of a scalar field by the wind.
ageostrophic_wind(heights, f, dx, dy, u, v) Calculate the ageostrophic wind given from the heights or geopotential.
coriolis_parameter(latitude) Calculate the coriolis parameter at each point.
divergence(u, v, dx, dy) Calculate the horizontal divergence of the horizontal wind.
exner_function(pressure[, reference_pressure]) Calculate the Exner function.
frontogenesis(thta, u, v, dx, dy[, dim_order]) Calculate the 2D kinematic frontogenesis of a temperature field.
geostrophic_wind(heights, f, dx, dy) Calculate the geostrophic wind given from the heights or geopotential.
inertial_advective_wind(u, v, u_geostrophic, …) Calculate the inertial advective wind.
kinematic_flux(vel, b[, perturbation, axis]) Compute the kinematic flux from two time series.
montgomery_streamfunction(height, temperature) Compute the Montgomery Streamfunction on isentropic surfaces.
potential_vorticity_baroclinic(…[, axis, …]) Calculate the baroclinic potential vorticity.
potential_vorticity_barotropic(heights, u, …) Calculate the barotropic (Rossby) potential vorticity.
q_vector(u, v, temperature, pressure, dx, dy) Calculate Q-vector at a given pressure level using the u, v winds and temperature.
shearing_deformation(u, v, dx, dy) Calculate the shearing deformation of the horizontal wind.
stretching_deformation(u, v, dx, dy) Calculate the stretching deformation of the horizontal wind.
total_deformation(u, v, dx, dy) Calculate the horizontal total deformation of the horizontal wind.
vorticity(u, v, dx, dy) Calculate the vertical vorticity of the horizontal wind.
wind_components(speed, wdir) Calculate the U, V wind vector components from the speed and direction.
wind_direction(u, v) Compute the wind direction from u and v-components.
wind_speed(u, v) Compute the wind speed from u and v-components.

Boundary Layer/Turbulence

brunt_vaisala_frequency(heights, …[, axis]) Calculate the Brunt-Vaisala frequency.
brunt_vaisala_frequency_squared(heights, …) Calculate the square of the Brunt-Vaisala frequency.
brunt_vaisala_period(heights, …[, axis]) Calculate the Brunt-Vaisala period.
friction_velocity(u, w[, v, perturbation, axis]) Compute the friction velocity from the time series of velocity components.
tke(u, v, w[, perturbation, axis]) Compute turbulence kinetic energy.

Mathematical Functions

cross_section_components(data_x, data_y[, index]) Obtain the tangential and normal components of a cross-section of a vector field.
first_derivative(f, **kwargs) Calculate the first derivative of a grid of values.
gradient(f, **kwargs) Calculate the gradient of a grid of values.
grid_deltas_from_dataarray(f) Calculate the horizontal deltas between grid points of a DataArray.
laplacian(f, **kwargs) Calculate the laplacian of a grid of values.
lat_lon_grid_deltas(longitude, latitude, …) Calculate the delta between grid points that are in a latitude/longitude format.
normal_component(data_x, data_y[, index]) Obtain the normal component of a cross-section of a vector field.
second_derivative(f, **kwargs) Calculate the second derivative of a grid of values.
tangential_component(data_x, data_y[, index]) Obtain the tangential component of a cross-section of a vector field.
unit_vectors_from_cross_section(cross[, index]) Calculate the unit tanget and unit normal vectors from a cross-section.

Apparent Temperature

apparent_temperature(temperature, rh, speed) Calculate the current apparent temperature.
heat_index(temperature, rh[, mask_undefined]) Calculate the Heat Index from the current temperature and relative humidity.
windchill(temperature, speed[, …]) Calculate the Wind Chill Temperature Index (WCTI).


find_bounding_indices(arr, values, axis[, …]) Find the indices surrounding the values within arr along axis.
find_intersections(x, a, b[, direction]) Calculate the best estimate of intersection.
get_layer(pressure, *args, **kwargs) Return an atmospheric layer from upper air data with the requested bottom and depth.
get_layer_heights(heights, depth, *args, …) Return an atmospheric layer from upper air data with the requested bottom and depth.
get_perturbation(ts[, axis]) Compute the perturbation from the mean of a time series.
isentropic_interpolation(theta_levels, …) Interpolate data in isobaric coordinates to isentropic coordinates.
nearest_intersection_idx(a, b) Determine the index of the point just before two lines with common x values.
parse_angle(input_dir) Calculate the meteorological angle from directional text.
reduce_point_density(points, radius[, priority]) Return a mask to reduce the density of points in irregularly-spaced data.
resample_nn_1d(a, centers) Return one-dimensional nearest-neighbor indexes based on user-specified centers.
smooth_gaussian(scalar_grid, n) Filter with normal distribution of weights.


Do not use these functions in new code, please see their documentation for their replacements.

get_wind_components(u, v) Calculate the U, V wind vector components from the speed and direction.
get_wind_dir(u, v) Compute the wind direction from u and v-components.
get_wind_speed(u, v) Compute the wind speed from u and v-components.
interp(x, xp, *args, **kwargs) Interpolates data with any shape over a specified axis.
interpolate_nans(x, y[, kind]) Interpolate NaN values in y.
lat_lon_grid_spacing(longitude, latitude, …) Calculate the distance between grid points that are in a latitude/longitude format.
log_interp(x, xp, *args, **kwargs) Interpolates data with logarithmic x-scale over a specified axis.