IndirectAerosolForcing
First indirect aerosol effect (Twomey effect): change in shortwave forcing from aerosol-induced increase in cloud droplet number concentration — Seinfeld & Pandis (2006) Ch. 24 §24.8.2, Eqs. 24.42–24.43.
Description
First indirect aerosol effect (Twomey effect): change in shortwave forcing from aerosol-induced increase in cloud droplet number concentration — Seinfeld & Pandis (2006) Ch. 24 §24.8.2, Eqs. 24.42–24.43.
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.42–24.43.
_source_ref: Aerosol.jl@c8c640bb:src/aerosol_radiative_forcing.jl:306 First indirect aerosol effect (Twomey/cloud-albedo effect). Aerosols acting as CCN increase cloud droplet number concentration N at fixed liquid water content, reducing mean droplet radius and increasing cloud optical depth and albedo. The Twomey susceptibility S = dR_c/d(ln N) = R_c*(1-R_c)/3 (Eq. 24.41) gives the change in cloud albedo per fractional change in N: ΔR_c = S * Δln_N (Eq. 24.42). Eq. 24.43 converts ΔR_c to a top-of-atmosphere shortwave forcing: ΔF_c = -F_0 * A_c * T_a² * ΔR_c. The negative sign reflects that increased cloud albedo cools by reflecting more incoming solar radiation.
After MTK structural_simplify, the two algebraic equations reduce to zero ODE states — both ΔR_c and ΔF_c are pure observed bindings. The standalone model treats R_c as a fixed parameter (default 0.5, peak susceptibility); coupling with CloudAlbedo would promote R_c to a shared variable.
Tolerance rationale (model-level rel=1e-8 / abs=1e-12): both outputs are short products of bounded dimensionless parameters. ΔR_c is a four-factor product (R_c, 1-R_c, 1/3, Δln_N); ΔF_c is a five-factor product (F_0, A_c, T_a², ΔR_c) — float64 roundoff accumulates to ~4 ULP, well within rel=1e-8. abs=1e-12 floors the Δln_N → 0 limit where both outputs vanish._
Parameters
| Name | Units | Default | Description |
|---|---|---|---|
F_0 | W/m^2 | 1370.0 | Incident solar flux |
A_c | 1 | 0.6 | Cloud fraction (dimensionless) |
T_a | 1 | 0.76 | Atmospheric transmittance (dimensionless) |
R_c | 1 | 0.5 | Cloud albedo (dimensionless). At R_c = 0.5 the Twomey susceptibility S = R_c*(1-R_c)/3 is maximised (1/12 ≈ 0.0833). |
Δln_N | 1 | 0.262 | Fractional change in cloud droplet number concentration, Δln(N) = ln(N₁/N₀) (dimensionless). Default ≈ ln(1.3): a 30% increase in CDNC. |
Observed
| Name | Units | Default | Description |
|---|---|---|---|
ΔR_c | 1 | Change in cloud albedo from the Twomey effect: ΔR_c = R_c*(1−R_c)/3 * Δln_N — Eq. 24.42. | |
ΔF_c | W/m^2 | Change in shortwave forcing from the first indirect aerosol effect: ΔF_c = −F_0 * A_c * T_a² * ΔR_c — Eq. 24.43. Negative = cooling (increased albedo reflects more solar radiation). |
Observed expressions
$$ ΔR_{c} = \frac{R_{c} \cdot \left(1 + \left(-1\right) \cdot R_{c}\right)}{3} \cdot Δln_{N} $$Change in cloud albedo from the Twomey effect: ΔR_c = R_c*(1−R_c)/3 * Δln_N — Eq. 24.42.
$$ ΔF_{c} = \left(-1\right) \cdot F_{0} \cdot A_{c} \cdot T_{a}^{2} \cdot ΔR_{c} $$Change in shortwave forcing from the first indirect aerosol effect: ΔF_c = −F_0 * A_c * T_a² * ΔR_c — Eq. 24.43. Negative = cooling (increased albedo reflects more solar radiation).
Analyses
indirect_forcing_vs_cdnc_change
Indirect aerosol forcing ΔF_c as a function of fractional CDNC change Δln_N at the default parameters (R_c=0.5, F_0=1370 W/m², A_c=0.6, T_a=0.76). The linear Twomey relationship gives ΔF_c ≈ −10.4 W/m² for a 30% CDNC increase (Δln_N = ln(1.3) ≈ 0.262). Illustrates how the indirect forcing scales with the anthropogenic perturbation to cloud droplet number.
Time span: 0.0 → 1.0
Swept over: Δln_N

cloud_albedo_change_vs_Rc
Change in cloud albedo ΔR_c as a function of background cloud albedo R_c at fixed Δln_N = ln(1.3) ≈ 0.262 (30% CDNC increase). The parabolic Twomey susceptibility S = R_c*(1−R_c)/3 peaks at R_c = 0.5, so clouds with intermediate albedo respond most strongly to aerosol perturbations. Connects to the CloudAlbedoSensitivity component.
Time span: 0.0 → 1.0
Swept over: R_c


forcing_sensitivity_to_cloud_fraction
Indirect forcing ΔF_c as a function of cloud fraction A_c at fixed Δln_N = ln(1.3) and R_c = 0.5. The linear dependence on A_c reflects that indirect forcing is proportional to the fraction of sky covered — more cloud means more total forcing. Covers the realistic range A_c ∈ [0.1, 1.0].
Time span: 0.0 → 1.0
Swept over: A_c

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.42–24.43.",
"notes": "source_ref: Aerosol.jl@c8c640bb:src/aerosol_radiative_forcing.jl:306\nFirst indirect aerosol effect (Twomey/cloud-albedo effect). Aerosols acting as CCN increase cloud droplet number concentration N at fixed liquid water content, reducing mean droplet radius and increasing cloud optical depth and albedo. The Twomey susceptibility S = dR_c/d(ln N) = R_c*(1-R_c)/3 (Eq. 24.41) gives the change in cloud albedo per fractional change in N: ΔR_c = S * Δln_N (Eq. 24.42). Eq. 24.43 converts ΔR_c to a top-of-atmosphere shortwave forcing: ΔF_c = -F_0 * A_c * T_a² * ΔR_c. The negative sign reflects that increased cloud albedo cools by reflecting more incoming solar radiation.\n\nAfter MTK structural_simplify, the two algebraic equations reduce to zero ODE states — both ΔR_c and ΔF_c are pure observed bindings. The standalone model treats R_c as a fixed parameter (default 0.5, peak susceptibility); coupling with CloudAlbedo would promote R_c to a shared variable.\n\nTolerance rationale (model-level rel=1e-8 / abs=1e-12): both outputs are short products of bounded dimensionless parameters. ΔR_c is a four-factor product (R_c, 1-R_c, 1/3, Δln_N); ΔF_c is a five-factor product (F_0, A_c, T_a², ΔR_c) — float64 roundoff accumulates to ~4 ULP, well within rel=1e-8. abs=1e-12 floors the Δln_N → 0 limit where both outputs vanish."
},
"variables": {
"F_0": {
"type": "parameter",
"units": "W/m^2",
"default": 1370.0,
"description": "Incident solar flux"
},
"A_c": {
"type": "parameter",
"units": "1",
"default": 0.6,
"description": "Cloud fraction (dimensionless)"
},
"T_a": {
"type": "parameter",
"units": "1",
"default": 0.76,
"description": "Atmospheric transmittance (dimensionless)"
},
"R_c": {
"type": "parameter",
"units": "1",
"default": 0.5,
"description": "Cloud albedo (dimensionless). At R_c = 0.5 the Twomey susceptibility S = R_c*(1-R_c)/3 is maximised (1/12 ≈ 0.0833)."
},
"Δln_N": {
"type": "parameter",
"units": "1",
"default": 0.262,
"description": "Fractional change in cloud droplet number concentration, Δln(N) = ln(N₁/N₀) (dimensionless). Default ≈ ln(1.3): a 30% increase in CDNC."
},
"ΔR_c": {
"type": "unknown",
"units": "1",
"description": "Change in cloud albedo from the Twomey effect: ΔR_c = R_c*(1−R_c)/3 * Δln_N — Eq. 24.42."
},
"ΔF_c": {
"type": "unknown",
"units": "W/m^2",
"description": "Change in shortwave forcing from the first indirect aerosol effect: ΔF_c = −F_0 * A_c * T_a² * ΔR_c — Eq. 24.43. Negative = cooling (increased albedo reflects more solar radiation)."
}
},
"equations": [
{
"lhs": "ΔR_c",
"rhs": {
"op": "*",
"args": [
{
"op": "/",
"args": [
{
"op": "*",
"args": [
"R_c",
{
"op": "+",
"args": [
1,
{
"op": "*",
"args": [
-1,
"R_c"
]
}
]
}
]
},
3
]
},
"Δln_N"
]
}
},
{
"lhs": "ΔF_c",
"rhs": {
"op": "*",
"args": [
-1,
{
"op": "*",
"args": [
"F_0",
{
"op": "*",
"args": [
"A_c",
{
"op": "*",
"args": [
{
"op": "^",
"args": [
"T_a",
2
]
},
"ΔR_c"
]
}
]
}
]
}
]
}
}
],
"tolerance": {
"rel": 1e-08,
"abs": 1e-12
},
"tests": [
{
"id": "eq_24_43_default_30pct_cdnc_increase",
"description": "Reproduces the upstream Aerosol.jl 'Indirect Forcing - Section 24.8.2 Validation' testitem. At the canonical 30% CDNC increase (Δln_N = ln(1.3) ≈ 0.262), R_c = 0.5, F_0 = 1370 W/m², A_c = 0.6, T_a = 0.76: ΔR_c ≈ 0.02186 and ΔF_c ≈ −10.38 W/m². Upstream asserts ΔR_c ≈ 0.0219 rtol=0.05, ΔF_c < 0, |ΔF_c| ∈ (5, 20) W/m²; we pin the exact analytic float64 values.",
"parameter_overrides": {
"F_0": 1370.0,
"A_c": 0.6,
"T_a": 0.76,
"R_c": 0.5,
"Δln_N": 0.26236426446749106
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "ΔR_c",
"time": 0.0,
"expected": 0.021863688705624253
},
{
"variable": "ΔF_c",
"time": 0.0,
"expected": -10.380599542214963
},
{
"variable": "ΔR_c",
"time": 1.0,
"expected": 0.021863688705624253
},
{
"variable": "ΔF_c",
"time": 1.0,
"expected": -10.380599542214963
}
]
},
{
"id": "zero_cdnc_change_no_forcing",
"description": "Boundary condition: Δln_N = 0 (no change in CDNC) yields ΔR_c = 0 and ΔF_c = 0 exactly — no cloud albedo change, no indirect forcing.",
"parameter_overrides": {
"F_0": 1370.0,
"A_c": 0.6,
"T_a": 0.76,
"R_c": 0.5,
"Δln_N": 0.0
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "ΔR_c",
"time": 0.0,
"expected": 0.0
},
{
"variable": "ΔF_c",
"time": 0.0,
"expected": 0.0
}
]
},
{
"id": "linearity_double_delta_lnN",
"description": "Linearity check: doubling Δln_N doubles both ΔR_c and ΔF_c because both formulas are linear in Δln_N. At 2*ln(1.3) ≈ 0.5247, ΔR_c and ΔF_c are exactly twice the Δln_N=ln(1.3) values.",
"parameter_overrides": {
"F_0": 1370.0,
"A_c": 0.6,
"T_a": 0.76,
"R_c": 0.5,
"Δln_N": 0.5247285289349821
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "ΔR_c",
"time": 0.0,
"expected": 0.043727377411248505
},
{
"variable": "ΔF_c",
"time": 0.0,
"expected": -20.761199084429926
}
]
},
{
"id": "twomey_symmetry_low_albedo",
"description": "Twomey susceptibility symmetry: S(R_c) = R_c*(1-R_c)/3 is symmetric about R_c = 0.5, so S(0.1) = S(0.9). ΔR_c at R_c = 0.1 matches ΔR_c at R_c = 0.9 (within float64 roundoff).",
"parameter_overrides": {
"F_0": 1370.0,
"A_c": 0.6,
"T_a": 0.76,
"R_c": 0.1,
"Δln_N": 0.26236426446749106
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "ΔR_c",
"time": 0.0,
"expected": 0.007870927934024732
},
{
"variable": "ΔF_c",
"time": 0.0,
"expected": -3.7370158351973872
}
]
},
{
"id": "twomey_symmetry_high_albedo",
"description": "Twomey susceptibility symmetry: S(0.9) = S(0.1) = 0.1*0.9/3. ΔR_c and |ΔF_c| at R_c = 0.9 are equal to those at R_c = 0.1 (symmetric partner). Upstream asserts S(0.1) ≈ S(0.9) — we pin the exact analytic value.",
"parameter_overrides": {
"F_0": 1370.0,
"A_c": 0.6,
"T_a": 0.76,
"R_c": 0.9,
"Δln_N": 0.26236426446749106
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "ΔR_c",
"time": 0.0,
"expected": 0.00787092793402473
},
{
"variable": "ΔF_c",
"time": 0.0,
"expected": -3.7370158351973863
}
]
},
{
"id": "twomey_symmetry_quarter_and_threequarter",
"description": "Exact binary-fraction symmetry pair: R_c = 0.25 and R_c = 0.75 give identical ΔR_c = 0.25*0.75/3 * Δln_N (both are exact in float64). Confirms S(R_c) = S(1-R_c) for a rational symmetric pair.",
"parameter_overrides": {
"F_0": 1370.0,
"A_c": 0.6,
"T_a": 0.76,
"R_c": 0.25,
"Δln_N": 0.26236426446749106
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "ΔR_c",
"time": 0.0,
"expected": 0.01639776652921819
}
]
},
{
"id": "cloud_fraction_scaling",
"description": "Linear scaling with cloud fraction A_c: at A_c = 0.3 (half of default), |ΔF_c| is halved. Indirect forcing scales linearly with the fraction of sky covered by cloud.",
"parameter_overrides": {
"F_0": 1370.0,
"A_c": 0.3,
"T_a": 0.76,
"R_c": 0.5,
"Δln_N": 0.26236426446749106
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "ΔR_c",
"time": 0.0,
"expected": 0.021863688705624253
},
{
"variable": "ΔF_c",
"time": 0.0,
"expected": -5.190299771107481
}
]
},
{
"id": "solar_flux_scaling",
"description": "Linear scaling with incident solar flux F_0: at F_0 = 685 W/m² (half of default), |ΔF_c| is halved (ΔR_c is unchanged). Indirect forcing scales linearly with the available solar resource.",
"parameter_overrides": {
"F_0": 685.0,
"A_c": 0.6,
"T_a": 0.76,
"R_c": 0.5,
"Δln_N": 0.26236426446749106
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"assertions": [
{
"variable": "ΔR_c",
"time": 0.0,
"expected": 0.021863688705624253
},
{
"variable": "ΔF_c",
"time": 0.0,
"expected": -5.190299771107481
}
]
}
],
"analyses": [
{
"id": "indirect_forcing_vs_cdnc_change",
"description": "Indirect aerosol forcing ΔF_c as a function of fractional CDNC change Δln_N at the default parameters (R_c=0.5, F_0=1370 W/m², A_c=0.6, T_a=0.76). The linear Twomey relationship gives ΔF_c ≈ −10.4 W/m² for a 30% CDNC increase (Δln_N = ln(1.3) ≈ 0.262). Illustrates how the indirect forcing scales with the anthropogenic perturbation to cloud droplet number.",
"parameters": {
"F_0": 1370.0,
"A_c": 0.6,
"T_a": 0.76,
"R_c": 0.5
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"parameter_sweep": {
"type": "cartesian",
"dimensions": [
{
"parameter": "Δln_N",
"range": {
"start": 0.0,
"stop": 0.6,
"count": 60,
"scale": "linear"
}
}
]
},
"plots": [
{
"id": "dF_c_vs_delta_lnN",
"type": "line",
"description": "Indirect shortwave forcing ΔF_c (W/m²) as a function of fractional CDNC change Δln_N. The linear relationship reflects the Twomey susceptibility; cooling (negative ΔF_c) increases with CDNC perturbation.",
"x": {
"variable": "Δln_N",
"label": "Fractional CDNC change Δln(N)"
},
"y": {
"variable": "ΔF_c",
"label": "Indirect forcing ΔF_c (W/m²)"
}
}
]
},
{
"id": "cloud_albedo_change_vs_Rc",
"description": "Change in cloud albedo ΔR_c as a function of background cloud albedo R_c at fixed Δln_N = ln(1.3) ≈ 0.262 (30% CDNC increase). The parabolic Twomey susceptibility S = R_c*(1−R_c)/3 peaks at R_c = 0.5, so clouds with intermediate albedo respond most strongly to aerosol perturbations. Connects to the CloudAlbedoSensitivity component.",
"parameters": {
"F_0": 1370.0,
"A_c": 0.6,
"T_a": 0.76,
"Δln_N": 0.26236426446749106
},
"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": "dR_c_vs_R_c",
"type": "line",
"description": "Cloud albedo change ΔR_c as a function of background cloud albedo R_c. The symmetric parabola peaks at R_c = 0.5 (maximum Twomey susceptibility) and vanishes at R_c = 0 and R_c = 1.",
"x": {
"variable": "R_c",
"label": "Cloud albedo R_c"
},
"y": {
"variable": "ΔR_c",
"label": "Cloud albedo change ΔR_c"
}
},
{
"id": "dF_c_vs_R_c",
"type": "line",
"description": "Indirect shortwave forcing ΔF_c (W/m²) as a function of background cloud albedo R_c. Same parabolic shape as ΔR_c — forcing is most negative at R_c = 0.5.",
"x": {
"variable": "R_c",
"label": "Cloud albedo R_c"
},
"y": {
"variable": "ΔF_c",
"label": "Indirect forcing ΔF_c (W/m²)"
}
}
]
},
{
"id": "forcing_sensitivity_to_cloud_fraction",
"description": "Indirect forcing ΔF_c as a function of cloud fraction A_c at fixed Δln_N = ln(1.3) and R_c = 0.5. The linear dependence on A_c reflects that indirect forcing is proportional to the fraction of sky covered — more cloud means more total forcing. Covers the realistic range A_c ∈ [0.1, 1.0].",
"parameters": {
"F_0": 1370.0,
"T_a": 0.76,
"R_c": 0.5,
"Δln_N": 0.26236426446749106
},
"time_span": {
"start": 0.0,
"end": 1.0
},
"parameter_sweep": {
"type": "cartesian",
"dimensions": [
{
"parameter": "A_c",
"range": {
"start": 0.1,
"stop": 1.0,
"count": 40,
"scale": "linear"
}
}
]
},
"plots": [
{
"id": "dF_c_vs_A_c",
"type": "line",
"description": "Indirect forcing ΔF_c (W/m²) as a function of cloud fraction A_c. Linear relationship — at A_c = 0.6 (global mean) ΔF_c ≈ −10.4 W/m².",
"x": {
"variable": "A_c",
"label": "Cloud fraction A_c"
},
"y": {
"variable": "ΔF_c",
"label": "Indirect forcing ΔF_c (W/m²)"
}
}
]
}
]
}