Skip to content

Extend scenarios to 2150 - #157

Merged
paul-leopardi merged 16 commits into
mainfrom
150-scenariomip-ext
Oct 6, 2026
Merged

paul-leopardi merged 16 commits into
mainfrom
150-scenariomip-ext

Conversation

@paul-leopardi

@paul-leopardi paul-leopardi commented Sep 21, 2026 •

Copy link
Copy Markdown
Collaborator

Closes #150

This PR extends ACCESS-ESM1.6 ScenarioMIP input forcing ancillaries from 2100 to 2150 across scenarios.

I used Google Antigravity with Claude and Google Gemini agents to generate and debug the workflow and Python code, and to synthesize a draft of the remainder of this comment.

  • Suite & Workflow Controls (flow.cylc, rose-suite.conf):

    • Added an overarching EXTEND_SM toggle with granular per-forcing switches (EXTEND_SM_AEROSOL, EXTEND_SM_CO2, EXTEND_SM_GHG, EXTEND_SM_NITROGEN, EXTEND_SM_OZONE, EXTEND_SM_SOLAR, EXTEND_SM_VOLCANIC).
    • Added dual filename parameters to automatically output year-stamped filenames (2022_2150 vs 2022_2100) based on extension status.
  • Python Generator Enhancements (esm1p6_ancil):

    • Ozone: Fixed concatenation overlaps across boundary years by trimming padding in tile_constant_years() and tiling to 2151.
    • Aerosols & CO₂: Implemented graceful defensive fallbacks to the 2100 baseline when extension datasets are incomplete or pending NCI replication.
    • GHG & Nitrogen: Aligned ScenarioMIP century boundary chunking and synchronized coordinate dtypes.
    • Volcanic & Solar: Added SAOD hold-constant extension handling to 2150 and solar CLI extension arguments.
    • Iris Datum Support: Enabled iris.FUTURE.datum_support = True across ozone, AMIP, and common modules to suppress NetCDF datum FutureWarnings.

@paul-leopardi paul-leopardi self-assigned this Sep 21, 2026
@paul-leopardi
paul-leopardi added this pull request to stack #158 September 21, 2026 01:44
@paul-leopardi
paul-leopardi marked this pull request as draft September 21, 2026 01:44
@read-the-docs-community

read-the-docs-community Bot commented Sep 21, 2026 •

Copy link
Copy Markdown

Documentation build overview

📚 CMIP7-Input | 🛠️ Build #34844255 | 📁 Comparing 3b26b0c against latest (ea70413)

  🔍 Preview build  

1 file changed
± index.html

Base automatically changed from 154-add-workflow to main September 24, 2026 06:12
* Add u-dq819/trunk workflow as-is

* Move ACCESS-ESM1.6 Python scripts into lib/python

* Remove git_clone_scripts and install_scripts tasks

* Set everything to true by default

* Delete reference to GIT_SCRIPTS_REPO
@paul-leopardi

paul-leopardi commented Sep 27, 2026 •

Copy link
Copy Markdown
Collaborator Author

I ran the completed workflow twice:

Run 7:

  • Log: /scratch/tm70/pcl851/cylc-run/cmip7-esm1p6-scen7-ext/run7/log
  • Generated files: /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.25

Run 8:

  • Log: /scratch/tm70/pcl851/cylc-run/cmip7-esm1p6-scen7-ext/run8/log
  • Generated files: /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.27

Both runs apparently succeeded, with identical output. Please check that the correct output was produced, including extensions to 2150 (or 2151 when needed).

@paul-leopardi
paul-leopardi marked this pull request as ready for review September 27, 2026 23:43

@blimlim blimlim left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @paul-leopardi, I've had a look through the code changes and had a few questions come up.

The main thing I saw is that extended outputs aren't being produced for the SO2 and CO2. Other than that I just had questions about some of the error handling and extension of the data used for the ozone and nitrogen, which are less of a priority to think about. (realised I'd misunderstood the code)

Comment thread CMIP7/esm1p6/ancil/lib/python/esm1p6_ancil/co2/cmip7_ES_CO2_interpolate.py Outdated
Comment thread CMIP7/esm1p6/ancil/lib/python/esm1p6_ancil/ghg/cmip7_ghg_series.py Outdated
Comment thread CMIP7/esm1p6/ancil/lib/python/esm1p6_ancil/ghg/cmip7_SM_ghg_generate.py Outdated
Comment thread CMIP7/esm1p6/ancil/lib/python/esm1p6_ancil/nitrogen/cmip7_SM_nitrogen_generate.py Outdated
Comment thread CMIP7/esm1p6/ancil/lib/python/esm1p6_ancil/ozone/cmip7_SM_ozone_generate.py Outdated
Comment thread CMIP7/esm1p6/ancil/lib/python/esm1p6_ancil/solar/cmip7_SM_solar_generate.py Outdated
Comment thread CMIP7/esm1p6/ancil/lib/python/esm1p6_ancil/volcanic/cmip7_volcanic.py Outdated
Comment thread CMIP7/esm1p6/ancil/lib/python/esm1p6_ancil/cmip7_ancil_common.py
@paul-leopardi

Copy link
Copy Markdown
Collaborator Author

From Zulip:

Martin Dix
@Paul Leopardi /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.27/modern/esm-scen7-h/atmosphere/forcing/global.N96/2026.09.27/CO2_fluxes_h_2022_2150_cmip7.anc only has data to 2101
Same problem with /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.27/m odern/scen7-h/atmosphere/aerosol/global.N96/2026.09.27/scycl_h_2022_2150_cmip7.anc

Paul Leopardi
I found the problem. The workflow had specified the wrong VDATE and DATE_RANGE.
...

See e873115 for the fix. I then ran the workflow again.

Run 9:

Log: /scratch/tm70/pcl851/cylc-run/cmip7-esm1p6-scen7-ext/run9/log
Generated files: /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.29

@MartinDix

Copy link
Copy Markdown
Collaborator

CO2 emissions look ok

co2_emissions_scenario co2_2150_h co2_2150_vl

@MartinDix

Copy link
Copy Markdown
Collaborator

Aerosol emissions look ok

so2_timeseries_scenario inew so2_emissions_2150_h so2_emissions_2150_vl bc_emissions_2150_h bc_emissions_2150_vl oc_emissions_2150_h oc_emissions_2150_vl bb_emissions_2150_h bb_emissions_2150_vl

@paul-leopardi
paul-leopardi marked this pull request as draft September 30, 2026 04:47
@MartinDix

MartinDix commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator

Nitrogen is constant after 2100 as specified by https://wcrp-cmip.github.io/cmip7-guidance/docs/CMIP7/Experiment_set_up_and_Forcings/scen7-h-ext/

nitrogen_scenarios

Solar is ok

tsi_scenario

Volcanic correctly repeats the 2100 annual cycle for years following 2100

volc_scenario

@paul-leopardi

paul-leopardi commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator Author

I performed all the code changes listed above and then ran the workflow again.

Run 13:

Log: /scratch/tm70/pcl851/cylc-run/cmip7-esm1p6-scen7-ext/run13/log
Generated files: /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.30

The run succeeded with output identical to
/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.29

@paul-leopardi

paul-leopardi commented Sep 30, 2026 •

Copy link
Copy Markdown
Collaborator Author

I performed the code change at commit b92fa21 and then ran the workflow again.

Run 14:

Log: /scratch/tm70/pcl851/cylc-run/cmip7-esm1p6-scen7-ext/run14/log
Generated files other than ozone: /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.30

The run for all forcings other than ozone has succeeded with output identical to
/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.29

As at midnight, the ozone tasks are sitting in "held" status pending allocation.

@paul-leopardi
paul-leopardi marked this pull request as ready for review October 1, 2026 00:47
@paul-leopardi
paul-leopardi requested a review from blimlim October 1, 2026 00:47
@MartinDix

Copy link
Copy Markdown
Collaborator

Comparing ozone data is difficult because the input is on pressure levels and the model data is on the native height levels. Comparison here uses a column total which is only approximate (used model level pressure data from year 2000 of the historical simulation).

Comparing at 80S October to highlight the ozone hole. All the scenarios are quite similar with only weak recovery.

ozone_80S_scen ozone_scen_timeseries

After 2100 the ozone should repeat. This is correct.
ozone_scen_2100

@paul-leopardi

Copy link
Copy Markdown
Collaborator Author

I performed the workflow change at commit 5b54f0f to switch on all the forcings and extensions and then ran the workflow again.

Run 17:

Log: /scratch/tm70/pcl851/cylc-run/cmip7-esm1p6-scen7-ext/run17/log
Generated files: /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.10.06

The run for all forcings succeeded with output identical to
/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.09.30 except that the following new files are generated:

BC_hl_2022_2150_cmip7.anc
BC_m_2022_2150_cmip7.anc
Bio_hl_2022_2150_cmip7.anc
Bio_m_2022_2150_cmip7.anc
CO2_fluxes_hl_2022_2150_cmip7.anc
CO2_fluxes_m_2022_2150_cmip7.anc
OCFF_hl_2022_2150_cmip7.anc
OCFF_m_2022_2150_cmip7.anc
scycl_hl_2022_2150_cmip7.anc
scycl_m_2022_2150_cmip7.anc

Also, see https://github.com/ACCESS-NRI/access-esm1.6-configs/branches/active for the gen-*-87a06927 branches generated by the run, e.g. gen-piControl-87a06927 .

@blimlim

blimlim commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator

The extended GHGs to 2150, taken from the gen-scen7-*-87a06927 branches all look good:

download-83 download-86 download-85 download-84

@blimlim blimlim left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @paul-leopardi for adding those changes and producing the GHG values. The code changes look good to me

@paul-leopardi
paul-leopardi merged commit 8abd946 into main Oct 6, 2026
1 of 2 checks passed
@paul-leopardi
paul-leopardi deleted the 150-scenariomip-ext branch October 6, 2026 05:48
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.

Produce ancillaries for the ACCESS-ESM1.6 ScenarioMIP ext experiments

3 participants