Thermodynamic Equations

Header file: <libs/superdrops/thermodynamic_equations.hpp> [source]

inline double moist_specifc_heat(const double qvap, const double qcond)

Calculate the specific heat capacity of moist air.

This function calculates the specific heat capacity of a moist parcel of air using the specific heat of dry air, the specific heat of water vapor, and the specific heat of condensed water, and the vapour and liquid mass mixing ratios for that parcel of air.

Parameters:
  • qvap – The vapor mass mixing ratio.

  • qcond – The liquid (condensate) mass mixing ratio.

Returns:

The specific heat capacity of the air parcel.

inline double supersaturation_ratio(const double press, const double qvap, const double psat)

Calculate the supersaturation ratio given the saturation pressure, ambient pressure, and vapor mass mixing ratio.

supersaturation ratio, ‘s_ratio’, = p_vapour/psat (i.e. is equivalent to the relative humidity)

Parameters:
  • press – The ambient pressure.

  • qvap – The vapor mass mixing ratio.

  • psat – The saturation pressure.

Returns:

The supersaturation ratio.

inline Kokkos::pair<double, double> kohler_factors(const Superdrop &drop, const double temp)

Calculate the Raoult and Kelvin factors for the Kohler curve.

Calculates 1) value of ‘a’ in Raoult factor (exp^(a/r)) to account for effect of dissolved solute on radial growth of droplet and 2) Calculates value of ‘b’ in Kelvin factor (1-b/r^3) to account for curvature on radial growth of droplet. Equations [X.YY] are from “An Introduction To Clouds

From The Microscale to Climate” by Lohmann, Luond and Mahrt, 1st edition.

Parameters:
  • drop – The superdroplet.

  • temp – The ambient temperature.

Returns:

A Kokkos pair containing ‘a’ and ‘b’ factors in that order.

double saturation_pressure(const double temp)

Calculate the equilibrium vapor pressure of water over liquid water, i.e. the saturation pressure.

Equation adapted from Bjorn Steven’s “make_tetens” Python function from his module “moist_thermodynamics.saturation_vapour_pressures” available upon request on gitlab. Original paper for formula is Murray, F. W. (1967) “On the Computation of Saturation Vapor Pressure”, Journal of Applied Meteorology and Climatology 6, 203–204.

Note: Function starts with conversion from dimentionless to real temperature [Kelvin], TEMP = temp*Temp0, and returns dimensionless pressure from real psat = PSAT/P0.

Equation adapted from Bjorn Steven’s “make_tetens” python function from his module “moist_thermodynamics.saturation_vapour_pressures” available upon request on gitlab. Original paper for formula is Murray, F. W. (1967) “On the Computation of Saturation Vapor Pressure”, Journal of Applied Meteorology and Climatology 6, 203–204.

Note: Function starts with conversion from dimentionless to real temperature [Kelvin], TEMP = temp*Temp0, and returns dimensionless pressure from real psat = PSAT/P0.

Parameters:

temp – The (dimensionless) ambient temperature.

Returns:

The (dimensionless) saturation pressure.

double saturation_pressure_murphy_koop(const double temp)

Calculate the equilibrium vapor pressure of water over liquid water, i.e. the saturation pressure.

Equation adapted from Python module typhon.physics.thermodynamics.e_eq_water_mk with conversion to real TEMP /K = temp*Temp0 and return dimensionless psat from real psat, psat = PSAT/P0.

Parameters:

temp – The (dimensionless) temperature.

Returns:

The (dimensionless) saturation pressure.

double diffusion_factor(const double press, const double temp, const double psat)

Calculate the sum of the heat and vapor diffusion factors for condensation-diffusion growth equation.

Calculate the sum of heat and vapor diffusion factors ‘Fkl’ and ‘Fdl’ respectively for condensation-diffusion growth equation of droplet radius. Equations [X.YY] are from “An

Introduction To Clouds From The Microscale to Climate” by Lohmann, Luond and Mahrt, 1st edition.

Parameters:
  • press – The ambient pressure.

  • temp – The ambient temperature.

  • psat – The saturation pressure.

Returns:

The (dimensionless) diffusion factor.

double ventilation_factor(const double radius)

Calculate the ventilation factor for the condensation-diffusion growth equation.

Equation for ventilation factor, $f_v$, is fit to data from Kinzer and Gunn (1951) and from Pruppacher and Rasmussen (1979) according to Florian Poydenot, whereby \( f_v = 1 + \frac{1}{\frac{1}{c_1R^\alpha} + \frac{1}{c_2R^\beta}} \) where \( c_1 = 6.954*10^7 \), \( \alpha=1.963 \), \( c_2=1.069*10^3 \), \( \beta=0.702 \), and \(R\) is the radius of the water droplet in [m].

Equation for ventilation factor, $f_v$, is fit to data from Kinzer and Gunn (1951) and from Pruppacher and Rasmussen (1979) according to Florian Poydenot, whereby $ f_v = 1 + \frac{1}{\frac{1}{c_1R^\alpha} + \frac{1}{c_2R^\beta}} $ where $ c_1 = 6.954*10^7 $, $ \alpha=1.963 $, $ c_2=1.069*10^3 $, $ \beta=0.702 $, and $R$ is the radius of the water droplet in [m].

Equation is capped at fv=20 (corresponds to the value of the uncapped fv when the droplet radius is ~3.30mm) because droplets greater than ~3mm have a constant fall speed in all conventional terminal velocity formulations (see terminal_velocity.hpp for the available terminal velocity parameterisations in CLEO).

Parameters:

radius – The droplet radius.

Returns:

The (dimensionless) ventilation factor.