From 0f1676dcaf9f211ed987a314a9ee7cb396b5774f Mon Sep 17 00:00:00 2001 From: Jo Basevi Date: Tue, 27 Aug 2024 09:20:09 +1000 Subject: [PATCH] Add a skeleton access-esm1.5 config to test access-esm1p5 marked tests pass --- .../resources/access/configurations/README.md | 4 + .../config.yaml | 163 ++++++++++++++++++ .../ice/cice_in.nml | 3 + .../ice/ice_history.nml | 3 + .../manifests/exe.yaml | 18 ++ .../metadata.yaml | 28 +++ tests/test_test_access_esm1p5_config.py | 33 ++++ 7 files changed, 252 insertions(+) create mode 100644 tests/resources/access/configurations/README.md create mode 100644 tests/resources/access/configurations/release-preindustrial+concentrations/config.yaml create mode 100644 tests/resources/access/configurations/release-preindustrial+concentrations/ice/cice_in.nml create mode 100644 tests/resources/access/configurations/release-preindustrial+concentrations/ice/ice_history.nml create mode 100644 tests/resources/access/configurations/release-preindustrial+concentrations/manifests/exe.yaml create mode 100644 tests/resources/access/configurations/release-preindustrial+concentrations/metadata.yaml create mode 100644 tests/test_test_access_esm1p5_config.py diff --git a/tests/resources/access/configurations/README.md b/tests/resources/access/configurations/README.md new file mode 100644 index 0000000..c24c239 --- /dev/null +++ b/tests/resources/access/configurations/README.md @@ -0,0 +1,4 @@ +# Example test configuration + +This contains some files of configuration from the [ACCESS-NRI/access-esm1.5-configs](https://github.com/ACCESS-NRI/access-esm1.5-configs) repository. The configurations contain only the files +checked with QA checks, so they are incomplete configurations. \ No newline at end of file diff --git a/tests/resources/access/configurations/release-preindustrial+concentrations/config.yaml b/tests/resources/access/configurations/release-preindustrial+concentrations/config.yaml new file mode 100644 index 0000000..49399dd --- /dev/null +++ b/tests/resources/access/configurations/release-preindustrial+concentrations/config.yaml @@ -0,0 +1,163 @@ +# A tutorial for running ACCESS ESM1.5 can be found at +# https://access-hive.org.au/models/run-a-model/run-access-esm +# Full details about the payu configuration settings are available at +# https://payu.readthedocs.io/en/latest/config.html + + +# PBS configuration + +# If submitting to a different project to your default, uncomment line below +# and replace PROJECT_CODE with appropriate code. This may require setting shortpath +# project: PROJECT_CODE + +# Force payu to always find, and save, files in this scratch project directory +# shortpath: /scratch/PROJECT_CODE + +# Note: if laboratory is relative path, it is relative to shortpath/$USER +laboratory: access-esm + +jobname: pre-industrial +queue: normal +walltime: 2:30:00 + +# Modules for loading model executables +modules: + use: + - /g/data/vk83/modules + load: + - access-esm1p5/2024.05.0 + +# Model configuration +model: access + +submodels: + - name: atmosphere + model: um + ncpus: 192 + exe: um_hg3.exe + input: + # Aerosols + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/pre-industrial/atmosphere/aerosol/global.N96/2020.05.19/OCFF_1850_ESM1.anc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/pre-industrial/atmosphere/aerosol/global.N96/2020.05.19/BC_hi_1850_ESM1.anc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/pre-industrial/atmosphere/aerosol/global.N96/2020.05.19/scycl_1850_ESM1_v4.anc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/pre-industrial/atmosphere/aerosol/global.N96/2020.05.19/Bio_1850_ESM1.anc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/atmosphere/aerosol/global.N96/2020.05.19/biogenic_351sm.N96L38 + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/atmosphere/aerosol/global.N96/2020.05.19/sulpc_oxidants_N96_L38 + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/atmosphere/aerosol/global.N96/2020.05.19/DMS_conc.N96 + # Forcing + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/pre-industrial/atmosphere/forcing/global.N96/2020.05.19/ozone_1850_ESM1.anc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/pre-industrial/atmosphere/forcing/resolution_independent/2020.05.19/volcts_18502000ave.dat + # Land + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/pre-industrial/atmosphere/land/biogeochemistry/global.N96/2020.05.19/Ndep_1850_ESM1.anc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/atmosphere/land/soiltype/global.N96/2020.05.19/qrparm.soil_igbp_vg + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/atmosphere/land/vegetation/global.N96/2020.05.19/cable_vegfunc_N96.anc + - /g/data/vk83/configurations/inputs/access-esm1p5/share/atmosphere/land/biogeochemistry/resolution_independent/2020.05.19/modis_phenology_csiro.txt + - /g/data/vk83/configurations/inputs/access-esm1p5/share/atmosphere/land/biogeochemistry/resolution_independent/2020.05.19/pftlookup_csiro_v16_17tiles_wtlnds.csv + - /g/data/vk83/configurations/inputs/access-esm1p5/share/atmosphere/land/biogeophysics/resolution_independent/2020.05.19/def_soil_params.txt + - /g/data/vk83/configurations/inputs/access-esm1p5/share/atmosphere/land/biogeophysics/resolution_independent/2020.05.19/def_veg_params.txt + # Spectral + - /g/data/vk83/configurations/inputs/access-esm1p5/share/atmosphere/spectral/resolution_independent/2020.05.19/spec3a_sw_hadgem1_6on + - /g/data/vk83/configurations/inputs/access-esm1p5/share/atmosphere/spectral/resolution_independent/2020.05.19/spec3a_lw_hadgem1_6on + # Grids + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/atmosphere/grids/global.N96/2020.05.19/qrparm.mask + - /g/data/vk83/configurations/inputs/access-esm1p5/share/atmosphere/grids/resolution_independent/2020.05.19/vertlevs_G3 + # STASH + - /g/data/vk83/configurations/inputs/access-esm1p5/share/atmosphere/stash/2020.05.19/ + + - name: ocean + model: mom + ncpus: 180 + exe: fms_ACCESS-CM.x + input: + # Biogeochemistry + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ocean/biogeochemistry/global.1deg/2020.05.19/dust.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ocean/biogeochemistry/global.1deg/2020.05.19/ocmip2_press_monthly_om1p5_bc.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/share/ocean/biogeochemistry/global.1deg/2024.07.12/bgc_param.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/unused/ocean/biogeochemistry/global.1deg/2020.05.19/ocmip2_fice_monthly_om1p5_bc.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/unused/ocean/biogeochemistry/global.1deg/2020.05.19/ocmip2_xkw_monthly_om1p5_bc.nc + # Tides + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ocean/tides/global.1deg/2020.05.19/roughness_amp.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ocean/tides/global.1deg/2020.05.19/tideamp.nc + # Shortwave + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ocean/shortwave_penetration/global.1deg/2020.05.19/ssw_atten_depth.nc + # Grids + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ocean/grids/mosaic/global.1deg/2020.05.19/grid_spec.nc + + - name: ice + model: cice + ncpus: 12 + exe: cice_access_360x300_12x1_12p.exe + input: + # Grids + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ice/grids/global.1deg/2020.05.19/kmt.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ice/grids/global.1deg/2020.05.19/grid.nc + # Climatology + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/ice/climatology/global.1deg/2020.05.19/monthly_sstsss.nc + + - name: coupler + model: oasis + ncpus: 0 + input: + # Grids + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/grids/global.oi_1deg.a_N96/2020.05.19/grids.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/grids/global.oi_1deg.a_N96/2020.05.19/areas.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/grids/global.oi_1deg.a_N96/2020.05.19/masks.nc + # Remapping weights + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/remapping_weights/global.oi_1deg.a_N96/2020.05.19/rmp_cice_to_um1t_CONSERV_FRACNNEI.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/remapping_weights/global.oi_1deg.a_N96/2020.05.19/rmp_um1u_to_cice_CONSERV_FRACNNEI.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/remapping_weights/global.oi_1deg.a_N96/2020.05.19/rmp_um1t_to_cice_CONSERV_DESTAREA.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/remapping_weights/global.oi_1deg.a_N96/2020.05.19/rmp_cice_to_um1u_CONSERV_FRACNNEI.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/remapping_weights/global.oi_1deg.a_N96/2020.05.19/rmp_um1v_to_cice_CONSERV_FRACNNEI.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/remapping_weights/global.oi_1deg.a_N96/2020.05.19/rmp_um1t_to_cice_CONSERV_FRACNNEI.nc + - /g/data/vk83/configurations/inputs/access-esm1p5/modern/share/coupler/remapping_weights/global.oi_1deg.a_N96/2020.05.19/rmp_cice_to_um1v_CONSERV_FRACNNEI.nc + +# Collation +collate: + exe: mppnccombine.spack + restart: true + mem: 4GB + walltime: 1:00:00 + mpi: false + +restart: /g/data/vk83/configurations/inputs/access-esm1p5/modern/pre-industrial/restart/ + +# Timing controls +calendar: + start: + year: 101 + month: 1 + days: 1 + + runtime: + years: 1 + months: 0 + days: 0 + +runspersub: 1 + +# Misc +restart_freq: 10YS + +runlog: true +manifest: + reproduce: + exe: True + + +stacksize: unlimited +qsub_flags: -W umask=027 + + +# Sync options for automatically copying data from ephemeral scratch space to +# longer term storage +sync: + enable: False # set path below and change to true + path: null # Set to location on /g/data or a remote server and path (rsync syntax) + +# If a postscript included (such as the automated netcdf conversion), the latest output and restart files will not +# be automatically synced at the end of a run. To sync the latest output after a postscript has completed, +# manually run `payu sync` from the command line. + +# userscripts: + +postscript: -v PAYU_CURRENT_OUTPUT_DIR,PROJECT -lstorage=${PBS_NCI_STORAGE} ./scripts/NetCDF-conversion/UM_conversion_job.sh \ No newline at end of file diff --git a/tests/resources/access/configurations/release-preindustrial+concentrations/ice/cice_in.nml b/tests/resources/access/configurations/release-preindustrial+concentrations/ice/cice_in.nml new file mode 100644 index 0000000..6731b06 --- /dev/null +++ b/tests/resources/access/configurations/release-preindustrial+concentrations/ice/cice_in.nml @@ -0,0 +1,3 @@ +&setup_nml + mock_field = 365 +/ \ No newline at end of file diff --git a/tests/resources/access/configurations/release-preindustrial+concentrations/ice/ice_history.nml b/tests/resources/access/configurations/release-preindustrial+concentrations/ice/ice_history.nml new file mode 100644 index 0000000..68b5254 --- /dev/null +++ b/tests/resources/access/configurations/release-preindustrial+concentrations/ice/ice_history.nml @@ -0,0 +1,3 @@ +&icefields_nml + mock_field = .true. +/ \ No newline at end of file diff --git a/tests/resources/access/configurations/release-preindustrial+concentrations/manifests/exe.yaml b/tests/resources/access/configurations/release-preindustrial+concentrations/manifests/exe.yaml new file mode 100644 index 0000000..4633e99 --- /dev/null +++ b/tests/resources/access/configurations/release-preindustrial+concentrations/manifests/exe.yaml @@ -0,0 +1,18 @@ +format: yamanifest +version: 1.0 +--- +work/atmosphere/um_hg3.exe: + fullpath: /g/data/vk83/apps/spack/0.22/restricted/ukmo/release/linux-rocky8-x86_64_v4/intel-19.0.3.199/um7-git.2024.07.03_access-esm1.5-kgxooyp2s476dd4zc5mgtwhxfknkhnoe/bin/um_hg3.exe + hashes: + binhash: 3180dda616c7dfe63d8134e00bff2641 + md5: 1b7874ffb5e34ec50b6a68abbb7769a6 +work/ice/cice_access_360x300_12x1_12p.exe: + fullpath: /g/data/vk83/apps/spack/0.22/restricted/ukmo/release/linux-rocky8-x86_64_v4/intel-19.0.3.199/cice4-git.2024.05.21_access-esm1.5-hhtnigwxdyz7ta4dv3gvhwulze6hxqra/bin/cice_access_360x300_12x1_12p.exe + hashes: + binhash: 818f213e53d30fc307b565c35939382c + md5: 04fd88249ebc16e3f560fc265838e9d1 +work/ocean/fms_ACCESS-CM.x: + fullpath: /g/data/vk83/apps/spack/0.22/restricted/ukmo/release/linux-rocky8-x86_64_v4/intel-19.0.3.199/mom5-git.access-esm1.5_2024.06.20_access-esm1.5-wxxrc3ivrjz76yx565ddkuuiwoqpalko/bin/fms_ACCESS-CM.x + hashes: + binhash: a7a3151fb1b814f9e94f05e637b86a44 + md5: 241db68e6164fac77c59da99ffb1d3b1 \ No newline at end of file diff --git a/tests/resources/access/configurations/release-preindustrial+concentrations/metadata.yaml b/tests/resources/access/configurations/release-preindustrial+concentrations/metadata.yaml new file mode 100644 index 0000000..4b9594d --- /dev/null +++ b/tests/resources/access/configurations/release-preindustrial+concentrations/metadata.yaml @@ -0,0 +1,28 @@ +contact: Add your name here +email: Add your email address here +created: Add the date you started the experiment here (YYYY-MM-DD) +description: |- + ACCESS-ESM1.5 global coupled model configuration running in co2 concentration driven mode under pre-industrial forcings, as described in Ziehn et al. (2020), https://doi.org/10.1071/ES19035. + Pre-industrial forcing data including atmospheric co2 concentrations are primarily sourced from UKMO versions of CMIP6 inputs, with additional atmospheric forcings sourced from CMIP5 and land cover data adapted from Lawrence et al. (2012), https://doi.org/10.1175/JCLI-D-11-00256.1. +notes: |- + The developers of ACCESS-ESM1.5 request that users of these model configurations: + (a) Cite https://doi.org/10.1071/ES19035 + (b) Include an acknowledgment such as the following: + "The authors thank CSIRO for developing the ACCESS-ESM1.5 model configuration and making it freely available to researchers." + ACCESS-NRI requests users follow the guidelines for acknowledging ACCESS-NRI and include a statement such as: + "This research used the ACCESS-ESM1.5 model infrastructure provided by ACCESS-NRI, which is enabled by the Australian Government's National Collaborative Research Infrastructure Strategy (NCRIS)." +keywords: + - global + - access-esm1.5 +realm: + - atmos + - land + - ocean + - ocnBgchem + - seaIce +nominal_resolution: 100 km +reference: https://doi.org/10.1071/ES19035 +license: CC-BY-4.0 +model: ACCESS-ESM1.5 +version: '1.0' +url: https://github.com/ACCESS-NRI/access-esm1.5-configs.git \ No newline at end of file diff --git a/tests/test_test_access_esm1p5_config.py b/tests/test_test_access_esm1p5_config.py new file mode 100644 index 0000000..423b06f --- /dev/null +++ b/tests/test_test_access_esm1p5_config.py @@ -0,0 +1,33 @@ +import os +import shlex +import subprocess +from pathlib import Path + +HERE = os.path.dirname(__file__) +RESOURCES_DIR = Path(f"{HERE}/resources") + + +def test_test_access_esm1p5_config_release_release_preindustrial(): + """Test ACCESS-ESM1.5 specific config tests""" + access_esm1p5_configs = RESOURCES_DIR / "access" / "configurations" + test_config = access_esm1p5_configs / "release-preindustrial+concentrations" + + assert test_config.exists() + + test_cmd = ( + "model-config-tests -s " + # Run all access_esm1p5 specific tests + "-m access_esm1p5 " + f"--control-path {test_config} " + # Use target branch as can't mock get_git_branch function in utils + f"--target-branch release-preindustrial+concentrations" + ) + + result = subprocess.run(shlex.split(test_cmd), capture_output=True, text=True) + + # Expect the tests to have passed + if result.returncode: + # Print out test logs if there are errors + print(f"Test stdout: {result.stdout}\nTest stderr: {result.stderr}") + + assert result.returncode == 0