The thermodynamics module.

This module implements thermodynamics functions for monc_utils.

Note: Functions can be used to provide derived variables where Derived variable name: is defined.

Detailed Module Contents

The entire module is documented below.

General Thermodynamics functions.

Peter Clark

monc_utils.thermodynamics.thermodynamics.esat(T)

Saturation Vapour Pressure over Water.

Derived variable name: esat

Parameters:

T (numpy array or xarray DataArray) – Temperature (K)

Returns:

res – Vapour pressure over water (Pa)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.esat_ice(T)

Saturation Vapour Pressure over Ice.

Derived variable name: esat_ice

Magnus Teten, Murray (1967)

Parameters:

T (numpy array or xarray DataArray.) – Temperature (K)

Returns:

res – Vapour pressure over ice(Pa)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.inv_esat(es)

Temperature for given Saturation Vapour Pressure over Water.

Parameters:

es (numpy array or xarray DataArray) – Vapour pressure over water (Pa)

Returns:

T – Temperature (K)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.inv_esat_ice(es)

Temperature for given Saturation Vapour Pressure over Water.

Magnus Teten, Murray (1967)

Parameters:

es (numpy array or xarray DataArray) – Vapour pressure over water (Pa)

Returns:

T – Temperature (K)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.esat_over_Tkappa(T)

Computes e_s/T^{(1/kappa)} (es in Pa).

From Bolton 1980.

Parameters:

T (numpy array or xarray DataArray) – Temperature (K)

Returns:

res

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.exner(p)

Compute Exner Pressure.

Derived variable name: exner

Parameters:

p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

p_exner

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.inv_exner(p)

Compute 1/(Exner Pressure).

Parameters:

p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

inv_p_exner

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.temperature(theta, p)

Compute Potential Temperature.

Derived variable name: T

Parameters:
  • theta (numpy array or xarray DataArray) – Potential temperature of dry air (K),

  • p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

T – Temperature (K).

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.potential_temperature(T, p)

Compute Potential Temperature.

Derived variable name: th

Parameters:
  • T (numpy array or xarray DataArray) – Temperature (K).

  • p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

theta – Potential temperature of dry air (K),

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.moist_potential_temperature(T, p, m)

Compute Moist Potential Temperature.

Parameters:
  • T (numpy array or xarray DataArray) – Temperature (K).

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • m (numpy array or xarray DataArray) – Mixing ratio(kg/kg).

Returns:

theta – Potential temperature of moist air (K) .

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.q_to_mix(q)

Convert specific humidity to mixing ratio.

Derived variable name: m_x where input is q_x

Parameters:

q (numpy array or xarray DataArray) – Specific humidity (kg/kg).

Returns:

m – Mixing Ratio(kg/kg)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.mix_to_q(m)

Convert mixing ratio to specific humidity.

Derived variable name: q_x where input is m_x

Parameters:

m (numpy array or xarray DataArray) – Mixing Ratio(kg/kg)

Returns:

q – Specific humidity (kg/kg).

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.q_p_to_e(q, p)

Convert specific humidity and pressure to vapour pressure.

Parameters:
  • q (numpy array or xarray DataArray) – Specific humidity (kg/kg)

  • p (numpy array or xarray DataArray) – Total Pressure (Pa)

Returns:

e – Vapour pressure (Pa)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.e_p_to_q(e, p)

Convert vapour pressure and total pressure to specific humidity.

Parameters:
  • e (numpy array or xarray DataArray) – Vapour pressure (Pa)

  • p (numpy array or xarray DataArray) – Pressure (Pa)

Returns:

q – Specific humidity (kg/kg)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.t_lcl_td(T, TD)

T at lifting condensation level from Dewpoint.

Derived variable name: t_lcl_td

From Bolton 1980

Parameters:
  • T (numpy array or xarray DataArray) – Temperature (K).

  • TD (numpy array or xarray DataArray) – Dew point Temperature (K).

Returns:

Tlcl – temperature at lifting condensation level (K)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.t_lcl_e(T, e)

T at lifting condensation level from vapour presssure.

Derived variable name: t_lcl_e

From Bolton 1980

Parameters:
  • T (numpy array or xarray DataArray) – Temperature (K).

  • e (numpy array or xarray DataArray) – Vapour pressure (Pa).

Returns:

Tlcl – temperature at lifting condensation level (K)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.t_lcl_rh(T, RH)

T at lifting condensation level from RH.

Derived variable name: t_lcl_rh

From Bolton 1980

Parameters:
  • T (numpy array or xarray DataArray) – Temperature (K).

  • RH (numpy array or xarray DataArray) – Relative humidity (%)

Returns:

Tlcl – temperature at lifting condensation level (K)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.p_lcl(Tp, pp, T_lcl)

Pressure at lifting condensation level.

Parameters:
  • Tp (numpy array or xarray DataArray) – Parcel Temperature (K).

  • pp (numpy array or xarray DataArray) – Parcel pressure (Pa).

  • T_lcl (numpy array or xarray DataArray) – Temperature at lifting condensation level.

Returns:

p_lcl – : Pressure at lifting condensation level.

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.latheat(T, sublim=0, model=0, focwil_T=None)

Latent heat of condensation or sublimation.

Parameters:
  • T (numpy array or xarray DataArray) – Temperature (K).

  • sublim (int (optional)) – = 1 return Latent heat of sublimation

  • Model (int (optional)) – = 1 use UM fixed values

  • focwil_T (float (optional)) – use linear ramp in ice fraction from focwil_T to freezing.

Returns:

latheat – Latent heat of condensation(K)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.dewpoint(T, p, q)

Dewpoint.

Derived variable name: T_dew

Parameters:
  • T (numpy array or xarray DataArray) – Temperature.

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q (numpy array or xarray DataArray) – specific humidity (kg/kg)

Returns:

TD – Dew-point temperature (K).

Return type:

Nnmpy array

monc_utils.thermodynamics.thermodynamics.qsat(T, p)

Saturation vapour pressure.

Derived variable name: qsat

Parameters:
  • T (numpy array or xarray DataArray) – Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

qs – Saturation specific humidity (kg/kg) over water.

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.dqsatbydT(T, p)

{alpha= dq_{s}}/{dT}.

Derived variable name: alpha

Parameters:
  • T (numpy array or xarray DataArray) – Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

alpha

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.equiv_potential_temperature_approx(T, p, q)

Equivalent potential temperature.

From Bolton 1980

Parameters:
  • T (numpy array or xarray DataArray) – Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q (numpy array or xarray DataArray) – specific humidity (kg/kg)

Returns:

theta_e – Fast estimate of equivalent potential temperature (K).

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.equiv_potential_temperature(T, p, q)

Equivalent potential temperature.

Derived variable name: th_e

From Bolton 1980

Parameters:
  • T (numpy array or xarray DataArray) – Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q (numpy array or xarray DataArray) – specific humidity (kg/kg)

Returns:

theta_e – Accurate estimate of equivalent potential temperature (K).

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.wet_bulb_potential_temperature(T, p, q)

Wet-bulb potential temperature.

Derived variable name: th_w

From Davies-Jones 2007

Parameters:
  • T (numpy array or xarray DataArray) – Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q (numpy array or xarray DataArray) – specific humidity (kg/kg)

Returns:

theta_w – Wet-bulb potential temperature (K) numpy array or xarray DataArray

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.sat_wet_bulb_potential_temperature(T, p)

Saturated wet-bulb potential temperature.

Derived variable name: th_s

From Davies-Jones 2007

Parameters:
  • T (numpy array or xarray DataArray) – Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

theta_w – Wet-bulb potential temperature (K) numpy array or xarray DataArray

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.sat_unsat_wet_bulb_potential_temperature(T, p, q, Tp=None, TDp=None, pp=None, sl=None)

Saturated/unsaturated wet-bulb potential temperature.

Derived variable name: th_sw

From Davies-Jones 2007

Parameters:
  • T (numpy array or xarray DataArray) – Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q (numpy array or xarray DataArray) – specific humidity (kg/kg)

  • Tp (numpy array or xarray DataArray) – Parcel Temperature. (K) Default=None

  • TDp (numpy array or xarray DataArray) – Parcel Dewppoint Temperature. (K) Default=None

  • pp (numpy array or xarray DataArray) – Parcel pressure. (Pa) Default=None

  • sl (slice object.) – Used to select levels for mean for parcel properties. default=None which gives sice(1,3,None)

  • None (If parcel properties are) –

  • averaged. (the sl levels are) –

Returns:

theta_sw – Wet-bulb potential temperature below LCL, saturated wet-bulb PT above (K) numpy array or xarray DataArray

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.wet_bulb_temperature(T, p, q)

Wet-bulb temperature.

Derived variable name: T_w

From Davies-Jones 2007

Parameters:
  • T (numpy array or xarray DataArray) – Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q (numpy array or xarray DataArray) – specific humidity (kg/kg)

Returns:

theta_w – Wet-bulb temperature (K) numpy array or xarray DataArray

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.liquid_water_potential_temperature(theta, q_cl, pi)

Liquid water potential temperature.

Derived variable name: th_L

Approximate form as in MONC

Parameters:
  • theta (numpy array or xarray DataArray) – Potential Temperature. (K)

  • q_cl (numpy array or xarray DataArray) – q_cloud_liquid_mass.

  • pi (numpy array or xarray DataArray) – Exner pressure.

Returns:

theta_w – Wet-bulb potential temperature (K) numpy array or xarray DataArray

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.virtual_potential_temperature(theta, q_v, q_cl)

Virtual potential temperature.

Derived variable name: th_v

Parameters:
  • theta (numpy array or xarray DataArray) – Potential Temperature. (K)

  • q_v (numpy array or xarray DataArray) – specific humidity

  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

Returns:

theta_v – Virtual potential temperature (K)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.virtual_potential_temperature_monc(theta, thref, q_v, q_cl)

Virtual potential temperature.

Derived variable name: th_v_monc

Approximate form as in MONC

Parameters:
  • theta (numpy array or xarray DataArray) – Potential Temperature. (K)

  • thref (numpy array or xarray DataArray) – Reference Potential Temperature (usually 1D). (K)

  • q_v (numpy array or xarray DataArray) – specific humidity

  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

Returns:

theta_v – Virtual potential temperature (K)

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.q_total(*args)

Specfic Total Water Content.

Derived variable name: q_total

Parameters:

args (list of numpy array or xarray DataArrays) – specific water variables (e.g.[ q_v, q_cl]).

Returns:

q_total – sum of args

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.buoyancy(th_v)

Buoyancy from theta_v.

Derived variable name: buoyancy

Parameters:

th_v (numpy array or xarray DataArray) – Virtual potential temperature.

Returns:

buoyancy

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.buoyancy_monc(th_v, thref)

Buoyancy from theta_v.

Derived variable name: buoyancy_monc

MONC approximation.

Parameters:

th_v (numpy array or xarray DataArray) – Virtual potential temperature.

Returns:

buoyancy

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.dbdz(th, p, q_v, q_cl, z, zn)

Vertical Gradient of Buoyancy from theta_v.

Derived variable name: dbdz

Parameters:
  • theta (numpy array or xarray DataArray) – Potential Temperature. (K)

  • thref (numpy array or xarray DataArray) – Reference Potential Temperature (usually 1D). (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q_v (numpy array or xarray DataArray) – specific humidity

  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

  • th_v (numpy array or xarray DataArray) – Virtual potential temperature.

Returns:

dbuoyancy/dz

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.dbdz_monc(th, thref, p, q_v, q_cl, z, zn)

Vertical Gradient of Buoyancy from theta_v.

Derived variable name: db_moncdz

MONC approximation

Parameters:
  • theta (numpy array or xarray DataArray) – Potential Temperature. (K)

  • thref (numpy array or xarray DataArray) – Reference Potential Temperature (usually 1D). (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q_v (numpy array or xarray DataArray) – specific humidity

  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

  • th_v (numpy array or xarray DataArray) – Virtual potential temperature.

Returns:

buoyancy

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.rh(T, p, q)

Relative Humidity.

Derived variable name: rh

Parameters:
  • T (numpy array or xarray DataArray) – Temperature (K).

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q (numpy array or xarray DataArray) – specific humidity (kg/kg)

Returns:

rh – Relative Humidity.

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.rh_ice(T, p, q)

Relative Humidity wrt Ice.

Derived variable name: rh_ice

Parameters:
  • T (numpy array or xarray DataArray) – Temperature.

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q (numpy array or xarray DataArray) – specific humidity (kg/kg)

Returns:

rh – Relative Humidity.

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.a_L_monc(T, p)

Cloud Factor.

Derived variable name: a_L

Parameters:
  • T (numpy array or xarray DataArray) – Temperature.

  • p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

a_L – Factor used in calculating liqid water content.

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.cloud_params_monc(th_ref, p_ref)

Cloud Parameters.

MONC Approximation

Parameters:
  • th_ref (numpy array or xarray DataArray) – Reference Potential Temperature.

  • p_ref (numpy array or xarray DataArray) – Reference Pressure (Pa).

Returns:

Factors used in calculating liqid water content. “T_ref”,”pi_ref”, “qs_ref”, “a_L”, “alpha_L”.

Return type:

dict

monc_utils.thermodynamics.thermodynamics.betas_monc(th, p)

Beta factors in cloudy buoyancy calculation.

Parameters:
  • th (numpy array or xarray DataArray) – Potential Temperature. (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

Returns:

(bt, bq, bc, alpha_L, a_L).

Return type:

tuple of numpy array or xarray DataArrays

monc_utils.thermodynamics.thermodynamics.buoyancy_moist(th, th_ref, p, q_v, q_cl, thresh=1e-05)

Buoyancy including cloud condensation.

Derived variable name: buoyancy_moist

MONC approximation

Parameters:
  • th (numpy array or xarray DataArray) – Potential Temperature. (K)

  • thref (numpy array or xarray DataArray) – Reference Potential Temperature (usually 1D). (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q_v (numpy array or xarray DataArray) – specific humidity

  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

Returns:

buoyancy

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.dmoist_bdz(th, th_ref, p, q_v, q_cl, z, zn, thresh=1e-05)

Vertical Gradient of (buoyancy including cloud condensation).

Derived variable name: dmoist_bdz

MONC approximation. This is db/dz with b = beta_t theta_l + beta_q q_t. Note - not to be used for vertical buoyancy flux.

Parameters:
  • th (numpy array or xarray DataArray) – Potential Temperature. (K)

  • th_ref (numpy array or xarray DataArray) – Reference Potential Temperature (usually 1D). (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q_v (numpy array or xarray DataArray) – specific humidity

  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

  • z (xarray coord.) –

  • zn (xarray coord.) –

  • thresh ((Optional) float. Default is 1E-5.) – Threshold for cloud water.

Returns:

buoyancy

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.moist_dbdz(th, th_ref, p_ref, q_v, q_cl, z, zn, thresh=1e-05)

Vertical Gradient of buoyancy (including cloud condensation).

Derived variable name: moist_dbdz

MONC approximation This is db/dz = beta_t dtheta_l/dz + beta_q dq_t/dz. Note - to be used for vertical buoyancy flux.

Parameters:
  • theta (numpy array or xarray DataArray) – Potential Temperature. (K)

  • thref (numpy array or xarray DataArray) – Reference Potential Temperature (usually 1D). (K)

  • p (numpy array or xarray DataArray) – Pressure (Pa).

  • q_v (numpy array or xarray DataArray) – specific humidity

  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

  • z (xarray coord.) –

  • zn (xarray coord.) –

  • thresh ((Optional) float. Default is 1E-5.) – Threshold for cloud water.

Returns:

buoyancy

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.saturation(th, th_ref, p_ref, q_v, q_cl)

Effective saturation.

Derived variable name: saturation

MONC approximation

Parameters:
  • th (numpy array or xarray DataArray) – Potential Temperature. (K)

  • th_ref (numpy array or xarray DataArray) – Reference Potential Temperature (usually 1D). (K)

  • p_ref (numpy array or xarray DataArray) – Reference Pressure (Pa).

  • q_v (numpy array or xarray DataArray) – specific humidity

  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

Returns:

saturation

Return type:

numpy array or xarray DataArray

monc_utils.thermodynamics.thermodynamics.cloud_fraction(q_cl, thresh=1e-05)

Compute indicator function on cloud.

Derived variable name: cloud_fraction

Parameters:
  • q_cl (numpy array or xarray DataArray) – specific cloud liquid water content.

  • thresh ((Optional) float. Default is 1E-5.) – Threshold for cloud water.

Return type:

numpy array or xarray DataArray