Aerosol water uptake and verification test

1 Background and goal

The water uptake process in MAM represents the hygroscopic growth of aerosol particles. In this process, aerosol particles absorb water from ambient air and become solution drops. With the assumption of (i) spherical particle shape and (ii) thermodynamic equilibrium between a solution drop and the ambient air, the growth from an aerosol particle with dry radius $r_{_d}$ to a solution drop with wet radius $r_{_w}$ can be expressed by the $\rm K\ddot{o}hler$ equation:

\begin{equation} {\rm ln(RH)} = \frac{A}{r_{_w}} - \frac{B r_{_d}^3}{r_{_w}^3-r_{_d}^3} \end{equation}

where RH is the clear-sky relative humidity with respect to water; the first term on the right-hand side describes how the surface curvature of a solution drop affects its equilibrium size; the second term on the right-hand side describes how the existence of salt in a solution drop affects its equilibrium size. The $\rm K\ddot{o}hler$ equation can be rewritten as a polynomial equation:

\begin{equation} {\rm ln(RH)} r^4_{_w} - A r^3_{_w} + [B r^3_{_d} - {\rm ln(RH)} r^3_{_d}] r_{_w} + A r^3_{_d} = 0 \end{equation}

Since MAM caps RH at 0.98, this equation is guaranteed to be quartic. MAM solves this quartic polynomial equation analytically and chooses the real root that is larger than $r_{_d}$ as $r_{_w}$. More details about the physical meanings, key assumptions, and derivation of the analytical solution of $\rm K\ddot{o}hler$ equation can be found in a separate documentation.

2 Goals

Since there is no detailed derivation or documentation about the formula of analytical solution to K$\rm \ddot{o}$hler equation, we aim to verify that the analytical solution in MAM is implemented correctly.

3 Steps to establish the verification test

This verification test uses a box model that inherits the data structure and condensation subroutines from MAM in E3SM. The box model serves as a driver program to specify the necessary parameters in order to calculate the MAM and reference solutions.

3.1 Establishment of MAM solution

We call the original water uptake subroutines in MAM to calculate the $r_{_w}$. This solution is denoted as $r_{_{MAM}}$.

3.2 Establishment of reference solution

We use the iterative bisection method to establish the reference solution of the quartic equation above and verify the correctness of MAM solution. Two initial guesses of $r_{_w}$ are chosen as:

\begin{equation} r_{_{w,lo}} = r_{_d}\,, \quad r_{_{w,hi}} = 10\,r_{_d} \, \end{equation}

based on the experience that aerosol particles are unlikely to grow 10 times larger during the water uptake process. In addition, denoting the left-hand side of polynomial equation by $F(r_{_w})$, our choice guarantees that $F(r_{_{w,lo}}) > 0$ and $F(r_{_{w,hi}}) < 0$ for the test conditions described in the next section, so the algorithm below will work appropriately. The iterative bisection method is implemented as follows:

\begin{figure} \includegraphics[width=\linewidth]{./bisec_alg.png} \end{figure}

The iteration stops when $F(r_{_{w,mid}}) = 0$ or $\left| \frac{r_{_{w,lo}} - r_{_{w,hi}}}{r_{_{w,mid}}} \right|$ is smaller than a "tol" level. This "tol" level equals to 10 times the machine epsilon returned by the Fortran intrinsic function "epsilon" and this machine epsilon depends on the working precision of the code, double or single. The returned $r_{_{w,mid}}$ is denoted as $r_{_{REF}}$.

3.3 Parameters required for the verification test

In this verification test, the following quantities are specified:

  1. $f_{_{cld}}$, set to 0 for simplicity so that clear-sky RH is the same as $\overline{{\rm RH}}$.

  2. $\overline{{\rm RH}}$, for which 12 values are used in different tests: $$[0.35, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.92, 0.95, 0.96, 0.97, 0.98].$$ The lower bound is 0.35 (the RH$\rm _{_{cryst}}$ in MAM), where a dry aerosol particle just starts to grow. The upper bound is the same as that in the water uptake parameterization of MAM.

  3. $\sigma_{_{water/a}}$ = 0.076 $\rm kg~s^{-2}$ at T = 273 K, $M_{_{water}} = 18~\rm g~mol^{-1}$ and $R = 8.3~\rm J~mol^{-1}~K^{-1}$. With these three parameters, parameter $A$ in $\rm K\ddot{o}hler$ equation can be calculated as a fixed value.

  4. volume-weighted mean hygroscopicity $B$, for which 12 values are used in different tests: $$[10^{-10}, 10^{-8}, 10^{-6}, 10^{-4}, 10^{-2}, 0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.16].$$ The range covers the range of hygroscopicity of all chemical species in MAM.

  5. the geometric mean dry diameter $D_{_{gn,d,i}}$ and geometric standard deviation $\sigma_{_{g,i}}$ for log-normal mode $i$. These values are chosen to represent the midrange values for tropospheric aerosol observations, and are listed in the table below. The box model then calculates the $r_{_d}$ of each log-normal mode from $D_{_{gn,d,i}}$ and $\sigma_{_{g,i}}$.

$$ \text{Table 1. List of typical geometric mean dry diameter ($D_{_{gn,d,i}}$) and geometric standard deviation ($\sigma_{_{g,i}}$) for each log-normal mode.}\\ \begin{array}{c|c|c|c} \hline \text{Mode} & D_{_{gn,d,i}}, \, (\mu m) & \sigma_{_{g,i}} \\ \hline \text{Aitken} & 0.026 & 1.6 \\ \text{Accumulation} & 0.11 & 1.8 \\ \text{Coarse} & 2.0 & 1.8 \\ \text{Primary Carbon} & 0.05 & 1.6 \\ \hline \end{array} $$

With these parameters, totally 576 (= $4 \times 12 \times 12$) verification tests are performed.

3.4 PASS/FAIL Criterion

In each test, the driver program calls MAM's water uptake subroutines to calculate $r_{_{MAM}}$ and also uses the iterative bisection method to calculate the $r_{_{REF}}$. The relative error between MAM solution and reference solution is then calculated as:

\begin{align} \phi = \frac{\left| r_{_{MAM}} - r_{_{REF}} \right|}{r_{_{REF}}} \,, \label{relerr} \\ \end{align}

An individual test passes if $\phi$ falls within 10 times the machine epsilon. The number of passed verification tests is first issued for each log-normal mode. Then an overall PASS is issued if all 576 tests pass.

4 Source codes and configuration files of verification test

The verification test requires a test driver to perform the verification test and the configuration files for compilation and execution of cmdv-test-runner (e.g., the yaml file). If we go the root directory of CMDV-Verification folder that is cloned from GitHub Repo, the test driver code (driver.F90) is under $\rm \color{blue}{tests/mam/restructed\_tests/F90\_SRC/test\_drivers/wateruptake}$ and the yaml file is under $\rm \color{blue}{tests/mam/restructed\_tests/yaml\_files\_for\_test\_runner/wateruptake/wateruptake.test.yaml}$.

5 Verification results

An overall “PASS” is issued for all the 576 verification tests, which suggests that the numerical implementation of water uptake parameterization in MAM is correct. The verification tests are also repeated by using GNU and Intel compilers separately. The overall “PASS” is issued for both compilers.