A monthly time-stepped, closed-loop system-dynamics simulation. Each step's climate output (CO₂, temperature, ocean pH) feeds back into forests, fisheries, soil, crop yield and population — which in turn drive next month's emissions. Illustrative, order-of-magnitude model — not a peer-reviewed GCM — calibrated to current published figures (Keeling Curve, FAO, IPCC).
I think its important that I get a few things clear here. I'm not a paid scientist, I'm a self employed Civil Engineer with Bachelors and Masters, 35 years experience in computer programming and modelling of Engineering systems. This project you've stumbled across is my attempt to wrap my head around where we — as a species are heading and, if you spend enough time running it, you'll probably figure — like I have — that it's not good and that AR5 was a whitewash and AR6 watered down. I've run this model numerous times against IPCC RCP model projections and they do track them (Option 1 lets you try this yourself). I've also modelled this out to real world events and it tracks 2 degrees in 2038 nicely, predicts earlier than (IPCC) expected BOE and finds clathrates triggered the back end of this century. It models very well with Hansen's take on climate sensitivity being 4.5 degrees C. I've also included feedbacks in Option 2 and Option 3, which diverge from the IPCC. You, dear reader, will note that this model allows for Jevons Paradox — I give thanks to the AI oligarchs for proving this effect in magical technicolor. Yes, I have modelled topsoil and microbiome loss, forest loss and CO2 source changes, I've even modelled human numbers as a feedback and split the population to reflect how they'll be impacted — spoiler, the rich survive the longest! For build notes, there's a PhD level thesis at the bottom of the model.
428 ppm (Scripps/NOAA Mauna Loa — the Keeling Curve;
Met Office forecasts 429.4 ppm as the 2026 annual mean); global temperature anomaly ≈ +1.5°C vs
pre-industrial; ocean surface pH down to ≈ 8.05 from a pre-industrial ≈ 8.2; FAO 2025 finds
35.5% of marine fish stocks are overfished, with overfishing prevalence rising ~1 pt/yr; global vertebrate
populations (Living Planet Index) have declined roughly 70–75% on average since 1970. Model logic: fossil +
land-use emissions raise CO₂ → radiative forcing (log of CO₂ doubling) raises temperature with ocean-lag →
warming lowers albedo (ice/snow loss), which feeds back into further warming → CO₂ uptake lowers ocean pH →
warming + acidification bleach coral and shrink fish carrying capacity → deforestation and farming intensity
erode topsoil → temperature (bell-curve response), CO₂ fertilization and topsoil jointly set crop yield → crop
yield and fish stock set the food-limited carrying capacity for population → population and its energy demand
set next year's emissions, closing the loop.
200 GtC (of the ~1,500 GtC total
northern permafrost stock; IPCC AR6 cites 14–175 GtCO₂ released per 1°C of warming, other syntheses ~150–250
GtCO₂e by 2100) thaws each year at a rate set by a Stefan-equation-style relationship: an active-layer
"melt depth" that grows with the square root of cumulative thawing-degree exposure, plus an extra term for
the current rate of warming (faster warming outpaces the lagged thermal response and drives deeper,
quicker thaw). Released carbon splits 97.7% CO₂ / 2.3% CH₄ by mass (Schuur et al. 2013). The CO₂
portion feeds directly into atmospheric CO₂ alongside fossil and deforestation emissions. The CH₄ portion
accumulates in an atmospheric methane pool that decays at ~8.1%/yr (an 11.8-year lifetime) and adds its own
warming via a simplified Myhre et al. (1998) radiative-forcing formula, converted to °C through the model's
climate sensitivity — so a burst of methane warms fast and fades, while the CO₂ it's mixed with lingers. This
closes a second loop: warming → deeper/faster permafrost thaw → CO₂ + CH₄ release → more warming.
undefined, which JavaScript propagates as NaN rather than throwing an error — meaning the
entire model would have silently produced NaN for temperature from the very first step, with no visible
error message. This was caught by actually running the model rather than trusting that a well-written
calculation must also be correctly wired in, and fixed by adding the five missing state variables and
confirming, by tracing actual output, that mass balance, seasonal cycling, and the water-stress mortality
threshold all behave exactly as the (already-good) surrounding documentation described.
~900 GtC, consistent with published estimates that
remaining proved+probable reserves would emit roughly 2,900–3,300 GtCO₂ if fully burned
(McGlade & Ekins 2015; Carbon Tracker) — several times the remaining 1.5°C carbon budget. That 900 GtC
is only a fraction of a much larger ~3,100 GtC geological resource base still undiscovered
or currently uneconomic; the new fuel source discoveries slider controls how much of that larger
pool is converted into known reserves each year through ongoing exploration, at a 22.5%
recovery factor (most fossil carbon in the ground is never actually extractable even in principle, a
standard feature of reserve accounting).
15–30:1 range
and is falling as easy reserves are exhausted, with unconventional sources (tar sands, tight oil) often
below 5:1 and occasionally below the break-even point of 1:1 — a net energy
loss not worth extracting regardless of price (Hall et al.'s "net energy cliff"). The model curves EROEI
from an initial 20:1 down toward a floor of 2:1 as the reserve depletes, and
— critically — uses that same curve to throttle the physical draw-down rate itself: harder, lower-grade
deposits genuinely cannot be extracted as fast as easy ones, regardless of demand, so extraction slows
on its own as EROEI falls, on top of the usual reserve-proportional decline-curve behavior (calibrated
to today's real-world ~2%/yr reserve-to-production ratios for oil and gas).
rebound × that growth, on top of ordinary population-
driven demand. At 0, renewables substitute cleanly with no extra demand (the model's original
assumption); at 1.0, each extra percentage point of renewable share adds a full extra
percentage point of total energy demand; published estimates of the direct rebound effect for most
efficiency/energy-source improvements cluster around 10-30%, while economy-wide "backfire"
exceeding 100% is more contested but has historical precedent (Jevons' own coal example, and some readings
of 20th-century electrification). Watch the Renewables share climb in the vitals strip alongside
CO₂: with a high rebound setting, renewable adoption can look like real progress while emissions barely
bend.
100% — air simply cannot hold more water than saturation; the excess condenses out
immediately as precipitation, a real physical limit rather than a modeling convenience. Saturation vapor
pressure itself follows the actual Clausius-Clapeyron relation, es(T) =
es(T₀)·exp[(L/Rv)(1/T₀ − 1/T)] (L/Rv ≈ 5423 K), rather than the ~7%/°C
linear shortcut used in an earlier draft. The resulting water-vapor index feeds a logarithmic forcing
term calibrated so its slope at today's baseline matches Soden & Held's (2006) empirical estimate
of ~+1.8 W/m² of extra forcing per °C of warming — historically about as large as the direct forcing from
doubling CO2 itself. As before, only the warming beyond today's already-realized ~1.5°C drives this
term, since that ~1.5°C already has its own water-vapor response baked into the "climate sensitivity"
slider (standard practice — reported equilibrium climate sensitivity already includes water vapor
feedback), so counting it again from zero would double-count it.
month (DT = 1/12 years) rather than the quarterly (DT = 0.25) resolution used through most of
this build, so the fast-responding water-vapor/Planck loop can approach its quasi-equilibrium within each
displayed year via twelve sub-steps rather than four, instead of being forced into coarser jumps alongside
much slower processes (forests, ice sheets, permafrost) that genuinely do take years to respond. Every
annual rate constant in the model — deforestation, permafrost thaw, wind erosion, fish growth and harvest,
coral bleaching, biodiversity decay, population growth, renewable adoption, and more — was written from
early in this model's development as (annual rate) × DT specifically so it could be re-run at a different
step size without recalibration; this change exercised that design directly rather than assuming it held.
One genuine bug was caught doing so: two glacier melt-rate safety bounds were hardcoded as "2% of
remaining mass per step" rather than scaled by DT, meaning they'd silently permitted three times more
annual change at monthly resolution than at quarterly (2%×12 months vs. 2%×4 quarters) — fixed to scale
with DT like every other rate-of-change term. The actual answer to whether granularity matters: barely.
Running the identical 100-year scenario at monthly versus quarterly resolution changed the outcome by
about 0.004°C and 0.6ppm CO2 — consistently under 0.02°C and 2ppm across every RCP mode and validation-
mode setting tested. That's a reassuring result for a model built entirely on simple forward-stepping
(rate × DT, added to the previous state) rather than a higher-order numerical integrator: it suggests the
quarterly resolution used throughout the rest of this build was already fine enough that discretization
error was never a meaningful contributor to any of the findings in this documentation, distinct from the
genuine calibration and structural issues that were found and fixed along the way. The "Step +1 month"
button and year/step display (e.g. "2026 M7") reflect the current step size directly; "Run simulation" still
asks for a span in years and converts it to the right number of steps internally, whatever DT currently is.
4.3 million km² (2025's minimum was 4.6M km², NSIDC) and declines toward a target set by
the observed Notz & Stroeve (2016) relationship of roughly −3 million km² per °C of
global warming, referenced against a ~1979 baseline of 7.2 million km². A "Blue Ocean Event"
(BOE) — conventionally defined as September extent falling below 1 million km², since thick
multi-year ice around the Canadian Arctic Archipelago resists full melt-out — is flagged as a threshold
event once crossed. The fraction of 1979-era ice already lost subtracts directly from the model's
planetary albedo (open ocean reflects only ~7% of sunlight vs ~50–70% for sea ice/snow), with a small
permanent extra penalty once a BOE occurs (representing the documented lengthening of the open-water
season and delayed refreeze). That albedo reduction is converted into an explicit radiative forcing
(W/m²) the same way methane is, then run through the model's climate sensitivity and ocean-heat-uptake
lag — so shrinking Arctic ice directly, and measurably, amplifies global warming, which then melts more
ice, a self-reinforcing loop calibrated in the same broad range as published estimates (Pistone et al.,
~0.3–0.7 W/m² of extra global forcing at full Arctic summer ice loss).
20–25% cumulative
deforestation combined with warming — beyond which reduced transpiration breaks the forest's own
rainfall-recycling cycle, rainfall drops, the dry season lengthens, and the forest diebacks and burns even
if human clearing stops. Here, once forest cover falls below 75% of its 2026 baseline (a proxy
for that ~20–25% cumulative-loss threshold), a self-reinforcing dieback loss (~1.5%/yr of remaining forest)
switches on and persists regardless of the deforestation slider — representing that irreversibility.
Critically, the carbon-sink strength of whatever forest survives is also halved once tipped, since
degraded, savanna-transitioning canopy sequesters far less carbon per unit area than intact rainforest.
Combined with continuing area loss, this is what lets the biome flip from a net carbon sink to a net
carbon source — the event log flags the year it happens.
2,500 GtC
(~1,550 GtC organic + ~950 GtC inorganic), and cultivated soils have already lost an estimated
60–75% of their original organic carbon to land conversion (Lal 2004; Sanderman et al. 2017
estimate ~78 PgC cumulative loss from land-use change). The model tracks the remaining ~350 GtC of
still-vulnerable agricultural soil carbon — the living microbiome and organic matter that would otherwise
keep locking atmospheric CO₂ into the ground. Clearing land for large-scale agriculture removes the
hedgerows, forest margins and windbreaks that hold soil in place, leaving broad open, bare-fallow fields
exposed to wind — the Dust-Bowl mechanism — with warming/drought further drying and loosening soil and
worsening erosion. An estimated ~25% of the resulting eroded/disturbed carbon is oxidized directly to CO₂
(published estimates for the oxidized-vs-buried split vary widely by system and timescale); the rest is
carried into rivers and the sea, lost either way from the local, microbially active pool. As that pool
depletes, the land's ongoing ability to re-lock atmospheric carbon weakens too — closing the loop: more
land cleared for farming → more wind exposure → more soil carbon lost as CO₂ and washed away → a weaker
land carbon sink → more atmospheric CO₂ → more warming and drought → still more erosion. This also closes
the loop back from the crop-yield/arable-land section below: land that heat and drought have pushed out of
cultivation doesn't simply sit idle — without crop cover or irrigation holding it together it desertifies
(bare, wind-scoured ground with a dying microbiome, the pattern seen from the Dust Bowl to the Sahel), so
last year's arable-land loss is fed back in here as an extra driver of this year's wind erosion and soil
carbon loss, on top of active-farmland clearance.