Skip to content

Ecwam develop fix tests#152

Draft
jrbidlot wants to merge 13 commits into
ecmwf-ifs:mainfrom
jrbidlot:ecwam_develop_fix_tests
Draft

Ecwam develop fix tests#152
jrbidlot wants to merge 13 commits into
ecmwf-ifs:mainfrom
jrbidlot:ecwam_develop_fix_tests

Conversation

@jrbidlot

Copy link
Copy Markdown
Collaborator

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:

  • All authors agree to the Contributor License Agreement.
  • The code follows the project's coding standards.
  • I have performed self-review and added comments where needed.
  • I have added or updated tests to verify that my changes are effective and functional.
  • I have run all existing tests and confirmed they pass.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 in READFL/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.

Comment thread share/ecwam/scripts/ecwam_run_model.sh Outdated
Comment thread share/ecwam/scripts/ecwam_helper_functions.sh
Comment thread share/ecwam/scripts/ecwam_helper_functions.sh
Comment thread share/ecwam/scripts/ecwam_helper_functions.sh
Comment thread share/ecwam/scripts/ecwam_run_preset.sh
Comment thread share/ecwam/scripts/ecwam_run_create_bathymetry.sh
Comment thread tests/etopo1_oper_an_fc_O1280.yml
Comment thread tests/CMakeLists.txt
Comment on lines +42 to +43
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>
@jrbidlot
jrbidlot marked this pull request as draft July 17, 2026 11:19
Copilot AI mentioned this pull request Jul 17, 2026
Comment thread tests/CMakeLists.txt
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} )

@awnawab awnawab Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants