Skip to content

Conversation

@billsacks
Copy link

Description of changes

(1) Merge recent changes from escomp/main into noresm branch

(2) Merge changes from shr_flux_namelist branch (ESCOMP#625) into noresm branch. However, change the default for aofluxes_use_shr_wv_sat to false for the noresm branch (it's true for cesm).

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 (but this should be confirmed with testing)

Any User Interface Changes (namelist or namelist defaults changes)? Adds aofluxes_use_shr_wv_sat, renames info_debug to dbug_flag

Testing performed

None yet.

Some testing should be done of this branch in the context of noresm. Note that this will require the latest version of CESM_share.

billsacks and others added 30 commits November 23, 2025 09:13
This is no longer used in the code
Previously this could only be set via a code change
Add dbug_flag namelist option and remove unused info_dbug

### Description of changes

(1) Add dbug_flag namelist option to control this flag in the code, rather than requiring source code changes to change this value

(2) Remove unused info_dbug flag

### Specific notes

Contributors other than yourself, if any:

CMEPS Issues Fixed (include github issue #):
- Resolves ESCOMP#607

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

Any User Interface Changes (namelist or namelist defaults changes)?
- Adds dbug_flag namelist variable
- Removes unused INFO_DBUG xml variable and info_dbug namelist variable

### 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

Ran `SMS_Ld3_D_P8x1.f10_f10_mg37.X.green_gnu` with dbug_flag set at 0 (default) and 11.
Changes ESMF version check to allow version 9+ in addition to 8.4+
This way Meg will be requested for a review for any changes to files in
this directory.

See also ESCOMP#609 for some
discussion of this change
Add Meg Fowler as code owner of the atm-ocn flux code

This way Meg will be requested for a review for any changes to files in this directory.

See also ESCOMP#609 for some discussion of this change
Copying from noresm branch at 6539501

This is needed for ESCOMP/CDEPS#364

Co-authored-by: Mariana Vertenstein <marianav@met.no>
Copy shr_lnd2rof_tracers_mod from noresm branch

### Description of changes

Copying from noresm branch at NorESMhub/CMEPS@6539501e

This is needed for ESCOMP/CDEPS#364

We should soon try to bring in all of the changes from the noresm branch, but that will take more work.

### Specific notes

Contributors other than yourself, if any: Mariana Vertenstein

CMEPS Issues Fixed (include github issue #):

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

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

### 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

Ran `SMS_Ld3_D_P8x1.f10_f10_mg37.X.green_gnu` with the changes from ESCOMP/CDEPS#364
Rather than having med_methods_FB_init accept one of fieldNameList or
STflds, now it accepts an array of med_field_info_type objects.
med_field_info_type is defined in a new module that also includes some
creation methods, making calls to med_methods_FB_init a two-step
process: first create field_info_array, then call med_methods_FB_init
with this field_info_array.

A key new feature is that the creation of a field_info_array from
field_names will assume a single ungridded dimension with size given by
shr_wtracers_get_num_tracers for any field with the water tracer suffix.
This was the main motivation for the refactor here.

Some specific notes about the changes in this commit:
- Behavior change: if there are only scalar or blank fields, we do some
  unnecessary work now (retrieving the mesh that we won't end up ever
  using)
- I think I got the gridToFieldMap right: before it was hard-coded to 2,
  but I think that was only right for a single ungridded dimension; here
  I'm generalizing that for multiple ungridded dimensions
We haven't set that up here; we'll fix this in an upcoming set of
changes.
…change

Remove a duplicate block from esmFldsExchange_cesm_mod

### Description of changes

This block of code was accidentally duplicated twice.

### 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
From `cesm3_0_alpha08a` ran these two tests:

```
ERS_D_Ld3.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio
SMS_D.TL319_t232.G_JRA_RYF.derecho_intel
```

These both passed and are bit-for-bit. (They both had NLCOMP failures, as I've also experienced in other recent testing, but this seems unrelated to the changes here.)
This way CESM can use shr_wtracers_mod while UFS uses a stub that
removes this CESM_share dependency.
…init

Refactor med_methods_FB_init to allow handling of water tracer fields

### Description of changes

Rather than having med_methods_FB_init accept one of fieldNameList or
STflds, now it accepts an array of med_field_info_type objects.
med_field_info_type is defined in a new module that also includes some
creation methods, making calls to med_methods_FB_init a two-step
process: first create field_info_array, then call med_methods_FB_init
with this field_info_array.

A key new feature is that the creation of a field_info_array from
field_names will assume a single ungridded dimension with size given by
shr_wtracers_get_num_tracers for any field with the water tracer suffix.
This was the main motivation for the refactor here.

Some specific notes about the changes in this commit:
- Behavior change: if there are only scalar or blank fields, we do some
  unnecessary work now (retrieving the mesh that we won't end up ever
  using)
- I think I got the gridToFieldMap right: before it was hard-coded to 2,
  but I think that was only right for a single ungridded dimension; here
  I'm generalizing that for multiple ungridded dimensions

**This depends on the CESM_share changes in ESCOMP/CESM_share#78 and ESCOMP/CESM_share#80

### 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

Ran a subset of the CESM prealpha tests with baseline comparisons, using cesm3_0_alpha08a with this CMEPS branch and the share branch from ESCOMP/CESM_share#78:

```
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
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
ERI.TL319_t232.G_JRA.derecho_intel.cice-default
SMS_D.TL319_t232.G_JRA_RYF.derecho_intel
SMS_Ld40.TL319_t232.C_JRA.derecho_intel
```

All tests pass and are bit-for-bit with the baselines.

There were NLCOMP failures in some tests; from spot-checking, the NLCOMP failures all seem to be in MOM files. Nothing in this PR or the accompanying share PR could change the namelists, so I assume these are a pre-existing issue:

```
    FAIL ERI.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio NLCOMP
    FAIL ERI.TL319_t232.G_JRA.derecho_intel.cice-default NLCOMP
    FAIL ERS_D_Ld3.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio NLCOMP
    FAIL SMS_D.TL319_t232.G_JRA_RYF.derecho_intel NLCOMP
    FAIL SMS_Ld40.TL319_t232.C_JRA.derecho_intel NLCOMP
```
This currently isn't used but will be in an upcoming commit
Use shr_wv_sat_qsat_liquid if aofluxes_use_shr_wv_sat is true, otherwise
use the old, inline formulation.

This just applies to the Large and COARE formulations.
This is the branch from ESCOMP#625

Resolved Conflicts:
	cesm/flux_atmocn/flux_atmocn_COARE_mod.F90
	cesm/flux_atmocn/flux_atmocn_Large.F90
	cime_config/namelist_definition_drv.xml
IMPORTANT: We'll want to exclude the changes in this commit when merging
the noresm branch back to escomp.
@billsacks
Copy link
Author

@mvertens - for your review and testing in NorESM.

I still want to give this a little more careful look myself, but I need to run for the night and wanted to get this open so you could start looking at it.

@billsacks
Copy link
Author

I still want to give this a little more careful look myself, but I need to run for the night and wanted to get this open so you could start looking at it.

I've skimmed through the diffs to make sure I didn't completely botch something in the merge. It looks about as expected, so I think this is ready for review and testing in noresm - and @mvertens we can talk about next steps for merging the noresm branch back to escomp after this comes in.

3.9 is now the minimum supported by CIME
3.9 gives a warning, which seems to create a error in the GitHub
testing. So instead of 3.9 and 3.11, use 3.10 and 3.12.
Otherwise it's interpreted as 3.1
This just updates the srt.yml github workflow
Add namelist control around the qsat calculation for atm-ocn fluxes

### Description of changes

The calculation of qsat in the atm-ocn fluxes was [recently changed](ESCOMP#589) to use the shr_wv_sat module. However, NorESM would like to continue to use the old formulation for now. This PR reintroduces the old code and introduces a new config variable that controls whether to use the old or new formulation for qsat.

The goal here is to allow NorESM and CESM to use the same code, so that Mariana doesn't need to maintain a separate fork of CMEPS for NorESM. For now, NorESM will need a one-line difference in the namelist definition file, setting the default value of aofluxes_use_shr_wv_sat to false instead of true.

Note that this only applies to ocn_surface_flux_scheme = 0 (Large) or 1 (COARE) (but see ESCOMP#624 regarding extending this at some point).

This PR also renames some arguments in the calls to shr_wv_sat_qsat_liquid to better match the argument names in that subroutine.

### 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)? Adds new namelist flag, aofluxes_use_shr_wv_sat.

### Testing performed
Ran these tests in the context of cesm3_0_alpha08a (but with share code updated to the latest, since that's a dependency of the latest CMEPS):
```
ERS_D_Ld3.ne30pg3_t232.B1850C_LTso.derecho_intel.allactive-defaultio
SMS_Ld1.ne30_ne30_mg17.FC2010climo.derecho_intel.cam-outfrq1d
ERP_D_Ln9.ne30pg3_ne30pg3_mt232.F1850C_MTso.derecho_intel.cam-outfrq9s
```

I ran 4 versions of these tests:
- ocn_surface_flux_scheme = 0, aofluxes_use_shr_wv_sat = true (out-of-the-box defaults): bit-for-bit
- ocn_surface_flux_scheme = 1, aofluxes_use_shr_wv_sat = true, comparing against baselines with ocn_surface_flux_scheme = 1: bit-for-bit
- ocn_surface_flux_scheme = 0, aofluxes_use_shr_wv_sat = false: changes answers, as expected
- ocn_surface_flux_scheme = 1, aofluxes_use_shr_wv_sat = false, comparing against baselines with ocn_surface_flux_scheme = 1: changes answers as expected
(There are no additional changes here, just merging a merge commit from
main to bring it up to date with the latest tag on main: cmeps1.1.32.)
@billsacks
Copy link
Author

@mvertens - I just merged ESCOMP#625 and have brought this NorESM-merge branch up-to-date with the latest CMEPS main. So I think this is ready for next steps: first your review and merge of this PR, then opening a PR of the NorESM CMEPS back into ESCOMP CMEPS. (No rush, just letting you know that this is ready.)

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.

4 participants