Snapshot / Computational Thinking Repo ↗

Feedbacks and climate sensitivity

If CO₂ acted alone, doubling it would warm the planet only about 1 °C. The reason real estimates are 2–4 °C is feedbacks — the warming triggers other changes that amplify it:

  • Water vapour: warmer air holds more water vapour, itself a greenhouse gas → more warming.

  • Ice–albedo: warming melts bright ice, exposing dark ocean that absorbs more sun → more warming.

Each feedback returns a fraction f of the warming as extra warming, which triggers a bit more, and so on. The geometric sum gives an amplification factor 1/(1−f). As f climbs toward 1, sensitivity explodes — and small uncertainties in f become huge uncertainties in how hot it gets. Dial f below and watch.

begin
    using PlutoUI, WasmMakie
end

total feedback strength f = 60 ÷100

let
    # the no-feedback warming for a CO2 doubling, then sweep the feedback strength and
    # plot the AMPLIFIED warming  dT = dT_base / (1 - f)
    dT_base = 1.1
    npts = 91
    fx = Vector{Float64}(undef, npts)
    ty = Vector{Float64}(undef, npts)
    for k in 1:npts
        f = 0.01 * Float64(k - 1)        # 0.00 .. 0.90
        ty[k] = dT_base / (1.0 - f)
        fx[k] = f
    end
    fnow = Float64(fi) / 100.0
    tnow = dT_base / (1.0 - fnow)

    fig = Figure(size = (600, 350))
    ax = Axis(fig[1, 1])
    lines!(ax, [0.0, 0.9], [dT_base, dT_base])             # the bare, no-feedback warming
    lines!(ax, fx, ty)                                      # amplified climate sensitivity
    lines!(ax, [fnow, fnow], [0.0, tnow])                  # marker at the slider
    fig
end
fb_stats = let
    # amplified sensitivity in a SEPARATE bond-dependent cell so the markdown below
    # interpolates it live (values inside a markdown cell's own `let` bake to the
    # slider defaults).
    dT_base = 1.1
    fnow = Float64(fi) / 100.0
    tnow = dT_base / (1.0 - fnow)
    amp = 1.0 / (1.0 - fnow)
    (floor(fnow * 100.0) / 100.0, floor(dT_base * 100.0) / 100.0, floor(amp * 100.0) / 100.0, floor(tnow * 10.0) / 10.0)
end;

At feedback f = 0.6: the bare 1.1 C of CO2 warming is amplified 2.5x to about 2.7 C per CO2 doubling. Slide f past 0.8 and the curve rockets upward – near runaway, a tiny change in the feedbacks means an enormous change in the outcome. That is exactly why climate sensitivity is so hard to pin down.

Why the uncertainty is structural

Look at the shape of the curve: it is flat on the left and vertical on the right. Where the real Earth sits — physics puts f somewhere around 0.6–0.7 — is on the steepening part, where the same uncertainty in f produces a far wider range of temperatures. This is why decades of research still quote climate sensitivity as a range (roughly 1.5–4.5 °C) rather than a single number: the math itself amplifies our ignorance.

It is also a general lesson about feedback systems, from microphones screeching to financial crashes: as a loop approaches f = 1, behaviour becomes both extreme and unpredictable.

Appendix

A direct evaluation of the feedback amplification 1/(1−f) swept over feedback strength, drawn with WasmMakie — entirely in-browser WebAssembly. The numbers (≈1 °C bare response, ≈3 °C with feedbacks) match the standard estimates from the MIT lecture.