Skip to content

Sync to CICE-Consortium/main (2025-08-06)#102

Merged
NickSzapiro-NOAA merged 32 commits into
NOAA-EMC:developfrom
NickSzapiro-NOAA:sync_cice_2025-07
Aug 19, 2025
Merged

Sync to CICE-Consortium/main (2025-08-06)#102
NickSzapiro-NOAA merged 32 commits into
NOAA-EMC:developfrom
NickSzapiro-NOAA:sync_cice_2025-07

Conversation

@NickSzapiro-NOAA
Copy link
Copy Markdown
Collaborator

@NickSzapiro-NOAA NickSzapiro-NOAA commented Aug 7, 2025

For detailed information about submitting Pull Requests (PRs) to the CICE-Consortium,
please refer to: https://github.com/CICE-Consortium/About-Us/wiki/Resource-Index#information-for-developers

PR checklist

  • Short (1 sentence) summary of your PR:
    Sync CICE-Consortium/main into EMC fork, including new sealvl melt pond scheme and baseline changes in history metadata and answers from cleanup_itd of negative dvice (from ridging)
  • Developer(s):
    See PRs at CICE-Consortium
  • Suggest PR reviewers from list in the column to the right.
  • Please copy the PR test results link or provide a summary of testing completed below.
    UFS regression testing (see Update CICE through 2025-07 and switch to ice history variables with expected ranges. Sync of WW3 develop to dev/ufs-weather-model ufs-community/ufs-weather-model#2852) and CICE-Consortium testing
  • How much do the PR code changes differ from the unmodified code?
    • bit for bit
    • different at roundoff level
    • more substantial
  • Does this PR create or have dependencies on Icepack or any other models?
    • Yes
    • No
  • Does this PR update the Icepack submodule? If so, the Icepack submodule must point to a hash on Icepack's main branch.
    • Yes
    • No
  • Does this PR add any new test cases?
    • Yes
    • No
  • Is the documentation being updated? ("Documentation" includes information on the wiki or in the .rst files from doc/source/, which are used to create the online technical docs at https://readthedocs.org/projects/cice-consortium-cice/. A test build of the technical docs will be performed as part of the PR testing.)
    • Yes
    • No, does the documentation need to be updated at a later time?
      • Yes
      • No
  • Please document the changes in detail, including why the changes are made. This will become part of the PR commit log.

EMC/CICE sync to authoritative upstream with baseline changes to ice history and (possibly) model answers from zap_small_areas. Closes #101

eclare108213 and others added 30 commits February 7, 2025 10:03
- Fix bug where left hand side of rectangular grids had incorrect longitudes
  and latitudes computed.  This changes answers in some box configurations.
- Update the box resolutions.  dxrect and dyrect were hardwired to 30km for
  all box resolutions.  Now adjust dxrect and dyrect depending on the number
  of gridcells so it always covers an area of about 3 degrees by 3 degrees.
  This means gbox12 is 30km resolution, gbox80 is 5km, gbox128 is 3 km, and
  gbox180 is 2 km.  Reduce the gbox180 timestep to 1800s for stability.
  This changes answers for some box configurations.
- Remove u masking from box2001 ocean forcing, bit-for-bit.
- Remove 50W check associated with box2001 initial conditions, bit-for-bit.
- Add rectangular grid diagnostics
- Minor update to the box2001 documentation

Explicitly set npt_unit in all set_nml files that have npt set.  Improves robustness
where one option sets npt and another sets npt_unit.
…1005)

Add ability to write one-time grid file in netCDf and PIO history features
- Add grid_outfile logical namelist
- Add extra history stream to be used just for grid output file, that stream is designated with the histfreq='g' label. It's turned on with the logical grid_outfile namelist and then automatically turned off after it's written the first time. This happens in ice_history.F90.
- Add logic in ice_history_write.F90 to explicitly write the grid fields to the grid history file.
- The one time grid filename is iceh_grid.nc
- Add grid_outfile=.true. to set_nml.histall
- Add external_variables global attribute to history files to note grid fields that are expected to be on other files
- Add date_created global attribute

Fix bug in PIO where 5d variables had their two "z" axis coordinates reversed when writing the field even though the variable had the correct axes defined in the history file. Detected by comparing netCDF and PIO history files.

Set history netcdf attribute Conventions to CF-1.8. Ran history files through a CF checker. This resulted in a couple of warning messages but no errors. If grid variables associated with variable coordinate attributes are removed from the history file, this will result in CF errors even though external_variables are defined. This is sort of a shortcoming in the current CF conventions, but we decided to move ahead anyway. CF compliance will only be broken if grid variables are turned off in history files, and they are defined as part of other variable's coordinate (or similar) attributes.

Add axis to the history coord_attributes datatype to provide another attribute on the netcdf file. Set axis to 'X', 'Y', or 'T' to a small subset of history file coordinate variables.

Change netcdf "unitless" unit to "1".

Update some abort calls in ice_history.F90

Update version_name namelist implementation, was not being broadcast or written to the log file. Affected history file output.

Remove hist namelist settings in set_nml.run* files to minimize conflicts with other namelist options groups.

Add a test case that allows manual comparison of netCDF and PIO history files. This needs to be done with cprnc. cmp of restart files and diff of log files produce differences even when results are bit-for-bit identical.

Update documentation
…ICE-Consortium#1015)

Update Icepack to #51695d08d92c20 April 4, 2025. Includes
- Update derecho gnu and code coverage capability
- Update Copyright
- Fix bug with calc_Tsfc=F, set_sfcflux arguments reversed in icepack_therm_vertical.F90
- Fix negative silicate bgc bug
- Update of Mosaic forcing option

Comment out gptl pid check in ice_memusage_gptl.c. The check is not needed, and the arbitrary value of 999999 occasionally fails because on many systems the upper limit is higher. This has not come up in CICE, but it has been noted in other models' use of gptl, https://cerfacs.fr/site-oasis/forum/oa_main.php?c=177.

Update documentation regarding history variable units and cona and conb history variable conversion terms.

Update sphinx-bibtex version in doc requirements. Readthedocs now works with the latest version.
…CE-Consortium#1018)

Refactors the MPI Irecv calls to remove 1:len from the array and updates to the standard (1) which is the first memory location to receive the data of length len.
…n_area_min and dyn_mass_min (CICE-Consortium#1016)

Migrate a_min and m_min to namelist. These are the threshold values used to active dynamics calculations on a particular gridcell. a_min is the minimum area concentration (non-dimensional) and m_min is the minimum mass (kg/m2). Defaults are 0.001 (1/10th of 1%) and 0.01 (kg/m2) respectively.

Rename a_min and m_min to dyn_area_min and dyn_mass_min respectively.

Update documentation to add new namelist and update naming convention.
Remove zsalinity code (was deprecated via abort previously)

    Remove zsalinity variables restart_zsal, solve_zsal, fzsal, grid_oS, l_skS,

    Update Icepack interface calls

    Remove fzsal from coupling_prep subroutine and interface

    Support zsalinity namelist for backwards compatibility. Has no effect except if solve_zsal or restart_zsal = true then the code aborts.

    Update documentation

    Update Icepack to #5feadd007a58f
This change adds grid_format = 'mom_nc' support to directly load the grid from a netcdf file which uses the mom (supergrid) definition, and calculates all fields to follow the method MOM6 uses. i.e.

    all lats & lons are read from the file
    all cell x/y lengths are read from the file
    A grid and B grid areas are read from the file, C grid areas are calculated internally (per 

    Initialising areaC NOAA-GFDL/MOM6#740)
    angles are calculated internally (even though they exist in the mosaic file)

There are a few limitations:

    If the CHANNEL_CONFIG option is used in MOM6, this can change some cell sizes at runtime, however we are loading these from the file.
    MOM6 generates a land-sea mask by making land where the bathymetry<0.5m , however we are still loading from a kmt file which needs to be generated "offline".

I haven't tested every permutation of boundary conditions and grid type, I focused on on tripolar grids and did best-efforts checks on the other boundary conditions.

I found exact matches (to single point precision) between the MOM6 & CICE6 saved grids, see https://github.com/anton-seaice/sandbox/blob/main/new_cice_grid/mom_mosaic_in_cice.ipynb

The NUOPC driver checks for consistency in areas, and lon/lats between the model and the mediator. It applies a correction for differences in area between the model and the mediator. Even if the cell area field is populated in the mediator mesh file, this is not used and the area calculated by ESMF is used instead. Therefore depending on how the mosaic file was created (and how the areas are calculated for that process), the correction between model and mediator areas may not be 1 everywhere.

This change doesn't include any new tests, and I suggest deferring adding tests as it requires new forcing data

I also added kmt_type = 'none' - This is only for testing / idealised configurations, so it's not in the docs. It's not essential for this PR.
Port to blueback, new Cray EX4000 on intel, gnu, cray, nvhpc, aocc compilers.
…/ice_shr_methods.F90 (CICE-Consortium#1023)

Address compiler warning and bug that Warning: 'date' is used uninitialized [-Wuninitialized]. This impacts alarmInit when using optDate. I don't know that anyone does that, especially as it's not working properly. Part of ufs-community/ufs-weather-model#2703
…um#1025)

Update job completion checking associated with testing and automated reporting. Latest version of slurm does not return the same error codes, so now we're switching to checking whether the job is in the queue explicitly. This only impacts automated test reporting (--report).
…nodo template (CICE-Consortium#1027)

DistributionPolicy.pdf was updated to include institutions that have joined the CICE Consortium since its inception.

The zenodo template was updated with authors included in the most recent release and links back to github for more detailed information.
…rtium#1028)

Update set_version_number.csh to update .zenodo.json file from the command line via

./cice.setup --setvers x.y.z
…ICE-Consortium#1029)

For operational implementation, clean up compiler Warning: CHARACTER expression will be truncated in assignment (80/128) at (1) [-Wcharacter-truncation]. NUOPC standard names here are all shorter than 80 characters. Part of ufs-community/ufs-weather-model#2703
LANL attorneys requested revisions to our copyright and license, following discussions with NOAA. This change separates the previous copyright/license notice into separate files, changes the Triad copyright date to "1998, 2017", and states that the license is standard BSD-3.
…ortium#1032)

Update Icepack to #cfdf8cc9cb73d5, includes updates to the
Icepack Distribution Policy, Copyright, License, and
zenodo template.  Updates to Icepack1.5.1.

Update version number to CICE6.6.1 in preparation for release.

Clean up trailing blanks.
…Icepack (CICE-Consortium#1012)

Add GEOS coupling updates. This allows coupling to the GEOS coupled system where a semi-implicit thermodynamic coupling scheme is introduced. Similar to the explicit case, the fields fsurfn are provided by the coupler, along with their derivatives with respect to surface temperature dfsurfn_dTs. In this case, calc_Tsfc is still set to true, allowing ice surface and internal temperature to be updated implicitly. The resultant surface temperature change is passed back to the atmosphere model via coupler to complete the full update of its temperature profiles. This middle-ground approach, enabled by semi_implicit_Tsfc=true, does not sacrifice accuracy because it does not need limiting effective conductivity as in the explicit case. In addition, in GEOS, the atmosphere model assumes vapor deposits or sublimates at 0 degC. In this case, mass conservation is enforced and the resulting discrepancy in energy is resolved by another term, de_vapor, and passed to ocean. This option is only on when vapor_flux_correction is true.

Add 4 new shortwave terms, uvrdr, uvrdf, pardr, pardf to the coupling. These terms represent a breakdown of the direct and diffuse visible shortwave terms into two components, par = photosynthetical active radiation (400-700nm) and uvr = rest of the visible shortwave term (>700nm). The current visible shortwave is exactly represented by these two components. Includes adding atm forcing and terms associated with radiation passthru to the ocean.

Add support for GEOS semi-implicit coupling of surface temperature. In GEOS, surface and latent heat flux is computed in the atmosphere at 0degC. The sea ice model has to respect that calculation, but then computes the d(dh)/dTs terms to correct the heatflux for the sea ice temperature which is then applied conservatively in the coupled system. Implementation includes turning off some of the heat flux calculations in Icepack. This is controlled by the semi_implicit_Tsfc namelist.

Add calculation of a vapor flux correction. A correction is needed for GEOS coupling to compute a mass and enthalpy correction for evaporation and sublimation. This is controlled by the vapor_flux_correction namelist.

Add mapl/geos coupling directory and coupling files

Add opmask (orphan mask) for points that are NOT ocean/ice in the ocean/ice model but are ocean/ice in the atmosphere model. This allows for thermodyanamic calculations on the orphan points while not being involved in any sea ice dynamics. opmask determined by ocn_gridcell_frac which should be set by coupling layer at initialization.

Add geosmom grid_type to read GEOS MOM grid files

Add discover port

Update documentation

Change use of grid_type='tripole' where ns_boundary_type='tripole' is more appropriate.

Add distribution_wght=blockfull option to move away from CPP in init_domain_blocks. This option turns off land block elimination and sets all blocks to maximum weight for distribution.

Clean up some declarations in ice_flux.F90 and ice_state.F90

Add some new initialization output for new GEOS options and to clean up grid_type output


---------

Co-authored-by: bzhao <Bin.Zhao@nasa.gov>
…sortium#1024)

This sets the calendar attribute correctly in history output. The docs and code comments already note the calendar is actually proleptic gregorian. 

The calendar CICE with leap years is now called proleptic_gregorian rather than greogorian. The gregorian calendar starts in 1582, and a calendar which uses the same pattern of leap years as the modern calendar but exists before 1582 should be refered to as proleptic_gregorian .

Support the old gregorian calendar name for backwards compatibility.  This calendar in the proleptic gregorian and always has been.  The true gregorian calendar (where the calendar changes and leap days start in 1582) is not supported and is called the "standard" calendar now in CF conventions.

Add checks for invalid calendars.

---------

Co-authored-by: anton-seaice <anton-seaice@users.noreply.github.com>
Changed name of logical l_fixed_area to l_edge_flux_adj to better match the published paper, modified some comments and updated related documentation.
* Updates for sea level ponds tracer

* Syntax error in ice_init_column.F90

* Fix the sealevel pond restarts

* Point to ESCOMP sealevelponds

* removed unneeded pndasp from cice driver and added calls to init sealvlponds, fails baseline comparison test

* fixed initialization of tscale_pnd_drain, now passes baseline comparison test with main

* Allocate pond arrays all the time

* added icepack_init_sealvlpnd to nuopc cmeps init subroutine

* Remove print statement

* Update icepack

* Update icepack

* Create template for sealevelponds CICE

* Add sealevelponds test

* Add apnd_sl to namelist

* Fix sealevel ponds restart

* Address some more comments on the new pond diagnostics

---------

Co-authored-by: David Clemens-Sewall <david.clemens-sewall@noaa.gov>
Update Icepack to #4469e2e878e952bf6

Update CICE for sea level ponds
- fix allocate
- clean up CICE_InitMod.F90 in drivers
- update unittest code to be consistent with standalone cice
- remove call to icepack_init_sealvlpnd (was removed in Icepack)
- add new pond history fields to ice_in
- add new pond history fields to histall test option
- update pond history field names using dpnd_* convention
- turn off pond history "dpnd_" fields for topo ponds scheme, not yet validated
- update pond history field accum_hist_field calls using 1:ncat_hist

Updated drivers standalone/cice and nuopc/cmeps. Other drivers need to be updated.

Remove trailing blanks

Update code alignment

Update documentation

---------

Co-authored-by: eclare108213 <eclarehunke@gmail.com>
Update Icepack to #b91f1dd73d6c847
  -adds David Clemens-Sewall and Bin Zhao to zenodo
This error was introduced during some recent zenodo changes. It was caught when the model was released and zenodo failed to import the latest release due to metadata errors. We will try to also implement some tools to pre-release test the zenodo template.
Update the Carpenter port

    Update intel and intelimpi due to failures in debug mode associated with a compiler bug. Change -fpe0 to -fpe1. This has been a known testing issue for a while, it's overdue to be fixed.
    Update the intel and intelimpi modules to the latest, this is bit-for-bit.
    Add inteloneapi compiler
Add Ursa port, NOAA machine, intel.

Add some initial code for WCOSS, another NOAA machine.  That port will be completed with a separate PR.

Remove support for Discover, env and Macros files could still be removed.
Changed license from generic open to BSD-3-Clause. We have the BSD 3-Clause "New" or "Revised" License.
Added the Triad copyright statement.
List keywords separately to improve searchability.
Changed publication date for consistency with the v1.5.1 release, to avoid potential confusion.
Corrected long name for NOAA
apcraig and others added 2 commits August 6, 2025 10:49
Adds vicen, vsnon to zap_small_areas. This helps eliminate some sub-puny ice, but does not changes answers in
a full test suite run on derecho with 4 compilers.
Also cleans up some kind statements in the forcing module.
@DeniseWorthen
Copy link
Copy Markdown
Collaborator

@NickSzapiro-NOAA I thought you had found the zap_small areas fix resulted in baseline changes ?

@NickSzapiro-NOAA
Copy link
Copy Markdown
Collaborator Author

@DeniseWorthen Yes, there are "conditional" baseline changes associate with the zap_small_areas change

@NickSzapiro-NOAA NickSzapiro-NOAA merged commit 90ed252 into NOAA-EMC:develop Aug 19, 2025
1 check passed
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.

Sync with CICE-Consortium through 2025-07

8 participants