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.
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
| Name | Units | Default | Description |
|---|---|---|---|
R_c | 1 | 0.5 | Cloud albedo (dimensionless) |
N | m^-3 | 100000000.0 | Cloud droplet number concentration |
Observed
| Name | Units | Default | Description |
|---|---|---|---|
dRc_dN | m^3 | Absolute sensitivity of cloud albedo to cloud droplet number concentration, dR_c/dN = R_c*(1-R_c)/(3*N) — Eq. 24.40. | |
S | 1 | 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. |
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

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

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

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"
}
}
]
}
]
}