|
|
|
# Hands-On ICON data analysis for beginners
|
|
|
|
|
|
|
|
[toc]
|
|
|
|
|
|
|
|
-------------
|
|
|
|
|
|
|
|
## Workshop Schedule
|
|
|
|
|
|
|
|
**Date:** January 18, 2024
|
|
|
|
**Time:** 9:30 AM - 5:00 PM
|
|
|
|
**Location:** Room 002
|
|
|
|
|
|
|
|
**Overview:**
|
|
|
|
This one-day workshop will introduce participants to ICON data analysis, covering data access, variables, grids, plotting, remapping, and analysis techniques.
|
|
|
|
|
|
|
|
**Notes:**
|
|
|
|
- Drinks will be available throughout the workshop.
|
|
|
|
- Participants should bring their laptops and have access to Levante
|
|
|
|
|
|
|
|
|
|
|
|
<details><summary><b> Workshop Agenda </b></summary>
|
|
|
|
|
|
|
|
**09:30 - 09:40 Welcome and Introduction**
|
|
|
|
- Overview of the workshop objectives
|
|
|
|
|
|
|
|
**09:40 - 10:40 Availability and access to ICON**
|
|
|
|
Available ICON Simulations (Ruby & Sapphire)
|
|
|
|
Accessing ICON Data
|
|
|
|
- How to access raw output vs catalogues
|
|
|
|
- Understanding variable outputs
|
|
|
|
|
|
|
|
**10:40 - 10:50 short break**
|
|
|
|
|
|
|
|
**10:50 - 12:00 Grids, plotting, remapping**
|
|
|
|
Working with Grids (native vs healpix)
|
|
|
|
Plotting ICON Data
|
|
|
|
- 2D maps: native grid, healpix, regular
|
|
|
|
- python and command line examples
|
|
|
|
|
|
|
|
Remapping and Interpolation
|
|
|
|
- Techniques for remapping ICON data
|
|
|
|
- Interpolation of atmospheric model levels to pressure levels
|
|
|
|
|
|
|
|
**12:00 - 13:15 Lunch Break**
|
|
|
|
|
|
|
|
**13:15 – 14:45 Model evaluation packages**
|
|
|
|
- Quickplots with pyICON
|
|
|
|
- Climate Variability Diagnostic Package (CVDP)
|
|
|
|
|
|
|
|
**14:45 - 15:00 short break**
|
|
|
|
|
|
|
|
**15:00 - 16:30 2D Bivariate Time Series Analysis**
|
|
|
|
- Correlation, regression, and spectral analysis
|
|
|
|
- Practical applications
|
|
|
|
|
|
|
|
**16:30 - 17:00 Wrap-up and Feedback**
|
|
|
|
- Additional tips and resources
|
|
|
|
- Feedback collection and closing remarks
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> Registered participants </b></summary>
|
|
|
|
|
|
|
|
1) Doseok Lee
|
|
|
|
2) Rolf Schimmer
|
|
|
|
3) Masaki Toda
|
|
|
|
4) Tomas Escaff
|
|
|
|
5) Jiayu Zhang
|
|
|
|
6) Eduardo Moreno-Chamarro
|
|
|
|
7) Thomas Raddatz
|
|
|
|
8) Maria-Jesus Rapanague
|
|
|
|
9) Hongdou Fan
|
|
|
|
10) Katja Lohmann
|
|
|
|
11) Quan Liu
|
|
|
|
12) Danai Filippou
|
|
|
|
13) Jiajun Wu
|
|
|
|
14) Josipa Župani
|
|
|
|
15) Otaiba Yahya
|
|
|
|
16) Dakuan Yu
|
|
|
|
|
|
|
|
Instructors:
|
|
|
|
Dian Putrasahan
|
|
|
|
Florian Ziemen
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Important reference
|
|
|
|
1) Hackthon 2024 (nextGEMS cycle4, EERIE, WarmWorld) [starter pack](https://pad.gwdg.de/nSKolAzGQY2zLz3oOr0QSQ)
|
|
|
|
2) easygems reference: [https://easy.gems.dkrz.de/Processing/index.html](https://easy.gems.dkrz.de/Processing/index.html)
|
|
|
|
3) pyICON
|
|
|
|
- documentation: [https://m300602.gitlab-pages.dkrz.de/pyicon/](https://m300602.gitlab-pages.dkrz.de/pyicon/)
|
|
|
|
- gitlab site: [https://gitlab.dkrz.de/m300602/pyicon](https://gitlab.dkrz.de/m300602/pyicon)
|
|
|
|
|
|
|
|
|
|
|
|
## Available simulations
|
|
|
|
|
|
|
|
### Ruby as of 10.12.2024
|
|
|
|
<details><summary> <b> CMIP7 DECK experiments (ICON-XPP) </b></summary>
|
|
|
|
|
|
|
|
[gitlab DECK info](https://gitlab.dkrz.de/icon/icon-nwp/-/wikis/ICON-Seamless/DECK-Experiments)
|
|
|
|
|
|
|
|
| Simulation (expid) | Project | Resolutions | start date | end date | Location (on Levante) | Contact |
|
|
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
|
|
| slo1826 | CMIP7 - PICTRL | r2b5l130 atmos / r2b7 ocean | 1000-01-01 | 1900-12-31 | /work/mh0287/m211032/Icon/Git\_lev/icon.XPP.20240717/build.intel-hdext/experiments/slo1826 | Stephan Lorenz |
|
|
|
|
| slo1827 | CMIP7 - 4xCO2 | r2b5l130 atmos / r2b7 ocean | 1750-01-01 | 1949-12-31 | /work/mh0287/m211032/Icon/Git\_lev/icon.XPP.20240717/build.intel-hdext/experiments/slo1827 | Stephan Lorenz |
|
|
|
|
| slo1828 | CMIP7 - 1%CO2 | r2b5l130 atmos / r2b7 ocean | 1750-01-01 | 1949-12-31 | /work/mh0287/m211032/Icon/Git\_lev/icon.XPP.20240717/build.intel-hdext/experiments/slo1828 | Stephan Lorenz |
|
|
|
|
| slo1774 | CMIP7 - PICTRL | r2b4l90 atmos / r2b6 ocean | 1000-01-01 | 2100-12-31 | /work/mh0287/m211032/Icon/Git\_lev/icon.XPP.20240717/build.intel-hdint/experiments/slo1774 | Stephan Lorenz |
|
|
|
|
| slo1781 | CMIP7 - 4xCO2 | r2b4l90 atmos / r2b6 ocean | 1750-01-01 | 1949-12-31 | /work/mh0287/m211032/Icon/Git\_lev/icon.XPP.20240717/build.intel-hdint/experiments/slo1781 | Stephan Lorenz |
|
|
|
|
| slo1782 | CMIP7 - 1%CO2 | r2b4l90 atmos / r2b6 ocean | 1750-01-01 | 1949-12-31 | /work/mh0287/m211032/Icon/Git\_lev/icon.XPP.20240717/build.intel-hdint/experiments/slo1782 | Stephan Lorenz |
|
|
|
|
| tvp1826\_001 | CMIP7 - historical | r2b5l130 atmos / r2b7 ocean | 1850-01-01 | 2014-12-31 | /work/mh0287/b364148/Icon/Git\_lev/icon.nwp.hdext.intno/experiments/tvp1826\_001 | Trang Pham |
|
|
|
|
| tvp1826\_002 | CMIP7 - historical | r2b5l130 atmos / r2b7 ocean | 1850-01-01 | 2014-12-31 | /work/mh0287/b364148/Icon/Git\_lev/icon.nwp.hdext.intno/experiments/tvp1826\_002 | Trang Pham |
|
|
|
|
| tvp1826\_003 | CMIP7 - historical | r2b5l130 atmos / r2b7 ocean | 1850-01-01 | 2014-12-31 | /work/mh0287/b364148/Icon/Git\_lev/icon.nwp.hdext.intno/experiments/tvp1826\_003 | Trang Pham |
|
|
|
|
| tvp1774\_001 | CMIP7 - historical | r2b4l90 atmos / r2b6 ocean | 1850-01-01 | 2014-12-31 | /work/mh0287/b364148/Icon/Git\_lev/icon.nwp.hdext.intno/experiments/tvp1774\_001 | Trang Pham |
|
|
|
|
| tvp1774\_002 | CMIP7 - historical | r2b4l90 atmos / r2b6 ocean | 1850-01-01 | 2014-12-31 | /work/mh0287/b364148/Icon/Git\_lev/icon.nwp.hdext.intno/experiments/tvp1774\_002 | Trang Pham |
|
|
|
|
| tvp1774\_003 | CMIP7 - historical | r2b4l90 atmos / r2b6 ocean | 1850-01-01 | 2014-12-31 | /work/mh0287/b364148/Icon/Git\_lev/icon.nwp.hdext.intno/experiments/tvp1774\_003 | Trang Pham |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary> <b> HAMOCC and their counterparts (ICON-XPP) </b></summary>
|
|
|
|
|
|
|
|
| Simulation (expid) | Project | Resolutions | start date | end date | Location (on Levante) | Contact |
|
|
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
|
|
| slo1802 | PICTRL | r2b5l130 atmos / r2b7 ocean | 1300-01-01 | 2299-12-31 | /work/mh0287/m211032/Icon/Git\_lev/icon.XPP.20240717/build.intel-hdext/experiments/slo1802 | Stephan Lorenz |
|
|
|
|
| FC04\_XPPslo1802 | HAMOCC - PICTRL | r2b5l130 atmos / r2b7 ocean | 2350-01-01 | 2384-12-31 | /work/uo1451/m300805/projects/seamless/icon-XPP-20240717/build.intel-hdext/experiments/FC04\_XPPslo1802 | Fatemeh Chegini |
|
|
|
|
| slo1774 | CMIP7 - PICTRL | r2b4l90 atmos / r2b6 ocean | 1000-01-01 | 2100-12-31 | /work/mh0287/m211032/Icon/Git\_lev/icon.XPP.20240717/build.intel-hdint/experiments/slo1774 | Stephan Lorenz |
|
|
|
|
| FC001\_XPPslo1774 | HAMOCC - PICTRL | r2b4l90 atmos / r2b6 ocean | 1450-01-01 | 1499-12-31 | /work/uo1451/m300805/projects/seamless/icon-XPP-20240717/build.intel-hdint/experiments/FC001\_XPPslo1774/ | Fatemeh Chegini |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b>EPOC/ACDC (ICON-Sapphire) </b></summary>
|
|
|
|
|
|
|
|
[**pad**](https://pad.gwdg.de/HmxTo9WPQ1OLtj1jACoYUA)
|
|
|
|
EPOC uses ICON-Sapphire model but hosted under Ruby.
|
|
|
|
|
|
|
|
| Simulation (expid) | Project | Resolutions | start date | end date | Location (on Levante) | Contact |
|
|
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
|
|
| epoc2\_004 | EPOC - SPINUP | r2b8 atmos / r2b9 tele-ocean | 1990-01-01 | 1999-09-30 | /work/bm1313/m211054/epoc2-1/experiments/epoc2\_004/work/run\_\* | Helmuth Haak and Michael Botzet |
|
|
|
|
| epoc2\_010 | EPOC - 1990 CNTL | r2b8 atmos / r2b9 tele-ocean | 1990-01-01 | still running | /work/bm1313/b383127/epoc-icon-2024.10/experiments/epoc2\_010/work/run\_\*/ | Helmuth Haak and Michael Botzet |
|
|
|
|
| epoc2\_0?? | EPOC - historical | r2b8 atmos / r2b9 tele-ocean | | | | Helmuth Haak and Michael Botzet |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b>DRAGON (ICON-XPP) </b></summary>
|
|
|
|
|
|
|
|
[**pad**](https://pad.gwdg.de/\_MTO4v0ARYaYVkVh24MtJw)
|
|
|
|
|
|
|
|
| Simulation (expid) | Project | Resolutions | start date | end date | Location (on Levante) | Contact |
|
|
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
|
|
| hel24312\_r5b7\_ctrl | DRAGON - lowres | r2b5 atmos / r2b7 ocean | 1700-01-01 | 1799-12-31 | /work/mh0033/m211054/projects/icon/seamless/icon-2024.10/build_hdext/experiments/hel24312\_r5b7\_ctrl/outdata/ | Helmuth Haak |
|
|
|
|
| hel24315\_r5b7\_ctrl | DRAGON - lowres | r2b5 atmos / r2b7 ocean | 1700-01-01 | 1799-12-31 | /work/mh0033/m211054/projects/icon/seamless/icon-2024.10/build_hdext/experiments/hel24315\_r5b7\_ctrl/outdata/ | Helmuth Haak |
|
|
|
|
| hel24316\_r5b7\_ctrl | DRAGON - lowres | r2b5 atmos / r2b7 ocean | 1700-01-01 | 1999-12-31 | /work/mh0033/m211054/projects/icon/seamless/icon-2024.10/build_hdext/experiments/hel24316\_r5b7\_ctrl/outdata/ | Helmuth Haak |
|
|
|
|
| hel24317\_r5b7\_ctrl | DRAGON - lowres | r2b5 atmos / r2b7 ocean | 1700-01-01 | 1799-12-31 | /work/mh0033/m211054/projects/icon/seamless/icon-2024.10/build_hdext/experiments/hel24317\_r5b7\_ctrl/outdata/ | Helmuth Haak |
|
|
|
|
| dap010\_r3b7-r2b9 | DRAGON | r3b7 atmos / r2b9 ocean | 1950-01-01 | 1955-02-28 | /work/mh1421/m300466/icon-xpp/icon-2024.10b/build/experiments/dap010\_r3b7-r2b9/ | Dian Putrasahan and Helmuth Haak |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b>OCEmix (ICON-Sapphire) </b></summary>
|
|
|
|
|
|
|
|
These runs uses ICON-Sapphire model, but hosted under Ruby.
|
|
|
|
|
|
|
|
| Simulation (expid) | Project | Resolutions | start date | end date | Location (on Levante) | Contact |
|
|
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
|
|
| mss0008\_r5b8\_ctrl | NextGEMS - ocemix | r2b5 atmos / r2b8 ocean | 1950-01-01 | 2017-12-31 | /work/mh0287/m300731/sensitivity\_exp/icon-2024.07/build/experiments/mss0008\_r5b8\_ctrl/ | Mia Sophie Specht |
|
|
|
|
| mss0009\_r5b8 | NextGEMS - ocemix (ck=0.2) | r2b5 atmos / r2b8 ocean | 1950-01-01 | 2013-12-31 | /work/mh0287/m300731/sensitivity\_exp/icon-2024.07/build/experiments/mss0009\_r5b8 | Mia Sophie Specht |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Sapphire as of MPIM retreat 2024
|
|
|
|
|
|
|
|
Detailed information of ICON-Sapphire simulations can be found [here](https://owncloud.gwdg.de/index.php/apps/onlyoffice/s/rgYtnOROmJkmZRg?fileId=3122041030).
|
|
|
|
|
|
|
|
<details><summary><b>Table of Sapphire projects and simulations </b></summary>
|
|
|
|
|
|
|
|
| Project | Simulations (expid) |
|
|
|
|
|---|---|
|
|
|
|
|nextGEMS cycle4 | ngc4008a; ngc4008; ngc4007; ngc4006; ngc4005 |
|
|
|
|
|nextGEMS cycle3 | ngc3028; ngc3028_bc_land; ngc3542; HAMOCC |
|
|
|
|
| EERIE | erc1011 (v20231106; v20240618); erc1017 (v20231106; v20240618) |
|
|
|
|
| C5 | AMIP_CNTL; AMIP_P4K; AMIP_4CO2 |
|
|
|
|
| PrecipPuzzle | mbe2922; mbe2923; mbe2934; mbe2936; mbe2939 |
|
|
|
|
| nextGEMS cycle5 | ngc5004 |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Data Access via raw output
|
|
|
|
To access raw output, one needs to know the location of the files. Since most Ruby data has not been catalogued yet, we'll access them directly from their output path. Available Ruby simulations and their respective output locations are tabulated [here](#Ruby-as-of-10122024)
|
|
|
|
|
|
|
|
### Command line
|
|
|
|
|
|
|
|
Let's take the example from a CMIP7 experiment, `slo1826`.
|
|
|
|
**Types of output and variables they hold**:
|
|
|
|
```
|
|
|
|
outdir=/work/mh0287/m211032/Icon/Git_lev/icon.XPP.20240717/build.intel-hdext/experiments/slo1826/
|
|
|
|
ls ${outdir}/*_1280*.nc
|
|
|
|
|
|
|
|
cdo vardes slo1826_atm_3d_ml_12800101T000000Z.nc
|
|
|
|
```
|
|
|
|
<details><summary> cdo text dump on variable description </summary>
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/28f33fd4-2d4a-4efd-bdd1-3ab3dc59af0f.png" width="700"/>
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Python
|
|
|
|
Here we take the example from a DRAGON simulation.
|
|
|
|
```python
|
|
|
|
import xarray as xr
|
|
|
|
outdir='/work/mh1421/m300466/icon-xpp/icon-2024.10b/build/experiments/dap010_r3b7-r2b9/'
|
|
|
|
dsa=xr.open_mfdataset(outdir+'dap010_r3b7-r2b9_atm_2d_ml_*.nc')
|
|
|
|
dsa
|
|
|
|
```
|
|
|
|
|
|
|
|
<details><summary> xarray dataset text dump </summary>
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/3cf6b047-8b05-4504-939a-a928fe33df20.png" width="500"/>
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Data Access via Catalogue
|
|
|
|
For catalogues, one does not need to know the location of the data. But you might want to know the name or where the catalogue of interest is located.
|
|
|
|
|
|
|
|
| Project Group | Catalogue |
|
|
|
|
| --- | --- |
|
|
|
|
| Ruby | /home/k/k202134/dumpster/Hackapalooza/tools/cataloging/datasets/main.yaml |
|
|
|
|
| Sapphire | https://data.nextgems-h2020.eu/catalog.yaml (default) |
|
|
|
|
| EERIE | https://raw.githubusercontent.com/eerie-project/intake_catalogues/main/eerie.yaml |
|
|
|
|
|
|
|
|
|
|
|
|
### Command line `query_yaml`
|
|
|
|
One can use `query_yaml` to browse through the catalogue, look into its tree structure, available streams, output variables, possibly find location of output :smirk:, etc. Some details for the usage of `query_yaml` can be found on [easygems webpage](https://easy.gems.dkrz.de/Processing/Intake/query_yaml.html).
|
|
|
|
|
|
|
|
#### To use `query_yaml`, load the necessary modules
|
|
|
|
```bash
|
|
|
|
module use /work/k20200/k202134/hsm-tools/outtake/module
|
|
|
|
module load hsm-tools/unstable
|
|
|
|
```
|
|
|
|
|
|
|
|
#### Designate catalogues
|
|
|
|
```
|
|
|
|
rubycat=/home/k/k202134/dumpster/Hackapalooza/tools/cataloging/datasets/main.yaml
|
|
|
|
sappcat=https://data.nextgems-h2020.eu/catalog.yaml
|
|
|
|
eeriecat=https://raw.githubusercontent.com/eerie-project/intake_catalogues/main/eerie.yaml
|
|
|
|
```
|
|
|
|
|
|
|
|
#### `query_yaml` commands to play with
|
|
|
|
|
|
|
|
> **Ruby**
|
|
|
|
|
|
|
|
- `query_yaml -c ${rubycat}` will list a hierarchy of simulations (data tree structure included) that is on the specified catalogue.
|
|
|
|
|
|
|
|
<details><summary>text dump snippet from "query_yaml -c ${rubycat}" </summary>
|
|
|
|
|
|
|
|
```
|
|
|
|
cmip7
|
|
|
|
slo1774
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_fx
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
slo1781
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
slo1782
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
slo1826
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_fx
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
slo1827
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
slo1828
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
tvp1774_001
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_hfreq_inst_ml
|
|
|
|
atm_hfreq_mean_ml
|
|
|
|
atm_mon
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
tvp1774_002
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_hfreq_inst_ml
|
|
|
|
atm_hfreq_mean_ml
|
|
|
|
atm_mon
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
tvp1774_003
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_hfreq_inst_ml
|
|
|
|
atm_hfreq_mean_ml
|
|
|
|
atm_mon
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
tvp1826_001
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_day_pl
|
|
|
|
atm_hfreq_inst_ml
|
|
|
|
atm_hfreq_mean_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_day_pl
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
tvp1826_002
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_day_pl
|
|
|
|
atm_hfreq_inst_ml
|
|
|
|
atm_hfreq_mean_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_day_pl
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
tvp1826_003
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_day_pl
|
|
|
|
atm_hfreq_inst_ml
|
|
|
|
atm_hfreq_mean_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_day_pl
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
dragon
|
|
|
|
dap010_r3b7-r2b9
|
|
|
|
atm_2d_hfq
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
lnd_mon
|
|
|
|
oce_kin
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
oce_qps
|
|
|
|
hel24282_r3b7_ctrl
|
|
|
|
hel24312_r5b7_ctrl
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
oce_fx
|
|
|
|
oce_mon
|
|
|
|
oce_qps
|
|
|
|
hel24315_r5b7_ctrl
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
oce_fx
|
|
|
|
oce_mon
|
|
|
|
oce_qps
|
|
|
|
hel24316_r5b7_ctrl
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
oce_fx
|
|
|
|
oce_mon
|
|
|
|
oce_qps
|
|
|
|
hel24317_r5b7_ctrl
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
oce_fx
|
|
|
|
oce_mon
|
|
|
|
oce_qps
|
|
|
|
epoc
|
|
|
|
epoc2_004
|
|
|
|
epoc2_010
|
|
|
|
epoc2_0??
|
|
|
|
hamocc
|
|
|
|
FC001_XPPslo1774
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hamocc
|
|
|
|
hamocc_2d_tendencies
|
|
|
|
hamocc_EU_tendencies
|
|
|
|
hamocc_monitor
|
|
|
|
hamocc_sediment
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
FC04_XPPslo1802
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hamocc
|
|
|
|
hamocc_2d_tendencies
|
|
|
|
hamocc_3d_tendencies
|
|
|
|
hamocc_EU_tendencies
|
|
|
|
hamocc_monitor
|
|
|
|
hamocc_sediment
|
|
|
|
hd_meanflow
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
oce_ssh
|
|
|
|
oce_zos
|
|
|
|
slo1774
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_fx
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
slo1802
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
jsb_2d
|
|
|
|
lnd_mon
|
|
|
|
oce_dbg
|
|
|
|
oce_def
|
|
|
|
oce_ice
|
|
|
|
oce_moc
|
|
|
|
oce_mon
|
|
|
|
oce_ssh
|
|
|
|
oce_zos
|
|
|
|
ocemix
|
|
|
|
mss0008_r5b8_ctrl
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
oce_flx
|
|
|
|
oce_mon
|
|
|
|
oce_qps
|
|
|
|
oce_tke
|
|
|
|
mss0009_r5b8
|
|
|
|
atm_2d_ml
|
|
|
|
atm_3d_ml
|
|
|
|
atm_mon
|
|
|
|
hd_meanflow
|
|
|
|
oce_flx
|
|
|
|
oce_mon
|
|
|
|
oce_qps
|
|
|
|
oce_tke
|
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
- `query_yaml -c ${rubycat} cmip7 slo1826 atm_2d_ml` gives list of variable in stream
|
|
|
|
|
|
|
|
<details><summary>text dump snippet from "query_yaml -c ${rubycat} cmip7 slo1826 atm_2d_ml" </summary>
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/6d0876ee-82b2-4c01-81c0-c92ccf3535c8.png" width="500"/>
|
|
|
|
</details>
|
|
|
|
|
|
|
|
- `query_yaml -c ${rubycat} cmip7 slo1826 atm_2d_ml --var t_2m --cdo` gives path to data
|
|
|
|
|
|
|
|
> **Sapphire**
|
|
|
|
- `query_yaml -c ${sappcat} ICON` will list only ICON-Sapphire simulations that are part of the general catalogue. Note that this is from NextGEMS cycle3 onwards.
|
|
|
|
|
|
|
|
<details><summary>text dump snippet from "query_yaml -c ${sappcat} ICON" </summary>
|
|
|
|
|
|
|
|
```
|
|
|
|
ICON
|
|
|
|
ngc4008a (time, zoom)
|
|
|
|
ngc4008 (time, zoom)
|
|
|
|
ngc4007 (time, zoom)
|
|
|
|
ngc4006 (time, zoom)
|
|
|
|
ngc4005 (time, zoom)
|
|
|
|
ngc3028 (time, zoom)
|
|
|
|
ngc3028_bc_land
|
|
|
|
ngc3026_WILL_BE_DELETED (time, zoom)
|
|
|
|
HAMOCC
|
|
|
|
HEALPix (zoom)
|
|
|
|
OneDegree
|
|
|
|
ngc3542
|
|
|
|
atm_2d_1h_inst (variables)
|
|
|
|
atm_2d_1h_mean (variables)
|
|
|
|
......
|
|
|
|
erc1011
|
|
|
|
v20231106
|
|
|
|
atmos
|
|
|
|
gr025
|
|
|
|
2d_daily_max (variables)
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
......
|
|
|
|
native
|
|
|
|
2d_1h_inst (variables)
|
|
|
|
2d_1h_mean (variables)
|
|
|
|
......
|
|
|
|
ocean
|
|
|
|
gr025
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
2d_daily_mean_vertical-remap025 (variables)
|
|
|
|
......
|
|
|
|
native
|
|
|
|
2d_grid
|
|
|
|
3d_grid
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
......
|
|
|
|
land
|
|
|
|
gr025
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
2d_monthly_mean (variables)
|
|
|
|
native
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
2d_monthly_mean (variables)
|
|
|
|
v20240618
|
|
|
|
atmos
|
|
|
|
native
|
|
|
|
2d_1h_inst (variables)
|
|
|
|
2d_1h_mean (variables)
|
|
|
|
......
|
|
|
|
ocean
|
|
|
|
native
|
|
|
|
2d_grid
|
|
|
|
3d_grid
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
land
|
|
|
|
native
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
2d_monthly_mean (variables)
|
|
|
|
erc1017
|
|
|
|
v20231106
|
|
|
|
atmos
|
|
|
|
native
|
|
|
|
2d_monthly_mean (variables)
|
|
|
|
atm_mon (variables)
|
|
|
|
......
|
|
|
|
ocean
|
|
|
|
native
|
|
|
|
2d_monthly_mean (variables)
|
|
|
|
moc_monthly_mean (variables)
|
|
|
|
......
|
|
|
|
land
|
|
|
|
native
|
|
|
|
2d_monthly_mean (variables)
|
|
|
|
tl_monthly_mean (variables)
|
|
|
|
v20240618
|
|
|
|
atmos
|
|
|
|
gr025
|
|
|
|
2d_daily_max (variables)
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
......
|
|
|
|
native
|
|
|
|
2d_daily_max (variables)
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
......
|
|
|
|
ocean
|
|
|
|
gr025
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
2d_daily_mean_vertical-remap025 (variables)
|
|
|
|
......
|
|
|
|
native
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
2d_daily_square (variables)
|
|
|
|
......
|
|
|
|
land
|
|
|
|
native
|
|
|
|
2d_daily_mean (variables)
|
|
|
|
2d_monthly_mean (variables)
|
|
|
|
mon (variables)
|
|
|
|
C5
|
|
|
|
AMIP_CNTL (grid, time, zoom)
|
|
|
|
AMIP_P4K (grid, time, zoom)
|
|
|
|
AMIP_4CO2 (grid, time, zoom)
|
|
|
|
PrecipPuzzle
|
|
|
|
mbe2922 (time)
|
|
|
|
mbe2923 (time)
|
|
|
|
mbe2934 (time)
|
|
|
|
mbe2936 (time)
|
|
|
|
mbe2939 (time)
|
|
|
|
ngc5004 (time)
|
|
|
|
|
|
|
|
```
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
- `query_yaml -c ${sappcat} ICON ngc3028` provides output frequency, zoom resolution availability and variables
|
|
|
|
|
|
|
|
<details><summary>text dump snippet from "query_yaml -c ${sappcat} ICON ngc3028" </summary>
|
|
|
|
|
|
|
|
```
|
|
|
|
Choices for this dataset:
|
|
|
|
name description type allowed default
|
|
|
|
0 time time resolution of the dataset str [PT30M, PT3H, P1D] P1D
|
|
|
|
1 zoom zoom resolution of the dataset int [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 0
|
|
|
|
|
|
|
|
Variables:
|
|
|
|
a_tracer_v_to (time, depth_half, cell) sea water vertical diffusivity
|
|
|
|
atmos_fluxes_frshflux_evaporation (time, cell)
|
|
|
|
atmos_fluxes_frshflux_precipitation (time, cell)
|
|
|
|
......
|
|
|
|
```
|
|
|
|
</details>
|
|
|
|
|
|
|
|
- `query_yaml -c ${sappcat} ICON ngc3028 --search_args time=PT3H zoom=5` lists the variables available available at 3-hourly intervals and on zoom 5
|
|
|
|
|
|
|
|
- `query_yaml -c ${sappcat} ICON ngc3028 --search_args time=PT3H zoom=5 --var=hfls --uri --cdo` gives the path for latent heat flux at 3-hourly intervals and on zoom 5
|
|
|
|
|
|
|
|
> **EERIE**
|
|
|
|
- `query_yaml -c ${eeriecat} dkrz disk model-output icon-esm-er eerie-control-1950 v20231106 ocean native 2d_monthly_mean` gives list of variable in stream
|
|
|
|
|
|
|
|
<details><summary>text dump snippet from "query_yaml -c ${eeriecat} dkrz disk model-output icon-esm-er eerie-control-1950 v20231106 ocean native 2d_monthly_mean" </summary>
|
|
|
|
|
|
|
|
```
|
|
|
|
Choices for this dataset:
|
|
|
|
Variables:
|
|
|
|
Qbot (time, lev, ncells) Conductive heat flux at ice-ocean interface
|
|
|
|
Qtop (time, lev, ncells) Energy flux available for surface melting
|
|
|
|
Wind_Speed_10m (time, ncells) Wind Speed at 10m height
|
|
|
|
......
|
|
|
|
```
|
|
|
|
</details>
|
|
|
|
|
|
|
|
- `query_yaml -c ${eeriecat} dkrz disk model-output icon-esm-er eerie-control-1950 v20231106 atmos native 2d_monthly_mean --var tas --uri --cdo` gives path to data
|
|
|
|
- [EERIE data access on shell environment](https://pad.gwdg.de/nSKolAzGQY2zLz3oOr0QSQ?both#EERIE-data-access-on-shell-environment-for-cdo-operations) from hackathon starter pack
|
|
|
|
|
|
|
|
|
|
|
|
### Python (Sapphire)
|
|
|
|
[nextGEMS data access via intake](https://pad.gwdg.de/nSKolAzGQY2zLz3oOr0QSQ?both#NextGEMS-data-access-via-intake) from hackathon starter pack
|
|
|
|
|
|
|
|
[EERIE data access via intake](https://pad.gwdg.de/nSKolAzGQY2zLz3oOr0QSQ?both#EERIE-data-access-via-intake) from hackathon starter pack
|
|
|
|
|
|
|
|
Simple example:
|
|
|
|
```python
|
|
|
|
import intake
|
|
|
|
|
|
|
|
#For nextGEMS
|
|
|
|
cat = intake.open_catalog("https://data.nextgems-h2020.eu/catalog.yaml")
|
|
|
|
ds = cat.ICON.ngc3028.to_dask()
|
|
|
|
ds
|
|
|
|
|
|
|
|
#For EERIE
|
|
|
|
eerie_cat=intake.open_catalog("https://raw.githubusercontent.com/eerie-project/intake_catalogues/main/eerie.yaml")
|
|
|
|
model = 'icon-esm-er'
|
|
|
|
expid = 'eerie-control-1950'
|
|
|
|
gridspec = 'native'
|
|
|
|
realm='ocean'
|
|
|
|
cat_data=eerie_cat['dkrz.disk.model-output'][model][expid][realm][gridspec]
|
|
|
|
print(list(cat_data))
|
|
|
|
dso = cat_data['2d_monthly_mean'].to_dask()
|
|
|
|
dso
|
|
|
|
```
|
|
|
|
|
|
|
|
## Variable output for ICON
|
|
|
|
|
|
|
|
This is just a sample of the variables that are outputted from ICON. It is *NOT* a complete set!
|
|
|
|
|
|
|
|
<details><summary><b> ICON Ocean </b></summary>
|
|
|
|
|
|
|
|
ICON-XPP and ICON-Sapphire uses the same model version of ICON Ocean, hence the same variable output names are used.
|
|
|
|
|
|
|
|
|VariableName|VariableDescription|Units|
|
|
|
|
|------------|-------------------|-----|
|
|
|
|
|ssh|Surface elevation at cell center|m|
|
|
|
|
|zos|Zstar surface elevation at cell center|m|
|
|
|
|
|to|Sea water potential temperature|$^o$C|
|
|
|
|
|so|Sea water salinity|psu|
|
|
|
|
|u|U zonal velocity component|m/s|
|
|
|
|
|v|V meridional velocity component|m/s|
|
|
|
|
|u_vint|Barotropic zonal velocity|m*m/s|
|
|
|
|
|v_vint|Barotropic meridional velocity|m*m/s|
|
|
|
|
|w|Vertical velocity at cells|m/s|
|
|
|
|
|w_deriv|Physical vertical velocity at cells for zstar|m/s|
|
|
|
|
|mass_flux|Mass flux at edges|kg/s|
|
|
|
|
|verticallyTotal_mass_flux_e|Vertically integrated mass flux at edges|kg/s|
|
|
|
|
|stretch_c|Zstar surface stretch at cell center|1|
|
|
|
|
|rho|Sea water in-situ density|kg/m$^3$|
|
|
|
|
|rhopot|Sea water potential density|kg/m$^3$|
|
|
|
|
|mld|Mixed layer depth|m|
|
|
|
|
|mlotst|Ocean mixed layer thickness defined by sigma_t|m|
|
|
|
|
|mlotst10|Ocean mixed layer thickness defined by sigma_t at 10m|m|
|
|
|
|
|Wind_Speed_10m|Wind Speed at 10m height|m/s|
|
|
|
|
|zos_square|Square of sea surface height|m$^2$|
|
|
|
|
|mlotstsq|Square of ocean mixed layer thickness defined by sigma_t|m$^2$|
|
|
|
|
|mlotst10sq|Square of ocean mixed layer thickness defined by sigma_t at 10m|m$^2$|
|
|
|
|
|vort|vorticity|1/s|
|
|
|
|
|tke|Turbulent kinetic energy|m$^2$/s$^2$|
|
|
|
|
|A_veloc_v|Vertical velocity viscosity |m$^2$/s|
|
|
|
|
|A_tracer_v_to|vertical diffusivity of tracer (sea water potential temperature)|kg/kg|
|
|
|
|
| age_tracer | age tracer | s |
|
|
|
|
| | | |
|
|
|
|
|**isopycnal layer variables** | | |
|
|
|
|
|diapycnal_velocity | diapycnal velocity |m/s |
|
|
|
|
|layer_thickness_e | thickness of isopycnal layer on edges | m |
|
|
|
|
|mass_flux_lay | mass flux in isopycnal layer |m$^2$/s |
|
|
|
|
| | | |
|
|
|
|
|**Eddy variables** | | |
|
|
|
|
|w_prismcenter|vertical velocity at prism center|m s-1|
|
|
|
|
|sigma0|density anomaly|kg m-3|
|
|
|
|
|hflR|product of net heatflux and density|kg2ms-3|
|
|
|
|
|fwR|product of fw flux and density|kg m-2s-1|
|
|
|
|
|tauxu|product of x windstress and u-velocity|Pa m s-1|
|
|
|
|
|tauyv|product of y windstress and v-velocity|Pa m s-1|
|
|
|
|
|uT|product of zonal velocity and temperature|ms-1K|
|
|
|
|
|uS|product of zonal velocity and salinity|m s-1 kg m-3|
|
|
|
|
|uR|product of zonal velocity and density|ms-1 kg m-3|
|
|
|
|
|uu|square of zonal velocity|m2s-2|
|
|
|
|
|vT|product of meridional velocity and temperature|ms-1K|
|
|
|
|
|vS|product of meridional velocity and salinity|m s-1 kg m-3|
|
|
|
|
|vR|product of meridional velocity and density|ms-1 kg m-3|
|
|
|
|
|vv|square of meridional velocity|m2s-2|
|
|
|
|
|wT|product of vertical velocity and temperature|ms-1K|
|
|
|
|
|wS|product of vertical velocity and salinity|m s-1 kg m-3|
|
|
|
|
|wR|product of vertical velocity and density|ms-1 kg m-3|
|
|
|
|
|ww|square of vertical velocity|m2s-2|
|
|
|
|
|RR|square of density|kg2m-6|
|
|
|
|
|SS|square of salinity|kg2 m-6|
|
|
|
|
|TT|square of temperature|K2|
|
|
|
|
|uv|product of zonal velocity and meridional velocity|m2s-2|
|
|
|
|
|uw|product of zonal velocity and vertical velocity|m2 s-2|
|
|
|
|
|vw|product of meridional velocity and vertical velocity|m2 s-2|
|
|
|
|
| | | |
|
|
|
|
|**sea-ice variables** | | |
|
|
|
|
|ice_u|Zonal velocity|m/s|
|
|
|
|
|ice_v|Meridional velocity|m/s|
|
|
|
|
|sic|Fraction of ocean covered by sea ice| |
|
|
|
|
|sit|Sea ice thickness|m|
|
|
|
|
|hi|Ice thickness|m|
|
|
|
|
|hs|Snow thickness|m|
|
|
|
|
|conc|Ice concentration in each ice class||
|
|
|
|
|draftave|Average water equivalent of ice and snow on grid area|m|
|
|
|
|
| | | |
|
|
|
|
|**flux related variables** | | |
|
|
|
|
|atmos_fluxes_FrshFlux_Evaporation| evaporative flux | |
|
|
|
|
|atmos_fluxes_FrshFlux_Precipitation| precipitation flux | |
|
|
|
|
|atmos_fluxes_FrshFlux_Runoff| river runoff | |
|
|
|
|
|atmos_fluxes_FrshFlux_Snowfall| snow precipitation flux| |
|
|
|
|
|atmos_fluxes_HeatFlux_Latent| surface latent heat flux | W/m$^2$ |
|
|
|
|
|atmos_fluxes_HeatFlux_LongWave| net surface longwave flux| W/m$^2$ |
|
|
|
|
|atmos_fluxes_HeatFlux_Sensible| surface sensible heat flux| W/m$^2$ |
|
|
|
|
|atmos_fluxes_HeatFlux_ShortWave| net surface shortwave flux | W/m$^2$|
|
|
|
|
|atmos_fluxes_HeatFlux_Total| net surface heat flux | W/m$^2$|
|
|
|
|
|atmos_fluxes_stress_x| zonal wind stress (over seaice?) | N/m$^2$|
|
|
|
|
|atmos_fluxes_stress_xw| zonal wind stress over water | N/m$^2$|
|
|
|
|
|atmos_fluxes_stress_y| meridional wind stress (over seaice?) | N/m$^2$|
|
|
|
|
|atmos_fluxes_stress_yw| meridional wind stress over water | N/m$^2$ |
|
|
|
|
|Qtop|Energy flux available for surface melting|W/m$^2$|
|
|
|
|
|Qbot|Conductive heat flux at ice-ocean interface|W/m$^2$|
|
|
|
|
|condep|Convection depth index|1|
|
|
|
|
|heatOceI|Heat flux to ocean from the ice growth|W/m$^2$|
|
|
|
|
|heatOceW|Heat flux to ocean from the atmosphere|W/m$^2$|
|
|
|
|
|heat_content_liquid_water|Heat content liquid water|J/m$^2$|
|
|
|
|
|heat_content_snow|Heat content snow|Jm$^2$|
|
|
|
|
|heat_content_seaice|Heat content sea ice|J/m$^2$|
|
|
|
|
|heat_content_total|Heat content total|J/m$^2$|
|
|
|
|
|swsum|Swsum|1|
|
|
|
|
|heatabs|Heat absorption|J/m$^2$|
|
|
|
|
|heatflux_rainevaprunoff|Heat flux rain evaporation runoff|W/m$^2$|
|
|
|
|
|swrab|Swrab|1|
|
|
|
|
|rsdoabsorb|Net rate of absorption of shortwave energy in ocean layer|W/m$^2$|
|
|
|
|
| | | |
|
|
|
|
| **MOC variables** | | |
|
|
|
|
|global_moc|Global meridional overturning|kg/s|
|
|
|
|
|atlantic_moc|Atlantic meridional overturning|kg/s|
|
|
|
|
|pacific_moc|Indo-Pacific meridional overturning|kg/s|
|
|
|
|
|global_hfl|Global implied heat transport|W|
|
|
|
|
|atlantic_hfl|Atlantic implied heat transport|W|
|
|
|
|
|pacific_hfl|Indo-Pacific implied heat transport|W|
|
|
|
|
|global_wfl|Global implied freshwater transport|m$^3$/s|
|
|
|
|
|atlantic_wfl|Atlantic implied freshwater transport|m$^3$/s|
|
|
|
|
|pacific_wfl|Indo-Pacific implied freshwater transport|m$^3$/s|
|
|
|
|
|global_hfbasin|Global northward ocean heat transport|W|
|
|
|
|
|atlantic_hfbasin|Atlantic northward ocean heat transport|W|
|
|
|
|
|pacific_hfbasin|Indo-Pacific northward ocean heat transport|W|
|
|
|
|
|global_sltbasin|Global northward ocean salt transport|kg/s|
|
|
|
|
|atlantic_sltbasin|Atlantic northward ocean salt transport|kg/s|
|
|
|
|
|pacific_sltbasin|Indo-Pacific northward ocean salt transport|kg/s|
|
|
|
|
| | | |
|
|
|
|
| **monitoring variables** | | |
|
|
|
|
|total_salt|Total salt|kg|
|
|
|
|
|total_saltinseaice|Total salt in sea ice|kg|
|
|
|
|
|total_saltinliquidwater|Total salt in liquid water|kg|
|
|
|
|
|amoc26n|AMOC at 26N|kg/s|
|
|
|
|
|kin_energy_global|Kinetic energy|J|
|
|
|
|
|pot_energy_global|Potential energy|J|
|
|
|
|
|total_energy_global|Total energy|J|
|
|
|
|
|ssh_global|SSH global|m|
|
|
|
|
|sst_global|Global mean sea surface temperature|C|
|
|
|
|
|sss_global|Global mean sea surface salinity|kg/m$^3$|
|
|
|
|
|potential_enstrophy_global|Potential enstrophy|m$^2$/s$^2$|
|
|
|
|
|HeatFlux_Total_global|Total heat flux|W/m$^2$|
|
|
|
|
|FrshFlux_Precipitation_global|Freshwater flux precipitation|m/s|
|
|
|
|
|FrshFlux_SnowFall_global|Freshwater flux snowfall|m/s|
|
|
|
|
|FrshFlux_Evaporation_global|Freshwater flux evaporation|m/s|
|
|
|
|
|FrshFlux_Runoff_global|Freshwater flux runoff|m/s|
|
|
|
|
|FrshFlux_VolumeIce_global|Freshwater flux volume ice|m/s|
|
|
|
|
|FrshFlux_TotalOcean_global|Freshwater flux total ocean|m/s|
|
|
|
|
|FrshFlux_TotalIce_global|Freshwater flux total ice|m/s|
|
|
|
|
|FrshFlux_VolumeTotal_global|Freshwater flux volume total|m/s|
|
|
|
|
|totalsnowfall_global|Total snowfall|m/s|
|
|
|
|
|ice_volume_nh|Ice volume Northern Hemisphere|km$^3$|
|
|
|
|
|ice_volume_sh|Ice volume Southern Hemisphere|km$^3$|
|
|
|
|
|ice_extent_nh|Ice extent Northern Hemisphere|km$^2$|
|
|
|
|
|ice_extent_sh|Ice extent Southern Hemisphere|km$^2$|
|
|
|
|
|LabrSea_Conv|Labrador Sea convection|m|
|
|
|
|
|global_heat_content|Global heat content|J|
|
|
|
|
|global_heat_content_solid|Global heat content solid|J|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> ICON HAMOCC </b></summary>
|
|
|
|
|
|
|
|
With the same model version of ICON Ocean comes the same OBGC model, HAMOCC, thus the same variable output names are used.
|
|
|
|
|
|
|
|
|VariableName|VariableDescription|Units|
|
|
|
|
|------------|-------------------|-----|
|
|
|
|
|hi|hydrogen ion concentration|kmol m-3|
|
|
|
|
|co3|carbonate ion concentration|kmol m-3|
|
|
|
|
|dissic|DIC concentration|kmolP m-3|
|
|
|
|
|talk|alkalinity|kmol m-3|
|
|
|
|
|po4|phosphate concentration|kmolP m-3|
|
|
|
|
|no3|Nitrate concentration|kmolP m-3|
|
|
|
|
|n2|gaseous nitrogen concentration|kmolN2 m-3|
|
|
|
|
|phyp|phytoplankton concentration|kmolP m-3|
|
|
|
|
|zoop|zooplankton concentration|kmolP m-3|
|
|
|
|
|phydiaz|cyanobacteria concentration|kmolP m-3|
|
|
|
|
|o2|oxygen concentration|kmol O2 m-3|
|
|
|
|
|si|silicate concentration|kmolP m-3|
|
|
|
|
|dissoc|DOC concentration|kmolP m-3|
|
|
|
|
|n2o|N2O concentration|kmolP m-3|
|
|
|
|
|det|POC concentration|kmolP m-3|
|
|
|
|
|dfe|dissolved iron concentration|kmolFe m-3|
|
|
|
|
|dmso|dimethylsulfide concentration|kmol S m-3|
|
|
|
|
|h2s|H2S alkalinity concentration|kmol m-3|
|
|
|
|
|agesc|linear age||
|
|
|
|
|caco3|calcium carbonate shells|kmolP m-3|
|
|
|
|
|bsi|opal shells|kmol Si m-3|
|
|
|
|
|fdust|Dust concentration|kmol m-3|
|
|
|
|
|co2flux|co2 flux (positive upward)|kmol C m-2 s-1|
|
|
|
|
|pco2|co2 ocean partical pressure|ppm|
|
|
|
|
|orginp|organic input|check|
|
|
|
|
|silinp|silicate input|check|
|
|
|
|
|calinp|calc input|check|
|
|
|
|
|o2flux|o2 flux|kmol O m-2 s-1|
|
|
|
|
|n2flux|n2 flux|kmol N m-2 s-1|
|
|
|
|
|n2oflux|n2o flux|kmol N m-2 s-1|
|
|
|
|
|n2fixdiag|diagnostic n fixation|kmol N m-2 s-1|
|
|
|
|
|coex90|OM flux at 90 m|kmol P m-2 s-1|
|
|
|
|
|calex90|Calc flux at 90 m|kmol C m-2 s-1|
|
|
|
|
|opex90|Opal flux at 90 m|kmol Si m-2 s-1|
|
|
|
|
|coex1000|OM flux at 1000 m|kmol P m-2 s-1|
|
|
|
|
|opex1000|Opal flux at 1000 m|kmol Si m-2 s-1|
|
|
|
|
|calex1000|Calc flux at 1000 m|kmol C m-2 s-1|
|
|
|
|
|coex2000|OM flux at 2000 m|kmol P m-2 s-1|
|
|
|
|
|opex2000|Opal flux at 2000 m|kmol Si m-2 s-1|
|
|
|
|
|calex2000|Calc flux at 2000 m|kmol C m-2 s-1|
|
|
|
|
|o2min|mole concentration of dissolved molecular oxygen in seawater at shallowest local minimum in vertical profile|mol m-3|
|
|
|
|
|zo2min|depth at shallowest local minimum in vertical profile of mole concentration of dissolved molecular oxygen in sea water|m|
|
|
|
|
|bacfa|bacterial decomposition of DOC|kmolP m-3 s-1|
|
|
|
|
|sulfat_red|sulfate reduction|kmolP m-3 s-1|
|
|
|
|
|remin|aerob detritus remineralization|kmolP m-3 s-1|
|
|
|
|
|denit|denitrification|kmolP m-3 s-1|
|
|
|
|
|delsil|opal production|kmol Si m-3 s-1|
|
|
|
|
|delcar|calcium carbonate production|kmol C m-3 s-1|
|
|
|
|
|aou|apparent O2 utilisation||
|
|
|
|
|NPP|net primary production|kmolP m-3 s-1|
|
|
|
|
|n2_fixation|n fixation|kmol N2 m-3 s-1|
|
|
|
|
|export|\_export\_ variable (ecan*zoomor etc)|kmol P m-3 s-1|
|
|
|
|
|pho_cya|total cyanobacteria growth|kmol P m-3 s-1|
|
|
|
|
|cya_loss|cyanobacteria dying|kmol P m-3 s-1|
|
|
|
|
|graz|zooplankton grazing|kmol P m-3 s-1|
|
|
|
|
|HAMOCC_remin_via_grazer|remineralization_via_grazer|kmol P m-3 s-1|
|
|
|
|
|exud_phy|phytoplankton exudation|kmol P m-3 s-1|
|
|
|
|
|exud_zoo|zooplankton exudation|kmol P m-3 s-1|
|
|
|
|
|zoomor|zooplankton mortality|kmol P m-3 s-1|
|
|
|
|
|phymor|phytoplankton mortality|kmol P m-3 s-1|
|
|
|
|
|phyplim|P_limitation of PP||
|
|
|
|
|phyflim|Fe limitation of PP||
|
|
|
|
|phynlim|N_limitation of PP||
|
|
|
|
|cyaTlim|Temp_limitation of cyanobacteria growth||
|
|
|
|
|cyaLlim|Light_limitation of cyanobacteria growth||
|
|
|
|
|cyaPlim|P_limitation of cyanobacteria growth||
|
|
|
|
|cyaFlim|Fe_limitation of cyanobacteria growth||
|
|
|
|
| | | |
|
|
|
|
| **monitoring & sediment variables** | | |
|
|
|
|
|global_primary_production|global net_npp|GtC yr-1|
|
|
|
|
|global_zooplankton_grazing|global zooplankton grazing|GtC yr-1|
|
|
|
|
|global_OM_export_at_90m|global_om_export_at_90m|GtCyr-1|
|
|
|
|
|global_calc_export_at_90m|global_calc_export_at_90m|GtCyr-1|
|
|
|
|
|global_opal_export_at_90m|global_opal_export_at_90m|kmol Si s-1|
|
|
|
|
|global_opal_production|global opal production|kmol Si s-1|
|
|
|
|
|global_caco3_production|global caco3 production|GtC yr-1|
|
|
|
|
|global_net_co2_flux|global net_co2_flux|GtC yr-1|
|
|
|
|
|global_surface_alk|global_surface_alkalinity|kmol m-3|
|
|
|
|
|global_surface_dic|global surface dissolved inorganic carbon|kmol C m-3|
|
|
|
|
|global_remin_via_grazer|global remineraliation via grazer|GtC yr-1|
|
|
|
|
|global_exudation_phytoplankton|global phytoplankton exudation|GtC yr-1|
|
|
|
|
|global_phytoplankton_dying|global phytoplankton dying|GtC yr-1|
|
|
|
|
|bacterial_activity|EU_bacterial_activity|GtC yr-1|
|
|
|
|
|global_exudation_zooplankton|global zooplankton exudation|GtC yr-1|
|
|
|
|
|global_zooplankton_dying|global_zooplankton_dying|GtC yr-1|
|
|
|
|
|N2_fixation|global N2 fixation|TgN yr-1|
|
|
|
|
|WC_denit|global watern column denitrification|TgN yr-1|
|
|
|
|
|global_npp_cya|global annual primary production of cyanobacteria|GtC yr-1|
|
|
|
|
|Aerob_remin_of_detritus|Aerob_remineralization_of_detritus|GtC yr-1|
|
|
|
|
|SED_denit|Sediment_denitrification|TgN yr-1|
|
|
|
|
|global_cya_loss_det|Global cyanobacteria loss to detritus|GtC yr-1|
|
|
|
|
|global_cya_loss_doc|Global cyanobacteria loss to DOC|GtC yr-1|
|
|
|
|
|global_surface_phosphate|global_surface_phosphate|kmol m-3|
|
|
|
|
|global_surface_silicate|global_surface_silicate|kmol m-3|
|
|
|
|
|global_surface_nitrate|global_surface_nitrate|kmol m-3|
|
|
|
|
|global_zalkn2|global H+ compensation for N2 production/fixation|kmol|
|
|
|
|
|global_OM_export_at_1000m|global_om_export_at_1000m|GtCyr-1|
|
|
|
|
|global_calc_export_at_1000m|global_calc_export_at_1000m|GtCyr-1|
|
|
|
|
|global_opal_export_at_1000m|global_opal_export_at_1000m|kmol Si s-1|
|
|
|
|
|global_OM_export_at_2000m|global_om_export_at_2000m|GtCyr-1|
|
|
|
|
|global_calc_export_at_2000m|global_calc_export_at_2000m|GtCyr-1|
|
|
|
|
|global_opal_export_at_2000m|global_opal_export_at_2000m|kmol Si s-1|
|
|
|
|
|remin_of_det_by_S|remin_of_det_by_S|GtC yr-1|
|
|
|
|
|silpro|Si flux to sediment|kmol Si m-2 s-1|
|
|
|
|
|produs|Dust flux to sediment|kmol m-2 s-1|
|
|
|
|
|prcaca|C inorg flux to sediment|kmol C m-2 s-1|
|
|
|
|
|prorca|C org flux to sediment|kmol P m-2 s-1|
|
|
|
|
|sedflux_dic|sediment-ocean flux DIC|kmol C m-2 s-1|
|
|
|
|
|sedflux_alk|sediment-ocean flux alkalinity|kmol m-2 s-1|
|
|
|
|
|sedflux_po4|sediment-ocean flux phosphate|kmol P m-2 s-1|
|
|
|
|
|sedflux_o2|sediment-ocean flux oxygen|kmol O2 m-2 s-1|
|
|
|
|
|sedflux_n2|sediment-ocean flux nitrogen|kmol N m-2 s-1|
|
|
|
|
|sedflux_no3|sediment-ocean flux nitrate|kmol N m-2 s-1|
|
|
|
|
|sedflux_si|sediment-ocean flux nitrate|kmol Si m-2 s-1|
|
|
|
|
|sedflux_fe|sediment-ocean flux iron|kmol Fe m-2 s-1|
|
|
|
|
|sedflux_h2s|sediment-ocean flux H2S|kmol m-2 s-1|
|
|
|
|
|sed_remino2|sediment aerob remineralization|kmol P m-3 s-1|
|
|
|
|
|sed_reminn|sediment denitrification|kmol P m-3 s-1|
|
|
|
|
|sed_remins|sediment sulfate reduction|kmol P m-3 s-1|
|
|
|
|
|ssso12|solid sediment C org|kmol P m-3|
|
|
|
|
|sssc12|solid sediment calcium carbonate|kmol C m-3|
|
|
|
|
|sssil|solid sediment opal|kmol Si m-3|
|
|
|
|
|ssster|solid sediment clay|kmol m-3|
|
|
|
|
|powaic|sediment pore water DIC|kmol C m-3|
|
|
|
|
|powaal|sediment pore water alkalinity|kmol m-3|
|
|
|
|
|powaph|sediment pore water phosphate|kmol P m-3|
|
|
|
|
|powaox|sediment pore water oxygen|kmol O2 m-3|
|
|
|
|
|powasi|sediment pore water silicate|kmol Si m-3|
|
|
|
|
|powafe|sediment pore water iron|kmol Fe m-3|
|
|
|
|
|powan2|sediment pore water N2|kmoll N2 m-3|
|
|
|
|
|powano3|sediment pore water nitrate|kmol N m-3|
|
|
|
|
|powah2s|sediment pore water H2S alkalinity|kmol m-3|
|
|
|
|
|powan2b|sediment pore water n2 budget|kmol N m-3|
|
|
|
|
|powah2o|sediment pore water h2o budget|kmol N m-3|
|
|
|
|
|sedhpl|sediment hydrogen ion concentration|kmol m-3|
|
|
|
|
|buro12|sediment burial C org|kmol P m-2|
|
|
|
|
|burc12|sediment burial calcium carbonate|kmol C m-2|
|
|
|
|
|burter|sediment burial clay|kmol m-2|
|
|
|
|
|bursi|sediment burial opal|kmol Si m-2|
|
|
|
|
|bolay|bottom layer thickness|m|
|
|
|
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> ICON Atmosphere (XPP) </b></summary>
|
|
|
|
|
|
|
|
The physics package of the atmospheric model used in ICON-XPP and ICON-Sapphire are different. Similarly, their naming convention for variables and parameters are different. Here's a table listing some of the variables from the atmospheric component of ICON-XPP.
|
|
|
|
|
|
|
|
|Variable Name|Variable Description|Units|
|
|
|
|
|-------------|--------------------|-----|
|
|
|
|
|pres_msl|Mean sea level pressure|Pa|
|
|
|
|
|pres_sfc|Surface pressure|Pa|
|
|
|
|
|t_s|Weighted temperature of ground surface|K|
|
|
|
|
|clct|Total cloud cover|%|
|
|
|
|
|tot_prec_rate|Total precipitation rate|kg/m$^2$/s|
|
|
|
|
|tqv|Total column integrated water vapour|kg/m$^2$|
|
|
|
|
|tqv_dia|Total column integrated water vapour (diagnostic)|kg/m$^2$|
|
|
|
|
|tqc_dia|Total column integrated cloud water (diagnostic)|kg/m$^2$|
|
|
|
|
|tqi_dia|Total column integrated cloud ice (diagnostic)|kg/m$^2$|
|
|
|
|
|umfl_s|U-momentum flux at the surface|N/m$^2$|
|
|
|
|
|vmfl_s|V-momentum flux at the surface|N/m$^2$|
|
|
|
|
|sp_10m|Wind speed in 10m|m/s|
|
|
|
|
|t_2m|Temperature in 2m|K|
|
|
|
|
|sob_t|Shortwave net flux at TOA|W/m$^2$|
|
|
|
|
|sod_t|Downward shortwave flux at TOA|W/m$^2$|
|
|
|
|
|sou_t|Shortwave upward flux at TOA|W/m$^2$|
|
|
|
|
|thb_t|Thermal net flux at TOA|W/m$^2$|
|
|
|
|
|sob_s|Shortwave net flux at surface|W/m$^2$|
|
|
|
|
|sou_s|Shortwave upward flux at surface|W/m$^2$|
|
|
|
|
|thb_s|Longwave net flux at surface|W/m$^2$|
|
|
|
|
|shfl_s|Surface sensible heat flux|W/m$^2$|
|
|
|
|
|lhfl_s|Surface latent heat flux|W/m$^2$|
|
|
|
|
|snow_con_rate|Convective snow rate (convection scheme output for next time step)|kg/m$^2$/s|
|
|
|
|
|snow_gsp_rate|Gridscale snow rate|kg/m$^2$/s|
|
|
|
|
|ice_gsp_rate|Gridscale ice rate|kg/m$^2$/s|
|
|
|
|
|qifl_s|Surface cloud ice deposition flux due to diffusion|kg/m$^2$/s|
|
|
|
|
|qhfl_s|Surface moisture flux|kg/m$^2$/s|
|
|
|
|
|t_seasfc|Sea surface temperature|K|
|
|
|
|
|fr_land|Fraction land|-|
|
|
|
|
|fr_seaice|Fraction of sea ice|1|
|
|
|
|
|condhf_ice|Conductive heat flux at sea-ice bottom|W/m$^2$|
|
|
|
|
|meltpot_ice|Melt potential at sea-ice top|W/m$^2$|
|
|
|
|
|t_ice|Sea/lake-ice temperature|K|
|
|
|
|
|h_ice|Sea/lake-ice depth|m|
|
|
|
|
|albvisdif|UV visible albedo for diffuse radiation|%|
|
|
|
|
|albvisdir|UV visible albedo for direct radiation|%|
|
|
|
|
|albnirdif|Near IR albedo for diffuse radiation|%|
|
|
|
|
|albnirdir|Near IR albedo for direct radiation|%|
|
|
|
|
|pres|Pressure|Pa|
|
|
|
|
|geopot|Geopotential at full level cell centre|m$^2$/s$^2$|
|
|
|
|
|temp|Temperature|K|
|
|
|
|
|u|Zonal wind|m/s|
|
|
|
|
|v|Meridional wind|m/s|
|
|
|
|
|qv|Specific humidity|kg/kg|
|
|
|
|
|rh|Relative humidity|%|
|
|
|
|
|clc|Cloud cover|%|
|
|
|
|
|tot_qc_dia|Total specific cloud water content (diagnostic)|kg/kg|
|
|
|
|
|tot_qi_dia|Total specific cloud ice content (diagnostic)|kg/kg|
|
|
|
|
|runoff_s|Weighted surface water runoff|kg/m$^2$|
|
|
|
|
|runoff_g|Weighted soil/ground water runoff|kg/m$^2$|
|
|
|
|
|tas_gmean|Global mean temperature at 2m|K|
|
|
|
|
|rsdt_gmean|Global mean TOA incident shortwave radiation|W/m$^2$|
|
|
|
|
|rsut_gmean|Global mean TOA outgoing shortwave radiation|W/m$^2$|
|
|
|
|
|rlut_gmean|Global mean TOA outgoing longwave radiation|W/m$^2$|
|
|
|
|
|radtop_gmean|Global mean TOA total radiation|W/m$^2$|
|
|
|
|
|prec_gmean|Global mean precipitation flux|kg/m$^2$/s|
|
|
|
|
|evap_gmean|Global mean evaporation flux|kg/m$^2$/s|
|
|
|
|
|pme_gmean|Global mean P-E|kg/m$^2$/s|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> ICON Land (XPP) </b></summary>
|
|
|
|
|
|
|
|
|variable name|variable description|units|
|
|
|
|
|---|---|---|
|
|
|
|
|seb_t_box|surface temperature|K|
|
|
|
|
|seb_heat_cap_box|surface layer heat capacity|J/m$^2$/K|
|
|
|
|
|seb_latent_hflx_box|latent heat flux density at surface|W/m$^2$|
|
|
|
|
|seb_sensible_hflx_box|sensible heat flux at surface|W/m$^2$|
|
|
|
|
|seb_forc_hflx_box|additional heat flux at surface|W/m$^2$|
|
|
|
|
|seb_s_star_box|surface dry static energy|m$^2$/s$^2$|
|
|
|
|
|seb_qsat_star_box|surface specific humidity at saturation|m$^2$/s$^2$|
|
|
|
|
|a2l_DEBUG_VAR_box|||
|
|
|
|
|a2l_co2_air_box|CO2 mass mixing ratio of lowest atmosphere level|kg(CO2) / kg(air)|
|
|
|
|
|a2l_co2_air_mol_box|CO2 mol mixing ratio of lowest atmosphere level|mol(CO2) / mol(air)|
|
|
|
|
|a2l_t_air_box|||
|
|
|
|
|a2l_q_air_box|Specific humidity of air at surface|kg/kg|
|
|
|
|
|a2l_rain_box|||
|
|
|
|
|a2l_snow_box|||
|
|
|
|
|a2l_wind_air_box|||
|
|
|
|
|a2l_wind_10m_box|||
|
|
|
|
|a2l_lw_srf_down_box|||
|
|
|
|
|a2l_swvis_srf_down_box|||
|
|
|
|
|a2l_swnir_srf_down_box|||
|
|
|
|
|a2l_swpar_srf_down_box|||
|
|
|
|
|a2l_fract_par_diffuse_box|||
|
|
|
|
|a2l_press_srf_box|||
|
|
|
|
|a2l_drag_srf_box|||
|
|
|
|
|a2l_pch_box|||
|
|
|
|
|a2l_t_acoef_box|||
|
|
|
|
|a2l_t_bcoef_box|||
|
|
|
|
|a2l_q_acoef_box|||
|
|
|
|
|a2l_q_bcoef_box|||
|
|
|
|
|a2l_cos_zenith_angle_box|||
|
|
|
|
|a2l_drag_wtr_box|||
|
|
|
|
|a2l_drag_ice_box|||
|
|
|
|
|a2l_t_acoef_wtr_box|||
|
|
|
|
|a2l_t_bcoef_wtr_box|||
|
|
|
|
|a2l_q_acoef_wtr_box|||
|
|
|
|
|a2l_q_bcoef_wtr_box|||
|
|
|
|
|a2l_t_acoef_ice_box|||
|
|
|
|
|a2l_t_bcoef_ice_box|||
|
|
|
|
|a2l_q_acoef_ice_box|||
|
|
|
|
|a2l_q_bcoef_ice_box|||
|
|
|
|
|l2a_carbon_conservation_test_box|Carbon conservation test||
|
|
|
|
|l2a_yday_c_state_sum_box|yday c state sum required for carbon conservation test||
|
|
|
|
|turb_rough_m_box|surface roughness length for momentum|m|
|
|
|
|
|turb_rough_h_box|surface roughness length for heat|m|
|
|
|
|
|turb_fact_q_air_box|||
|
|
|
|
|turb_fact_qsat_srf_box|||
|
|
|
|
|turb_fact_qsat_trans_srf_box|||
|
|
|
|
|sse_t_soil_sl_box|||
|
|
|
|
|sse_t_snow_box|||
|
|
|
|
|sse_hcap_grnd_box|Ground heat capacity|J/m$^2$/K|
|
|
|
|
|sse_hcap_grnd_old_box|Ground heat capacity (old)|J/m$^2$/K|
|
|
|
|
|sse_grnd_hflx_box|Ground heat flux|J/m$^2$/s|
|
|
|
|
|sse_grnd_hflx_old_box|Ground heat flux (old)|J/m$^2$/s|
|
|
|
|
|hydro_fract_snow_box|Snow area fraction|-|
|
|
|
|
|hydro_weq_snow_box|Snow amount|m (water equivalent)|
|
|
|
|
|hydro_evapotrans_box|Evapotranspiration, including sublimation|kg/m$^2$/s|
|
|
|
|
|hydro_infilt_box|Water infiltrating into the soil|kg/m$^2$/s|
|
|
|
|
|hydro_runoff_box|Total surface runoff|kg/m$^2$/s|
|
|
|
|
|hydro_drainage_box|Total drainage|kg/m$^2$/s|
|
|
|
|
|hydro_discharge_box|Local discharge|m$^3$/s|
|
|
|
|
|hydro_discharge_ocean_box|Discharge to the ocean|m$^3$/s|
|
|
|
|
|hydro_weq_balance_err_box|Land water balance error|m$^3$/(time step)|
|
|
|
|
|hydro_evapotrans_lnd_box|Evapotranspiration from land surface w/o lakes|kg/m$^2$/s|
|
|
|
|
|hydro_fract_wet_box|Wet surface fraction|-|
|
|
|
|
|hydro_wtr_skin_box|Water content of soil and canopy skin reservoir|m|
|
|
|
|
|hydro_wtr_rootzone_box|Liquid water content of the root zone|m|
|
|
|
|
|hydro_ice_rootzone_box|Ice content in the root zone|m water equivalent|
|
|
|
|
|hydro_wtr_soil_sl_box|Water content of soil layers|m|
|
|
|
|
|hydro_ice_soil_sl_box|Ice content of soil layers|m|
|
|
|
|
|hydro_wtr_rootzone_rel_box|Relative root zone moisture|-|
|
|
|
|
|hydro_fract_snow_can_box|Snow fraction on canopy|-|
|
|
|
|
|hydro_weq_snow_can_box|Snow amount on canopy|m (water equivalent)|
|
|
|
|
|hydro_wtr_rootzone_avail_box|Plant available water content in root zone|m|
|
|
|
|
|hydro_wtr_rootzone_avail_max_box|Maximum plant available water content in root zone|m|
|
|
|
|
|hydro_transpiration_box|Transpiration|kg/m$^2$/s|
|
|
|
|
|hydro_fract_snow_glac_box|Snow fraction on glacier|-|
|
|
|
|
|hydro_weq_glac_box|Glacier depth (including snow)|m (water equivalent)|
|
|
|
|
|hydro_fract_snow_lice_box|Snow fraction on lake ice (rel. to ice fraction)|-|
|
|
|
|
|hydro_weq_snow_lice_box|Snow amount on lake ice|m water equivalent|
|
|
|
|
|rad_sw_srf_net_box|Net surface shortwave radiation||
|
|
|
|
|rad_lw_srf_net_box|Net surface longwave radiation||
|
|
|
|
|rad_rad_srf_net_box|Net surface radiation||
|
|
|
|
|rad_alb_vis_box|||
|
|
|
|
|rad_alb_nir_box|||
|
|
|
|
|rad_fapar_box|||
|
|
|
|
|assimi_gross_assimilation_ca_box|Gross photosynthesis on canopy ground area|mol(CO2)/m$^2$(canopy ground) / s|
|
|
|
|
|assimi_gross_assimilation_box|Gross photosynthesis on tile area|mol(CO2)/m$^2$ (tile area) / s|
|
|
|
|
|assimi_dark_respiration_ca_box|Dark_respiration on canopy ground area|mol(CO2)/$m^2$(canopy ground) / s|
|
|
|
|
|assimi_dark_respiration_box|Dark_respiration on tile area|mol(CO2)/$m^2$ (tile area) / s|
|
|
|
|
|assimi_npp_pot_rate_ca_box|NPP_pot_rate_ca|mol(CO2)/($m^2$ (canopy ground) / s)|
|
|
|
|
|assimi_seconds_year_box|time sum year|sum of seconds in year|
|
|
|
|
|assimi_npp_sum_year_box|NPP_sum_year|mol(CO2)/($m^2$ (canopy ground) / s)|
|
|
|
|
|assimi_npp_mean_5year_box|NPP_mean_5year|mol(CO2)/($m^2$ (canopy ground) / s)|
|
|
|
|
|assimi_land_cover_class_box|land_cover_class||
|
|
|
|
|assimi_bclimit_min_cold_mmtemp_box|bclimit_min_cold_mmtemp||
|
|
|
|
|assimi_bclimit_max_cold_mmtemp_box|bclimit_max_cold_mmtemp||
|
|
|
|
|assimi_bclimit_max_warm_mmtemp_box|bclimit_max_warm_mmtemp||
|
|
|
|
|assimi_bclimit_min_temprange_box|bclimit_min_temprange||
|
|
|
|
|assimi_bclimit_min_gdd_box|bclimit_min_gdd||
|
|
|
|
|assimi_tau_c_woods_box|tau_c_woods||
|
|
|
|
|pheno_lai_box|||
|
|
|
|
|pheno_lai_ta_box|||
|
|
|
|
|pheno_fract_fpc_box|||
|
|
|
|
|pheno_fract_fpc_max_box|||
|
|
|
|
|carbon_c_greenwood2litter_ta_box|Total litter flux entering the soil pools.|mol(CO2) /m$^2$/s|
|
|
|
|
|carbon_c_green_ta_box|C-Pool for green parts of vegetation.|mol(C) /m$^2$|
|
|
|
|
|carbon_c_woods_ta_box|C-Pool for structural material/parts of vegetation.|mol(C) /m$^2$|
|
|
|
|
|carbon_c_reserve_ta_box|C-Pool for reserve carbohydrates (starches, sugars) of vegetation.|mol(C) /m$^2$|
|
|
|
|
|carbon_c_crop_harvest_ta_box|C-Pool for Harvested Material from Crops.|mol(C) /m$^2$|
|
|
|
|
|carbon_c_sum_veg_ta_box|Sum of all vegetation C pools.|mol(C) /m$^2$|
|
|
|
|
|carbon_c_sum_litter_ag_ta_box|Sum of all above ground litter C pools.|mol(C) /m$^2$|
|
|
|
|
|carbon_c_sum_litter_bg_ta_box|Sum of all below ground litter C pools.|mol(C) /m$^2$|
|
|
|
|
|carbon_c_sum_humus_ta_box|Sum of all humus C pools.|mol(C) /m$^2$|
|
|
|
|
|carbon_c_sum_natural_ta_box|Sum of all natural C pools.|mol(C) /m$^2$|
|
|
|
|
|carbon_soil_respiration_ta_box|Soil respiration.|mol(C) /m$^2$/s|
|
|
|
|
|carbon_excess_npp_ta_box|NPP that could not be not stored in vegetation carbon pools.|mol(C) /m$^2$/s|
|
|
|
|
|carbon_npp_pot_ydaymean_ta_box|Mean NPP Rate of the previous day.|mol(C) /m$^2$/s|
|
|
|
|
|carbon_npp_act_ydaymean_ta_box|Actual NPP Rate of the previous day.|mol(C) /m$^2$/s|
|
|
|
|
|carbon_gpp_ydaymean_ta_box|Mean GPP Rate of the previous day.|mol(C) /m$^2$/s|
|
|
|
|
|carbon_co2_l2a_npp_ta_box|Net CO2 fluxes between biosphere and atmosphere due to NPP.|kg(CO2) /m$^2$/s|
|
|
|
|
|carbon_co2_l2a_resp_ta_box|Net CO2 fluxes between biosphere and atmosphere due to soil respiration.|kg(CO2) /m$^2$/s|
|
|
|
|
|carbon_co2_l2a_herb_ta_box|Net CO2 fluxes between biosphere and atmosphere due to herbivory.|kg(CO2) /m$^2$/s|
|
|
|
|
|carbon_ccons_calccpools_box|C conservation test: should be zero|mol(C) /m$^2$(tile area)|
|
|
|
|
|hydro_trans_gmean_box|Global mean transpiration|kg/m$^2$/s|
|
|
|
|
|hydro_evapotrans_gmean_box|Global land evapotranspiration|kg/m$^2$/s|
|
|
|
|
|hydro_weq_land_gsum_box|Global amount of land water and ice|km$^3$|
|
|
|
|
|hydro_discharge_ocean_gsum_box|Global water discharge to the oceans|Sv|
|
|
|
|
|hydro_wtr_rootzone_rel_gmean_box|Global mean relative rootzone moisture|-|
|
|
|
|
|hydro_fract_snow_gsum_box|Global snow area (including glaciers)|Mio km$^2$|
|
|
|
|
|hydro_weq_snow_gsum_box|Global snow amount on non-glacier land|Gt|
|
|
|
|
|hydro_weq_balance_err_gsum_box|Global land water balance error|m$^3$/timestep|
|
|
|
|
|pheno_lai_ta_gmean_box|Global land mean leaf area index|1|
|
|
|
|
|pheno_fract_fpc_gmean_box|Global land mean foliage projected cover|1|
|
|
|
|
|seb_t_gmean_box|Global land mean surface temperature|K|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> ICON Atmosphere (Sapphire) </b></summary>
|
|
|
|
|
|
|
|
The physics package of the atmospheric model used in ICON-XPP and ICON-Sapphire are different. Similarly, their naming convention for variables and parameters are different. Here's a table listing some of the variables from the atmospheric component of ICON-Sapphire.
|
|
|
|
|
|
|
|
| Variable Name | Variable Description | Units |
|
|
|
|
|-------|------|-----|
|
|
|
|
|cli|Specific cloud ice content|kg/kg|
|
|
|
|
|clivi|Vertically integrated cloud ice|kg/m$^2$|
|
|
|
|
|cllvi|Vertically integrated cloud water|kg/m$^2$|
|
|
|
|
|clw|Specific cloud water content|kg/kg|
|
|
|
|
|dzghalf|Vertical extent of model full layer|m|
|
|
|
|
|hfls|Latent heat flux|W/m$^2$|
|
|
|
|
|hfss|Sensible heat flux|W/m$^2$|
|
|
|
|
|hus|Specific humidity| |
|
|
|
|
|pfull| | |
|
|
|
|
|phalf| | |
|
|
|
|
|pr|Precipitation flux|kg/m$^2$/s|
|
|
|
|
|pres_msl|Mean sea level pressure|Pa|
|
|
|
|
|pres_sfc|Surface pressure|Pa|
|
|
|
|
|prls| | |
|
|
|
|
|prw|Vertically integrated water vapour|kg/m$^2$|
|
|
|
|
|qg|Specific graupel content|kg/kg|
|
|
|
|
|qgvi|Vertically integrated graupel|kg/m$^2$|
|
|
|
|
|qr|Specific rain content|kg/kg|
|
|
|
|
|qrvi|Vertically integrated rain|kg/m$^2$|
|
|
|
|
|qs|Specific snow content|kg/kg|
|
|
|
|
|qsvi|Vertically integrated snow|kg/m$^2$|
|
|
|
|
|rlds|Surface downwelling longwave radiation|W/m$^2$|
|
|
|
|
|rlus|Surface upwelling longwave radiation|W/m$^2$|
|
|
|
|
|rlut|TOA outgoing longwave radiation|W/m$^2$|
|
|
|
|
|rsds|Surface downwelling shortwave radiation|W/m$^2$|
|
|
|
|
|rsdt|TOA incident shortwave radiation|W/m$^2$|
|
|
|
|
|rsus|Surface upwelling shortwave radiation|W/m$^2$|
|
|
|
|
|rsut|TOA outgoing shortwave radiation|W/m$^2$|
|
|
|
|
|sfcwind|10m windspeed|m/s|
|
|
|
|
|ta|Temperature|K|
|
|
|
|
|tas|Temperature in 2m|K|
|
|
|
|
|tauu|U-momentum flux at the surface|N/m$^2$|
|
|
|
|
|tauv|V-momentum flux at the surface|N/m$^2$|
|
|
|
|
|tend_ta_mig|Temperature tendency due to graupel processes (cp)|K/s|
|
|
|
|
|ts|Surface temperature|K|
|
|
|
|
|u_vint|Vertically integrated barotropic zonal velocity|m$^2$/s|
|
|
|
|
|ua|Zonal wind|m/s|
|
|
|
|
|uas|Zonal wind in 10m|m/s|
|
|
|
|
|v_vint|Vertically integrated meridional zonal velocity|m$^2$/s|
|
|
|
|
|va|Meridional wind|m/s|
|
|
|
|
|vas|Meridional wind in 10m|m/s|
|
|
|
|
|wa_phy| | |
|
|
|
|
|zg|Geometric height at full level center|m|
|
|
|
|
|zghalf|Geometric height at half level center|m|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> ICON Land (Sapphire) </b></summary>
|
|
|
|
|
|
|
|
| Variable Name | Variable Description | Units |
|
|
|
|
|-------|------|-----|
|
|
|
|
|hydro_canopy_cond_limited_box| | |
|
|
|
|
|hydro_discharge_ocean_box| | |
|
|
|
|
|hydro_drainage_box| | |
|
|
|
|
|hydro_runoff_box|Surface runoff|kg/m$^2$/s|
|
|
|
|
|hydro_snow_soil_dens_box|Density of snow on soil|kg/m³|
|
|
|
|
|hydro_transpiration_box|Transpiration from surface|kg/m$^2$/s|
|
|
|
|
|hydro_w_ice_sl_box|Ice content in soil layers|m|
|
|
|
|
|hydro_w_snow_box|Water content of snow reservoir on surface|m|
|
|
|
|
|hydro_w_soil_sl_box|Water content in soil layers|m|
|
|
|
|
|sse_grnd_hflx_old_box|Ground heat flux (old)|J/m$^2$/s|
|
|
|
|
|sse_t_soil_sl_box| | |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Grid
|
|
|
|
### Native grid
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/ca125244-4cfa-46c4-987d-f3223a15461f.png" alt="ICON grid" width="150" />
|
|
|
|
|
|
|
|
The nomenclature (R*n*B*k*) for ICON resolution derives from how an icosahedron is divided. Taking a grid that originates from an icosahedron, the the edge of each triangle face is initially divided into *n* parts (thus `R02` in most of our cases), followed by *k* subsequent edge bisections. When a particular resolution grid is generated, a grid ID is officially tagged to it. Official list of gridIDs associated with [MPIM](http://icon-downloads.mpimet.mpg.de/mpim_grids.xml) and [DWD](http://icon-downloads.mpimet.mpg.de/dwd_grids.xml) are on their respective sites.
|
|
|
|
|
|
|
|
|
|
|
|
<details><summary><b> Abbreviated table of resolution and their gridID </b></summary>
|
|
|
|
|
|
|
|
| gridID (MPIM) | Realm | ICON resolution | nominal resolution |
|
|
|
|
| --- | --- | --- | --- |
|
|
|
|
| 0049 | Atmosphere | R02B04 | 160km |
|
|
|
|
| 0051 | Atmosphere | R02B05 | 80km |
|
|
|
|
| 0052 | Atmosphere | R02B06 | 40km |
|
|
|
|
| 0053 | Atmosphere | R02B07 | 20km |
|
|
|
|
| 0054 | Atmosphere | R02B08 | 10km |
|
|
|
|
| 0055 | Atmosphere | R02B09 | 5km |
|
|
|
|
| 0056 | Atmosphere | R02B10 | 2.5km |
|
|
|
|
| 0057 | Atmosphere | R02B11 | 1.25km |
|
|
|
|
| 0046 | Ocean | R02B06 | 40km |
|
|
|
|
| 0024 | Ocean | R02B07 | 20km |
|
|
|
|
| 0058 | Ocean | R02B08 | 10km |
|
|
|
|
| 0016 | Ocean | R02B09 | 5km |
|
|
|
|
| 0059 | Ocean | R02B10 | 2.5km |
|
|
|
|
| 0060 | Ocean | R02B11 | 1.25km |
|
|
|
|
| 0045 | Ocean | EPOC (R2B9) | telescopic 1.8-15km |
|
|
|
|
| 0026 (DWD) | Atmosphere | R03B07 | 13km |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
Grid files are on Levante:
|
|
|
|
- MPIM: `/pool/data/ICON/grids/public/mpim/${gridID}`
|
|
|
|
- DWD: `/pool/data/ICON/grids/public/edzw`
|
|
|
|
|
|
|
|
### Healpix
|
|
|
|
As higher and higher resolution modelling are performed, efficiency is paramount for the post-processing of these very large dataset. To just view the data or compute area-average of of a large region, we don't necessarily need such high resolution. HEALpix co-ordinate system (heavily used in astronomy) allows for efficient access and computation of these humongous data set.
|
|
|
|
|
|
|
|
<details><summary><b> HEALpix reference table </b></summary>
|
|
|
|
|
|
|
|
| zoom index (ICON) | nside index (IFS/FESOM) | resolution in degrees | resolution in km |
|
|
|
|
| --------------- | --------------- | --------------- | --------------- |
|
|
|
|
| zoom 0 | nside 1 | 59 deg | 6144 km |
|
|
|
|
| zoom 1 | nside 2 | 29 deg | 3072 km |
|
|
|
|
| zoom 2 | nside 4 | 15 deg | 1536 km |
|
|
|
|
| zoom 3 | nside 8 | 7.3 deg | 768 km |
|
|
|
|
| zoom 4 | nside 16 | 3.7 deg | 384 km |
|
|
|
|
| zoom 5 | nside 32 | 1.8 deg | 192 km |
|
|
|
|
| zoom 6 | nside 64 | 0.92 deg | 96 km |
|
|
|
|
| zoom 7 | nside 128 | 0.46 deg | 48 km |
|
|
|
|
| zoom 8 | nside 256 | 0.23 deg | 24 km |
|
|
|
|
| zoom 9 | nside 512 | 0.11 deg | 12 km |
|
|
|
|
| zoom 10 | nside 1024 | 0.057 deg | 6 km |
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Plotting
|
|
|
|
For plotting ICON data, we rely a lot on python and some available packages. Nils Brüggemann has developed an amazing package, called **pyICON**, that aids in the analysis of ICON data.
|
|
|
|
|
|
|
|
<details><summary><b> Installing pyICON </b></summary>
|
|
|
|
|
|
|
|
```bash
|
|
|
|
#Directory you'd like to install pyCION
|
|
|
|
cd /work/mh1421/m300466/tools
|
|
|
|
git clone git@gitlab.dkrz.de:m300602/pyicon.git pyicon
|
|
|
|
cd pyicon
|
|
|
|
pip install -e ./
|
|
|
|
|
|
|
|
#Ensure its path is readable from default python3 module on Levante
|
|
|
|
vi ~/.bashrc
|
|
|
|
PYICONPATH="/work/mh1421/m300466/tools/pyicon"
|
|
|
|
export PYTHONPATH=${PYTHONPATH}:${PYICONPATH}
|
|
|
|
|
|
|
|
#Test that is works
|
|
|
|
python -c "import pyicon"
|
|
|
|
```
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Native grid (python; pyicon)
|
|
|
|
|
|
|
|
<details><summary><b> Python example </b></summary>
|
|
|
|
|
|
|
|
```python
|
|
|
|
import xarray as xr
|
|
|
|
import numpy as np
|
|
|
|
import matplotlib
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
from matplotlib import cm
|
|
|
|
import matplotlib.ticker as ticker
|
|
|
|
import matplotlib.gridspec as gridspec
|
|
|
|
import cmocean as cmo
|
|
|
|
import cartopy.crs as ccrs
|
|
|
|
import cartopy.feature as cfeature
|
|
|
|
|
|
|
|
%matplotlib inline
|
|
|
|
|
|
|
|
# This example uses DRAGON simulation
|
|
|
|
outdir='/work/mh1421/m300466/icon-xpp/icon-2024.10b/build/experiments/dap010_r3b7-r2b9/'
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
**Surface temperature (atm variable)**
|
|
|
|
```python
|
|
|
|
gridds_r3b7=xr.open_dataset('/pool/data/ICON/grids/public/edzw/icon_grid_0026_R03B07_G.nc')
|
|
|
|
ds=xr.open_mfdataset(outdir+'dap010_r3b7-r2b9_atm_2d_ml_*.nc')
|
|
|
|
|
|
|
|
varname='t_2m'
|
|
|
|
coarsen = 2 #Higher value for more coarsening (speed up plotting)
|
|
|
|
|
|
|
|
fig = plt.figure(figsize=(10,6))
|
|
|
|
G = gridspec.GridSpec(1,1)
|
|
|
|
ax = plt.subplot(G[0,0], projection=ccrs.Mollweide(central_longitude=0))
|
|
|
|
ax.coastlines(color='black')
|
|
|
|
plot = ax.scatter(np.rad2deg(gridds_r3b7.clon[::4**coarsen]), np.rad2deg(gridds_r3b7.clat[::4**coarsen]),
|
|
|
|
c=ds[varname].mean('time')[0,::4**coarsen], s=1, cmap=plt.cm.get_cmap('cmo.thermal'),
|
|
|
|
transform=ccrs.Geodetic(), vmin=275, vmax=305)
|
|
|
|
plt.title('mean 2m temperature')
|
|
|
|
plt.colorbar(plot, orientation='horizontal', shrink=0.5, label=r'2m temperature (K)')
|
|
|
|
ax.gridlines(draw_labels=True)
|
|
|
|
ax.set_global()
|
|
|
|
plt.show()
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/7c31b140-bea4-4919-915c-cf4910046178.png" alt="2D temperature at 2m" width="500" />
|
|
|
|
|
|
|
|
|
|
|
|
**Mixed layer depth (ocean variable)**
|
|
|
|
```python
|
|
|
|
gridds_r2b9O=xr.open_dataset('/pool/data/ICON/grids/public/mpim/0016/icon_grid_0016_R02B09_O.nc')
|
|
|
|
dso=xr.open_mfdataset(outdir+'dap010_r3b7-r2b9_oce_qps_*.nc')
|
|
|
|
|
|
|
|
varname='mlotst'
|
|
|
|
coarsen = 3
|
|
|
|
monyr="1952-03-01"
|
|
|
|
|
|
|
|
fig = plt.figure(figsize=(10,6))
|
|
|
|
G = gridspec.GridSpec(1,1)
|
|
|
|
ax = plt.subplot(G[0,0], projection=ccrs.Mollweide(central_longitude=0))
|
|
|
|
ax.coastlines(color='black')
|
|
|
|
plot = ax.scatter(np.rad2deg(gridds_r2b9O.clon[::4**coarsen]), np.rad2deg(gridds_r2b9O.clat[::4**coarsen]),
|
|
|
|
c=dso[varname].sel(time=slice(monyr,monyr))[0,::4**coarsen], s=1, cmap=plt.cm.get_cmap('cmo.deep'),
|
|
|
|
transform=ccrs.Geodetic(), vmin=0, vmax=800)
|
|
|
|
plt.title('Mixed layer depth ('+monyr+')')
|
|
|
|
plt.colorbar(plot, orientation='horizontal', shrink=0.5, label=r'MLD (m)')
|
|
|
|
ax.gridlines(draw_labels=True)
|
|
|
|
ax.set_global()
|
|
|
|
plt.show()
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/f7e9f7ed-4f74-49b5-92b5-e5f47702d69f.png" alt="2D mixed layer depth" width="500" />
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
<details><summary><b> Modified snippet from <a href="https://gitlab.dkrz.de/m300602/pyicon/-/blob/master/quickstart/notebook_plotting.ipynb?ref_type=heads"> pyICON example </a> </b></summary>
|
|
|
|
|
|
|
|
```python
|
|
|
|
import xarray as xr
|
|
|
|
import cartopy.crs as ccrs
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
import numpy as np
|
|
|
|
import pyicon as pyic
|
|
|
|
|
|
|
|
#Example from CMIP7 experiment with r2b4atm, r2b6oce
|
|
|
|
outdir='/work/mh0287/b364148/Icon/Git_lev/icon.nwp.hdext.intno/experiments/tvp1774_001/'
|
|
|
|
dso=xr.open_mfdataset(outdir+'tvp1774_001_oce_def_1[8-9]*.nc')
|
|
|
|
|
|
|
|
#Plot mixed layer depth
|
|
|
|
dso.mlotst10.isel(time=6).pyic.plot()
|
|
|
|
```
|
|
|
|
<img src="https://pad.gwdg.de/uploads/b4238dc7-70de-4c5e-8788-cab007755f8b.png" alt="10m wind speed" width="450" />
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
#Plot regional SST
|
|
|
|
dso.to.isel(depth=0, time=6).pyic.plot(lon_reg=[100,-70], lat_reg=[-20,20])
|
|
|
|
```
|
|
|
|
<img src="https://pad.gwdg.de/uploads/3d679a4c-c6e2-4d63-9bb9-79fc48ef6f21.png" alt="SST" width="650" />
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
#Example from CMIP7 experiment with r2b5atm, r2b7oce
|
|
|
|
outdir='/work/mh0287/m211032/Icon/Git_lev/icon.XPP.20240717/build.intel-hdext/experiments/slo1826/'
|
|
|
|
dsa=xr.open_mfdataset(outdir+'slo1826_atm_2d_ml_1[0-2]*.nc')
|
|
|
|
|
|
|
|
#Plot 10m wind speed
|
|
|
|
P = pyic.Plot(1, 1, projection=ccrs.EqualEarth(central_longitude=210.), fig_size_fac=2.5)
|
|
|
|
P.plot(dsa.sp_10m.isel(height=0, time=1440), template='global')
|
|
|
|
P.ax.set_title('10m wind speed')
|
|
|
|
P.ax.set_title('', loc='right')
|
|
|
|
P.ax.set_title('', loc='left')
|
|
|
|
P.cax.set_ylabel('wind speed [m/s]')
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/a9c8889f-0a33-494b-a5a5-f5f3e083e76a.png" alt="10m wind speed" width="450" />
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
### Command line
|
|
|
|
We will use a script called `pyic_fig.py`, that is part of pyICON. Please refer to `pyic_fig.py --help` for the myraid options you can use to tweak your figure.
|
|
|
|
|
|
|
|
<details><summary><b> Quick view example using command line</b></summary>
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
pyicdir=/work/mh1421/m300466/tools/pyicon/scripts
|
|
|
|
cd ${pyicdir}
|
|
|
|
|
|
|
|
outdir=/work/mh0287/m211032/Icon/Git_lev/icon.XPP.20240717/build.intel-hdext/experiments/slo1826
|
|
|
|
examplefile=slo1826_atm_2d_ml_19900101T000000Z.nc
|
|
|
|
varname=sp_10m
|
|
|
|
figpath=/home/m/m300466/iconfigs/ICON-XPP
|
|
|
|
figname=slo1826_sp_10m_199001_20W30E_45S20S.png
|
|
|
|
|
|
|
|
pyic_fig.py ${outdir}/${examplefile} ${varname} --clim=0,15 --cmap=viridis --use_tgrid --lon_reg=-20,30 --lat_reg=-45,-20 --fpath_fig=${figpath}/${figname}
|
|
|
|
|
|
|
|
eog slo1826_sp_10m_199001_20W30E_45S20S.png &
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/3ccd4226-a3ef-4026-8931-2fe65887bfbd.png" alt="10m wind speed over South Atlantic" width=500 />
|
|
|
|
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Healpix
|
|
|
|
Precious detailed notes on how to handle healpix can be found on the [easygems website](https://easy.gems.dkrz.de/Processing/healpix/index.html)
|
|
|
|
|
|
|
|
<details><summary><b> TL;DR </b></summary>
|
|
|
|
|
|
|
|
```python
|
|
|
|
%pip install easygems
|
|
|
|
import intake
|
|
|
|
import healpy
|
|
|
|
|
|
|
|
cat = intake.open_catalog("https://data.nextgems-h2020.eu/catalog.yaml")
|
|
|
|
|
|
|
|
#Plot time series of global mean surface temeprature
|
|
|
|
ds = cat.ICON.ngc3028.to_dask()
|
|
|
|
ds.tas.mean("cell").plot()
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/e2b02431-6a4a-4454-91ef-a9c7d3100ec8.png" alt="GMST" width="400" />
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
#Plot 2D map of surface temperature at time=0
|
|
|
|
def get_nest(ds):
|
|
|
|
return ds.crs.healpix_order == "nest"
|
|
|
|
|
|
|
|
ds_map = cat.ICON.ngc3028(zoom=7).to_dask()
|
|
|
|
healpy.mollview(ds_map.tas.isel(time=0), flip="geo", nest=get_nest(ds_map))
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/7693723e-2797-474b-833f-5e59d6e3033c.png" alt="2D surface temperature" width="450" />
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Regular interpolated grid
|
|
|
|
[Next section on remapping](#Remapping) includes plotting of regridded data.
|
|
|
|
|
|
|
|
### Ocean sectional plots
|
|
|
|
**Python**: Please refer to [pyicon notebook example](https://gitlab.dkrz.de/m300602/pyicon/-/blob/master/quickstart/notebook_plotting.ipynb?ref_type=heads), cell 13 onwards.
|
|
|
|
|
|
|
|
**Command line**: A script called `pyic_sec.py`, that is part of pyICON, can be used for making quick sectional plots for 170W, 30W, global zonal average, Atlantic zonal average and Indo-Pacific zonal average. Please refer to `pyic_sec.py --help` for the myraid options you can use to tweak your figure.
|
|
|
|
|
|
|
|
<details><summary><b> Sample script using pyic_sec.py </b></summary>
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
expid=slo1826
|
|
|
|
datadir=/work/mh0287/m211032/Icon/Git_lev/icon.XPP.20240717/build.intel-hdext/experiments/${expid}
|
|
|
|
examplefile=${expid}_oce_def_19900101T000000Z.nc
|
|
|
|
varname="to"
|
|
|
|
figpath=/home/m/m300466/iconfigs/ICON-XPP
|
|
|
|
figname=${expid}_${varname}_gzave_199001.png
|
|
|
|
|
|
|
|
${pyicdir}/pyic_sec.py ${datadir}/${examplefile} ${varname} --clim=-5,25 --cmap=magma --it=3 --section='gzave' --fpath_fig=${figpath}/${expid}_${varname}_gzave_199001.png
|
|
|
|
|
|
|
|
eog ${figpath}/${expid}_${varname}_gzave_199001.png &
|
|
|
|
```
|
|
|
|
<img src="https://pad.gwdg.de/uploads/b01a9fb0-783c-4033-abe0-76600c614fa9.png" alt="Global zonal average temperature" width="450" />
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Remapping
|
|
|
|
|
|
|
|
### Native grid with cdo
|
|
|
|
General recommendation (not a fixed rule) for remapping ICON to lon/lat:
|
|
|
|
high res to low res $\rightarrow$ remapycon (uses YAC conservative remapping)
|
|
|
|
low res to high res $\rightarrow$ remapnn (nearest neighbour)
|
|
|
|
|
|
|
|
<details><summary><b> Remap r2b9 (5km) ocean to 0.25deg grid </b></summary>
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
targetgrid=/work/mh0256/m300466/DPP/grid/IFS25_invertlat_gridexample.nc
|
|
|
|
remapwgt=/work/mh0256/m300466/DPP/weights/r2b9O_IFS25invertlat_yconremapweights.nc
|
|
|
|
srcgrid=/pool/data/ICON/grids/public/mpim/0016/icon_grid_0016_R02B09_O.nc
|
|
|
|
|
|
|
|
varname=zos
|
|
|
|
monyr="195101"
|
|
|
|
examplefile=/work/mh1421/m300466/icon-xpp/icon-2024.10b/build/experiments/dap010_r3b7-r2b9/dap010_r3b7-r2b9_oce_qps_${monyr}01T000000Z.nc
|
|
|
|
varfile=dap010_r3b7-r2b9_${varname}_${monyr}_IFS25.nc
|
|
|
|
|
|
|
|
#Perform remapping without generating weights
|
|
|
|
cdo -P 96 -remapycon,${targetgrid} -setgrid,${srcgrid} -select,name=${varname} ${examplefile} ${varfile}
|
|
|
|
|
|
|
|
|
|
|
|
#Create weights from r2b9 (oce) to IFS25grid
|
|
|
|
cdo -P 96 -genycon,${targetgrid} -setgrid,${srcgrid} -selname,${varname} ${examplefile} ${remapwgt}
|
|
|
|
|
|
|
|
#Perform remapping using weights generated
|
|
|
|
cdo -P 96 -remap,${targetgrid},${remapwgt} -setgrid,${srcgrid} -select,name=${varname} ${examplefile} ${varfile}
|
|
|
|
|
|
|
|
ncview ${varfile} &
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/b9c5c71d-41d0-4f28-9980-b9431bd641b4.png" alt="SSH at 0.25deg resolution" width="400" />()
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> Remap r2b5 (80km) atmosphere to 0.25deg grid </b></summary>
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
targetgrid=/work/mh0256/m300466/DPP/grid/IFS25_invertlat_gridexample.nc
|
|
|
|
srcgrid=/pool/data/ICON/grids/public/mpim/0053/icon_grid_0053_R02B07_G.nc
|
|
|
|
|
|
|
|
varname="umfl_s"
|
|
|
|
monyr="172001"
|
|
|
|
examplefile=/work/mh0287/m211032/Icon/Git_lev/icon.XPP.20240717/build.intel-hdext/experiments/slo1826/slo1826_atm_2d_ml_${monyr}01T000000Z.nc
|
|
|
|
varfile=slo1826_${varname}_${monyr}_IFS25.nc
|
|
|
|
|
|
|
|
#Perform remapping without generating weights
|
|
|
|
cdo -P 48 -remapnn,${targetgrid} -setgrid,${srcgrid} -select,name=${varname} ${examplefile} ${varfile}
|
|
|
|
|
|
|
|
ncview ${varfile} &
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/4e4f51ec-d939-4844-a4da-d80cda727e6d.png" alt="Zonal wind stress at 0.25deg resolution" width="400" />()
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> Remap from catalogue: r2b9 (5km) ocean to 0.25deg grid </b></summary>
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
module use /work/k20200/k202134/hsm-tools/outtake/module
|
|
|
|
module load hsm-tools/unstable
|
|
|
|
module sw cdo cdo
|
|
|
|
|
|
|
|
targetgrid=/work/mh0256/m300466/DPP/grid/IFS25_invertlat_gridexample.nc
|
|
|
|
srcgrid=/pool/data/ICON/grids/public/mpim/0016/icon_grid_0016_R02B09_O.nc
|
|
|
|
|
|
|
|
varname=mlotst10
|
|
|
|
yr=2020
|
|
|
|
filenc=$(query_yaml ICON erc1011 v20240618 ocean native 2d_monthly_mean --var=${varname} --uri --cdo)
|
|
|
|
varfile=erc2002_${varname}_${yr}_IFS25.nc
|
|
|
|
|
|
|
|
#Perform remapping without generating weights
|
|
|
|
cdo -P 96 -remapycon,${targetgrid} -setgrid,${srcgrid} -select,name=${varname},year=${yr} [ ${filenc} ] ${varfile}
|
|
|
|
|
|
|
|
```
|
|
|
|
<img src="https://pad.gwdg.de/uploads/62d27c3e-7c14-4c1d-ae77-0f2242215e88.png" alt="Mixed layer depth at 0.25deg resolution" width="400" />()
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### HEALpix with python
|
|
|
|
|
|
|
|
<details><summary><b> Copied snippet from <a href="https://easy.gems.dkrz.de/Processing/healpix/regridding.html#Using-Python"> easygems </a> </b></summary>
|
|
|
|
|
|
|
|
```python
|
|
|
|
import intake
|
|
|
|
import matplotlib.pyplot as plt
|
|
|
|
import healpy as hp
|
|
|
|
import cmocean
|
|
|
|
import xarray as xr
|
|
|
|
import numpy as np
|
|
|
|
cat = intake.open_catalog("https://data.nextgems-h2020.eu/catalog.yaml")
|
|
|
|
data = cat["ICON"]["ngc3028"](zoom=7, time="P1D").to_dask()
|
|
|
|
|
|
|
|
# Find the HEALPix pixels that are closest to the 1x1 degree grid points.
|
|
|
|
lon = np.arange(0, 360, 1)
|
|
|
|
lat = np.arange(90, -91, -1)
|
|
|
|
pix = xr.DataArray(
|
|
|
|
hp.ang2pix(data.crs.healpix_nside, *np.meshgrid(lon, lat), nest=True, lonlat=True),
|
|
|
|
coords=(("lat", lat), ("lon", lon)),
|
|
|
|
)
|
|
|
|
|
|
|
|
# Plot the 1x1 world map for a given variable and time.
|
|
|
|
data.tas.isel(cell=pix).sel(time="2020-09-30").plot(
|
|
|
|
vmin=253, vmax=303, cmap=cmocean.cm.thermal
|
|
|
|
)
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/1bd5ae3e-404f-4baf-b7e5-4fe282e01446.png" alt="global 2m temperature at 1x1deg resolution" width="500" />
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### HEALpix with cdo
|
|
|
|
|
|
|
|
<details><summary><b> Modified snippet from <a href="https://easy.gems.dkrz.de/Processing/healpix/regridding.html#Using-CDO"> easygems </a> </b></summary>
|
|
|
|
|
|
|
|
1) Create text file containing 1x1 grid info.
|
|
|
|
<details><summary><b> global_1x1.txt </b></summary>
|
|
|
|
|
|
|
|
```bash
|
|
|
|
#
|
|
|
|
# Global 1x1 deg grid
|
|
|
|
#
|
|
|
|
gridtype = lonlat
|
|
|
|
gridsize = 65160
|
|
|
|
xsize = 360
|
|
|
|
ysize = 181
|
|
|
|
xname = lon
|
|
|
|
xlongname = "longitude"
|
|
|
|
xunits = "degrees_east"
|
|
|
|
yname = lat
|
|
|
|
ylongname = "latitude"
|
|
|
|
yunits = "degrees_north"
|
|
|
|
xfirst = 0
|
|
|
|
xinc = 1
|
|
|
|
yfirst = 90
|
|
|
|
yinc = -1
|
|
|
|
```
|
|
|
|
</details>
|
|
|
|
|
|
|
|
2) Use cdo to interpolate
|
|
|
|
```bash
|
|
|
|
module use /work/k20200/k202134/hsm-tools/outtake/module
|
|
|
|
module load hsm-tools/unstable
|
|
|
|
module sw cdo cdo
|
|
|
|
|
|
|
|
DATAPATH=$(query_yaml.py ICON ngc3028 -s time=P1D zoom=6 --cdo)
|
|
|
|
|
|
|
|
cdo -f nc4 -remapnn,global_1x1.txt [ -select,name=tas,date="2020-09-30" ${DATAPATH} ] ngc3028_tas_20200930.nc
|
|
|
|
ncview ngc3028_tas_20200930.nc &
|
|
|
|
```
|
|
|
|
|
|
|
|
<img src="https://pad.gwdg.de/uploads/200b41b0-f4f4-4967-8ad2-10e79b3c877a.png" alt="ncview global 2m temperature at 1x1deg resolution" width="450" />
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
## Caveats in ICON
|
|
|
|
Honorable mentions on some caveats in ICON that may matter for the analysis.
|
|
|
|
:::warning
|
|
|
|
1) 3D **time-mean** atmospheric output on model levels only. See next section to [interpolate to pressure level](#Interpolating-from-model-levels-to-pressure-levels)
|
|
|
|
2) Time shift in output (e.g. `cdo -shifttime,-14days` for monthly files)
|
|
|
|
3) For sea surface height, better to use `ssh` instead of `zos`, especially under sea-ice
|
|
|
|
4) ICON-A is non-hydrostatic, be careful with conversion of wa to omega
|
|
|
|
5) Ocean has time-variant vertical coordinate system (zstar)
|
|
|
|
:::
|
|
|
|
|
|
|
|
## Atmospheric 3D variables
|
|
|
|
|
|
|
|
### Interpolating from model levels to pressure levels
|
|
|
|
ICON can only output on pressure levels if they are instantaneous outputs. For time-mean variables, they have to be outputted on model levels. Hence, you may need to interpolate from model level to pressure level, which is easily done with cdo.
|
|
|
|
|
|
|
|
<details><summary><b> Command line example for interpolation (model to pressure levels) </b></summary>
|
|
|
|
|
|
|
|
We use C5 experiments (ICON-Sapphire) as an example.
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
#Find where files are located using `query_yaml`
|
|
|
|
module use /work/k20200/k202134/hsm-tools/outtake/module
|
|
|
|
module load hsm-tools/unstable
|
|
|
|
filelist_ctl7=$(query_yaml ICON C5 AMIP_CNTL --search_args grid=R02B07 time=P1D --uri --var ta --cdo)
|
|
|
|
filelist_p4k7=$(query_yaml ICON C5 AMIP_P4K --search_args grid=R02B07 time=P1D --uri --var ta --cdo)
|
|
|
|
```
|
|
|
|
|
|
|
|
In this example, we first horizontally interpolate the relevant variables onto 1x1deg grid, and then vertically interpolate onto the pressure levels.
|
|
|
|
```brainfuck=bash
|
|
|
|
res=r2b7
|
|
|
|
RES=R02B07
|
|
|
|
|
|
|
|
ctldir=/work/mh0730/C5/experiments/LUMI_AMIP_${RES}_CNTL/public
|
|
|
|
p4kdir=/work/mh0730/C5/experiments/LUMI_AMIP_${RES}_P4K/public
|
|
|
|
ctlprefix=LUMI_AMIP_hpz8_CNTL_atm_P1D
|
|
|
|
p4kprefix=LUMI_AMIP_hpz8_P4K_atm_P1D
|
|
|
|
outdir=/work/mh1421/m300466/analysis/amipC5
|
|
|
|
|
|
|
|
#Horizontal interpolation onto 1x1deg
|
|
|
|
declare -a varnamearr=("pfull" "ta" "ua" "va")
|
|
|
|
for varname in "${varnamearr[@]}"
|
|
|
|
do
|
|
|
|
for yyyy in $(seq 1979 1981);
|
|
|
|
do
|
|
|
|
cdo -f nc4 -remapnn,global_1x1.txt -monmean [ -select,name=${varname} ${ctldir}/${ctlprefix}_${yyyy}.nc ] ${outdir}/${varname}_AMIP_CNTL_${res}_mm_${yyyy}_1x1deg.nc
|
|
|
|
cdo -f nc4 -remapnn,global_1x1.txt -monmean [ -select,name=${varname} ${p4kdir}/${p4kprefix}_${yyyy}.nc ] ${outdir}/${varname}_AMIP_P4K_${res}_mm_${yyyy}_1x1deg.nc
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
#Vertical interpolation from model to pressure levels
|
|
|
|
declare -a scnarr=("AMIP_CNTL" "AMIP_P4K")
|
|
|
|
LEVELS="100000,92500,85000,77500,70000,60000,50000,40000,30000,25000,20000,15000,10000,7000,5000,3000,1000"
|
|
|
|
|
|
|
|
for scn in "${scnarr[@]}"
|
|
|
|
do
|
|
|
|
for yyyy in $(seq 1979 1981);
|
|
|
|
do
|
|
|
|
|
|
|
|
inDat1=${outdir}/${varname}_${scn}_${res}_mm_${yyyy}_1x1deg.nc
|
|
|
|
inDat2=${outdir}/pfull_${scn}_${res}_mm_${yyyy}_1x1deg.nc
|
|
|
|
inDat3=${outdir}/ps_${scn}_${res}_mm_${yyyy}_1x1deg.nc
|
|
|
|
inatm3D=${outdir}/Uatm_${scn}_${res}_ml_mm_${yyyy}_1x1deg.nc
|
|
|
|
|
|
|
|
outsuffix=${scn}_${res}_pl_mm_${yyyy}_1x1deg
|
|
|
|
|
|
|
|
|
|
|
|
cdo -merge [ ${inDat1} ${inDat2} ${inDat3} ] ${inatm3D}
|
|
|
|
cdo -P 48 -ap2plx,${LEVELS} ${inatm3D} ${outdir}/${varname}_${outsuffix}.nc
|
|
|
|
rm -f ${inatm3D}
|
|
|
|
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
### Hadley Circulation (zonal mean)
|
|
|
|
|
|
|
|
<details><summary><b> Compute mass streamfunction and take zonal mean </b></summary>
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
res=r2b7
|
|
|
|
RES=R02B07
|
|
|
|
|
|
|
|
outdir=/work/mh1421/m300466/analysis/amipC5
|
|
|
|
|
|
|
|
declare -a scnarr=("AMIP_CNTL" "AMIP_P4K")
|
|
|
|
LEVELS="100000,92500,85000,77500,70000,60000,50000,40000,30000,25000,20000,15000,10000,7000,5000,3000,1000"
|
|
|
|
|
|
|
|
for scn in "${scnarr[@]}"
|
|
|
|
do
|
|
|
|
for yyyy in $(seq 1979 1981);
|
|
|
|
do
|
|
|
|
outsuffix=${scn}_${res}_pl_mm_${yyyy}_1x1deg
|
|
|
|
outDat=${outdir}/atmpsi_${outsuffix}.nc
|
|
|
|
#Compute stream function, take zonal mean
|
|
|
|
cdo -r mastrfu -zonmean -sellevel,${LEVELS} -selvar,va ${outdir}/Uatm_${outsuffix} ${outdir}/mastrfu_${outsuffix}
|
|
|
|
cdo -divc,1000000000 ${outdir}/mastrfu_${outsuffix} ${outDat}
|
|
|
|
done
|
|
|
|
done
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
## Model evaluation packages
|
|
|
|
|
|
|
|
|
|
|
|
### Quick plots with pyicon
|
|
|
|
|
|
|
|
There's a driver script to produce quickplots for ICON simulations. Edits are needed for each simulation.
|
|
|
|
|
|
|
|
<details><summary><b> Example driver script for making quick plots </b></summary>
|
|
|
|
|
|
|
|
We use a DRAGON run as an example.
|
|
|
|
cd /work/mh1421/m300466/tools/pyicon/tools
|
|
|
|
vi run_qp_driver_dragon_r3b7-r2b9.sh
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
#!/bin/bash
|
|
|
|
#SBATCH --job-name=pyicon_qp
|
|
|
|
#SBATCH --time=02:00:00
|
|
|
|
#SBATCH --output=log.o-%j.out
|
|
|
|
#SBATCH --error=log.o-%j.out
|
|
|
|
#SBATCH --nodes=1
|
|
|
|
#SBATCH --exclusive
|
|
|
|
#SBATCH --partition=compute
|
|
|
|
#SBATCH --account=mh1421
|
|
|
|
|
|
|
|
cd /work/mh1421/m300466/tools/pyicon/tools
|
|
|
|
|
|
|
|
module list
|
|
|
|
source /home/m/m300602/pyicon/tools/act_pyicon_py39.sh
|
|
|
|
which python
|
|
|
|
|
|
|
|
rand=$(cat /dev/urandom | tr -dc 'A-Z' | fold -w 3 | head -n 1)
|
|
|
|
|
|
|
|
PYICON_PATH="$( cd "$(pwd)/.." >/dev/null 2>&1 && pwd )" # problem: takes directory as base from where this script is called
|
|
|
|
export PYTHONPATH="${PYICON_PATH}"
|
|
|
|
|
|
|
|
path_pyicon=`(cd .. && pwd)`"/"
|
|
|
|
config_file="./config_qp_${rand}.py"
|
|
|
|
qp_driver="${path_pyicon}pyicon/quickplots/qp_driver.py"
|
|
|
|
|
|
|
|
cat > ${config_file} << %eof%
|
|
|
|
# --- path to quickplots
|
|
|
|
path_quickplots = '../all_qps/dragon'
|
|
|
|
|
|
|
|
# --- set this to True if the simulation is still running
|
|
|
|
omit_last_file = True
|
|
|
|
ave_freq = 0
|
|
|
|
save_data = False
|
|
|
|
path_nc = 'auto'
|
|
|
|
|
|
|
|
# --- do ocean and/or atmosphere plots
|
|
|
|
do_atmosphere_plots = True
|
|
|
|
do_conf_dwd = True
|
|
|
|
do_djf = False
|
|
|
|
do_jja = False
|
|
|
|
do_ocean_plots = True
|
|
|
|
|
|
|
|
# --- grid information
|
|
|
|
gname = 'r2b9_oce_r0004'
|
|
|
|
lev = 'L72'
|
|
|
|
gname_atm = 'r3b7_atm_r0026'
|
|
|
|
lev_atm = 'L130'
|
|
|
|
|
|
|
|
# --- path to interpolation files
|
|
|
|
path_grid = '/work/mh0033/m300602/icon/grids/'+gname+'/'
|
|
|
|
path_grid_atm = '/work/mh0033/m300602/icon/grids/'+gname_atm+'/'
|
|
|
|
path_ckdtree = path_grid+'/ckdtree/'
|
|
|
|
path_ckdtree_atm = path_grid_atm+'/ckdtree/'
|
|
|
|
|
|
|
|
# --- grid files and reference data
|
|
|
|
fpath_tgrid_atm = path_grid_atm + gname_atm+'_tgrid.nc'
|
|
|
|
path_atm_ref = '/pool/data/ICON/edzw-shadow/grids/r2b5_atm_r0030/'
|
|
|
|
fpath_ref_data_atm = path_atm_ref+'era5_pyicon_1959-2010_1.5x1.5deg.nc'
|
|
|
|
fpath_ref_data_atm_rad = path_atm_ref+'ceres_pyicon_2001-2021_1.5x1.5deg.nc'
|
|
|
|
fpath_ref_data_atm_prec = path_atm_ref+'gpm_pyicon_2001-2020_1.5x1.5deg.nc'
|
|
|
|
|
|
|
|
path_pool_oce = '/pool/data/ICON/oes/input/r0005/OceanOnly_IcosSymmetric_4932m_rotatedZ37d_modified_srtm30_1min/L72/'
|
|
|
|
#gnameu = gname.split('_')[0].upper()
|
|
|
|
fpath_tgrid = path_grid + gname+'_tgrid.nc'
|
|
|
|
fpath_ref_data_oce = path_pool_oce + 'R2B9L72_initial_state.nc'
|
|
|
|
fpath_fx = path_pool_oce + 'R2B9L72_fx.nc'
|
|
|
|
|
|
|
|
# --- mappings for ocean
|
|
|
|
D_variable_container = dict(
|
|
|
|
default = '_oce_qps',
|
|
|
|
to = '_oce_qps',
|
|
|
|
so = '_oce_qps',
|
|
|
|
u = '_oce_qps',
|
|
|
|
v = '_oce_qps',
|
|
|
|
massflux = '_oce_qps',
|
|
|
|
moc = '_oce_moc',
|
|
|
|
mon = '_oce_mon',
|
|
|
|
ice = '_oce_qps',
|
|
|
|
monthly = '_oce_qps',
|
|
|
|
sqr = '_oce_qps',
|
|
|
|
)
|
|
|
|
|
|
|
|
# --- mappings for atmosphere
|
|
|
|
atm_2d = '_atm_2d_ml'
|
|
|
|
atm_3d = '_atm_3d_ml'
|
|
|
|
atm_mon = '_atm_mon'
|
|
|
|
red_list = []
|
|
|
|
# from dwd; does not work for MPI-ICON
|
|
|
|
red_list += ['ts_pme_gmean']
|
|
|
|
red_list += ['ice_conc_mon_nh', 'mlotst_mon']
|
|
|
|
# uncomment this to omit plots which require loading 3D u, v
|
|
|
|
red_list += ['arctic_budgets']
|
|
|
|
# uncomment this to omit plots which require loading 3D density
|
|
|
|
red_list += ['dens30w','atm_geop_500_bias','atm_geop_500','atm_cc_zave']
|
|
|
|
|
|
|
|
%eof%
|
|
|
|
|
|
|
|
# --- start qp_driver
|
|
|
|
startdate=`date +%Y-%m-%d\ %H:%M:%S`
|
|
|
|
run="dap010_r3b7-r2b9"
|
|
|
|
path_data="/work/mh1421/m300466/icon-xpp/icon-2024.10b/build/experiments/${run}/"
|
|
|
|
python -u ${qp_driver} --batch=True ${config_file} --path_data=$path_data --run=$run --tave_int='1951-02-01,1954-01-01'
|
|
|
|
|
|
|
|
enddate=`date +%Y-%m-%d\ %H:%M:%S`
|
|
|
|
|
|
|
|
rm ${config_file}
|
|
|
|
|
|
|
|
echo "--------------------------------------------------------------------------------"
|
|
|
|
echo "Started at ${startdate}"
|
|
|
|
echo "Ended at ${enddate}"
|
|
|
|
|
|
|
|
```
|
|
|
|
</details>
|
|
|
|
|
|
|
|
[View quick plots on swiftbrowser](https://swift.dkrz.de/v1/dkrz_b70a6895-056b-4057-943d-2495ab773b09/m300466_DRAGON/dragon/qp-dap010_r3b7-r2b9/tave_1951-02-01-1954-01-01/qp_index.html)
|
|
|
|
|
|
|
|
### Climate Variability Diagnostic Package
|
|
|
|
CVDP is a package to obtain quick assessment of the different climate modes in the simulations. You can download the newest version v6.0.0 at [https://github.com/NCAR/CVDP-ncl?tab=readme-ov-file](https://github.com/NCAR/CVDP-ncl?tab=readme-ov-file)
|
|
|
|
The observational dataset used in CVDP can be downloaded from [https://www.cesm.ucar.edu/projects/cvdp/observations](https://www.cesm.ucar.edu/projects/cvdp/observations)
|
|
|
|
|
|
|
|
|
|
|
|
<details><summary><b> Download CVDP </b></summary>
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
cd /work/mh1421/m300466/tools
|
|
|
|
git clone https://github.com/NCAR/CVDP-ncl.git CVDP
|
|
|
|
|
|
|
|
ls CVDP/
|
|
|
|
driver.ncl LICENSE namelist namelist_obs README.md scripts/
|
|
|
|
|
|
|
|
#Prepare folders for running CVDP on many simulations
|
|
|
|
cd CVDP
|
|
|
|
mv namelist namelist.orig
|
|
|
|
mv namelist_obs namelist_obs.orig
|
|
|
|
mkdir -p icondata/ cvdpplots/ driverscripts/
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> Example of running CVDP for a simulation </b></summary>
|
|
|
|
|
|
|
|
We use a low res DRAGON run as an example. Here is a script `go_cvdp.sh` which you can modify to run CVDP.
|
|
|
|
|
|
|
|
```brainfuck=bash
|
|
|
|
#!/bin/bash -x
|
|
|
|
CDO="cdo -P 48"
|
|
|
|
module load ncl
|
|
|
|
\rm namelist
|
|
|
|
\rm namelist_obs
|
|
|
|
|
|
|
|
obs=TRUE
|
|
|
|
touch namelist_obs
|
|
|
|
|
|
|
|
##### observations #####
|
|
|
|
if [ $obs == TRUE ]; then
|
|
|
|
cat >>namelist_obs<<EOF
|
|
|
|
TS | HadISST | /work/mh0033/m211054/projects/cvdp/obs/sst_HadISST_sst_187001_202402.nc | 1950 | 2010
|
|
|
|
PSL | 20CR | /work/mh0033/m211054/projects/cvdp/obs/prmsl_20CR_187101_201212.nc | 1950 | 2010
|
|
|
|
TREFHT | BEST | /work/mh0033/m211054/projects/cvdp/obs/BEST/tas_abs_miss_Land_and_Ocean_LatLong1_185001_202401.nc | 1950 | 2010
|
|
|
|
PRECT | GPCP| /work/mh0033/m211054/projects/cvdp/obs/precip_GPCP_197901_202403.nc | 1980 | 2010
|
|
|
|
EOF
|
|
|
|
fi
|
|
|
|
|
|
|
|
##### simulations ######
|
|
|
|
expid=hel24312_r5b7_ctrl
|
|
|
|
expdir=/work/mh0033/m211054/projects/icon/seamless/icon-2024.10/build_hdext/experiments/${expid}/outdata/
|
|
|
|
ystart=1750
|
|
|
|
yend=1799
|
|
|
|
datadir=/work/mh1421/m300466/tools/CVDP/icondata/data_${expid}_${ystart}-${yend}
|
|
|
|
plotdir=/work/mh1421/m300466/tools/CVDP/cvdpplots/${expid}_cvdp_${ystart}-${yend}
|
|
|
|
|
|
|
|
###Prepare the files for running CVDP
|
|
|
|
mkdir -p $datadir
|
|
|
|
mkdir -p $plotdir
|
|
|
|
$CDO -O -f nc -cat $expdir/*atm_2d_ml* ${datadir}/${expid}_BOT.nc
|
|
|
|
REMAP="-remapnn,r360x180"
|
|
|
|
SELYEAR="-selyear,$ystart/$yend -shifttime,-14days" #monthly files
|
|
|
|
|
|
|
|
$CDO $REMAP $SELYEAR -chname,t_2m,tas -selvar,t_2m ${datadir}/${expid}_BOT.nc ${datadir}/tas_${expid}_icon_BOT_mm_${ystart}01_${yend}12.nc
|
|
|
|
$CDO $REMAP $SELYEAR -chname,tot_prec_rate,pr -selvar,tot_prec_rate ${datadir}/${expid}_BOT.nc ${datadir}/pr_${expid}_icon_BOT_mm_${ystart}01_${yend}12.nc
|
|
|
|
$CDO $REMAP $SELYEAR -chname,pres_msl,psl -selvar,pres_msl ${datadir}/${expid}_BOT.nc ${datadir}/psl_${expid}_icon_BOT_mm_${ystart}01_${yend}12.nc
|
|
|
|
$CDO $REMAP $SELYEAR -chname,t_s,ts -selvar,t_s ${datadir}/${expid}_BOT.nc ${datadir}/ts_${expid}_icon_BOT_mm_${ystart}01_${yend}12.nc
|
|
|
|
##$CDO $REMAP $SELYEAR -selvar,snd ${datadir}/${expid}_BOT.nc ${datadir}/snd_${expid}_icon_BOT_mm_${ystart}01_${yend}12.nc
|
|
|
|
rm ${datadir}/${expid}_BOT.nc
|
|
|
|
|
|
|
|
###Create namelist of experiments for CVDP to run
|
|
|
|
cat >>namelist<<EOF
|
|
|
|
$expid | ${datadir}/ | ${ystart} | ${yend}
|
|
|
|
EOF
|
|
|
|
|
|
|
|
### Run CVDP ##
|
|
|
|
#cd /work/mh1421/m300466/tools/CVDP
|
|
|
|
cp driver.ncl ${expid}_${ystart}-${yend}.ncl
|
|
|
|
sed -i "s/\/project\/diag\/Comparison1/\/work\/mh1421\/m300466\/tools\/CVDP\/cvdpplots\/${expid}_cvdp_${ystart}-${yend}/" ${expid}_${ystart}-${yend}.ncl
|
|
|
|
sed -i "s/Title\ goes\ here/${expid}\ (${ystart}-${yend})/" ${expid}_${ystart}-${yend}.ncl
|
|
|
|
ncl ${expid}_${ystart}-${yend}.ncl
|
|
|
|
|
|
|
|
mv ${expid}_${ystart}-${yend}.ncl driverscripts/
|
|
|
|
rm -rf ${datadir}
|
|
|
|
rm ${plotdir}/*.nc
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
<details><summary><b> Upload figures to swiftbrowser and view </b></summary>
|
|
|
|
|
|
|
|
```bash
|
|
|
|
module load py-python-swiftclient/3.12.0-gcc-11.2.0
|
|
|
|
cd /work/mh1421/m300466/tools/CVDP
|
|
|
|
swift upload m300466_DRAGON cvdpplots
|
|
|
|
```
|
|
|
|
|
|
|
|
[View CVDP plots](https://swift.dkrz.de/v1/dkrz_b70a6895-056b-4057-943d-2495ab773b09/m300466_DRAGON/cvdpplots/hel24312_r5b7_ctrl_cvdp_1750-1799/index.html)
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
## 2D bivariate time series analysis
|
|
|
|
Using `cdo` to perform basic time series analysis on ICON output.
|
|
|
|
|
|
|
|
### Correlation and Regression
|
|
|
|
|
|
|
|
Correlation and regression coefficients can be simulataneously computed for each grid point on the native grid so that we can obtain 2D maps of the bi-variate relations.
|
|
|
|
|
|
|
|
<details><summary><b> Example script for computing correlation and regression </b></summary>
|
|
|
|
|
|
|
|
This example uses a control CMIP7 experiment (slo1774; 160km atm resolution).
|
|
|
|
Be sure to remove trend and largest "known" time scale, e.g. seasonal cycle.
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
|
|
expid=slo1774
|
|
|
|
datadir=/work/mh0287/m211032/Icon/Git_lev/icon.XPP.20240717/build.intel-hdint/experiments/${expid}
|
|
|
|
outdir=/work/mh1421/m300466/blah/${expid}
|
|
|
|
varname1="t_2m"
|
|
|
|
varname2="sp_10m"
|
|
|
|
yyyys=1200
|
|
|
|
yyyye=1299
|
|
|
|
|
|
|
|
mkdir -p ${outdir}
|
|
|
|
|
|
|
|
# Detrend and remove seasonal cycle
|
|
|
|
cdo -ymonsub -detrend -select,name=${varname1},year=${yyyys}/${yyyye}/1 [ ${datadir}/slo1774_atm_2d_ml_*.nc ] -ymonmean -detrend -select,name=${varname1},year=${yyyys}/${yyyye}/1 [ ${datadir}/slo1774_atm_2d_ml_*.nc ] ${outdir}/rmseas_${varname1}_mm_${yyyys}-${yyyye}.nc
|
|
|
|
cdo -ymonsub -detrend -select,name=${varname2},year=${yyyys}/${yyyye}/1 [ ${datadir}/slo1774_atm_2d_ml_*.nc ] -ymonmean -detrend -select,name=${varname2},year=${yyyys}/${yyyye}/1 [ ${datadir}/slo1774_atm_2d_ml_*.nc ] ${outdir}/rmseas_${varname2}_mm_${yyyys}-${yyyye}.nc
|
|
|
|
|
|
|
|
|
|
|
|
#Correlation computed directly from cdo
|
|
|
|
cdo -timcor ${outdir}/rmseas_${varname1}_mm_${yyyys}-${yyyye}.nc ${outdir}/rmseas_${varname2}_mm_${yyyys}-${yyyye}.nc ${outdir}/timcor_${varname1}_${varname2}_mm_${yyyys}-${yyyye}.nc
|
|
|
|
|
|
|
|
#Correlation = covariance/(std(x)*std(y))
|
|
|
|
cdo -div -timcovar ${outdir}/rmseas_${varname1}_mm_${yyyys}-${yyyye}.nc ${outdir}/rmseas_${varname2}_mm_${yyyys}-${yyyye}.nc -mul -timstd ${outdir}/rmseas_${varname1}_mm_${yyyys}-${yyyye}.nc -timstd ${outdir}/rmseas_${varname2}_mm_${yyyys}-${yyyye}.nc ${outdir}/timecorr_${expid}_${varname1}_${varname2}_mm_${yyyys}-${yyyye}.nc
|
|
|
|
#Regrid to 1x1deg for easy plotting
|
|
|
|
cdo -remapycon,r360x180 ${outdir}/timecorr_${expid}_${varname1}_${varname2}_mm_${yyyys}-${yyyye}.nc ${outdir}/timecorr_${expid}_${varname1}_${varname2}_mm_${yyyys}-${yyyye}_r360x180.nc
|
|
|
|
#Plot
|
|
|
|
ncview ${outdir}/timecorr_${expid}_${varname1}_${varname2}_mm_${yyyys}-${yyyye}_r360x180.nc &
|
|
|
|
|
|
|
|
#Regression(y on x)=covariance(x,y)/variance(x)
|
|
|
|
cdo -div -timcovar ${outdir}/rmseas_${varname1}_mm_${yyyys}-${yyyye}.nc ${outdir}/rmseas_${varname2}_mm_${yyyys}-${yyyye}.nc -timvar ${outdir}/rmseas_${varname1}_mm_${yyyys}-${yyyye}.nc
|
|
|
|
${outdir}/regress_${varname2}_on_${varname1}_${expid}_mm_${yyyys}-${yyyye}.nc
|
|
|
|
#Regrid to 1x1deg for easy plotting
|
|
|
|
cdo -remapycon,r360x180 ${outdir}/regress_${varname2}_on_${varname1}_${expid}_mm_${yyyys}-${yyyye}.nc ${outdir}/regress_${varname2}_on_${varname1}_${expid}_mm_${yyyys}-${yyyye}_r360x180.nc
|
|
|
|
#Plot
|
|
|
|
ncview ${outdir}/regress_${varname2}_on_${varname1}_${expid}_mm_${yyyys}-${yyyye}_r360x180.nc &
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
</details>details>
|
|
|
|
|
|
|
|
### Temporal Spectra
|
|
|
|
|
|
|
|
While variance/covariance gives you the combined variability on all time scales, the power/cross spectra allows us to assess the variability at particular frequency. Furthermore, the squared coherence, phase spectra and gain functions tells us the correlation, lead-lag and regression, respectively, at specific frequency/timescales.
|
|
|
|
|
|
|
|
The spectra can be simulataneously computed for each grid point on the native grid so that we can obtain 2D maps of how variability and bi-variate relations may look like on different frequency/timescales.
|
|
|
|
|
|
|
|
<details><summary><b> Example script for spectral analysis </b></summary>
|
|
|
|
|
|
|
|
This example uses a control CMIP7 experiment (slo1774; 160km atm resolution). The script is called `timespectra_iconxpp.sh`
|
|
|
|
|
|
|
|
```bash
|
|
|
|
#!/bin/sh
|
|
|
|
expid=slo1774
|
|
|
|
DATAPATH=/work/mh0287/m211032/Icon/Git_lev/icon.XPP.20240717/build.intel-hdint/experiments/${expid}
|
|
|
|
OUTPATH=/work/mh1421/m300466/blah/${expid}/spectra
|
|
|
|
mkdir -p ${OUTPATH}
|
|
|
|
YYYYs=1000
|
|
|
|
YYYYe=2099
|
|
|
|
Tyear=100
|
|
|
|
Tlen=$Tyear #annual values
|
|
|
|
varname1="t_2m"
|
|
|
|
varname2="sp_10m"
|
|
|
|
varxy="${varname1}_${varname2}"
|
|
|
|
PSfacfile=${OUTPATH}/PSfac${Tlen}atmfile
|
|
|
|
setgridfile=${OUTPATH}/setgrid${Tlen}atmfile.nc
|
|
|
|
### end of user define ###
|
|
|
|
|
|
|
|
iens=1
|
|
|
|
YYYYint=$YYYYs
|
|
|
|
YYYYce=`expr $YYYYe - $Tyear + 1`
|
|
|
|
fqpt=$(expr $Tlen / 2 + 1 )
|
|
|
|
fqptm=$(expr $Tlen / 2 )
|
|
|
|
tvec=($(seq 0 1 $fqptm))
|
|
|
|
tlist="time(:)={"$(printf "%s," "${tvec[@]}" | sed 's/,$//')"}"
|
|
|
|
PSfac=$(echo "2/$Tlen" | bc -l )
|
|
|
|
r2d=$(echo "180/3.14159" | bc -l )
|
|
|
|
|
|
|
|
while [ $YYYYint -le $YYYYce ] ; do
|
|
|
|
YYYYinte=`expr $YYYYint + $Tyear - 1`
|
|
|
|
if [ $iens -le 9 ] ; then
|
|
|
|
ensid="0${iens}"
|
|
|
|
else
|
|
|
|
ensid="${iens}"
|
|
|
|
fi
|
|
|
|
|
|
|
|
#Multiplication factor (2/time length) for power spectrum [need to only make once]
|
|
|
|
if [ $YYYYint -eq $YYYYs ]; then
|
|
|
|
echo "Compute multiplication factor for spectrum"
|
|
|
|
cdo -s -detrend -yearmean -select,name=${varname1},year=${YYYYint}/${YYYYinte}/1 [ ${DATAPATH}/${expid}_atm_2d_ml_*.nc ] ${setgridfile}
|
|
|
|
cdo -f ext -retocomplex -setmisstoc,${PSfac} -setrtomiss,-50,50 ${setgridfile} ${PSfacfile}
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Detrend
|
|
|
|
cdo -detrend -yearmean -select,name=${varname1},year=${YYYYint}/${YYYYinte}/1 [ ${DATAPATH}/slo1774_atm_2d_ml_*.nc ] ${OUTPATH}/detrend_${varname1}_ym_ens${ensid}.nc
|
|
|
|
cdo -detrend -yearmean -select,name=${varname2},year=${YYYYint}/${YYYYinte}/1 [ ${DATAPATH}/slo1774_atm_2d_ml_*.nc ] ${OUTPATH}/detrend_${varname2}_ym_ens${ensid}.nc
|
|
|
|
|
|
|
|
# Fourier Transform
|
|
|
|
cdo -s -f ext fourier,-1 -retocomplex ${OUTPATH}/detrend_${varname1}_ym_ens${ensid}.nc ${OUTPATH}/fft_${varname1}_ens${ensid}
|
|
|
|
cdo -s -f ext fourier,-1 -retocomplex ${OUTPATH}/detrend_${varname2}_ym_ens${ensid}.nc ${OUTPATH}/fft_${varname2}_ens${ensid}
|
|
|
|
|
|
|
|
# Multiply by conjugate and with factor (2/time length) to get periodogram
|
|
|
|
echo "Compute periodogram and cross periodogram for "${ensid}
|
|
|
|
# spxx
|
|
|
|
cdo -s -mul ${PSfacfile} -mul ${OUTPATH}/fft_${varname1}_ens${ensid} -conj ${OUTPATH}/fft_${varname1}_ens${ensid} ${OUTPATH}/SPXX_ens${ensid}
|
|
|
|
# spyy
|
|
|
|
cdo -s -mul ${PSfacfile} -mul ${OUTPATH}/fft_${varname2}_ens${ensid} -conj ${OUTPATH}/fft_${varname2}_ens${ensid} ${OUTPATH}/SPYY_ens${ensid}
|
|
|
|
# spxy
|
|
|
|
cdo -s -mul ${PSfacfile} -mul ${OUTPATH}/fft_${varname1}_ens${ensid} -conj ${OUTPATH}/fft_${varname2}_ens${ensid} ${OUTPATH}/SPXY_ens${ensid}
|
|
|
|
|
|
|
|
rm ${OUTPATH}/fft_${varname1}_ens${ensid}
|
|
|
|
rm ${OUTPATH}/fft_${varname2}_ens${ensid}
|
|
|
|
|
|
|
|
cdo -s -complextorect ${OUTPATH}/SPXX_ens${ensid} ${OUTPATH}/SPXXreal_ens${ensid} ${OUTPATH}/SPXXimag_ens${ensid}
|
|
|
|
cdo -s -complextorect ${OUTPATH}/SPYY_ens${ensid} ${OUTPATH}/SPYYreal_ens${ensid} ${OUTPATH}/SPYYimag_ens${ensid}
|
|
|
|
cdo -s -complextorect ${OUTPATH}/SPXY_ens${ensid} ${OUTPATH}/SPXYreal_ens${ensid} ${OUTPATH}/SPXYimag_ens${ensid}
|
|
|
|
rm ${OUTPATH}/SPXX_ens${ensid}
|
|
|
|
rm ${OUTPATH}/SPYY_ens${ensid}
|
|
|
|
rm ${OUTPATH}/SPXY_ens${ensid}
|
|
|
|
|
|
|
|
iens=`expr $iens + 1`
|
|
|
|
YYYYint=`expr $YYYYint + $Tyear`
|
|
|
|
done #iens
|
|
|
|
echo "Finished processing periodogram"
|
|
|
|
|
|
|
|
echo "Compute ensemble mean of power and cross spectrum "
|
|
|
|
# Mean power spectrum (separate computation for real and imag parts)
|
|
|
|
# Only use first-half of spectrum
|
|
|
|
cdo -s -setreftime,0 -select,timestep=1/${fqpt} -ensmean "${OUTPATH}/SPXXreal_ens*" ${OUTPATH}/MSPXXreal_${expid}
|
|
|
|
cdo -s -setreftime,0 -select,timestep=1/${fqpt} -ensmean "${OUTPATH}/SPXXimag_ens*" ${OUTPATH}/MSPXXimag_${expid}
|
|
|
|
cdo -s -setreftime,0 -select,timestep=1/${fqpt} -ensmean "${OUTPATH}/SPYYreal_ens*" ${OUTPATH}/MSPYYreal_${expid}
|
|
|
|
cdo -s -setreftime,0 -select,timestep=1/${fqpt} -ensmean "${OUTPATH}/SPYYimag_ens*" ${OUTPATH}/MSPYYimag_${expid}
|
|
|
|
cdo -s -setreftime,0 -select,timestep=1/${fqpt} -ensmean "${OUTPATH}/SPXYreal_ens*" ${OUTPATH}/MSPXYreal_${expid}
|
|
|
|
cdo -s -setreftime,0 -select,timestep=1/${fqpt} -ensmean "${OUTPATH}/SPXYimag_ens*" ${OUTPATH}/MSPXYimag_${expid}
|
|
|
|
rm ${OUTPATH}/SPXXreal_ens*
|
|
|
|
rm ${OUTPATH}/SPXXimag_ens*
|
|
|
|
rm ${OUTPATH}/SPYYreal_ens*
|
|
|
|
rm ${OUTPATH}/SPYYimag_ens*
|
|
|
|
rm ${OUTPATH}/SPXYreal_ens*
|
|
|
|
rm ${OUTPATH}/SPXYimag_ens*
|
|
|
|
|
|
|
|
#Convert back to complex
|
|
|
|
cdo -s -add -retocomplex ${OUTPATH}/MSPXXreal_${expid} -imtocomplex ${OUTPATH}/MSPXXimag_${expid} ${OUTPATH}/MSPXX_${expid}
|
|
|
|
cdo -s -add -retocomplex ${OUTPATH}/MSPYYreal_${expid} -imtocomplex ${OUTPATH}/MSPYYimag_${expid} ${OUTPATH}/MSPYY_${expid}
|
|
|
|
cdo -s -add -retocomplex ${OUTPATH}/MSPXYreal_${expid} -imtocomplex ${OUTPATH}/MSPXYimag_${expid} ${OUTPATH}/MSPXY_${expid}
|
|
|
|
|
|
|
|
# Mean power and cross spectra
|
|
|
|
cdo -f nc -setgrid,${setgridfile} -abs ${OUTPATH}/MSPXX_${expid} ${OUTPATH}/powerspec_${varname1}_${expid}.nc
|
|
|
|
cdo -f nc -setgrid,${setgridfile} -abs ${OUTPATH}/MSPYY_${expid} ${OUTPATH}/powerspec_${varname2}_${expid}.nc
|
|
|
|
cdo -f nc -setgrid,${setgridfile} -abs ${OUTPATH}/MSPXY_${expid} ${OUTPATH}/crossspec_${varxy}_${expid}.nc
|
|
|
|
|
|
|
|
#Coherence
|
|
|
|
echo "Compute coherence and regrid to geographical locations"
|
|
|
|
cdo -s -mul -abs ${OUTPATH}/MSPXY_${expid} -abs ${OUTPATH}/MSPXY_${expid} ${OUTPATH}/abs2MSPXY_${expid}
|
|
|
|
cdo -s -mul ${OUTPATH}/MSPXX_${expid} ${OUTPATH}/MSPYY_${expid} ${OUTPATH}/MSPXXxMSPYY_${expid}
|
|
|
|
cdo -s -div ${OUTPATH}/abs2MSPXY_${expid} -re ${OUTPATH}/MSPXXxMSPYY_${expid} ${OUTPATH}/SQCOH_${varxy}_${expid}
|
|
|
|
cdo -f nc -setgrid,${setgridfile} ${OUTPATH}/SQCOH_${varxy}_${expid} ${OUTPATH}/coher_${varxy}_${expid}.nc
|
|
|
|
rm ${OUTPATH}/abs2MSPXY_${expid}
|
|
|
|
rm ${OUTPATH}/MSPXXxMSPYY_${expid}
|
|
|
|
rm ${OUTPATH}/SQCOH_${varxy}_${expid}
|
|
|
|
|
|
|
|
#Phase spectrum
|
|
|
|
echo "Compute phase spectrum and regrid to geographical locations"
|
|
|
|
cdo -f nc -setgrid,${setgridfile} -mulc,${r2d} -atan2 -mulc,-1 ${OUTPATH}/MSPXYimag_${expid} ${OUTPATH}/MSPXYreal_${expid} ${OUTPATH}/phase_${varxy}_${expid}.nc
|
|
|
|
|
|
|
|
#Gain spectrum
|
|
|
|
echo "Compute gain spectrum and regrid to geographical locations"
|
|
|
|
#Regression of Y on X
|
|
|
|
cdo -div -abs ${OUTPATH}/MSPXY_${expid} -abs ${OUTPATH}/MSPXX_${expid} ${OUTPATH}/gainXY_${varxy}_${expid}
|
|
|
|
cdo -f nc -setgrid,${setgridfile} ${OUTPATH}/gainXY_${varxy}_${expid} ${OUTPATH}/gainXY_${varxy}_${expid}.nc
|
|
|
|
rm ${OUTPATH}/gainXY_${varxy}_${expid}
|
|
|
|
#Regression of X on Y
|
|
|
|
cdo -div -abs ${OUTPATH}/MSPXY_${expid} -abs ${OUTPATH}/MSPYY_${expid} ${OUTPATH}/gainYX_${varxy}_${expid}
|
|
|
|
cdo -f nc -setgrid,${setgridfile} ${OUTPATH}/gainYX_${varxy}_${expid} ${OUTPATH}/gainYX_${varxy}_${expid}.nc
|
|
|
|
rm ${OUTPATH}/gainYX_${varxy}_${expid}
|
|
|
|
|
|
|
|
# Adjust frequency axis
|
|
|
|
ncap2 -O -h -s ${tlist} ${OUTPATH}/powerspec_${varname1}_${expid}.nc ${OUTPATH}/powerspec_${varname1}_${expid}.nc
|
|
|
|
ncap2 -O -h -s ${tlist} ${OUTPATH}/powerspec_${varname2}_${expid}.nc ${OUTPATH}/powerspec_${varname2}_${expid}.nc
|
|
|
|
ncap2 -O -h -s ${tlist} ${OUTPATH}/crossspec_${varxy}_${expid}.nc ${OUTPATH}/crossspec_${varxy}_${expid}.nc
|
|
|
|
ncap2 -O -h -s ${tlist} ${OUTPATH}/coher_${varxy}_${expid}.nc ${OUTPATH}/coher_${varxy}_${expid}.nc
|
|
|
|
ncap2 -O -h -s ${tlist} ${OUTPATH}/phase_${varxy}_${expid}.nc ${OUTPATH}/phase_${varxy}_${expid}.nc
|
|
|
|
ncap2 -O -h -s ${tlist} ${OUTPATH}/gainXY_${varxy}_${expid}.nc ${OUTPATH}/gainXY_${varxy}_${expid}.nc
|
|
|
|
ncap2 -O -h -s ${tlist} ${OUTPATH}/gainYX_${varxy}_${expid}.nc ${OUTPATH}/gainYX_${varxy}_${expid}.nc
|
|
|
|
|
|
|
|
# Remove intermediate files
|
|
|
|
rm ${OUTPATH}/MSPXXreal_${expid}
|
|
|
|
rm ${OUTPATH}/MSPXXimag_${expid}
|
|
|
|
rm ${OUTPATH}/MSPYYreal_${expid}
|
|
|
|
rm ${OUTPATH}/MSPYYimag_${expid}
|
|
|
|
rm ${OUTPATH}/MSPXYreal_${expid}
|
|
|
|
rm ${OUTPATH}/MSPXYimag_${expid}
|
|
|
|
rm ${OUTPATH}/MSPXX_${expid}
|
|
|
|
rm ${OUTPATH}/MSPYY_${expid}
|
|
|
|
rm ${OUTPATH}/MSPXY_${expid}
|
|
|
|
|
|
|
|
#Remap to 1x1deg for easy plotting
|
|
|
|
cdo -remapycon,r360x180 ${OUTPATH}/powerspec_${varname1}_${expid}.nc ${OUTPATH}/powerspec_${varname1}_${expid}_r360x180.nc
|
|
|
|
cdo -remapycon,r360x180 ${OUTPATH}/powerspec_${varname2}_${expid}.nc ${OUTPATH}/powerspec_${varname2}_${expid}_r360x180.nc
|
|
|
|
cdo -remapycon,r360x180 ${OUTPATH}/crossspec_${varxy}_${expid}.nc ${OUTPATH}/crossspec_${varxy}_${expid}_r360x180.nc
|
|
|
|
cdo -remapycon,r360x180 ${OUTPATH}/coher_${varxy}_${expid}.nc ${OUTPATH}/coher_${varxy}_${expid}_r360x180.nc
|
|
|
|
cdo -remapycon,r360x180 ${OUTPATH}/phase_${varxy}_${expid}.nc ${OUTPATH}/phase_${varxy}_${expid}_r360x180.nc
|
|
|
|
cdo -remapycon,r360x180 ${OUTPATH}/gainXY_${varxy}_${expid}.nc ${OUTPATH}/gainXY_${varxy}_${expid}_r360x180.nc
|
|
|
|
cdo -remapycon,r360x180 ${OUTPATH}/gainYX_${varxy}_${expid}.nc ${OUTPATH}/gainYX_${varxy}_${expid}_r360x180.nc
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
|
|
## Example notebooks for some scientific analysis from 2024 pre-hackathon
|
|
|
|
This was prepared for the 2024 hackathon (nextGEMS, EERIE, WarmWorld). Here's a [collection of examples](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/README.md) particularly for topics on mesoscale eddies and their impact on air-sea coupling, ocean state (physical and BGC) and atmospheric state.
|
|
|
|
|
|
|
|
<details><summary><b> Collection of example notebooks </b></summary>
|
|
|
|
|
|
|
|
- [Eddy identification, tracking and compositing](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/eddy_track_composite/README.md) of physical (ocean/atmos) and biogeochemical properties
|
|
|
|
- ICON (read-in netcdf; serial running): [identify and track eddies](https://github.com/eerie-project/EERIE_hackathon_2023/blob/main/ICON/ICON-O/howto-IDtrackcompeddy-daily.ipynb), [build eddy composites](https://github.com/eerie-project/EERIE_hackathon_2023/blob/main/ICON/ICON-O/howto-eddycompositeotherfields-daily.ipynb), [plot composites](https://github.com/eerie-project/EERIE_hackathon_2023/blob/main/ICON/ICON-O/howto-plot-eddycompositesalongtrack-dm.ipynb) by Dian Putrasahan
|
|
|
|
- ICON (read-in netcdf; parallel running): [py-eddy-tracker parameter sensitivity experiment](https://github.com/eerie-project/EERIE_hackathon_2023/tree/main/RESULTS/pyeddytracker_parallel_computing) by Arjun Kumar
|
|
|
|
- ICON ( [parallelise eddy identification code](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/eddy_track_composite/ICON/identify_fast.py) and [compositing with higher res data](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/eddy_track_composite/ICON/composite_tracks.py) than 0.25deg) by Moritz Epke
|
|
|
|
- ICON ([read-in as xarray; parallel running](https://github.com/eerie-project/EERIE_hackathon_2023/tree/main/RESULTS/pyeddytracker_xarray_dask_parallel)) by Aaron Wienkers
|
|
|
|
- [IFS-AMIP](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/RESULTS/eddy_composites-short.ipynb) (atm response) by Matthias Aengenheyster
|
|
|
|
- [IFS/FESOM](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/eddy_track_composite/IFS-FESOM/IDtrackeddy-daily-intake_IFSFESOM.ipynb) (use intake and read-in as xarray; parallel running) by Aaron Wienkers and Dian Putrasahan
|
|
|
|
- [HAMOCC](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/eddy_track_composite/HAMOCC/README.md) (read-in netcdf; serial running) by Johann Jungclaus and Dian Putrasahan
|
|
|
|
- [Spatial filters](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mesoscale-air-sea-coupling/Spatial_Filters/README.md) on regular grid
|
|
|
|
1. [Weighted area-average smoothing](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mesoscale-air-sea-coupling/Spatial_Filters/README.md#weighted-area-average-smoothing-using-cdo) using `cdo -smooth` operator.
|
|
|
|
- [Spatial filtering on HEALpix data](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mesoscale-air-sea-coupling/Spatial_Filters/README.md#bonus-spatial-filtering-on-healpix-data).
|
|
|
|
2. [Bessel filter](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mesoscale-air-sea-coupling/Spatial_Filters/README.md#bessel-filter) using a function from py-eddy-tracker by Dian Putrasahan
|
|
|
|
3. [Gaussian filter](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mesoscale-air-sea-coupling/Spatial_Filters/README.md#gaussian-filter) using a function from GCM filters by Matthias Aengenheyster and Dian Putrasahan
|
|
|
|
- [Scale dependency of air-sea coupling](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mesoscale-air-sea-coupling/README.md)
|
|
|
|
- [ICON](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mesoscale-air-sea-coupling/ICON/README.md) by Dian Putrasahan
|
|
|
|
- [IFS/FESOM](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mesoscale-air-sea-coupling/IFS-FESOM/README.md) by Matthias Aengenheyster, Rohit Ghosh and Dian Putrasahan
|
|
|
|
- [Mean vs eddy fluxes in the ocean](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mean_eddy_flux/README.md)
|
|
|
|
- [vertical heat fluxes in ICON](https://github.com/eerie-project/EERIE_hackathon_2023/blob/main/RESULTS/vertical_heat_flux_ICON_WP6_hackathon.ipynb) by Stella Bērziņa and Matthias Münnich
|
|
|
|
- [in-situ or potential density from potential temperature and salinity](https://github.com/eerie-project/EERIE_hackathon_2023/tree/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mean_eddy_flux#in-situ-or-potential-density)
|
|
|
|
- [find depth of isopycnal surfaces](https://github.com/eerie-project/EERIE_hackathon_2023/tree/pre-joint-hackathon-2024/pre-joint-hackathon-2024/mean_eddy_flux#depth-of-isopycnal-surfaces)
|
|
|
|
- [Impact of eddies on atmosphere mean state (IFS-AMIP)](https://github.com/eerie-project/EERIE_hackathon_2023/tree/pre-joint-hackathon-2024/RESULTS)
|
|
|
|
- [2D atm clim state](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/RESULTS/IFS_AMIP_atmosresponse_to_SST_forcing_djf_clmdiff.ipynb) by Iuliia Polkova
|
|
|
|
- [3D atm clim state](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/RESULTS/IFS_AMIP_atmosresponse_to_SST_forcing_djf_clmdiff_3D.ipynb) by Iuliia Polkova
|
|
|
|
- [atm covariability/correlation](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/RESULTS/IFS_AMIP_atmosresponse_to_SST_forcing_djf_correlation.ipynb) by Iuliia Polkova
|
|
|
|
- [local atm response (composites)](https://github.com/eerie-project/EERIE_hackathon_2023/blob/pre-joint-hackathon-2024/RESULTS/IFS_AMIP_composites.ipynb) by Chris Roberts and Matthias Aengenheyster
|
|
|
|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|