MOM Supergrid 100km standalone - #1132
anton-seaice wants to merge 13 commits into
Conversation
Adds grid/decomposition/forcing settings and a smoke test for a new 100km ACCESS-OM3 grid standalone CICE case, using the newly generated 2005 JRA55-do forcing. Also adds access_100km to JRA55_files' grid-name whitelist in ice_forcing.F90, the same kind of addition a025 needed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…dir setting - Add Macros.gadi_oneapi/env.gadi_oneapi (ACCESS-NRI gadi oneapi compiler port, not yet upstream) so access_100km can be tested with both intel and oneapi environments. - Add gdata/vk83 to cice.batch.csh's PBS storage request - the access_100km grid/kmt files are symlinks into vk83, so PBS jobs need that filesystem granted or ice_open_nc fails with "Cannot open". - Move atm_data_dir back into set_nml.access_100km directly (format/type/ version still come from the shared set_nml.jra55do Set); on this clean branch set_nml.jra55do doesn't set atm_data_dir at all, so there's no override-ordering conflict here. Verified with the access_100km_cgrid test suite (2x smoke + 1x restart, including a bfb comparison between the restart test and a differently- decomposed smoke test) under both -e intel and -e oneapi. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
@apcraig - if the gist of this looks ok, ill get the test data to you. The script to make the test data is here. It might standalone ok, so could be added to this repo as well ? I added a new test suite to cover smoke and restart cases, and both b and c grid. If that looks ok, I guess it should be incorporated into |
|
Thanks @anton-seaice, it's great to get mom grid testing in the standalone model! I ran some tests with the new grid on derecho. A few comments about the current implementation. If you want me to work on some of these issues and PR changes to your branch, I'm happy to do that. But also happy for you to take the lead.
|
On non-master tasks, G_ULAT/G_TLAT/G_TLON/G_ULON etc. were allocated as dummy (1,1) arrays, but mom_bounds unconditionally references array sections like G_corners(1:nx_global,1:ny_global) against them - an out-of-bounds reference regardless of whether the values are used. This doesn't affect results but is flagged by gfortran's -fcheck=bounds (and would trap on NaN-initialized values under debug). Allocate the full-size arrays on every rank, and guard the degree-to-radian conversion in mom_corners_scatter to master-only, since it's now applied to real (if superfluous) data on non-master ranks too. Suggested-by: apcraig
…ug test - Add Macros.gadi_gnu/env.gadi_gnu (gcc/12.2.0 + openmpi), giving a third tested compiler environment alongside intel and oneapi. - Move ew_boundary_type/ns_boundary_type into set_nml.access_100km directly, since this grid is always tripolar - drops the need to list bctripole explicitly in every test's Sets (and updates the restart test's BFB-compare target name to match the resulting case-name change). - Add a second restart test line with debug enabled, following the convention in quick_suite.ts/gridsys_suite.ts of pairing debug with the cheaper restart test rather than the longer smoke test. Verified: smoke (gridc + default dynamics), restart w/ bfbcomp against the smoke test, and restart w/ debug all pass under gadi intel, oneapi, and gnu. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Oh thanks - ok replicated and applied these.
ACCESS don't really have names for grids as such - just names for configurations. e.g. this is the grid from access-om3 100km configurations. The current cice tests grids are from POP. I think the names have POP specific meanings ? So the idea here was just to make the grid clearly different. I do see the issue with the underscore now though. I guess there might be MOM tripole, MOM regional and MOM offset pole grids in the future, so some name to reflect those might make more sense. I think the name depends a bit on how likely we are to add configurations for each modelling centre (e.g. #971 )
I'll add the bctripole settings. In theory, there's nothing specific about this grid to the initial conditions or forcing. e.g. an idealised forcing would work too, as would other initial conditions, so it make some sense for the other settings to be customisable ?
I don't see this as critical, the code paths for decomposition are fairly independent to the grid setup
Yes agreed - it was just an example suite to get it started.
Ok, ill work on this. I didn't look at the existing script too long because the variable names didn't make sense to me. I guess they are from jra55 instead of jra55do ?
I have done 1 year runs already, and they worked for me |
|
Thanks Anton. How about if we call the grid tx1a? @eclare108213 @dabail10 any thoughts? This is a tripole, 100km grid (about 1 degree), in mom netcdf format, similar to tx1 in some ways but not tx1. Our grid prefixes now are gx (dispaced pole), tx (tripole), and gbox (box grids) and these are pop formats so far, whether binary or netcdf, but we have not really indicated whether a grid is binary, netcdf, pop, etc in the grid name which I think is right. In that case, this grid should be "tx1" but given a unique name. tx1a would be a new tripole 1deg grid. It happens to be mom netcdf format, but I don't think that should be reflected in the grid name, although it will be defined in the set_nml.$grid file. Also, I think we should set the default forcing, timestep, and some other things in the set.nml.$grid like the other grids. I understand that other forcing and settings can work, but the settings in the grid file establishes the baseline/preferred test configuration and the default settings for that grid. Those can be changed with other options or manual changes to the ice_in file. Fundamentally, I think we want to avoid having to know that other options SHOULD be set anytime a particular grid is chosen. That gets complicated and confusing. |
|
We still use the tx for our tripole grids. Our workhorse is now 2/3 degree and we call it tx2_3v3 with a version number attached. |
Could tx1a get mixed up as a variant of tx1 ? What about
Sorry, I think i get it now. I guess the default values in ice_in work in other grids but not this one. |
…ccess_100km Removes ionetcdf (no-op: netcdf is already ICE_IOTYPE's default), jra55do/icnone (moved into set_nml.access_100km directly, alongside the already-moved atm_data_dir/bctripole settings, since this grid always uses this forcing/IC), and droundrobin/iohdf5 (reverting to the actual CICE defaults - cartesian distribution, cdf1 restart/history format - which work fine for this grid and don't need to be pinned). This leaves the test suite's Sets column expressing only what's actually varied per test (dynamics option, run length, debug), while everything intrinsic to the access_100km grid lives in one place. Verified: all 4 tests (2x smoke, restart w/ bfbcomp, restart w/ debug) still pass under gadi intel. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
In the pop grids, I think the 'x' means 'by' as in '2 by 2' but only referring to the second part (~longitude). Grid names have become extremely complicated (and long) with version numbers and all kinds of other information included in the name itself. I'd prefer to keep it simple for our purposes, and I also prefer not to name anything that might be used more generally after a specific institution. But perhaps that is appropriate in this case. Is this a general-purpose mom grid that access is using, or is it a mom grid that access developed for its own use? Is 100 km a global average? I think we need the t for tripole and either 100km or x1 for resolution, then maybe something to distinguish this grid from the pop grids. How about something like t100km? tx1m or tmx1 would be okay too. Is the 'a' is for 'access' in tx1a? Is this a "supergrid"? If so, maybe tx1super? |
"Developed" is a stretch, but yes we made the grid (using MOM tools) based on some goals relevant to us. (e.g. more Southern Ocean cells)
it's a fairly approximate name. Its 1 degree in longitudes (ignoring the tripole), which is very roughly 100km at the equator.
Yeah, its a supergrid, but we've used the name mom in the code (rather that supergrid). tx1m or tmx1 are both good to me ? |
ah. The 1 degree in this grid is longitude, latitudes vary a fair bit : The grid is defined using the conventional tripolar definition(Murray, 1996)1. The grid is Mercator (i.e. the meridional spacing scales as the cosine of latitude) between 65° N and 75° S; south of 75° S, the meridional grid spacing is held at the same value as at 75° S. The meridional spacing is refined between 10° S and 10° N to increase equatorial resolution. |
My feeling is the grid name should not be associated with the grid format, whether that be pop or mom or supergrid, binary or netcdf. Nor should it necessarily be associated with the modeling center although it could be if it's unique enough. The grid specifically just defines some 2d lon/lat. The type of grid, displaced pole, tripole, rectangular, etc are part of our naming standards, so that's useful. The "a" in tx1a just means version "a" although it could also mean access (or anton) if anyone wanted to think of it that way. Dave's example of tx2_3v3 is going to be a little problematic for standalone CICE, I'm trying to avoid special characters. Maybe CICE would call that grid tx23v3 or txp7v3? We'll deal with that if it ever comes up. Like many things in software, conventions get established that are then sometimes difficult to extend later. I think we want unique gridnames that contain some info about the grid and are unique and short. This new grid is a "tx1" grid and we just need to uniquely identify it. I would suggest something like "tx1a", "tx1m", "tx1v1" "tx1v2", "tx1a1", "tx1mv1" or similar where the a, m, v1, v2, a1, mv1 suffix can be interpreted anyway you like :) |
|
Ok - ill go for tx1m |
Renames the grid identifier per apcraig's PR review comment (avoid model/group-specific names, prefer short lowercase names without underscores): access_100km -> tx1m, throughout cice_decomp.csh, set_nml.access_100km -> set_nml.tx1m, and access_100km_cgrid.ts -> tx1m_cgrid.ts. The underlying /g/data/ik11 grid/kmt/forcing files and directories were renamed to match. tx1m contains the existing tx1 grid name as a substring, which broke ice_forcing.F90's plain substring-match whitelist in JRA55_files (the tx1 branch matched first, silently truncating grd to 'tx1' and causing "could not find forcing file"). Fixed by checking tx1m before tx1 in the if/else-if chain. Also includes doc updates (dg_forcing.rst, ug_case_settings.rst, ug_implementation.rst, ug_running.rst) adding tx1m alongside the other standalone test grids. Verified: full tx1m_cgrid suite (2x smoke, restart w/ bfbcomp, restart w/ debug) passes under gadi intel. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Moves the JRA55-do forcing generation script from the om3-scripts repo into CICE itself, per apcraig's PR review suggestion, alongside the existing configuration/tools/jra55_datasets/ (which targets the older, raw JRA55 file layout rather than JRA55-do/input4MIPs). Drops the om3-scripts-specific provenance helper (get_provenance_metadata from that repo's scripts_common.py, unavailable once moved) in favour of a small self-contained one that records the run command, this script's own git commit (if applicable), and input file paths. Includes environment.yml (matching the format of the existing configuration/scripts/machines/environment.yml) and a README covering setup, usage, the field mapping, and the ttlpcp/precipitation caveat. Verified: regridding still works correctly from the new location, including against the renamed tx1m grid file. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
I think I've addressed all the comments except for updating the test suites. Could you do that @apcraig ? |
|
I have started testing again and will propose some changes to the test suite shortly. Thanks @anton-seaice |
|
I just submitted a PR with updates for the access_100km_standalone branch. Let me know if there are any concerns. Will retest once we converge on the updates. |
Updates for tx1m
| ``short``, ``medium``, ``long`` which change the batch time limit | ||
|
|
||
| ``gx3``, ``gx1``, ``tx1`` are associate with grid specific settings | ||
| ``gx3``, ``gx1``, ``tx1``, ``tx1m`` are associate with grid specific settings |
There was a problem hiding this comment.
| ``gx3``, ``gx1``, ``tx1``, ``tx1m`` are associate with grid specific settings | |
| ``gx3``, ``gx1``, ``tx1``, ``tx1m`` are associated with grid specific settings |
|
@anton-seaice, feel free to continue to make changes, especially if you find fixed in documentation. I will start a larger test suite, do you agree we're ready to start "final" testing? |
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Ready to go @apcraig :
|
|
Looks like this PR is nearly ready. @anton-seaice you should be able to submit the forcing dataset to the CICE Consortium community on zenodo, and I can accept it. Is the data in our standard format? In addition to zenodo, links and other info about the forcing will need to be added to the CICE forcing wiki page. Are you able to edit that one? |
Sounds good. The format follows the other forcing data as much as possible (e.g. variable names, folder structure etc). I've only made data for 2005, should I include 2006-2009 as well?
I don't have access but can write the update |
|
This is for testing the mom grid capability, I think one year of forcing data is more than adequate. I (or Elizabeth) can update the wiki, thanks Anton for putting some words together. |
|
I'm running a test suite, will approve and merge if that goes smoothly. Thanks! |
PR checklist
This adds a standalone cice test case to cover MOM supergrid, and tripolar grids
Closes #977
@anton-seaice @claude @apcraig
@apcraig
ENTER INFORMATION HERE
This change improves test coverage for repro testing, by including the MOM supergrid and tripolar grid from a netcdf file. New grid is named
tx1m, generated through FRENCTools. See the metadata in the grid and forcing files for how to regenerate files. A python script is added to generate CICE standalone forcing files from JRA55do data. The resultant forcing data for 2005 will also be added to the CICE consortium zenodo archive.