Ecwam develop fix tests#152
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates ecWAM’s regression-test configurations and runtime scripts to better match 50R1 operational usage (including wave–ice and wave–current interactions), adds new limited-area and GRIB-restart based test cases, and includes Fortran changes aimed at improving restart read/write performance.
Changes:
- Refresh and extend YAML test configurations (global + limited-area; add currents; update validation baselines; add GRIB-restart tests; remove older cy49/cy50 variants).
- Update run scripts to expose more namelist/config options (domain, spectral settings, sea-ice options, GRIB restart handling, currents retrieval).
- Fortran updates around initialization and restart I/O (sea-ice handling in
MSTART, reordering optimizations inREADFL/READSTRESS/WRITEFL, GRIB edition selection).
Reviewed changes
Copilot reviewed 32 out of 32 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/etopo1_oper_an_fc_O640.yml | Updates O640 operational analysis/forecast test config (ice/current options, timesteps, validation baselines). |
| tests/etopo1_oper_an_fc_O48.yml | Updates O48 operational test config; expands GRIB output fields and updates validation baselines. |
| tests/etopo1_oper_an_fc_O48_iphys_0.yml | Updates O48 iphys=0 coverage config and validation baselines. |
| tests/etopo1_oper_an_fc_O48_cy50r1.yml | Removes legacy cy50r1-specific test configuration. |
| tests/etopo1_oper_an_fc_O48_cy49r1.yml | Removes legacy cy49r1-specific test configuration. |
| tests/etopo1_oper_an_fc_O320.yml | Updates O320 operational config (currents, physics flags, outputs, validation baselines). |
| tests/etopo1_oper_an_fc_O320_cy49r2.yml | Removes legacy cy49r2-specific O320 configuration. |
| tests/etopo1_oper_an_fc_O1280.yml | Updates O1280 operational config (including currents and fast-waves settings) and validation baselines. |
| tests/etopo1_oper_an_fc_lam_highres.yml | Adds a new limited-area “lam_highres” test configuration. |
| tests/etopo1_oper_an_fc_grib_restart_O48.yml | Adds new O48 configuration starting from GRIB restart inputs. |
| tests/etopo1_oper_an_fc_grib_restart_O320.yml | Adds new O320 configuration starting from GRIB restart inputs (with currents). |
| tests/etopo1_era5_O48.yml | Updates ERA5-driven O48 test config (physics flags, expanded outputs, new baselines). |
| tests/CMakeLists.txt | Updates test registration (adds GRIB-restart tests; removes cy49/cy50 variants; adds O320 GRIB-restart variants). |
| tests/aqua_oper_an_fc_O48.yml | Updates aqua operational test config and validation baselines. |
| tests/aqua_era5_O48.yml | Updates aqua ERA5 test config and validation baselines. |
| src/programs/preset.F90 | Extends preset initialization to include ice options and passes CICOVER into MSTART. |
| src/ecwam/yowwind.F90 | Changes RWFAC from parameter to runtime-configurable variable. |
| src/ecwam/writefl.F90 | Adjusts unit-opening behavior and adds a reordering buffer to improve performance under 2-D decomposition. |
| src/ecwam/wgrib_edition.F90 | Extends GRIB edition selection logic for a parameter-ID range. |
| src/ecwam/sdice3.F90 | Restores multiplying by ZALPFACB in ice attenuation coefficient calculation. |
| src/ecwam/readwind.F90 | Improves GRIB buffer handling and skips unneeded ice fields based on flags. |
| src/ecwam/readstress.F90 | Adds buffered read + explicit reorder to reduce performance regression. |
| src/ecwam/readfl.F90 | Adds buffered read + OpenMP reorder to improve restart read performance. |
| src/ecwam/outblock.F90 | Adjusts noise-level handling logic based on LMASKICE. |
| src/ecwam/mstart.F90 | Adds CICOVER-aware reduction of JONSWAP in sea-ice conditions. |
| src/ecwam/mpuserin.F90 | Aligns default namelist values with 50R1 and introduces RWFAC as a configurable namelist value. |
| share/ecwam/scripts/ecwam_run_preset.sh | Adds config-driven domain/spectral/ice settings to the preset step. |
| share/ecwam/scripts/ecwam_run_model.sh | Adds GRIB-restart handling, more config-driven namelist options, and currents retrieval. |
| share/ecwam/scripts/ecwam_run_create_bathymetry.sh | Updates bathymetry tool selection by precision and adjusts obstruction-output handling. |
| share/ecwam/scripts/ecwam_helper_functions.sh | Generalizes preset restart-file discovery to support multiple header types. |
| share/ecwam/scripts/ecwam_configure.sh | Adds a new lam_highres domain configuration and adjusts medite25 handling. |
| share/ecwam/parameters.yml | Updates parameter-name mappings for expanded output fields. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_grib_restart_O320 CONFIG etopo1_oper_an_fc_grib_restart_O320.yml MPI 32 OMP 2 PREC ${prec} ) | ||
| ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_grib_restart_O320 CONFIG etopo1_oper_an_fc_grib_restart_O320.yml MPI 16 OMP 4 PREC ${prec} ) |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
| ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48_cy50r1 CONFIG etopo1_oper_an_fc_O48_cy50r1.yml PREC ${prec} ) | ||
| ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48_cy50r1 CONFIG etopo1_oper_an_fc_O48_cy50r1.yml MPI 4 OMP 1 PREC ${prec} ) | ||
| ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_O48_cy50r1 CONFIG etopo1_oper_an_fc_O48_cy50r1.yml MPI 1 OMP 4 PREC ${prec} ) | ||
| ecwam_add_test( ${PROJECT_NAME}_test_etopo1_oper_an_fc_grib_restart_O320 CONFIG etopo1_oper_an_fc_grib_restart_O320.yml PREC ${prec} ) |
There was a problem hiding this comment.
Hi @jrbidlot. I haven't looked through your PR in detail, but I think the problem arrises from adding these tests. The github runners have limited resources, and they aren't suitable for the O320 grids.
It does make sense to also run larger tests in the CI. We can enable this via an environment variable based trigger, for example, and thereby we can run them only for the hpc-ci, which runs on atos nodes.
I can file a PR to develop that sets up this mechanism with the existing O320 test and you can then add your new tests to that same mechanism.
Would it be ok to do this in one week's time? I'm off for the next week, and will be moving lots of boxes and furniture so laptop access will be limited 😅
The other option would be to restrict the current PR to the O48 tests, and introduce the O320 tests to the CI in a later PR.
Description
In the current version of ecWAM, the basic tests available are not up to date with what we do in 50R1:
Namely, it does not include wave in sea-ice and wave current interaction.
Also, all configurations are for a global setup.
I have updated the tests and added a limited area configuration and some configurations that would start from grib restart files rather than pure binary ones (we use grib restart in operations). I have added the test CMakeLists.txt to pickup some of these new configurations (I have not added those that require a bit more resources).
During the testing, I also came across a significant performance deterioration when reading the restart files, which I have solved (bit identical changes) (readfl and readstress).
I have also alter the default namelist in mpuserin to be more inline with 50R1 (in case someone would run without updating their namelist and added a few entries at scripts level to make them more visible following discussion with MétéoFrance who were unaware that they were running with those options.
I would like to have these changes into a new release as it would be more in line with what we do in operations.
I know that with respect to the default tests contained in the branch, it is not bit identical with what was there before and future we will need to make sure we update these tests inline with what we develop when working with the IFS.
Contributor Declaration
By opening this pull request, I affirm the following: