{ "cells": [ { "cell_type": "markdown", "id": "f72dcee2-dd7b-4bf6-be4c-43fc5c62e855", "metadata": {}, "source": [ "# Physics of Nimbus\n", "\n", "Nimbus is described in detail in [Kiefer et al. (2026)](https://arxiv.org/pdf/2603.13167). Here a summary of the most important aspects are given." ] }, { "cell_type": "markdown", "id": "5efc91dc-21a5-4a67-8a6f-195545834e11", "metadata": {}, "source": [ "## Basic Equations\n", "\n", "Nimbus considers gas-phase transport through diffusion, cloud particle transport through diffusion and gravitational settling, nucleation through MCNT, and accretion of material in the diffusion and collision limited regime. The core equations are:\n", "$$\\rho_a \\frac{d q_c}{dt} = \\frac{\\partial}{\\partial z} q_c \\rho_a v_\\mathrm{dr} - \\frac{\\partial}{\\partial z} K_{zz} \\rho_a \\frac{\\partial q_c}{\\partial z} + J m_\\mathrm{n} + G m_\\mathrm{1} $$\n", "$$\\rho_a \\frac{d q_n}{dt} = \\frac{\\partial}{\\partial z} q_n \\rho_a v_\\mathrm{dr} - \\frac{\\partial}{\\partial z} K_{zz} \\rho_a \\frac{\\partial q_n}{\\partial z} + J m_\\mathrm{n} $$\n", "$$\\rho_a \\frac{d q_v}{dt} = -\\frac{\\partial}{\\partial z} K_{zz} \\rho_a \\frac{\\partial q_v}{\\partial z} - J m_\\mathrm{n} - G m_\\mathrm{1} $$\n", "where $q_n$ [g/g] is the MMR of the CCN, $m_\\mathrm{n}$ [g] is the CCN mass, and $m_1$ [g] is the mass of a single unit of a cloud forming material. The CCN MMR $q_n$ is related to the cloud particle number density:\n", "$$n_c = \\frac{q_n \\rho_a}{m_\\mathrm{n}}$$\n", "which is used for the calculation of the optical properties." ] }, { "cell_type": "markdown", "id": "a12a48ed-2849-4276-9ea1-436b59243f53", "metadata": {}, "source": [ "## Settling, Nucleation, and Accretion\n", "\n", "The three core physical processes of cloud formation are the gravitational settling of cloud particles, their creation via nucleation, and their growth via accretion. Many models have used different approximation for these processes. Here we describe the assumptions of Nimbus.\n", "\n", "### Settling Velocity\n", "\n", "The gravitational acceleration of cloud particles is counteracted by the frictional force of the surrounding gas. The balance between these two forces will determine the terminal velocity $v_\\mathrm{dr}$ [cm/s] of the cloud particles. Since acceleration timescales are typically short, it can be assumed that cloud particles settle with $v_\\mathrm{dr}$. The strength of the frictional force depends on the cloud particle and atmospheric properties. There are two regimes which can be distinguished using the Knudsen number. If the Knudsen number is large ($Kn \\gg 1$), the drag force can be described by a free molecular flow. This is called the Epstein regime. If the Knudsen number is small ($Kn \\ll 1$), this is called the Stokes regime. For Nimbus, we use the interpolation scheme of Huang et al. 2024:\n", "$$v_\\mathrm{dr} = \\frac{g ~r ~\\rho_c}{v_\\mathrm{th}~\\rho_a} \\sqrt{1 + \\left(\\frac{4~r}{9~l} \\right)^2}$$\n", "where $g$ [cm/s$^2$] is the gravity, $\\rho_c$ [g/cm$^{3}$] is the solid density of the cloud particle, $v_\\mathrm{th} = \\sqrt{R_g T/(2\\pi \\mu_c)}$ [cm/s] is the thermal velocity, $R_g = 8.314 \\times 10^7$ erg/(K~mol) is the ideal gas constant, $T$ [K] is the temperature of the atmosphere, and $\\mu_c$ [amu] is the molecular weight of the cloud forming specie. This interpolation scheme results in a smooth transition between the high and low Knudsen number regimes.\n", "\n", "### Nucleation Rate\n", "\n", "Cloud formation in gas-giant planets starts with the formation of molecular clusters from the gas-phase. Modified Classical Nucleation Theory (MCNT) provieds an approximation of the nucleation rate in the absence of thermodynamic properties of larger clusters. The accuracy of this approximation depends on the nucleating species. The nucleation rate is given by:\n", "$$J = 4 \\pi r^2 ~ v_\\mathrm{rel} ~Z ~ n_1 ~n_{c} ~\\exp(\\Delta G/k_BT)$$\n", "where $n_1$ [1/cm$^{3}$] is the number density of the nucleating species in the gas-phase, $v_\\mathrm{rel}$ [cm/s] is the relative velocity, $Z$ is the Zeldovich factor, and $\\Delta G$ [erg] the energy of formation. Since MCNT is used in cases where thermodynamic cluster data is missing, $\\Delta G$ has to be derived through approximations.\n", "\n", "### Accretion Rate\n", "\n", "Once CCNs are present in the gas-phase, other materials can start to accrete. The rate at which materials accrete $G$ [1/cm$^{3}$/s] can either be collision or diffusion limited:\n", "$$G_\\mathrm{col} = 4 \\pi r^2~ s~v_\\mathrm{th} ~n_1 ~n_{cl} ~\\left(1 - \\frac{p_\\mathrm{vap}}{p_1} \\right)$$\n", "$$G_\\mathrm{dif} = 4 \\pi r ~D ~n_1 ~n_{cl} ~\\left(1 - \\frac{p_\\mathrm{vap}}{p_1} \\right)$$\n", "where $G_\\mathrm{col}$~[1/cm$^{3}$/s] is the growth rate in the collision limited regime, $G_\\mathrm{dif}$ [1/cm$^{3}$/s] is the growth rate in the diffusion limited regime, $D$ [cm$^2$/s] is the gas phase diffusion constant. The variable $1\\geq s >0$ denotes the sticking coefficient and can be used to fit cloud profiles to observations. Some studies have used the contact angle $\\theta_c$ instead which describes the same effect ($s = \\cos \\theta_c$). For Nimbus, we use the tanh interpolation function for homogenous, mono-dispersed particles from Lee et al. (2023):\n", "$$f_x = \\frac{1}{2} \\left( 1 - \\tanh\\left( 2 \\log_{10}\\left( \\frac{G_\\mathrm{dif}}{G_\\mathrm{col}} \\right) \\right) \\right)$$\n", "$$G = G_\\mathrm{dif} f_x + G_\\mathrm{col} (1 - f_x)$$\n", "This interpolation results in a smooth transition between both limits which is favourable for the numerical evaluation.\n", "\n", "Some cloud particle materials exist in the gas-phase and can condense directly onto cloud particles. This is true, for example, for SiO which can from through the following reaction:\n", "$$\\mathrm{SiO} \\rightarrow \\mathrm{SiO[s]}.$$\n", "Other cloud particles will form through more complex surface reactions. For example, SiO$_2$ preferentially forms through:\n", "$$\\mathrm{SiO} + \\mathrm{H_2O} \\rightarrow \\mathrm{SiO[s]} + \\mathrm{H_2}.$$\n", "The rate of these surface reactions, and therefore the vapour pressure, depends on the metallicity of the gas-phase. In exoplanet atmospheres, multiple materials can form clouds simultaneously leading to heterogenous cloud particles. For Nimbus we only consider homogenous cloud particles so far." ] }, { "cell_type": "markdown", "id": "5c8f51ca-a6c9-4137-86e2-34773f847727", "metadata": {}, "source": [ "## Numerics of Nimbus\n", "\n", "Nimbus solves the ODEs using the 'LSODA' method of the solve_ivp function from SciPy which is based on DLSODES. All the standard settings are:\n", "- use a relative tolerance of $r_\\mathrm{tol} = 10^{-6}$\n", "- use an absolute tolerance of $a_\\mathrm{tol} = 10^{-25}$\n", "- set all MMRs below $10^{-30}$ to 0\n", "- assume a CCN radius of $r_\\mathrm{CCN} = 10^{-3}$~$\\mu$m\n", " \n", "To achieve faster run times, the computational domain is limited to pressure layers where $S > 1$. It is assume that all cloud particles evaporate below the cloud base and replenish the gas-phase. To consider multiple cloud materials, Nimbus is run once for each material individually.\n", "\n", "The gas-phase chemistry affects cloud formation and vice versa. This causes feedback loops which lead to stiff ODEs. To prevent this, Nimbus includes two different approaches to calculate cloud structures:\n", "- __full__ which solves the ODEs in their full complexity, or\n", "- __iterative__ which assumes a fixed cloud particle radius that is re-calculated between iterations. The radius is smoothed using an 8th order polynomial to prevent numerical artifacts. Iterations are run until either a fixed number of iterations are reached (typically 10), or the maximum relative difference for all MMRs within all pressure layers is less than $10^{-3}$." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.2" } }, "nbformat": 4, "nbformat_minor": 5 }