fix(ciceroscmpy2): hold aerosols at PI for idealised conc-driven runs#108
Merged
benmsanderson merged 2 commits intoJun 25, 2026
Conversation
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>
fd4cd4d
into
openscm:feat/fair2-ciceroscmpy2-adapters-and-runmode-nonfork
7 of 15 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On the concentration-driven idealised path (
abrupt-4xCO2,1pctCO2),_build_scendata_listsetsemstart = nyendso CO2 stays concentration-driven.But that value also gated the user-supplied emissions overlay in
_build_hybrid_emissions_dataatyear >= 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_embaseline.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-flat10family was unaffected because it usesemstart = 1850.Fix
Decouple the overlay-application year from the model
emstartvia a newoverlay_fromargument to_build_hybrid_emissions_data, and passnystartfor idealised runs (
natural_off and lu_zero) so the supplied PI emissionsapply 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