Source code for pyjams.alpha_kin_h2o

#!/usr/bin/env python
"""
Kinetic fractionation factors for molecular diffusion of water isotopologues.

This module was written by Matthias Cuntz while at Department of Computational
Hydrosystems, Helmholtz Centre for Environmental Research - UFZ, Leipzig,
Germany, and continued while at Institut National de Recherche pour
l'Agriculture, l'Alimentation et l'Environnement (INRAE), Nancy, France.

:copyright: Copyright 2014-2022 Matthias Cuntz, see AUTHORS.rst for details.
:license: MIT License, see LICENSE for details.

.. moduleauthor:: Matthias Cuntz

The following functions are provided:

.. autosummary::
   alpha_kin_h2o

History
    * Written, Sep 2014, Matthias Cuntz
    * Code refactoring, Nov 2021, Matthias Cuntz
    * More consistent docstrings, Jan 2022, Matthias Cuntz

"""


__all__ = ['alpha_kin_h2o']


[docs]def alpha_kin_h2o(isotope=None, eps=False, greater1=True, boundary=False, cappa=False): """ Kinetic fractionation factors for molecular diffusion of water isotopologues. It does not use the atmospheric convention, i.e. factor < 1, by default but sets factor > 1 (greater1=True). Parameters ---------- isotope : int, optional Select water isotopologue: 1: HDO; 2: H218O; else: no fractionation, i.e. return 1 (default) eps : bool, optional Returns fractionation epsilon=alpha-1 instead of fractionation factor alpha if True (default: return alpha) greater1 : bool, optional alpha > 1 if True, which is not the atmospheric convention. alpha < 1 if False, which is the atmospheric convention. boundary : bool, optional Returns `alpha**2/3` for diffusion through boundary layer instead of molecular diffusion if True (default: False). cappa : bool, optional Uses factors of Cappa et al. (2003) instead of Merlivat (1978) if True (default: False). Returns ------- alpha / epsilon : float or array-like Kinetic fractionation factor (alpha) or fractionation (epsilon) Notes ----- Cappa, C. D., Hendricks, M. B., DePaolo, D. J., & Cohen, R. (2003) Isotopic fractionation of water during evaporation Journal of Geophysical Research, 108(D16), 4525. doi:10.1029/2003JD003597 Merlivat, L. (1978) Molecular Diffusivities Of (H2O)-O-16 HD16O, And (H2O)-O-18 In Gases, The Journal of Chemical Physics, 69(6), 2864-2871. Merlivat, L., & Jouzel, J. (1979) Global climatic interpretation of the deuterium-oxygen-18 relationship for precipitation, Journal of Geophysical Research, 84(C8), 5029-5033. Examples -------- Fractionation factor >>> import numpy as np >>> print(np.around(alpha_kin_h2o(isotope=0), 4)) 1.0 Fractionations >>> print(np.around(alpha_kin_h2o(isotope=1, eps=True)*1000., 4)) 25.1153 >>> print(np.around(alpha_kin_h2o(isotope=2, eps=True, ... greater1=False)*1000., 4)) -27.3 >>> print(np.around(alpha_kin_h2o(isotope=2, eps=True, greater1=True, ... boundary=True)*1000., 4)) 18.6244 >>> print(np.around(alpha_kin_h2o(isotope=2, eps=True, greater1=False, ... boundary=True, cappa=True)*1000., 4)) -20.7076 """ # Fractionation factors if (isotope == 1): # HDO if cappa: out = 0.9839 else: out = 0.9755 elif (isotope == 2): # H218O if cappa: out = 0.9691 else: out = 0.9727 else: out = 1. # boundary layer if boundary: out = out**(2./3.) # alpha+ if greater1: out = 1./out # epsilon if eps: out -= 1. return out
if __name__ == '__main__': import doctest doctest.testmod(optionflags=doctest.NORMALIZE_WHITESPACE)