Skip to content

fix(ciceroscmpy2): hold aerosols at PI for idealised conc-driven runs#108

Merged
benmsanderson merged 2 commits into
openscm:feat/fair2-ciceroscmpy2-adapters-and-runmode-nonforkfrom
benmsanderson:fix/cicero-idealised-conc-aerosol-overlay
Jun 25, 2026
Merged

fix(ciceroscmpy2): hold aerosols at PI for idealised conc-driven runs#108
benmsanderson merged 2 commits into
openscm:feat/fair2-ciceroscmpy2-adapters-and-runmode-nonforkfrom
benmsanderson:fix/cicero-idealised-conc-aerosol-overlay

Conversation

@benmsanderson

Copy link
Copy Markdown
Collaborator

Problem

On the concentration-driven idealised path (abrupt-4xCO2, 1pctCO2),
_build_scendata_list sets emstart = nyend so CO2 stays concentration-driven.
But that value also gated the user-supplied emissions overlay in
_build_hybrid_emissions_data at year >= emstart — so the PI-flat aerosol /
ozone-precursor emissions a caller supplies were applied only at the final
year
, and every prior year fell back to the rising historical_em baseline.

The effect is a spurious growing aerosol cooling: ERF drifts down ~0.6 W/m²
across a 4×CO2 step (so GSAT peaks ~1950 then cools) instead of holding flat.
The emissions-driven esm-flat10 family was unaffected because it uses
emstart = 1850.

Fix

Decouple the overlay-application year from the model emstart via a new
overlay_from argument to _build_hybrid_emissions_data, and pass nystart
for idealised runs (natural_off and lu_zero) so the supplied PI emissions
apply across the whole window. CO2 is unaffected — it is not supplied on the
conc-driven path and stays concentration-driven via conc_run.

Verification

abrupt-4xCO2, CICEROSCMPY2, 10 members: ensemble-median ERF now flat to
±0.000 W/m²
(was −0.64 W/m² 1850→2000), and GSAT rises monotonically toward
equilibrium with no mid-run cooling.

Surfaced during AR7 WG1 Ch5 idealised-experiment QA.

🤖 Generated with Claude Code

benmsanderson and others added 2 commits June 25, 2026 17:17
On the concentration-driven path (abrupt-4xCO2, 1pctCO2) _build_scendata_list
sets emstart=nyend so CO2 stays concentration-driven. That also gated the
user-supplied emissions overlay in _build_hybrid_emissions_data at
`year >= nyend`, so the PI-flat aerosol / ozone-precursor emissions were
applied only at the final year and every prior year fell back to the rising
historical_em baseline. The result is a spurious growing aerosol cooling that
drifts ERF down ~0.6 W/m2 across a 4xCO2 step (GSAT peaks ~1950 then cools)
instead of holding flat.

Decouple the overlay-application year from the model emstart via a new
overlay_from argument, and pass nystart for idealised runs so the supplied PI
emissions apply across the whole window. CO2 is unaffected: it is not supplied
on the conc-driven path and stays concentration-driven via conc_run. The
emis-driven esm-flat10 family already used emstart=1850 and is unchanged.

Verified on abrupt-4xCO2: ERF now flat to +/-0.000 W/m2 (was -0.64) and GSAT
rises monotonically with no spurious mid-run cooling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@benmsanderson benmsanderson merged commit fd4cd4d into openscm:feat/fair2-ciceroscmpy2-adapters-and-runmode-nonfork Jun 25, 2026
7 of 15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant