thermo

A collection of function definitions to handle common thermodynamic calculations for the atmosphere.

climlab.utils.thermo.EIS(T0, T700)[source]

Convenience method, identical to thermo.estimated_inversion_strength(T0,T700)

climlab.utils.thermo.Planck_frequency(nu, T)[source]

The Planck function B(nu,T): the flux density for blackbody radiation in frequency space nu is frequency in 1/s T is temperature in Kelvin

Formula (3.1) from Pierrehumbert [2010]

climlab.utils.thermo.Planck_wavelength(l, T)[source]

The Planck function (flux density for blackbody radiation) in wavelength space l is wavelength in meters T is temperature in Kelvin

Formula (3.3) from Pierrehumbert [2010]

climlab.utils.thermo.Planck_wavenumber(n, T)[source]

The Planck function (flux density for blackbody radition) in wavenumber space n is wavenumber in 1/cm T is temperature in Kelvin

Formula from Pierrehumbert [2010], page 140.

climlab.utils.thermo.T(theta, p)[source]

Convenience method, identical to thermo.temperature_from_potential(theta,p).

climlab.utils.thermo.blackbody_emission(T)[source]

Blackbody radiation following the Stefan-Boltzmann law.

climlab.utils.thermo.clausius_clapeyron(T)[source]

Compute saturation vapor pressure as function of temperature T.

Input: T is temperature in Kelvin Output: saturation vapor pressure in mb or hPa

Formula from Rogers and Yau [1989], p. 16 claimed to be accurate to within 0.1% between -30degC and 35 degC Based on the paper by Bolton [1980].

climlab.utils.thermo.estimated_inversion_strength(T0, T700)[source]

Compute the Estimated Inversion Strength or EIS, following Wood and Bretherton [2006].

Inputs: T0 is surface temp in Kelvin

T700 is air temperature at 700 hPa in Kelvin

Output: EIS in Kelvin

EIS is a normalized measure of lower tropospheric stability acccounting for temperature-dependence of the moist adiabat.

climlab.utils.thermo.lifting_condensation_level(T, RH)[source]

Compute the Lifiting Condensation Level (LCL) for a given temperature and relative humidity

Inputs: T is temperature in Kelvin

RH is relative humidity (dimensionless)

Output: LCL in meters

This is height (relative to parcel height) at which the parcel would become saturated during adiabatic ascent.

Based on approximate formula from Bolton [1980] as given by Romps [2017].

For an exact formula see Romps [2017].

climlab.utils.thermo.mixing_ratio_from_vapor_pressure(p, e)[source]

Water vapor mixing ratio p is air pressure e is vapor pressure p and e must be in same units (e.g. hPa)

climlab.utils.thermo.mmr_to_vmr(mmr, gas)[source]

Convert mass mixing ratio to volume mixing ratio for named gas. ( molecular weights are specific in climlab.utils.constants.py )

climlab.utils.thermo.potential_temperature(T, p)[source]

Compute potential temperature for an air parcel.

Input: T is temperature in Kelvin

p is pressure in mb or hPa

Output: potential temperature in Kelvin.

climlab.utils.thermo.pseudoadiabat(T, p)[source]

Compute the local slope of the pseudoadiabat at given temperature and pressure

Inputs: p is pressure in hPa or mb

T is local temperature in Kelvin

Output: dT/dp, the rate of temperature change for pseudoadiabatic ascent

in units of K / hPa

The pseudoadiabat describes changes in temperature and pressure for an air parcel at saturation assuming instantaneous rain-out of the super-saturated water

Formula consistent with eq. (2.33) of Pierrehumbert [2010] which nominally accounts for non-dilute effects, but computes the derivative dT/dpa, where pa is the partial pressure of the non-condensible gas.

Integrating the result dT/dp treating p as total pressure effectively makes the dilute assumption.

climlab.utils.thermo.qsat(T, p)[source]

Compute saturation specific humidity as function of temperature and pressure.

Input: T is temperature in Kelvin

p is pressure in hPa or mb

Output: saturation specific humidity (dimensionless).

climlab.utils.thermo.rho_moist(T, p, q)[source]

Density of moist air. T is air temperature (K) p is air pressure (hPa) q is specific humidity (hPa)

returns density in kg/m3

climlab.utils.thermo.temperature_from_potential(theta, p)[source]

Convert potential temperature to in-situ temperature.

Input: theta is potential temperature in Kelvin

p is pressure in mb or hPa

Output: absolute temperature in Kelvin.

climlab.utils.thermo.theta(T, p)[source]

Convenience method, identical to thermo.potential_temperature(T,p).

climlab.utils.thermo.vapor_pressure_from_specific_humidity(p, q)[source]

Vapor pressure (same units as input p) p is total air pressure q is specific humidity (dimensionless) – mass of vapor per unit mass moist air

climlab.utils.thermo.virtual_temperature_from_mixing_ratio(T, w)[source]

Virtual temperature Tv T is air temperature (K) w is water vapor mixing ratio (dimensionless)

climlab.utils.thermo.vmr_to_mmr(vmr, gas)[source]

Convert volume mixing ratio to mass mixing ratio for named gas. ( molecular weights are specific in climlab.utils.constants.py )