Skip to content

merge to ESCOMP cmeps1.1.41 - #46

Merged
mvertens merged 69 commits into
NorESMhub:noresmfrom
mvertens:feature/merge_to_cmeps1.1.41
Apr 9, 2026
Merged

merge to ESCOMP cmeps1.1.41#46
mvertens merged 69 commits into
NorESMhub:noresmfrom
mvertens:feature/merge_to_cmeps1.1.41

Conversation

@mvertens

@mvertens mvertens commented Apr 1, 2026

Copy link
Copy Markdown
Collaborator

Description of changes

This PR merges to the ESCOMP CMEPS1.1.41 as a next step in making merging ESCOMP and NorESM CMEPS development.
Note the majority of files for this PR come from the introduction of the new X compsets introduced in med_test_comps/ .

Specific notes

Contributors other than yourself, if any: None

CMEPS Issues Fixed: None

Are changes expected to change answers? Only for compsets with active CISM - all others are bfb

Any User Interface Changes? None

Testing performed

prealpha_noresm - compared to baselines created in testing NorESMhub/CDEPS#34 - all tests were bfb except those with active CISM

jedwards4b and others added 30 commits June 8, 2009 21:05
separation of mct and nuopc data, xcpl and stub compoents
…#3547)

Update CIME to ESMCI cime5.8.20

Squash merge of jgfouca/branch-for-to-acme-2020-04-14

This is the first cime update in half a year, lots of changes.

Features:
 * allow for specification of vertical grid in ATM_GRID
 * if no env vars, print comment to assist user in env_mach_specific.xml
 * case.setup: add --keep option for clean/reset actions to keep local changes to generated files
 * case.setup: refresh build Macros when doing a reset/clean
 * cprnc: cime will build a copy in sharelibs if no global version available
 * check_input_data: add ftp timeout, make sure failover to svn is working
 * added support for new OMIP compsets in POP as well as better handling of the different versions of JRA forcings
 * Pio2 updated to latest master
 * reorganize mct and nuopc data, xcpl and stub components based on coupler
 * new auto-triaging feature for tests, will report potentially broken commits to TestStatus.log
 * coupler: Allow writing T-forcing cplhist files even when running with SGLC
 * Add support for UFS model! Not really relevant to E3SM, but is a major development in CIME
 * archiver: Extend archiving support to accept a regex pattern
 * coupler: Update for compatibility with latest CMEPS

Bug fixes:
 * check_input_data: fix issue with pop input files that should not be found
 * fix default for PIO_REARRANGER
 * docn: Small fix to allow scam to run with aquaplanet
 * fix issue with resubmit on systems that use ssh
 * fix misleading output in CaseStatus
 * Update description for FORCE_BUILD_SMP
 * archiver: pop dd history files were not identified by get_extension
 * NOTE: MPAS history files are now being processed as they should have been all along
 * Improve scripts_regression_tests test cleanup
 * dlnd: Some gnu tests were giving an error of different character lengths in dlnd.
 * coupler: seq flux should be initialized even if for some reason the namelist isn't read
 * env_batch.xml: we can now handle the case where multiple queues have the same name
 * ERI: fix tests that were less than a day, or with START_TOD nonzero
 * test hist: Exclude .ref1 and .ref2 from TestStatus files
 * coupler: fix issue with e3sm field

Fixes: #2324

[BFB]
Update fork to latest cime for PR to fix FV3 log error in cime.
FV3 bug fix and Makefile update
One line change to C96_C96_mg17 grid alias and a mod to cime/scripts/Tools/Makefile to get rid of an erroneous warning when building a configuration without an active atmosphere model. This PR closes #3452.

Test suite: Standart CIME regression tests and foo test listed by Jim in the original issue. Also ran an exact restart test using the fixed C96 alias.
Test baseline: Master
Test namelist changes: na
Test status: [bit for bit, roundoff, climate changing] OK all passed.
Ran 156 tests in 3008.707s
OK (skipped=14)

Fixes [CIME Github issue #3452 ]

User interface changes?: na

Update gh-pages html (Y/N)?:N

Code review:
* esmci_remote_for_split/master: (2458 commits)
  fix cime_model to stdout issue
  extend allowed string length
  Add a comment in the Makefile
  improve format
  fix formatting
  revert path change
  add make check, fix tests
  fix format issues
  change type to double for derived vars
  Updated filter on calculating normalized rms. Now, a variable must be >0, not nearly 0, to be normalized. Also, variables that cannot be normalized generate a huge rms.
  Added check that the normalizing denominator is >0 when calculating a relative rms
  Fix typo
  Update for cime5.8.23
  Missing credit in shr_flux_atmOcn
  fix more pylint issues, unrelated to pr
  fix pylint issue
  fix atm level spec so that it does not match 1x1_brazil
  Add missing ROF2OCN grid for r05_TO_gx3v7
  fix for issue 3452 erroneous log error due to FV3 additions to Makefile, and bug fix for FV3 compset definition.
  Update NCPL values
  ...
changes for nuopc xcpl_comps needed for new ice sheets capability
nag_port for nuopc 
Fix issue with github actions, add support for ESMF on izumi.

Test suite: scripts_regression_tests.py with CIME_DRIVER=nuopc and intel,gnu,nag compilers and mpi-serial and mvapich2
I could not get the pgi compiler, the nag 7.0 compiler or the openmpi libraries working.

Test baseline:
Test namelist changes:
Test status: bit for bit

Fixes

User interface changes?:

Update gh-pages html (Y/N)?:

Code review:
Except the 'tools' subdirectory. Not sure that code is ready for py3
Adds enforcing code formatting to pre-commit

The goal of this PR is to enforce a coding style using pre-commit
plugins (check-xml, end-of-file-fixed, trailing-whitespace and black).
Fixing linting/formatting issues is now a single command
pre-commit run -a. This auto formatting is performed by Black
which enforces a strict subset of PEP8. Pre-commit runs all of
these plugins for every PR. Pylint still runs as a redundancy. By
enforcing a uniformed coding style PR's will now be style agnostic
and less development time used on formatting code.

Running pre-commit
pip install pre-commit
pre-commit run -a
References
https://black.readthedocs.io/en/stable/index.html
https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html
Test suite: n/a
Test baseline: n/a
Test namelist changes: n/a
Test status: n/a

Fixes n/a
User interface changes?: n/a
Update gh-pages html (Y/N)?: N

The goal of this PR is to consolidate all files required to run CIME
under a single top-level directory. This updates CIME's structure to
be more like a standardized python library.

New

    CIME/scripts
    CIME/data
        Captures configuration/templates
    CIME/non_py
        Contains non python code
    CIME/non_py/externals/genf90 is now a submodule
    tools/README.md

Moved

    config moved to CIME/data/config
    scripts/lib/CIME moved to CIME
    scripts/Tools moved to CIME/Tools
    src/build_scripts moved to CIME/build_scripts
    src/CMake moved to CIME/non_py/src/CMake
    src/components moved to CIME/non_py/src/components
    src/share/timings moved to CIME/non_py/src/timings
    src/eternals moved to CIME/non_py/externals
    tools/configure moved to CIME/scripts/configure
    tools/cprnc moved to CIME/non_py/cprnc
    scripts/lib/*.template moved to CIME/data/templates
    scripts/lib/get_tests.py moved to CIME/get_tests.py
    scripts/lib/jenkins_generic_job.py moved to CIME/jenkins_generic_job.py

Removed

    scripts/lib/six.py
    scripts/lib/six_additions.py

Test suite: scripts_regression_tests.py
Test baseline: n/a
Test namelist changes: n/a
Test status: n/a

Fixes #4163
User interface changes?: n/a
Update gh-pages html (Y/N)?: n
billsacks and others added 21 commits February 22, 2026 09:36
Changes were mostly made by Claude Code, reviewed by myself.
This will be needed for qice_elev water tracers, which will have two
ungridded dimensions (one for elevation class and one for water
tracers).

Code was written by Claude Code, reviewed by myself.
Precompute the vertical interpolation coefficients rather than
recomputing them for each field. The main motivation is to avoid
duplication of this logic when we add water tracer fields.

Code mostly written by Claude Code with significant guidance from me,
reviewed by myself.
This cast to real shouldn't be done since we are assigning an r8 to an
r8.
The point of this is to make some minimal changes needed to get
bit-for-bit results with an upcoming refactor, in which the elevation
factors will be computed separately.
Roundoff-level mods of prep_glc_map_lnd2glc

### Description of changes

Two roundoff-level modifications of prep_glc_map_lnd2glc to pave the way for a larger set of changes. I wanted to demonstrate that the larger set of changes is bit-for-bit, so here I have implemented the minimal set of answer-changing mods needed to get bit-for-bit results when running tests on my upcoming PR.

### Specific notes

Contributors other than yourself, if any:

CMEPS Issues Fixed (include github issue #):

Are changes expected to change answers? (specify if bfb, different at roundoff, more substantial) - Single-precision-roundoff-level changes in configurations with CISM or DGLC (though diffs only show up in a small number of tests with DGLC)

Any User Interface Changes (namelist or namelist defaults changes)? No

### Testing performed

In the context of cesm3_0_alpha08e, ran aux_glc plus these additional tests:

```
SMS_Ly2.f09_g17_gris20.T1850Gg.derecho_intel
SMS_Ld5.f10_f10_ais8gris4_mg37.I1850Clm50SpGag.derecho_intel.cism-test_coupling
SMS_Lm13.f10_f10_mg37.I1850Clm50SpG.derecho_intel
ERS_Ld5.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-decstart
ERS_Ld5.ne30pg3_t232.BHISTC_LTso.derecho_intel.allactive-decstart
```

Tests passed (other than `FAIL NCK_Ly3.f09_g17_gris20.T1850Gg.derecho_gnu COMPARE_base_multiinst` which is documented as failing in the CISM ChangeLog). I didn't perform baseline comparisons for most tests, but I expect baseline comparisons to fail for most / all of these tests.

I did look at baseline comparisons for `ERS_Ly7.f09_g17_gris4.T1850Gg.derecho_intel` and `SMS_D_Ly1.f09_g17_ais8.T1850Ga.derecho_gnu`. Looking at the cpl hist files, these had just single-precision-roundoff-level diffs, as expected. For `ERS_Ly7.f09_g17_gris4.T1850Gg.derecho_intel`, for example, these were:

```
 RMS glc1Imp_Fgrg_rofi                7.8623E-16            NORMALIZED  6.3141E-09
 RMS glc1Imp_Fgrg_rofl                9.8952E-18            NORMALIZED  1.0419E-07
 RMS glc1Imp_Sg_topo                  3.0520E-09            NORMALIZED  3.8516E-12
 RMS glc1Exp_Flgl_qice                8.8304E-14            NORMALIZED  1.3056E-08
 RMS glc1Exp_Sl_tsrf                  4.2529E-06            NORMALIZED  2.5071E-08
```

Based on testing on my upcoming branch - which effectively includes these changes (along with many other changes) - differences only show up in:
- Tests with active CISM
- Tests with DGLC that cross a year boundary (`ERS_Ld5.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-decstart` and `ERS_Ld5.ne30pg3_t232.BHISTC_LTso.derecho_intel.allactive-decstart`)
Using strategy 'ours' to ignore changes coming from main (which are from
ESCOMP#633) because they are already
incorporated into this branch.
This makes this averaging consistent with what's done in
med_methods_FB_average, so we can switch to the latter without changing
answers.
Convert count to r8 rather than r4 in prep_glc_avg

### Description of changes

Convert count to r8 rather than r4 in prep_glc_avg. This makes this averaging consistent with what's done in med_methods_FB_average, so we can switch to the latter (in an upcoming PR) without changing answers.

### Specific notes

Contributors other than yourself, if any:

CMEPS Issues Fixed (include github issue #):

Are changes expected to change answers? (specify if bfb, different at roundoff, more substantial) - probably bfb but has a slight potential to change answers in cases with lnd2glc coupling. Since integers up to about 16 million can be represented exactly in r4, I don't expect answer changes, but it's possible that there will be answer changes from this with some compilers.

Any User Interface Changes (namelist or namelist defaults changes)?

### Testing performed

Just tested the build (`SMS_Ld2_D_P8x1.f10_g37.X.green_gnu`).
…ridded_dims

Generalize parts of post_rof_mod to handle fields with ungridded dims

### Description of changes

This will be needed for the water tracer work. I haven't yet generalized the code for removing negative runoff; that will be done later.

(This is similar to the changes in ESCOMP#628 but now for post_rof_mod.)

### Specific notes

Contributors other than yourself, if any:

CMEPS Issues Fixed (include github issue #):

Are changes expected to change answers? (specify if bfb, different at roundoff, more substantial) - no, bfb

Any User Interface Changes (namelist or namelist defaults changes)? No

### Testing performed
Please describe the tests along with the target model and machine(s) 
If possible, please also added hashes that were used in the testing

In the context of cesm3_0_alpha08e, ran:

```
ERS_Ly7.f09_g17_gris4.T1850Gg.derecho_intel
SMS_Lm13.f10_f10_mg37.I1850Clm50SpG.derecho_intel
MULTINOAIS_Ly2.f10_f10_ais8gris4_mg37.I1850Clm50SpRsGag.derecho_intel.cism-change_params
SMS_D_Ld1.ne30pg3_t232.I1850Clm50BgcSpinup.derecho_intel.clm-cplhist
SMS_Ld40.TL319_t232.C_JRA.derecho_intel
ERS_D_Ld3.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio
ERI.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio
ERC_D_Ln9.ne30pg3_ne30pg3_mt232.FHISTC_LTso.derecho_intel.cam-outfrq9s
ERI.TL319_t232.G_JRA.derecho_intel.cice-default
SMS_D.TL319_t232.G_JRA_RYF.derecho_intel
```

All tests passed and were bit-for-bit, though with these failures that also failed in the baselines:
```
    FAIL ERI.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio COMPARE_branch_hybrid
    FAIL ERI.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio COMPARE_rest_branch
    FAIL ERS_D_Ld3.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio COMPARE_base_rest
```
For water tracers: Add handling of rank-3 fields and refactor med_phases_prep_glc_map_lnd2glc

### Description of changes

Two sets of changes that will be needed for water tracers - and in particular, for the tracer version of Flgl_qice_elev, which will be the first field in CMEPS that has two ungridded dimensions:

(1) Extend various methods to support rank-3 fields

(2) Refactor med_phases_prep_glc_map_lnd2glc to pre-compute vertical interpolation weights; this will be helpful when we introduce Flgl_qice_elev_wtracers to avoid duplicating this calculation of vertical interpolation weights between the non-tracer (rank-2 on the lnd grid and rank-1 on the glc grid) and tracer (rank-3 on the lnd grid and rank-2 on the glc grid) fields.

### Specific notes

Contributors other than yourself, if any: Claude Code did a lot of the writing of this code, but I have reviewed it all carefully

CMEPS Issues Fixed (include github issue #):

Are changes expected to change answers? (specify if bfb, different at roundoff, more substantial) bfb when using ESCOMP#633 as a baseline

Any User Interface Changes (namelist or namelist defaults changes)? No

### Testing performed

In the context of cesm3_0_alpha08e, ran:

(1) aux_glc on derecho plus a few extra tests, with comparisons against baselines generated with ESCOMP#633 .

The extra tests beyond aux_glc were:

```
SMS_Ly2.f09_g17_gris20.T1850Gg.derecho_intel
SMS_Ld5.f10_f10_ais8gris4_mg37.I1850Clm50SpGag.derecho_intel.cism-test_coupling
SMS_Lm13.f10_f10_mg37.I1850Clm50SpG.derecho_intel
ERS_Ld5.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-decstart
ERS_Ld5.ne30pg3_t232.BHISTC_LTso.derecho_intel.allactive-decstart
```

All tests passed and were bit-for-bit, except for this failure that also failed in the baseline: `FAIL NCK_Ly3.f09_g17_gris20.T1850Gg.derecho_gnu COMPARE_base_multiinst`

(2) Full prealpha testing on derecho and izumi with comparison against cesm3_0_alpha08e

Tests passed except for tests that also failed in the baselines or seemed to have passed due to tweaks made in the baseline (e.g., increasing wallclock time for `SUB_D_Ln9.ne3pg3_ne3pg3_mt232.FHIST.izumi_nag.cam-outfrq9s`).

Baseline failures were all as expected (except that a few B compset tests failed baseline comparison due to a difference in which cpl.hx.ww3 files were present in the run vs. baseline, which presumably is due to something outside of this PR):

```
ERS_Ld5.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-decstart
ERS_Ld5.ne30pg3_t232.BHISTC_LTso.derecho_intel.allactive-decstart
ERS_Ly7.f09_g17_gris4.T1850Gg.derecho_intel
MULTINOAIS_Ly2.f10_f10_ais8gris4_mg37.I1850Clm50SpRsGag.derecho_intel.cism-change_params
SMS_Lm13.f10_f10_mg37.I1850Clm50SpG.derecho_intel
SMS_D_Ly1.f09_g17_ais8.T1850Ga.derecho_gnu
SMS_D_Ld5_P24x1.f10_f10_ais8gris4_mg37.I1850Clm50SpGag.izumi_nag.cism-test_coupling
```

Note that I showed that these differences go away when comparing against baselines generated with ESCOMP#633 , for similar or identical tests.

So I think it's safe to conclude that this is bit-for-bit with ESCOMP#633 .
…comps

Merging cime changes run through git-filter-repo to extract history of
xcpl_comps_nuopc.

The cime branch was created with:

git filter-repo --path CIME/non_py/src/components/xcpl_comps_nuopc --path CIME/data/src/components/xcpl_comps_nuopc --path CIME/data/components/xcpl_comps_nuopc --path src/components/xcpl_comps_nuopc

Note that this excludes the earlier history in
src/components/xcpl_comps, because that history is messy and introduces
a bunch of extra commits into history.
These don't appear to be used in a CESM build (they aren't present in
any components other than these xcpl_comps)
This is copied exactly from
CIME/build_scripts/buildlib.internal_components from
ESMCI/cime@5444eae316
Add test components (X comps)

### Description of changes

Add the test components that used to be in CIME. These can be used for testing CMEPS with artificial fields. In CESM, this is done with the `X` compset. These components belong more in CMEPS than in CIME.

This brings in some, but not all history of these X components. I brought in as much history as I could fairly easily without going back to points where the history got very messy (with tons of merge commits that cluttered things up).

Note that, for `X` compsets to continue to work, this should be coordinated with the CIME changes in ESMCI/cime#4946. But it's safe for the CMEPS changes to come in before the CIME changes.

### Specific notes

Contributors other than yourself, if any:

CMEPS Issues Fixed (include github issue #):

Are changes expected to change answers? (specify if bfb, different at roundoff, more substantial) no - bfb

Any User Interface Changes (namelist or namelist defaults changes)?

### Testing performed

`SMS_Ld2_D_P8x1.f10_g37.X.green_gnu` in cesm3_0_alpha08f with cime and cmeps updated.
@mvertens
mvertens requested a review from mvdebolskiy April 1, 2026 08:15
@mvdebolskiy

Copy link
Copy Markdown
Collaborator

@mvertens did we check if the lnd2rof tracers still work with this? (Even though there is a known restart issue)

@mvertens

mvertens commented Apr 1, 2026

Copy link
Copy Markdown
Collaborator Author

@mvdebolskiy - good point. I need to run the CTSM test suite to validate this - and it's been impossible to get any work done on betzy. We should not merge this PR until I am able to do more testing.

@mvdebolskiy

Copy link
Copy Markdown
Collaborator

@mvertens I can test this out, I need to update cdeps, ccs_config for CTSM-checkouts anyway.

@mvertens

mvertens commented Apr 1, 2026

Copy link
Copy Markdown
Collaborator Author

@mvdebolskiy - that would be awesome. Thanks. I was not able to get anything done on either betzy or olivia today. Hopefully, this will work. Happy to help solve issues if it does not.

@mvertens
mvertens merged commit b16528e into NorESMhub:noresm Apr 9, 2026
1 of 4 checks passed
@mvertens
mvertens deleted the feature/merge_to_cmeps1.1.41 branch May 27, 2026 14:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants