Skip to content

Create pre-industrial and historical ozone forcing ancillaries from UK ozone CMIP7 NetCDF files #111

Merged
penguian merged 3 commits intomainfrom
50-ozone
Mar 2, 2026
Merged

Create pre-industrial and historical ozone forcing ancillaries from UK ozone CMIP7 NetCDF files #111
penguian merged 3 commits intomainfrom
50-ozone

Conversation

@penguian
Copy link
Collaborator

@penguian penguian commented Dec 9, 2025

Closes #50

Tested using u-dq819/uk-ozone-test@340664 and fcm:ancil_contrib.x/branches/dev/paulleopardi/r19868_2765_var_name_plev@19995

The ancil output is in gadi:/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2025.12.09/modern/pre-industrial/forcing/global.N96/2025.12.09/ozone_1850_cmip7.anc.

@penguian penguian self-assigned this Dec 9, 2025
@penguian penguian linked an issue Dec 9, 2025 that may be closed by this pull request
@penguian penguian requested a review from MartinDix December 9, 2025 00:02
@penguian penguian marked this pull request as draft December 14, 2025 23:47
@penguian
Copy link
Collaborator Author

Tested using u-dq819.uk-ozone-test@341267. The historical ozone ancillary file is at gadi:/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2025.12.15/modern/historical/forcing/global.N96/2025.12.15/ozone_1849_2023_cmip7.anc.

@penguian penguian marked this pull request as ready for review December 15, 2025 06:14
@MartinDix
Copy link
Collaborator

Historical ozone seems strange PCMDI/input4MIPs_CVs#400

@penguian penguian marked this pull request as draft December 18, 2025 23:57
@penguian penguian marked this pull request as ready for review December 19, 2025 00:41
@penguian penguian marked this pull request as draft January 8, 2026 23:51
@penguian
Copy link
Collaborator Author

Tested using u-dq819/trunk at revision 343137.

Ozone outputs are as follows;

$ find /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.01.09.50 -name '*ozone*'
/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.01.09.50/modern/pre-industrial/forcing/global.N96/2026.01.09/ozone_1850_cmip7.anc
/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.01.09.50/modern/historical/forcing/global.N96/2026.01.09/ozone_1849_2023_cmip7.anc

The ancillary directory contains:

/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.01.09.50
└── modern
    ├── historical
    │   ├── atmosphere
    │   │   ├── aerosol
    │   │   │   └── global.N96
    │   │   │       └── 2026.01.09
    │   │   │           ├── BC_1849_2023_cmip7.anc
    │   │   │           ├── Bio_1849_2023_cmip7.anc
    │   │   │           ├── OCFF_1849_2023_cmip7.anc
    │   │   │           └── scycl_1849_2023_cmip7.anc
    │   │   ├── forcing
    │   │   │   └── resolution_independent
    │   │   │       └── 2026.01.09
    │   │   │           ├── TSI_CMIP7_ESM
    │   │   │           └── volcts_cmip7.dat
    │   │   └── land
    │   │       └── biogeochemistry
    │   │           └── global.N96
    │   │               └── 2026.01.09
    │   │                   └── Ndep_1849_2023_cmip7.anc
    │   └── forcing
    │       └── global.N96
    │           └── 2026.01.09
    │               └── ozone_1849_2023_cmip7.anc
    ├── historical-emissions
    │   └── atmosphere
    │       └── forcing
    │           └── global.N96
    │               └── 2026.01.09
    │                   └── CO2_fluxes_1849_2023_cmip7.anc
    └── pre-industrial
        ├── atmosphere
        │   ├── aerosol
        │   │   └── global.N96
        │   │       └── 2026.01.09
        │   │           ├── BC_1850_cmip7.anc
        │   │           ├── Bio_1850_cmip7.anc
        │   │           ├── OCFF_1850_cmip7.anc
        │   │           └── scycl_1850_cmip7.anc
        │   └── land
        │       └── biogeochemistry
        │           └── global.N96
        │               └── 2026.01.09
        │                   └── Ndep_1850_cmip7.anc
        └── forcing
            └── global.N96
                └── 2026.01.09
                    └── ozone_1850_cmip7.anc

@penguian
Copy link
Collaborator Author

I just tested using

$ svn info
Path: .
Working Copy Root Path: /home/851/pcl851/roses/u-dq819.ozone-pi-mean
URL: https://code.metoffice.gov.uk/svn/roses-u/d/q/8/1/9/ozone-pi-mean
Relative URL: ^/d/q/8/1/9/ozone-pi-mean
Repository Root: https://code.metoffice.gov.uk/svn/roses-u
Repository UUID: 7d42c781-efc1-4492-b88e-e6facad7bc31
Revision: 347313
Node Kind: directory
Schedule: normal
Last Changed Author: paulleopardi
Last Changed Rev: 347313
Last Changed Date: 2026-02-18 14:27:52 +1100 (Wed, 18 Feb 2026)

Results are in

$ find /g/data/${PROJECT}/${USER}/CMIP7/esm1p6_ancil/2026.02.19 -name '*.anc' | xargs ls -l
-rw-r--r-- 1 pcl851 tm70 6062080 Feb 19 17:34 /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.02.19/modern/pre-industrial/forcing/global.N96/2026.02.19/ozone_1850_cmip7.anc
-rw-r--r-- 1 pcl851 tm70 6062080 Feb 19 17:46 /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.02.19/modern/pre-industrial-mean/forcing/global.N96/2026.02.19/ozone_1850_1870_mean_cmip7.anc

@penguian penguian marked this pull request as ready for review February 19, 2026 09:45
@penguian penguian marked this pull request as draft February 19, 2026 23:13
@penguian
Copy link
Collaborator Author

penguian commented Feb 19, 2026

Updated u-dq819/u-dq819.ozone-pi-mean to correct ZMTA dataset paths and include historical ozone.

[pcl851@gadi-login-07 u-dq819.ozone-pi-mean]$ svn info
Path: .
Working Copy Root Path: /home/851/pcl851/roses/u-dq819.ozone-pi-mean
URL: https://code.metoffice.gov.uk/svn/roses-u/d/q/8/1/9/ozone-pi-mean
Relative URL: ^/d/q/8/1/9/ozone-pi-mean
Repository Root: https://code.metoffice.gov.uk/svn/roses-u
Repository UUID: 7d42c781-efc1-4492-b88e-e6facad7bc31
Revision: 347526
Node Kind: directory
Schedule: normal
Last Changed Author: paulleopardi
Last Changed Rev: 347526
Last Changed Date: 2026-02-20 10:46:08 +1100 (Fri, 20 Feb 2026)

and re-tested. Results are in

[pcl851@gadi-login-07 u-dq819.ozone-pi-mean]$ tree /g/data/${PROJECT}/${USER}/CMIP7/esm1p6_ancil/2026.02.20
/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.02.20
└── modern
    ├── historical
    │   └── forcing
    │       └── global.N96
    │           └── 2026.02.20
    │               └── ozone_1849_2023_cmip7.anc
    ├── pre-industrial
    │   └── forcing
    │       └── global.N96
    │           └── 2026.02.20
    │               └── ozone_1850_cmip7.anc
    └── pre-industrial-mean
        └── forcing
            └── global.N96
                └── 2026.02.20
                    └── ozone_1850_1870_mean_cmip7.anc

13 directories, 3 files

@penguian penguian marked this pull request as ready for review February 19, 2026 23:51
@MartinDix
Copy link
Collaborator

The file headers look right but there's something a bit odd about the time values in the field headers. It looks like they've come from a 360 day calendar version somehow?

It probably won't affect the model itself, but iris interprets this file as having a 360 day calendar which messes up producing plots of comparisons with the ESM1.5 ozone

mule-pumf /g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.02.20/modern/historical/forcing/global.N96/2026.02.20/ozone_1849_2023_cmip7.anc
...
%%%%%%%%%%%%%%%%%%
* Field 1/79800  *
%%%%%%%%%%%%%%%%%%
  (1) lbyr     :                   1848
  (2) lbmon    :                     12
  (3) lbdat    :                     30
  (4) lbhr     :                      0
  (5) lbmin    :                      0
  (6) lbsec    :                      0
  (7) lbyrd    :                   1849
  (8) lbmond   :                      1
  (9) lbdatd   :                     30

c.f.

mule-pumf /g/data/tm70/pcl851/CMIP7/esm16_ancil/modern/historical/atmosphere/aerosol/global.N96/2025.11.25/scycl_1849_2022_cmip7.anc
...
%%%%%%%%%%%%%%%%%
* Field 1/6264  *
%%%%%%%%%%%%%%%%%
  (1) lbyr     :                 1849
  (2) lbmon    :                    1
  (3) lbdat    :                    1
  (4) lbhr     :                    0
  (5) lbmin    :                    0
  (6) lbsec    :                    0
  (7) lbyrd    :                 1849
  (8) lbmond   :                    2
  (9) lbdatd   :                    1

@penguian
Copy link
Collaborator Author

See #111 The code now sets the calendar to Gregorian and replaces the time bounds. I tested using u-dq819/u-dq819.ozone-pi-mean and output is in

/g/data/tm70/pcl851/CMIP7/esm1p6_ancil/2026.02.26
└── modern
    ├── historical
    │   └── forcing
    │       └── global.N96
    │           └── 2026.02.26
    │               └── ozone_1849_2023_cmip7.anc
    ├── pre-industrial
    │   └── forcing
    │       └── global.N96
    │           └── 2026.02.26
    │               └── ozone_1850_cmip7.anc
    └── pre-industrial-mean
        └── forcing
            └── global.N96
                └── 2026.02.26
                    └── ozone_1850_1870_mean_cmip7.anc

@MartinDix
Copy link
Collaborator

Iris interprets the calendar correctly with the new file.

Comparison with the ESM1.5 ozone looks similar to CMIP7 vs CMIP6 in PCMDI/input4MIPs_CVs#400 (comment)

ozone_series

Copy link
Collaborator

@MartinDix MartinDix left a comment

Choose a reason for hiding this comment

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

Looks good.

@penguian
Copy link
Collaborator Author

penguian commented Mar 2, 2026

OK. I just need to rebase before merging.

penguian added 3 commits March 2, 2026 13:01
* Update ozone code after first tests

* Do not regrid

* Do not use the Gregorian calendar

* Fix a typo in a comment
* Add a PI_mean script for 1850-1870 mean as PI control

* Remove the added 'month' coordinate before saving

* Guess time bounds to ensure that time is contiguous
* Save using the Gregorian calendar

* Try replacing time bounds

* Indent correctly
@penguian penguian merged commit 4dbee77 into main Mar 2, 2026
1 check 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.

Produce Ozone ancillaries for the ACCESS-ESM1.6 piControl experiments

2 participants