Sync to CICE-Consortium/main (2025-08-06)#102
Merged
NickSzapiro-NOAA merged 32 commits intoAug 19, 2025
Conversation
- 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.
* specify c5 vs. c6 gaea
…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
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.
Collaborator
|
@NickSzapiro-NOAA I thought you had found the zap_small areas fix resulted in baseline changes ? |
DeniseWorthen
approved these changes
Aug 15, 2025
Collaborator
Author
|
@DeniseWorthen Yes, there are "conditional" baseline changes associate with the zap_small_areas change |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
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)
See PRs at CICE-Consortium
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
EMC/CICE sync to authoritative upstream with baseline changes to ice history and (possibly) model answers from zap_small_areas. Closes #101