Version: dev

KohlerTheory

Köhler theory for cloud condensation nucleus (CCN) activation — Seinfeld & Pandis (2006), Atmospheric Chemistry and Physics, 2nd ed., §17.3–17.4. Computes the equilibrium saturation ratio S_eq over a solution droplet of diameter D_p (Köhler equation, Eq. 17.50), the critical activation diameter D_pc, and the critical supersaturation sc. S_eq combines the Kelvin curvature enhancement (coefficient A = 4 M_w σ / (R T ρ_w)) and the Raoult solute suppression (coefficient B = 6 n_s M_w / (π ρ_w)); at D_p = D_pc the Köhler curve reaches its maximum and the droplet activates spontaneously. Migrated from Aerosol.jl src/cloud_physics.jl:232.

Domain
aerosol
Subdomain
cloud_physics
Type
model
.esm schema
1.0.0
Source
components/aerosol/cloud_physics/kohler.esm
Tags
#aerosol #cloud_physics #model #kohler #ccn-activation #thermodynamics #kelvin-effect #raoult-effect

Description

Köhler theory for cloud condensation nucleus (CCN) activation — Seinfeld & Pandis (2006), Atmospheric Chemistry and Physics, 2nd ed., §17.3–17.4. Computes the equilibrium saturation ratio S_eq over a solution droplet of diameter D_p (Köhler equation, Eq. 17.50), the critical activation diameter D_pc, and the critical supersaturation sc. S_eq combines the Kelvin curvature enhancement (coefficient A = 4 M_w σ / (R T ρ_w)) and the Raoult solute suppression (coefficient B = 6 n_s M_w / (π ρ_w)); at D_p = D_pc the Köhler curve reaches its maximum and the droplet activates spontaneously. Migrated from Aerosol.jl src/cloud_physics.jl:232.

Reference

Seinfeld, J. H., and Pandis, S. N. (2006). Atmospheric Chemistry and Physics: From Air Pollution to Climate Change, 2nd Edition, John Wiley & Sons, §17.3–17.4. Köhler equation: Eq. 17.50; critical diameter Eq. 17.52; critical supersaturation Eq. 17.54. Migrated from Aerosol.jl src/cloud_physics.jl:232 @ c8c640bb (esm-xa3).

_source_ref: Aerosol.jl@c8c640bb:src/cloud_physics.jl:232

Upstream KohlerTheory is an MTK @component with 8 parameters (M_w, R_gas, σ_w, ρ_w, π_val, T, n_s, D_p) and 5 algebraic variables (A, B, S_eq, D_pc, sc) with no time derivatives — all purely observed.

Equations (S&P 2006, §17.3–17.4): A = 4 M_w σ_w / (R_gas T ρ_w) [Kelvin coefficient, m — Eq. 17.50 numerator] B = 6 n_s M_w / (π ρ_w) [Raoult coefficient, m³ — Eq. 17.50 denominator] S_eq = exp(A/D_p) × (1 − B/D_p³) [Köhler equilibrium saturation, Eq. 17.50] D_pc = √(3B/A) [critical activation diameter, m — Eq. 17.52] sc = exp(A/D_pc) × (1 − B/D_pc³) − 1 [critical supersaturation — Eq. 17.54]

Physical interpretation: A encodes the Kelvin effect: surface curvature raises the equilibrium vapor pressure above the flat-surface value p°_w. The enhancement exp(A/D_p) is large for small droplets and decays to 1 as D_p → ∞. B encodes the Raoult effect: dissolved solute lowers water activity below 1. The suppression (1 − B/D_p³) = a_w (dilute-solution approximation) is large for small D_p (concentrated solution) and approaches 1 as D_p → ∞. S_eq = Kelvin × Raoult peaks at D_pc where dS_eq/dD_p = 0. Below D_pc the Raoult term dominates and S_eq rises with increasing D_p; above D_pc the Kelvin term controls and S_eq falls back toward 1. A droplet in an environment with S_v > S_c (where S_c = sc + 1) grows past D_pc and activates spontaneously.

Dimensional analysis: A: [kg/mol][N/m] / ([J/mol/K][K][kg/m³]) = [kg·N/(mol·m)] / [J·kg/(mol·m³)] = [N·m³/J/m] = [m] ✓ B: [mol][kg/mol] / [1/m³/kg] (per ρ_w) — units m³ / [kg/m³ × 1] → wait: 6 n_s [mol] × M_w [kg/mol] / (π × ρ_w [kg/m³]) = [kg] / [kg/m³] = m³ ✓ S_eq: dimensionless ✓; D_pc: m ✓; sc: dimensionless ✓

Critical point derivation: dS_eq/dD_p = 0 at D_pc. For the dilute approximation: d(S_eq)/dD_p = 0 → −A/D_pc² × (1 − B/D_pc³) + 3B/D_pc⁴ = 0 → D_pc² ≈ 3B/A (neglecting the small A·B/D_pc term for dilute solutions) → D_pc = √(3B/A), S_c = S_eq(D_pc), sc = S_c − 1

Evaluation order (acyclic): (M_w, σ_w, R_gas, T, ρ_w) → A; (n_s, M_w, π_val, ρ_w) → B; (A, B, D_p) → S_eq; (A, B) → D_pc; (A, B, D_pc) → sc.

Tolerance rationale (model-level rel=1e-9): purely algebraic system with five explicit rational/exponential expressions in float64. The most complex computation is exp(A/D_p) — a single transcendental call. Round-off is ~1e-15 relative; rel=1e-9 leaves six orders of headroom, matching capillary_penetration.esm and heat_transport.esm with comparable arithmetic depth._

Parameters

NameUnitsDefaultDescription
M_wkg/mol0.018015Molar mass of water (S&P Table 17.1). Appears in both A (Kelvin) and B (Raoult) coefficients.
R_gasJ/mol/K8.314Universal gas constant. Migrated from upstream @constants block; carried as a fixed-default parameter (the .esm schema has no constant type).
σ_wN/m0.0728Surface tension of liquid water. Default 0.0728 N/m at ~293 K (S&P Table 17.1). Enters the Kelvin coefficient A linearly — higher surface tension increases the vapor-pressure enhancement over small droplets.
ρ_wkg/m^3997.0Density of liquid water. Default 997 kg/m³ at 293 K. Appears in both A (Kelvin) and B (Raoult) denominators.
π_val13.141592653589793Pi (dimensionless). Migrated from upstream @constants block; used in the Raoult coefficient B = 6 n_s M_w / (π ρ_w) to convert between droplet volume and moles of water.
TK293.15Droplet and air temperature (S&P Eq. 17.50). Enters the Kelvin coefficient A in the denominator — cooler air gives a larger Kelvin enhancement and smaller critical diameter.
n_smol1e-18Moles of solute dissolved in the droplet (S&P Eq. 17.50 Raoult term). Controls the Raoult coefficient B and hence the critical diameter D_pc and critical supersaturation sc: more solute → larger D_pc, lower sc.
D_pm2e-07Droplet diameter at which to evaluate the Köhler equilibrium saturation S_eq (S&P Eq. 17.50). Does not affect the critical diameter D_pc or critical supersaturation sc, which depend only on A and B.

Observed

NameUnitsDefaultDescription
AmKelvin coefficient (S&P Eq. 17.50 numerator exponent): A = 4 M_w σ_w / (R_gas T ρ_w). Proportional to surface tension and inversely proportional to temperature; characterizes the vapor-pressure enhancement over a curved surface. Units: m (so A/D_p is dimensionless). Default ≈ 2.159 nm at T = 293.15 K.
Bm^3Raoult coefficient (S&P Eq. 17.50 denominator correction): B = 6 n_s M_w / (π ρ_w). Proportional to moles of solute; characterizes the water-activity suppression. B/D_p³ equals the mole fraction of solute (dilute-solution approximation). Units: m³ (so B/D_p³ is dimensionless).
S_eq1Köhler equilibrium saturation ratio at droplet diameter D_p (S&P Eq. 17.50): S_eq = exp(A/D_p) × (1 − B/D_p³). Combines the Kelvin curvature enhancement (exp term, always > 1) and the Raoult solute suppression ((1 − B/D_p³), always < 1 for n_s > 0). S_eq peaks at D_p = D_pc and determines whether a droplet in ambient saturation S_v will grow (S_v > S_eq) or evaporate (S_v < S_eq).
D_pcmCritical activation diameter (S&P Eq. 17.52): D_pc = √(3B/A). The droplet diameter at which the Köhler curve S_eq(D_p) reaches its maximum — equivalently, the minimum diameter for spontaneous growth in supersaturated air. Derived from dS_eq/dD_p = 0 in the dilute-solution approximation. Scales as n_s^(1/2): doubling the solute increases D_pc by √2.
sc1Critical supersaturation (S&P Eq. 17.54): sc = S_eq(D_pc) − 1 = exp(A/D_pc) × (1 − B/D_pc³) − 1. The minimum ambient supersaturation required to activate the CCN: an environment with S_v − 1 > sc will cause spontaneous droplet growth past D_pc. Scales as n_s^(−1/2): larger solute mass → larger D_pc → lower sc (easier CCN activation).

Observed expressions

$$ A = \frac{4 \cdot M_{w} \cdot σ_{w}}{R_{gas} \cdot T \cdot ρ_{w}} $$

Kelvin coefficient (S&P Eq. 17.50 numerator exponent): A = 4 M_w σ_w / (R_gas T ρ_w). Proportional to surface tension and inversely proportional to temperature; characterizes the vapor-pressure enhancement over a curved surface. Units: m (so A/D_p is dimensionless). Default ≈ 2.159 nm at T = 293.15 K.

$$ B = \frac{6 \cdot n_{s} \cdot M_{w}}{π_{val} \cdot ρ_{w}} $$

Raoult coefficient (S&P Eq. 17.50 denominator correction): B = 6 n_s M_w / (π ρ_w). Proportional to moles of solute; characterizes the water-activity suppression. B/D_p³ equals the mole fraction of solute (dilute-solution approximation). Units: m³ (so B/D_p³ is dimensionless).

$$ S_{eq} = e^{\frac{A}{D_{p}}} \cdot \left(1 + \left(-1\right) \cdot \frac{B}{D_{p}^{3}}\right) $$

Köhler equilibrium saturation ratio at droplet diameter D_p (S&P Eq. 17.50): S_eq = exp(A/D_p) × (1 − B/D_p³). Combines the Kelvin curvature enhancement (exp term, always > 1) and the Raoult solute suppression ((1 − B/D_p³), always < 1 for n_s > 0). S_eq peaks at D_p = D_pc and determines whether a droplet in ambient saturation S_v will grow (S_v > S_eq) or evaporate (S_v < S_eq).

$$ D_{pc} = \sqrt{\frac{3 \cdot B}{A}} $$

Critical activation diameter (S&P Eq. 17.52): D_pc = √(3B/A). The droplet diameter at which the Köhler curve S_eq(D_p) reaches its maximum — equivalently, the minimum diameter for spontaneous growth in supersaturated air. Derived from dS_eq/dD_p = 0 in the dilute-solution approximation. Scales as n_s^(1/2): doubling the solute increases D_pc by √2.

$$ sc = e^{\frac{A}{D_{pc}}} \cdot \left(1 + \left(-1\right) \cdot \frac{B}{D_{pc}^{3}}\right) + -1 $$

Critical supersaturation (S&P Eq. 17.54): sc = S_eq(D_pc) − 1 = exp(A/D_pc) × (1 − B/D_pc³) − 1. The minimum ambient supersaturation required to activate the CCN: an environment with S_v − 1 > sc will cause spontaneous droplet growth past D_pc. Scales as n_s^(−1/2): larger solute mass → larger D_pc → lower sc (easier CCN activation).

Analyses

kohler_curve

The classic Köhler curve: equilibrium saturation ratio S_eq vs droplet diameter D_p for n_s=1e-18 mol at T=293.15 K. The curve rises from S_eq < 1 (Raoult-dominated, small D_p), peaks at the critical point (D_pc ≈ 219 nm, sc ≈ 0.659%), then falls back toward 1 from above (Kelvin-dominated tail). This is the canonical activation diagram of Seinfeld & Pandis Fig. 17.5: droplets in an environment with S_v − 1 > sc grow spontaneously past D_pc and activate as cloud droplets.

Time span: 0.0 → 1.0

Swept over: D_p

Köhler curve S_eq vs D_p (water droplet with n_s=1e-18 mol solute, T=293.15 K). The peak marks the critical activation point.

critical_supersaturation_vs_solute

Critical supersaturation sc as a function of moles of solute n_s. As n_s increases the CCN becomes ‘more hygroscopic’: D_pc grows and sc drops, making the particle easier to activate. The n_s^(−1/2) power law (sc ∝ 1/√n_s) appears as a straight line on a log-log axis — a classical diagnostic for CCN closure studies.

Time span: 0.0 → 1.0

Swept over: n_s

Critical supersaturation sc vs moles of solute n_s. Straight on a log-log axis with slope −1/2, reflecting S&P Eq. 17.54.

Critical diameter D_pc vs moles of solute n_s. Straight on a log-log axis with slope +1/2, reflecting S&P Eq. 17.52.

critical_supersaturation_vs_temperature

Critical supersaturation sc as a function of temperature T for n_s=1e-18 mol solute. Colder air gives larger A (A ∝ 1/T), smaller D_pc (D_pc ∝ √T), and higher sc (sc ∝ 1/√T). Sweeping T from 253 K (Arctic winter) to 313 K (tropical boundary layer) traces the temperature-dependence of CCN activation: cold clouds require ~10–15% higher peak supersaturation than warm clouds for the same CCN nucleus size.

Time span: 0.0 → 1.0

Swept over: T

Critical supersaturation sc vs temperature T (n_s=1e-18 mol). Rises as T decreases — cold clouds need higher supersaturation to activate the same CCN.

Critical diameter D_pc vs temperature T. D_pc ∝ √T — colder air activates CCN at smaller critical diameter.

Raw .esm

Raw .esm JSON (this component)
{
  "reference": {
    "citation": "Seinfeld, J. H., and Pandis, S. N. (2006). Atmospheric Chemistry and Physics: From Air Pollution to Climate Change, 2nd Edition, John Wiley & Sons, §17.3–17.4. Köhler equation: Eq. 17.50; critical diameter Eq. 17.52; critical supersaturation Eq. 17.54. Migrated from Aerosol.jl src/cloud_physics.jl:232 @ c8c640bb (esm-xa3).",
    "notes": "source_ref: Aerosol.jl@c8c640bb:src/cloud_physics.jl:232\n\nUpstream `KohlerTheory` is an MTK `@component` with 8 parameters (M_w, R_gas, σ_w, ρ_w, π_val, T, n_s, D_p) and 5 algebraic variables (A, B, S_eq, D_pc, sc) with no time derivatives — all purely observed.\n\nEquations (S&P 2006, §17.3–17.4):\n  A     = 4 M_w σ_w / (R_gas T ρ_w)             [Kelvin coefficient, m — Eq. 17.50 numerator]\n  B     = 6 n_s M_w / (π ρ_w)                   [Raoult coefficient, m³ — Eq. 17.50 denominator]\n  S_eq  = exp(A/D_p) × (1 − B/D_p³)            [Köhler equilibrium saturation, Eq. 17.50]\n  D_pc  = √(3B/A)                               [critical activation diameter, m — Eq. 17.52]\n  sc    = exp(A/D_pc) × (1 − B/D_pc³) − 1      [critical supersaturation — Eq. 17.54]\n\nPhysical interpretation:\n  A encodes the Kelvin effect: surface curvature raises the equilibrium vapor pressure above the flat-surface value p°_w. The enhancement exp(A/D_p) is large for small droplets and decays to 1 as D_p → ∞.\n  B encodes the Raoult effect: dissolved solute lowers water activity below 1. The suppression (1 − B/D_p³) = a_w (dilute-solution approximation) is large for small D_p (concentrated solution) and approaches 1 as D_p → ∞.\n  S_eq = Kelvin × Raoult peaks at D_pc where dS_eq/dD_p = 0. Below D_pc the Raoult term dominates and S_eq rises with increasing D_p; above D_pc the Kelvin term controls and S_eq falls back toward 1. A droplet in an environment with S_v > S_c (where S_c = sc + 1) grows past D_pc and activates spontaneously.\n\nDimensional analysis:\n  A: [kg/mol][N/m] / ([J/mol/K][K][kg/m³]) = [kg·N/(mol·m)] / [J·kg/(mol·m³)] = [N·m³/J/m] = [m] ✓\n  B: [mol][kg/mol] / [1/m³/kg] (per ρ_w) — units m³ / [kg/m³ × 1] → wait:\n     6 n_s [mol] × M_w [kg/mol] / (π × ρ_w [kg/m³]) = [kg] / [kg/m³] = m³ ✓\n  S_eq: dimensionless ✓; D_pc: m ✓; sc: dimensionless ✓\n\nCritical point derivation: dS_eq/dD_p = 0 at D_pc. For the dilute approximation:\n  d(S_eq)/dD_p = 0 → −A/D_pc² × (1 − B/D_pc³) + 3B/D_pc⁴ = 0\n  → D_pc² ≈ 3B/A (neglecting the small A·B/D_pc term for dilute solutions)\n  → D_pc = √(3B/A), S_c = S_eq(D_pc), sc = S_c − 1\n\nEvaluation order (acyclic): (M_w, σ_w, R_gas, T, ρ_w) → A; (n_s, M_w, π_val, ρ_w) → B; (A, B, D_p) → S_eq; (A, B) → D_pc; (A, B, D_pc) → sc.\n\nTolerance rationale (model-level rel=1e-9): purely algebraic system with five explicit rational/exponential expressions in float64. The most complex computation is exp(A/D_p) — a single transcendental call. Round-off is ~1e-15 relative; rel=1e-9 leaves six orders of headroom, matching capillary_penetration.esm and heat_transport.esm with comparable arithmetic depth."
  },
  "tolerance": {
    "rel": 1e-09
  },
  "variables": {
    "M_w": {
      "type": "parameter",
      "units": "kg/mol",
      "default": 0.018015,
      "description": "Molar mass of water (S&P Table 17.1). Appears in both A (Kelvin) and B (Raoult) coefficients."
    },
    "R_gas": {
      "type": "parameter",
      "units": "J/mol/K",
      "default": 8.314,
      "description": "Universal gas constant. Migrated from upstream @constants block; carried as a fixed-default parameter (the .esm schema has no constant type)."
    },
    "σ_w": {
      "type": "parameter",
      "units": "N/m",
      "default": 0.0728,
      "description": "Surface tension of liquid water. Default 0.0728 N/m at ~293 K (S&P Table 17.1). Enters the Kelvin coefficient A linearly — higher surface tension increases the vapor-pressure enhancement over small droplets."
    },
    "ρ_w": {
      "type": "parameter",
      "units": "kg/m^3",
      "default": 997.0,
      "description": "Density of liquid water. Default 997 kg/m³ at 293 K. Appears in both A (Kelvin) and B (Raoult) denominators."
    },
    "π_val": {
      "type": "parameter",
      "units": "1",
      "default": 3.141592653589793,
      "description": "Pi (dimensionless). Migrated from upstream @constants block; used in the Raoult coefficient B = 6 n_s M_w / (π ρ_w) to convert between droplet volume and moles of water."
    },
    "T": {
      "type": "parameter",
      "units": "K",
      "default": 293.15,
      "description": "Droplet and air temperature (S&P Eq. 17.50). Enters the Kelvin coefficient A in the denominator — cooler air gives a larger Kelvin enhancement and smaller critical diameter."
    },
    "n_s": {
      "type": "parameter",
      "units": "mol",
      "default": 1e-18,
      "description": "Moles of solute dissolved in the droplet (S&P Eq. 17.50 Raoult term). Controls the Raoult coefficient B and hence the critical diameter D_pc and critical supersaturation sc: more solute → larger D_pc, lower sc."
    },
    "D_p": {
      "type": "parameter",
      "units": "m",
      "default": 2e-07,
      "description": "Droplet diameter at which to evaluate the Köhler equilibrium saturation S_eq (S&P Eq. 17.50). Does not affect the critical diameter D_pc or critical supersaturation sc, which depend only on A and B."
    },
    "A": {
      "type": "unknown",
      "units": "m",
      "description": "Kelvin coefficient (S&P Eq. 17.50 numerator exponent): A = 4 M_w σ_w / (R_gas T ρ_w). Proportional to surface tension and inversely proportional to temperature; characterizes the vapor-pressure enhancement over a curved surface. Units: m (so A/D_p is dimensionless). Default ≈ 2.159 nm at T = 293.15 K."
    },
    "B": {
      "type": "unknown",
      "units": "m^3",
      "description": "Raoult coefficient (S&P Eq. 17.50 denominator correction): B = 6 n_s M_w / (π ρ_w). Proportional to moles of solute; characterizes the water-activity suppression. B/D_p³ equals the mole fraction of solute (dilute-solution approximation). Units: m³ (so B/D_p³ is dimensionless)."
    },
    "S_eq": {
      "type": "unknown",
      "units": "1",
      "description": "Köhler equilibrium saturation ratio at droplet diameter D_p (S&P Eq. 17.50): S_eq = exp(A/D_p) × (1 − B/D_p³). Combines the Kelvin curvature enhancement (exp term, always > 1) and the Raoult solute suppression ((1 − B/D_p³), always < 1 for n_s > 0). S_eq peaks at D_p = D_pc and determines whether a droplet in ambient saturation S_v will grow (S_v > S_eq) or evaporate (S_v < S_eq)."
    },
    "D_pc": {
      "type": "unknown",
      "units": "m",
      "description": "Critical activation diameter (S&P Eq. 17.52): D_pc = √(3B/A). The droplet diameter at which the Köhler curve S_eq(D_p) reaches its maximum — equivalently, the minimum diameter for spontaneous growth in supersaturated air. Derived from dS_eq/dD_p = 0 in the dilute-solution approximation. Scales as n_s^(1/2): doubling the solute increases D_pc by √2."
    },
    "sc": {
      "type": "unknown",
      "units": "1",
      "description": "Critical supersaturation (S&P Eq. 17.54): sc = S_eq(D_pc) − 1 = exp(A/D_pc) × (1 − B/D_pc³) − 1. The minimum ambient supersaturation required to activate the CCN: an environment with S_v − 1 > sc will cause spontaneous droplet growth past D_pc. Scales as n_s^(−1/2): larger solute mass → larger D_pc → lower sc (easier CCN activation)."
    }
  },
  "equations": [
    {
      "lhs": "A",
      "rhs": {
        "op": "/",
        "args": [
          {
            "op": "*",
            "args": [
              4,
              "M_w",
              "σ_w"
            ]
          },
          {
            "op": "*",
            "args": [
              "R_gas",
              "T",
              "ρ_w"
            ]
          }
        ]
      }
    },
    {
      "lhs": "B",
      "rhs": {
        "op": "/",
        "args": [
          {
            "op": "*",
            "args": [
              6,
              "n_s",
              "M_w"
            ]
          },
          {
            "op": "*",
            "args": [
              "π_val",
              "ρ_w"
            ]
          }
        ]
      }
    },
    {
      "lhs": "S_eq",
      "rhs": {
        "op": "*",
        "args": [
          {
            "op": "exp",
            "args": [
              {
                "op": "/",
                "args": [
                  "A",
                  "D_p"
                ]
              }
            ]
          },
          {
            "op": "+",
            "args": [
              1,
              {
                "op": "*",
                "args": [
                  -1,
                  {
                    "op": "/",
                    "args": [
                      "B",
                      {
                        "op": "^",
                        "args": [
                          "D_p",
                          3
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    {
      "lhs": "D_pc",
      "rhs": {
        "op": "sqrt",
        "args": [
          {
            "op": "/",
            "args": [
              {
                "op": "*",
                "args": [
                  3,
                  "B"
                ]
              },
              "A"
            ]
          }
        ]
      }
    },
    {
      "lhs": "sc",
      "rhs": {
        "op": "+",
        "args": [
          {
            "op": "*",
            "args": [
              {
                "op": "exp",
                "args": [
                  {
                    "op": "/",
                    "args": [
                      "A",
                      "D_pc"
                    ]
                  }
                ]
              },
              {
                "op": "+",
                "args": [
                  1,
                  {
                    "op": "*",
                    "args": [
                      -1,
                      {
                        "op": "/",
                        "args": [
                          "B",
                          {
                            "op": "^",
                            "args": [
                              "D_pc",
                              3
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          -1
        ]
      }
    }
  ],
  "tests": [
    {
      "id": "default_parameters",
      "description": "All five observables at the upstream Aerosol.jl defaults (T=293.15 K, n_s=1e-18 mol, D_p=200 nm, σ_w=0.0728 N/m, ρ_w=997 kg/m³, M_w=0.018015 kg/mol, R_gas=8.314 J/mol/K, π=π). A=2.1589e-9 m; B=3.4510e-23 m³; D_pc≈218.99 nm (≈ D_p, the droplet is near the critical point); S_eq≈1.00649 (0.649% supersaturation for equilibrium at D_p=200 nm); sc≈0.006589 (0.659% critical supersaturation). Time-invariant algebraic system — same values at t=0 and t=1.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "A",
          "time": 0.0,
          "expected": 2.1588902257792764e-09
        },
        {
          "variable": "A",
          "time": 1.0,
          "expected": 2.1588902257792764e-09
        },
        {
          "variable": "B",
          "time": 0.0,
          "expected": 3.4509644531199536e-23
        },
        {
          "variable": "S_eq",
          "time": 0.0,
          "expected": 1.0064923995380628
        },
        {
          "variable": "S_eq",
          "time": 1.0,
          "expected": 1.0064923995380628
        },
        {
          "variable": "D_pc",
          "time": 0.0,
          "expected": 2.1898561647724977e-07
        },
        {
          "variable": "D_pc",
          "time": 1.0,
          "expected": 2.1898561647724977e-07
        },
        {
          "variable": "sc",
          "time": 0.0,
          "expected": 0.006588594334001163
        },
        {
          "variable": "sc",
          "time": 1.0,
          "expected": 0.006588594334001163
        }
      ]
    },
    {
      "id": "cold_temperature",
      "description": "T=263.15 K (−10 °C). Colder air gives a larger Kelvin coefficient A (A ∝ 1/T): A rises from 2.1589e-9 to 2.4050e-9 m, increasing the curvature enhancement. With the same n_s, B is unchanged, but D_pc = √(3B/A) falls to ≈207.5 nm. The critical supersaturation sc rises to ≈0.7750%, consistent with the S&P result that cold clouds require higher peak supersaturation to activate typical CCN. S_eq at D_p=200 nm also rises to 1.00773 because the exp(A/D_p) term is larger.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "T": 263.15
      },
      "assertions": [
        {
          "variable": "A",
          "time": 0.0,
          "expected": 2.4050110951234834e-09
        },
        {
          "variable": "S_eq",
          "time": 0.0,
          "expected": 1.0077317558855765
        },
        {
          "variable": "D_pc",
          "time": 0.0,
          "expected": 2.074781314810448e-07
        },
        {
          "variable": "sc",
          "time": 0.0,
          "expected": 0.007750151797208948
        }
      ]
    },
    {
      "id": "larger_solute_droplet",
      "description": "n_s=1e-16 mol (100× more solute), D_p=2e-6 m (2 μm, activated droplet). The larger solute increases B by 100×, so D_pc scales up by √100 = 10× to ≈2.190 μm. The critical supersaturation sc drops by 1/√100 = 10× to ≈0.0657%. D_p=2 μm ≈ D_pc so S_eq≈1.000648, near the peak of the Köhler curve. This n_s is representative of a ∼100 nm-diameter NaCl seed particle.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "n_s": 1e-16,
        "D_p": 2e-06
      },
      "assertions": [
        {
          "variable": "B",
          "time": 0.0,
          "expected": 3.4509644531199535e-21
        },
        {
          "variable": "S_eq",
          "time": 0.0,
          "expected": 1.0006481915158965
        },
        {
          "variable": "D_pc",
          "time": 0.0,
          "expected": 2.1898561647724977e-06
        },
        {
          "variable": "sc",
          "time": 0.0,
          "expected": 0.0006574015685034684
        }
      ]
    },
    {
      "id": "below_critical_diameter",
      "description": "D_p=1e-7 m (100 nm), below D_pc≈219 nm for n_s=1e-18 mol. In this regime the Raoult suppression (1 − B/D_p³) dominates the Kelvin enhancement — S_eq drops below 1 (S_eq≈0.9866). A droplet smaller than D_pc cannot grow unless the ambient is supersaturated enough to provide the additional driving force. This is the cusp region where CCN pre-activation chemistry matters.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "D_p": 1e-07
      },
      "assertions": [
        {
          "variable": "S_eq",
          "time": 0.0,
          "expected": 0.9865608585261599
        }
      ]
    },
    {
      "id": "large_droplet_kelvin_limit",
      "description": "D_p=1e-5 m (10 μm, cloud droplet). At this size both the Kelvin and Raoult terms are negligible: B/D_p³ ≈ 3.45e-8 → 0, exp(A/D_p) ≈ 1 + A/D_p ≈ 1 + 2.16e-4 → 1. S_eq approaches 1 from above, consistent with the S&P limit S_eq → 1 as D_p → ∞. The tiny residual exp(A/D_p) ≈ 1.000216 dominates over the negligible Raoult term for this large diameter.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "D_p": 1e-05
      },
      "assertions": [
        {
          "variable": "S_eq",
          "time": 0.0,
          "expected": 1.0002158778111945
        }
      ]
    },
    {
      "id": "critical_supersaturation_scaling",
      "description": "Verifies the n_s^(−1/2) scaling of sc: doubling n_s by 4× (from 1e-18 to 4e-18 mol) should halve sc to ≈0.3294%. D_pc scales as n_s^(1/2): 4× solute → 2× D_pc ≈ 437.97 nm. Confirms the classical S&P §17.4 result that larger CCN activate at lower supersaturation.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_overrides": {
        "n_s": 4e-18
      },
      "assertions": [
        {
          "variable": "D_pc",
          "time": 0.0,
          "expected": 4.3797123295449953e-07
        },
        {
          "variable": "sc",
          "time": 0.0,
          "expected": 0.003290247563378035
        }
      ]
    }
  ],
  "analyses": [
    {
      "id": "kohler_curve",
      "description": "The classic Köhler curve: equilibrium saturation ratio S_eq vs droplet diameter D_p for n_s=1e-18 mol at T=293.15 K. The curve rises from S_eq < 1 (Raoult-dominated, small D_p), peaks at the critical point (D_pc ≈ 219 nm, sc ≈ 0.659%), then falls back toward 1 from above (Kelvin-dominated tail). This is the canonical activation diagram of Seinfeld & Pandis Fig. 17.5: droplets in an environment with S_v − 1 > sc grow spontaneously past D_pc and activate as cloud droplets.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "D_p",
            "range": {
              "start": 5e-08,
              "stop": 2e-06,
              "count": 60,
              "scale": "log"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "S_eq_vs_D_p",
          "type": "line",
          "description": "Köhler curve S_eq vs D_p (water droplet with n_s=1e-18 mol solute, T=293.15 K). The peak marks the critical activation point.",
          "x": {
            "variable": "D_p",
            "label": "Droplet diameter D_p (m)"
          },
          "y": {
            "variable": "S_eq",
            "label": "Equilibrium saturation ratio S_eq"
          }
        }
      ]
    },
    {
      "id": "critical_supersaturation_vs_solute",
      "description": "Critical supersaturation sc as a function of moles of solute n_s. As n_s increases the CCN becomes 'more hygroscopic': D_pc grows and sc drops, making the particle easier to activate. The n_s^(−1/2) power law (sc ∝ 1/√n_s) appears as a straight line on a log-log axis — a classical diagnostic for CCN closure studies.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "n_s",
            "range": {
              "start": 1e-21,
              "stop": 1e-13,
              "count": 40,
              "scale": "log"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "sc_vs_n_s",
          "type": "line",
          "description": "Critical supersaturation sc vs moles of solute n_s. Straight on a log-log axis with slope −1/2, reflecting S&P Eq. 17.54.",
          "x": {
            "variable": "n_s",
            "label": "Solute moles n_s (mol)"
          },
          "y": {
            "variable": "sc",
            "label": "Critical supersaturation sc (dimensionless)"
          }
        },
        {
          "id": "D_pc_vs_n_s",
          "type": "line",
          "description": "Critical diameter D_pc vs moles of solute n_s. Straight on a log-log axis with slope +1/2, reflecting S&P Eq. 17.52.",
          "x": {
            "variable": "n_s",
            "label": "Solute moles n_s (mol)"
          },
          "y": {
            "variable": "D_pc",
            "label": "Critical diameter D_pc (m)"
          }
        }
      ]
    },
    {
      "id": "critical_supersaturation_vs_temperature",
      "description": "Critical supersaturation sc as a function of temperature T for n_s=1e-18 mol solute. Colder air gives larger A (A ∝ 1/T), smaller D_pc (D_pc ∝ √T), and higher sc (sc ∝ 1/√T). Sweeping T from 253 K (Arctic winter) to 313 K (tropical boundary layer) traces the temperature-dependence of CCN activation: cold clouds require ~10–15% higher peak supersaturation than warm clouds for the same CCN nucleus size.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "T",
            "range": {
              "start": 253.15,
              "stop": 313.15,
              "count": 25,
              "scale": "linear"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "sc_vs_T",
          "type": "line",
          "description": "Critical supersaturation sc vs temperature T (n_s=1e-18 mol). Rises as T decreases — cold clouds need higher supersaturation to activate the same CCN.",
          "x": {
            "variable": "T",
            "label": "Temperature T (K)"
          },
          "y": {
            "variable": "sc",
            "label": "Critical supersaturation sc (dimensionless)"
          }
        },
        {
          "id": "D_pc_vs_T",
          "type": "line",
          "description": "Critical diameter D_pc vs temperature T. D_pc ∝ √T — colder air activates CCN at smaller critical diameter.",
          "x": {
            "variable": "T",
            "label": "Temperature T (K)"
          },
          "y": {
            "variable": "D_pc",
            "label": "Critical diameter D_pc (m)"
          }
        }
      ]
    }
  ]
}