Version: dev

CloudAlbedoSensitivity

Sensitivity of cloud albedo to cloud droplet number concentration (Twomey susceptibility) — Seinfeld & Pandis (2006) Ch. 24 §24.8.2, Eqs. 24.40–24.41.

Domain
aerosol
Subdomain
radiative_forcing
Type
model
.esm schema
1.0.0
Source
components/aerosol/radiative_forcing/cloud_albedo_sensitivity.esm
Tags
#aerosol #radiative_forcing #model

Description

Sensitivity of cloud albedo to cloud droplet number concentration (Twomey susceptibility) — Seinfeld & Pandis (2006) Ch. 24 §24.8.2, Eqs. 24.40–24.41.

Reference

Seinfeld, J. H., and Pandis, S. N. (2006). Atmospheric Chemistry and Physics: From Air Pollution to Climate Change, 2nd Edition, Chapter 24, Section 24.8.2, Equations 24.40–24.41.

_source_ref: Aerosol.jl@c8c640bb:src/aerosol_radiative_forcing.jl:254 Twomey susceptibility of cloud albedo to cloud droplet number concentration. Eq. 24.40 gives the absolute sensitivity dR_c/dN = R_c*(1-R_c)/(3N); Eq. 24.41 gives the log-derivative susceptibility S = dR_c/d(ln N) = R_c(1-R_c)/3. S is maximised at R_c = 0.5 (where S = 1/12) and is symmetric: S(R_c) = S(1-R_c). Both expressions reduce to purely algebraic observed bindings after MTK structural_simplify — zero ODE states.

Tolerance rationale (model-level rel=1e-8 / abs=1e-12): all operations are products and quotients of two bounded dimensionless parameters, so 1e-8 captures float64 roundoff in the two-factor multiply + divide chain. abs=1e-12 floors the near-zero limit (R_c → 0 or R_c → 1) where S → 0._

Parameters

NameUnitsDefaultDescription
R_c10.5Cloud albedo (dimensionless)
Nm^-3100000000.0Cloud droplet number concentration

Observed

NameUnitsDefaultDescription
dRc_dNm^3Absolute sensitivity of cloud albedo to cloud droplet number concentration, dR_c/dN = R_c*(1-R_c)/(3*N) — Eq. 24.40.
S1Twomey susceptibility: log-derivative of cloud albedo with respect to cloud droplet number concentration, S = dR_c/d(ln N) = R_c*(1-R_c)/3 — Eq. 24.41. Maximum value 1/12 ≈ 0.0833 at R_c = 0.5.

Observed expressions

$$ dRc_{dN} = \frac{R_{c} \cdot \left(1 + \left(-1\right) \cdot R_{c}\right)}{3 \cdot N} $$

Absolute sensitivity of cloud albedo to cloud droplet number concentration, dR_c/dN = R_c*(1-R_c)/(3*N) — Eq. 24.40.

$$ S = \frac{R_{c} \cdot \left(1 + \left(-1\right) \cdot R_{c}\right)}{3} $$

Twomey susceptibility: log-derivative of cloud albedo with respect to cloud droplet number concentration, S = dR_c/d(ln N) = R_c*(1-R_c)/3 — Eq. 24.41. Maximum value 1/12 ≈ 0.0833 at R_c = 0.5.

Analyses

twomey_susceptibility_vs_Rc

Twomey susceptibility S = R_c*(1-R_c)/3 as a function of cloud albedo R_c. The curve is a downward-opening parabola with maximum S = 1/12 ≈ 0.0833 at R_c = 0.5, symmetric about R_c = 0.5, and vanishing at R_c = 0 and R_c = 1. Reproduces the analytical form underlying Seinfeld & Pandis (2006) §24.8.2 discussion of the first indirect aerosol effect.

Time span: 0.0 → 1.0

Swept over: R_c

Twomey susceptibility S = dR_c/d(ln N) plotted against cloud albedo R_c. The parabolic shape shows maximum sensitivity at R_c = 0.5.

dRc_dN_vs_N

Absolute sensitivity dR_c/dN = R_c*(1-R_c)/(3*N) as a function of cloud droplet number concentration N at fixed R_c = 0.5 (maximum susceptibility). The hyperbolic decay dR_c/dN ∝ 1/N shows that absolute sensitivity is larger for pristine (low-N) clouds — the Twomey mechanism is most effective at low background droplet concentrations.

Time span: 0.0 → 1.0

Swept over: N

Absolute sensitivity dR_c/dN as a function of droplet number concentration N (log axis) at R_c = 0.5.

susceptibility_Rc_N_joint

Joint sensitivity of S to both cloud albedo and droplet number concentration. Since S depends only on R_c (not N), the heatmap shows vertical iso-S contours. The dRc_dN heatmap shows a joint parabola × hyperbola surface: largest for low N and R_c near 0.5.

Time span: 0.0 → 1.0

Swept over: R_c, N

dR_c/dN(R_c, N) heatmap. Sensitivity is largest at low N and R_c near 0.5.

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, Chapter 24, Section 24.8.2, Equations 24.40–24.41.",
    "notes": "source_ref: Aerosol.jl@c8c640bb:src/aerosol_radiative_forcing.jl:254\nTwomey susceptibility of cloud albedo to cloud droplet number concentration. Eq. 24.40 gives the absolute sensitivity dR_c/dN = R_c*(1-R_c)/(3*N); Eq. 24.41 gives the log-derivative susceptibility S = dR_c/d(ln N) = R_c*(1-R_c)/3. S is maximised at R_c = 0.5 (where S = 1/12) and is symmetric: S(R_c) = S(1-R_c). Both expressions reduce to purely algebraic observed bindings after MTK structural_simplify — zero ODE states.\n\nTolerance rationale (model-level rel=1e-8 / abs=1e-12): all operations are products and quotients of two bounded dimensionless parameters, so 1e-8 captures float64 roundoff in the two-factor multiply + divide chain. abs=1e-12 floors the near-zero limit (R_c → 0 or R_c → 1) where S → 0."
  },
  "variables": {
    "R_c": {
      "type": "parameter",
      "units": "1",
      "default": 0.5,
      "description": "Cloud albedo (dimensionless)"
    },
    "N": {
      "type": "parameter",
      "units": "m^-3",
      "default": 100000000.0,
      "description": "Cloud droplet number concentration"
    },
    "dRc_dN": {
      "type": "unknown",
      "units": "m^3",
      "description": "Absolute sensitivity of cloud albedo to cloud droplet number concentration, dR_c/dN = R_c*(1-R_c)/(3*N) — Eq. 24.40."
    },
    "S": {
      "type": "unknown",
      "units": "1",
      "description": "Twomey susceptibility: log-derivative of cloud albedo with respect to cloud droplet number concentration, S = dR_c/d(ln N) = R_c*(1-R_c)/3 — Eq. 24.41. Maximum value 1/12 ≈ 0.0833 at R_c = 0.5."
    }
  },
  "equations": [
    {
      "lhs": "dRc_dN",
      "rhs": {
        "op": "/",
        "args": [
          {
            "op": "*",
            "args": [
              "R_c",
              {
                "op": "+",
                "args": [
                  1,
                  {
                    "op": "*",
                    "args": [
                      -1,
                      "R_c"
                    ]
                  }
                ]
              }
            ]
          },
          {
            "op": "*",
            "args": [
              3,
              "N"
            ]
          }
        ]
      }
    },
    {
      "lhs": "S",
      "rhs": {
        "op": "/",
        "args": [
          {
            "op": "*",
            "args": [
              "R_c",
              {
                "op": "+",
                "args": [
                  1,
                  {
                    "op": "*",
                    "args": [
                      -1,
                      "R_c"
                    ]
                  }
                ]
              }
            ]
          },
          3
        ]
      }
    }
  ],
  "tolerance": {
    "rel": 1e-08,
    "abs": 1e-12
  },
  "tests": [
    {
      "id": "eq_24_41_max_susceptibility_Rc05",
      "description": "Reproduces upstream Aerosol.jl 'Twomey Susceptibility - Eq. 24.40-24.41 Validation' default case. At R_c = 0.5 (maximum susceptibility point) with N = 100 cm⁻³, S = 1/12 ≈ 0.0833 and dR_c/dN = 1/(12·N). Upstream asserts S ≈ 0.0833 rtol=0.01 and checks dRc_dN formula; we pin the analytic values.",
      "parameter_overrides": {
        "R_c": 0.5,
        "N": 100000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.08333333333333333
        },
        {
          "variable": "dRc_dN",
          "time": 0.0,
          "expected": 8.333333333333334e-10
        },
        {
          "variable": "S",
          "time": 1.0,
          "expected": 0.08333333333333333
        },
        {
          "variable": "dRc_dN",
          "time": 1.0,
          "expected": 8.333333333333334e-10
        }
      ]
    },
    {
      "id": "symmetry_exact_Rc025",
      "description": "Symmetry check at the exact binary-fraction pair R_c = 0.25. S(0.25) = S(0.75) exactly (both equal 0.0625) because 0.25 and 0.75 are exact in float64. Upstream asserts issorted(S_vals) peaks at R_c=0.5; this anchors the lower symmetric branch.",
      "parameter_overrides": {
        "R_c": 0.25,
        "N": 100000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.0625
        },
        {
          "variable": "dRc_dN",
          "time": 0.0,
          "expected": 6.25e-10
        }
      ]
    },
    {
      "id": "symmetry_exact_Rc075",
      "description": "Symmetry check at R_c = 0.75 (upper symmetric partner of 0.25). S(0.75) = S(0.25) = 0.0625 exactly, confirming S(R_c) = S(1-R_c).",
      "parameter_overrides": {
        "R_c": 0.75,
        "N": 100000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.0625
        },
        {
          "variable": "dRc_dN",
          "time": 0.0,
          "expected": 6.25e-10
        }
      ]
    },
    {
      "id": "susceptibility_Rc01_low_albedo",
      "description": "Low-albedo limit: R_c = 0.1 (optically thin cloud). Upstream asserts S(0.1) ≈ S(0.9) (symmetry). We pin the float64 analytic value S = 0.1·0.9/3.",
      "parameter_overrides": {
        "R_c": 0.1,
        "N": 100000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.030000000000000002
        },
        {
          "variable": "dRc_dN",
          "time": 0.0,
          "expected": 3.0000000000000005e-10
        }
      ]
    },
    {
      "id": "susceptibility_Rc09_high_albedo",
      "description": "High-albedo limit: R_c = 0.9 (optically thick cloud). Symmetric partner of R_c = 0.1. Upstream asserts S(0.1) ≈ S(0.9); we pin the float64 analytic value.",
      "parameter_overrides": {
        "R_c": 0.9,
        "N": 100000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.029999999999999995
        }
      ]
    },
    {
      "id": "susceptibility_Rc03",
      "description": "Mid-low albedo: R_c = 0.3. S is below the maximum but above the low-albedo tails. Upstream asserts S(0.3) ≈ S(0.7); we pin the float64 analytic value S = 0.3·0.7/3.",
      "parameter_overrides": {
        "R_c": 0.3,
        "N": 100000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.06999999999999999
        }
      ]
    },
    {
      "id": "susceptibility_Rc07",
      "description": "Mid-high albedo: R_c = 0.7. Symmetric partner of R_c = 0.3. S = 0.7·(1-0.7)/3 = 0.07.",
      "parameter_overrides": {
        "R_c": 0.7,
        "N": 100000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.07
        }
      ]
    },
    {
      "id": "N_sensitivity_half_N",
      "description": "Halving N doubles dR_c/dN while S is unchanged (S depends only on R_c). At R_c=0.5, N=50 cm⁻³: dRc_dN = 2 × value at N=100 cm⁻³.",
      "parameter_overrides": {
        "R_c": 0.5,
        "N": 50000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.08333333333333333
        },
        {
          "variable": "dRc_dN",
          "time": 0.0,
          "expected": 1.6666666666666667e-09
        }
      ]
    },
    {
      "id": "N_sensitivity_double_N",
      "description": "Doubling N halves dR_c/dN while S is unchanged. At R_c=0.5, N=200 cm⁻³: dRc_dN = ½ × value at N=100 cm⁻³.",
      "parameter_overrides": {
        "R_c": 0.5,
        "N": 200000000.0
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "assertions": [
        {
          "variable": "S",
          "time": 0.0,
          "expected": 0.08333333333333333
        },
        {
          "variable": "dRc_dN",
          "time": 0.0,
          "expected": 4.166666666666667e-10
        }
      ]
    }
  ],
  "analyses": [
    {
      "id": "twomey_susceptibility_vs_Rc",
      "description": "Twomey susceptibility S = R_c*(1-R_c)/3 as a function of cloud albedo R_c. The curve is a downward-opening parabola with maximum S = 1/12 ≈ 0.0833 at R_c = 0.5, symmetric about R_c = 0.5, and vanishing at R_c = 0 and R_c = 1. Reproduces the analytical form underlying Seinfeld & Pandis (2006) §24.8.2 discussion of the first indirect aerosol effect.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "R_c",
            "range": {
              "start": 0.01,
              "stop": 0.99,
              "count": 60,
              "scale": "linear"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "S_vs_Rc",
          "type": "line",
          "description": "Twomey susceptibility S = dR_c/d(ln N) plotted against cloud albedo R_c. The parabolic shape shows maximum sensitivity at R_c = 0.5.",
          "x": {
            "variable": "R_c",
            "label": "Cloud albedo R_c"
          },
          "y": {
            "variable": "S",
            "label": "Twomey susceptibility S"
          }
        }
      ]
    },
    {
      "id": "dRc_dN_vs_N",
      "description": "Absolute sensitivity dR_c/dN = R_c*(1-R_c)/(3*N) as a function of cloud droplet number concentration N at fixed R_c = 0.5 (maximum susceptibility). The hyperbolic decay dR_c/dN ∝ 1/N shows that absolute sensitivity is larger for pristine (low-N) clouds — the Twomey mechanism is most effective at low background droplet concentrations.",
      "parameters": {
        "R_c": 0.5
      },
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "N",
            "range": {
              "start": 10000000.0,
              "stop": 1000000000.0,
              "count": 50,
              "scale": "log"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "dRc_dN_vs_N",
          "type": "line",
          "description": "Absolute sensitivity dR_c/dN as a function of droplet number concentration N (log axis) at R_c = 0.5.",
          "x": {
            "variable": "N",
            "label": "Cloud droplet number concentration N (m⁻³)"
          },
          "y": {
            "variable": "dRc_dN",
            "label": "Sensitivity dR_c/dN (m³)"
          }
        }
      ]
    },
    {
      "id": "susceptibility_Rc_N_joint",
      "description": "Joint sensitivity of S to both cloud albedo and droplet number concentration. Since S depends only on R_c (not N), the heatmap shows vertical iso-S contours. The dRc_dN heatmap shows a joint parabola × hyperbola surface: largest for low N and R_c near 0.5.",
      "time_span": {
        "start": 0.0,
        "end": 1.0
      },
      "parameter_sweep": {
        "type": "cartesian",
        "dimensions": [
          {
            "parameter": "R_c",
            "range": {
              "start": 0.05,
              "stop": 0.95,
              "count": 30,
              "scale": "linear"
            }
          },
          {
            "parameter": "N",
            "range": {
              "start": 10000000.0,
              "stop": 1000000000.0,
              "count": 20,
              "scale": "log"
            }
          }
        ]
      },
      "plots": [
        {
          "id": "dRc_dN_heatmap",
          "type": "heatmap",
          "description": "dR_c/dN(R_c, N) heatmap. Sensitivity is largest at low N and R_c near 0.5.",
          "x": {
            "variable": "R_c",
            "label": "Cloud albedo R_c"
          },
          "y": {
            "variable": "N",
            "label": "Cloud droplet number concentration N (m⁻³)"
          },
          "value": {
            "variable": "dRc_dN",
            "reduce": "final"
          }
        }
      ]
    }
  ]
}