Skip to content

Update CICE to Consortium master#32

Merged
DeniseWorthen merged 36 commits into
NOAA-EMC:emc/developfrom
DeniseWorthen:feature/updcice
Jul 20, 2021
Merged

Update CICE to Consortium master#32
DeniseWorthen merged 36 commits into
NOAA-EMC:emc/developfrom
DeniseWorthen:feature/updcice

Conversation

@DeniseWorthen

@DeniseWorthen DeniseWorthen commented Jun 24, 2021

Copy link
Copy Markdown
Collaborator
  • Update CICE to latest Consortium master which includes NUOPC CICE cap updates and fix to time manager to allow 6hrly history files
  • Updates Icepack to latest Consortium/icepack master

Issue #30

Dependent Icepack PR #5

DeniseWorthen and others added 30 commits November 10, 2020 10:44
* Initial refactor of time manager
- nyr, month, mday, sec are the new time manager prognostic variables
- time is renamed to timesec and is a diagnostic, not prognostic variable
- remove time_forc, was not needed or being used anyway
- refactor ice_calendar, use calendar_type to define calendar after initialization
- add several new subroutines to ice_calendar including
  - advance_time = handles advancing the model a timestep
  - calendar_compute_elapsed_days = compute elapsed days since 0000-01-01
  - calendar_compute_days_between = compute days between two yyyy-mm-dd dates
  - calendar_set_date_from_timesecs = support conversion of timesecs to date for binary restarts
  - calendar = same behavior as old method, just no more argument
- add month_init, day_init, sec_init, and npt_unit to namelist
- this is bit-for-bit with f5f487f on cheyenne with full test suite, manual checks of log files
  were done to verify.  restart files are not identical due to changes in files saved
- old restarts should be backwards compatible
- to advance the model a timestep, call advance_time() or update nyr, month, mday, sec and call calendar().
  subroutine calendar() will adjust the date values as needed (for instance, adding a million seconds to sec).

* Add unit test for calendar

* refactor ice_calendar and update calchk unit test

* update calchk unit test

* update compare scripts to support unit tests

* Add calc_timesteps to compute timesteps from npt and npt_unit
Modify set_nml.run* to use new npt_unit and npt
Add calc_timesteps test to calchk unit test
Update standalone model to call calc_timesteps during initialization
  and after restarts are read

* Update JRA55_data implementation
Update computation of fyear to support cycling correctly with new definition on nyr
Modify restart run lengths to be days instead of timesteps
Add debugging to ice_forcing.F90
Add timer for forcing

* clean up merge from master and recent changes

* update documentation and add timer to serial ice_timers.F90

* Update CICE for coupling with RASM with new time manager

- Update drivers/mct/cesm1/CICE_InitMod.F90 and CICE_RunMod.F90
  - use advance_timestep
  - get rid of use of time variable, shift to nyr, month, mday, sec
  - update calendar call
  - update usage of year_init
- Add section in user guide about coupling with new time manager
- Fix stuff unrelated to time manager
  - Fix bug in wght_file diagnostic in ice_domain.F90, was written before defined
  - Fix bug in bathymetry settings when max kmt is greater than hardcoded 40 levels
  - Add a few missing namelist variables recently added to documentation

* clean up old code

* update documentation

* update ice_calendar comments

* update time manager documentation in dg_dynamics

* update history restart documentation

* Update prognostic calendar variables to myear, mmonth, mday, msec.

They were nyr, month, mday, sec.  The "m" in front means model and it
creates more unique names in the source code than year, month, day, sec
which can be hard to grep for because there are so many matches.
…ICE-Consortium#576)

* use cell-centered ice velocity for high-freq wind stress calculation

* turn on dynamics for alt01 tests, update docs
* Fix reading of SOM forcing file.

* Remove some debugging

* Add oceanmixed_ice test case.

* Move alloc_forcing call

* Add ICE_MACHINE_INPUTDATA to set_nml.ml

* Actually fix conflicts

* Actually fix conflicts

* Actually fix conflicts

* Actually fix conflicts

* Update filename and location for ocean forcing
* CICE_RunMod: query 'Lsub' from Icepack

When CICE is compiled with the 'CICE_IN_NEMO' CPP macro, and 'calc_Tsfc'
is false, ice_step::coupling_prep calls CICE_RunMod::srcflux_to_ocn to
transfer heat fluxes on ice-free grid points to the ocean.

The calculation in srcflux_to_ocn uses the Icepack parameter 'Lsub', but
without declaring this variable nor querying it from Icepack, which
results in a compile-time failure when using the standalone driver with
'CICE_IN_NEMO' defined.

Fix that by correctly declaring 'Lsub' and querying it using the Icepack
interface.

* ice_flux: remove 'CICE_IN_NEMO' CPP around sst initialization

In subroutine 'init_coupler_flux', the initialization of the 'sst' array
to 'Tf' is protected by a '#ifndef CICE_IN_NEMO' preprocessor directive.
This has been the case since CICE-Consortium/CICE-svn-trunk@151b9af
(cice-4.0~17, 2008-04-28), though that commit does not explain why.
This is probably because in some conditions (depending on active CPPs at
NEMO compilation time, as well as NEMO namelist parameters), the SST
needs to be passed early to CICE, before calling CICE_Initialize (see
the CICE coupling interface in NEMO [1]), and initializing it to 'Tf' in
'init_coupler_flux' would erase the values already passed from the
ocean.

If however the SST is *not* passed to CICE before CICE_Initialize is
called, and 'CICE_IN_NEMO' is in use, then 'ice_init::set_state_var'
reads from the uninitialized 'sst' array when placing ice where the
ocean surface is cold.

In ECCC's in-house version of the coupling interface (sbc_ice_cice),
extensive changes have been made to work around bugs in the original
version and limitations due to the sequence in which CICE and NEMO fields
are initialized, such that we manually call 'ice_init::init_state' a
second time at the end of subroutine sbc_ice_cice::cice_sbc_init.

To avoid using a uninitialized array, remove the '#ifdef
CICE_IN_NEMO' around the initialization of the 'sst' array to 'Tf', so
that it is always initialized. These values will anyway be replaced by
the "correct" ones when init_state is called a second time in our
in-house version.

[1] http://forge.ipsl.jussieu.fr/nemo/browser/NEMO/releases/release-3.6/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90#L176

* Fix uninitialized values and an array bounds issue in spacecurve

Picked up by testing with initialized snan and debug options in decomps
Update test suite to add debug tests for multiple decomps

* Fix several decomp bugs and add new decomp tests

- Fix bug in ice_boundary fill in halo, was not taking into account padding correctly
- Fix bug in ice_blocks for cases where the active size is 1 gridcell wide
- Update ice_grid initialization to clean up prior workarounds.
- Update some intel compilers to add -init=snan,arrays for debug builds
- Add new tests to the decomp test suite including tests with debugging on,
  tests with the active size 1 gridcell wide, and tests with a single block
  that's bigger than the whole grid.

* Update some uninitialized variables.
Back off on some of the full debug compiler flags.

* revert cheyenne_gnu compiler flags

* add 1x1, 2x2, 3x3 block tests

* add abort to default bathymetry if kmt gt nlevel

* update bathymetry k/kmt calculation

Co-authored-by: Philippe Blain <philippe.blain@canada.ca>
* Add JRA55 dataset tool

Add configuration/tools/jra55_datasets directory and scripts
Move convert_restarts to configuration/tools/cice4_restart_conversio
Add tools section to the developer guide

Update tested compiler versions
Change "compliance" to "validation" in documentation when discussing QC testing.

* update documentation
* ice_domain: revert changes to 'max_blocks' computation from fcbea1d (CICE-Consortium#377)

In fcbea1d (Added DMI/nuopc driver and fixed ANGLET (CICE-Consortium#377), 2019-11-22), the
computation in 'ice_domain::init_domain_blocks' that estimates 'max_blocks' if
the value '-1' is given in the namelist was changed without explanations.

The old computation was computing the number of blocks in the X and Y
directions, taking any necessary padding into account (by substracting 1 to
n[xy]_global, using integer division and adding 1), multiplying them to compute
the total number of blocks, and integer-dividing by `nprocs` to estimate the number
of blocks per processor.

The new computation does a similar computation, but it's unclear what it is
computing exactly. Since it uses floating point division and only casts the
result to an integer at the end of the computation, it systematically computes
a `max_blocks` value that is smaller than the old computation.

This leads to a `max_blocks` value that is systematically too small for the
cartesian decomposition when `block_size_x(y)` does not divide `nx(y)_global`
evenly.

Go back to the old computation.

Also, adjust the documentation to make it clearer that it's possible that
the `max_blocks` value computed by the model might not be appropriate.

* ice_distribution: check 'max_blocks' is enough for all distributions

The subroutines 'create_distrb_cart', 'create_distrb_rake' and
'create_distrb_spacecurve', in contrast to the other distribution-creating
subroutines in module ice_distribution, do not check if the index they are
about to access in the `blockIndex` array of the distribution they are creating
is smaller then `max_blocks`.

This results in an out-of-bound access when `max_blocks` is too small, and
potential segementation faults.

Add checks for these three distributions. Additionnally, for the cartesian
distribution, compute the required minimum value for `max_blocks`, which can
be done easily in this case, abort early, and inform the user of the required
minimum value.

* cicecore: add 'debug_blocks' namelist variable to debug block decomposition

As mentioned in the documentation, subroutines 'ice_blocks::create_blocks' and
'ice_distribution::create_local_block_ids' can print block information to
standard out if the local variable `dbug` is modified to ".true.".

For convenience, replace these local variables with a namelist variable,
'debug_blocks', and add a 'cice.setup' option to activate this new
variable in the namelist.

Adjust the documentation accordingly.

* ice_domain: improve 'max_blocks' computation

The value of 'max_blocks' as currently computed can still be too small
if the number of procs does not divide the number of blocks evenly.

Use the same 'minus one, integer divide, plus one' trick as is done for
the number of blocks in the X and Y directions in order to always
compute a 'max_blocks' value that is large enough.

This estimates the same value for 'max_blocks' as the 'cice_decomp.csh'
script computes:

    @ bx = $nxglob / ${blckx}
    if ($bx * ${blckx} != $nxglob) @ bx = $bx + 1
    @ by = $nyglob / ${blcky}
    if ($by * ${blcky} != $nyglob) @ by = $by + 1

    @ m = ($bx * $by) / ${task}
    if ($m * ${task} != $bx * $by) @ m = $m + 1
    set mxblcks = $m
…efault value (CICE-Consortium#586)

* Update gx1 ic

- update set_nml.gx1prod to match current production system
- add apr 1 test case for gx1
- update landice tests, use gx1
- fix hmix default CICE-Consortium#585
- delete old code in ice_forcing.F90 (should have been done in earlier PR)

* update gx1coreii initial condition

* update icepack

* add gx1 debug test, expected to fail

* Update version number to 6.2.0

* Update gx3 and gx1 input filenames
Update CI wget implementation CICE-Consortium#588
Create variable in ice_forcing.F90 called mixed_layer_depth_default and use it instead of c20
Fix bug in hourly output, created in time manager update CICE-Consortium#589
Set start year for all runs to 2005 and turn leap years on by default
Update documentation in history output section to add information about hist_avg namelist, noted in CICE-Consortium#566

* update ic filenames, tests, and documentation

* update color links in test results wiki

* update hmix initialization
Fix error in gx1coreii initial condition filename
Update conda macos Macros
Add documentation about updating the conda environment
…ing (CICE-Consortium#597)

* Remove hc_jday. Not used anymore after introducing of new ice_calendar

* Calculate "hc_jday" inline using compute_days_between and _init fields from ice_calendar

* Correct hcdate using "compute_days_between"

* Remove unused variables from ice_calendar
Allow setting the ice surface roughness at the atmosphere interface,
'iceruf', in the CICE namelist. This makes it easier to modify this
value.
…E-Consortium#602)

* Update test coverage

- add alt06 test, ncat=7, kcatbound=3, nslyr=3
- add bigdiag test with lots of diagnostic output, debug_model=true, debug_blocks=true, etc
- add spiralcenter decomp test
- add gx1 weightfile decomp test
- add gbox180 with spacecurve decomp test to trigger Peano and Cinco decompositions
- rename boxdyn to boxnodyn
- modify boxslotcyl, turn off tr_lvl and tr_pond_lvl, changes answers
- clarify boxadv, boxnodyn, boxrestore, explicitly set shortwave=ccsm3, albedo_type=constant
- cleanup spacecurve implementation including debug flagging, recode print to write, module private,
  add printcurve for gridsize of 30, remove qsort and partition subroutines.
- remove CICE_RunMod.F90_debug and migrate high level debug checks to CICE_RunMod.F90 with new
  debug_model namelist.  Also add debug_model_step to specify at what timestep to start writing
  debug_model output.  debug_model writes data for the first point specified by lonpnt, latpnt.
- move debug_ice routine into ice_diagnostics.F90 and out of CICE.F90
- remove writeout_finished_file from CICE_Finalize in several drivers
- deprecate print_points_state via an ifdef
- rename l_stop in ice_transport_driver.F90 to ckflag.  This looked like l_stop logic because
  of the naming but it isn't.
- fix issue of size of fcontopn_d and fsurfn_d when ncat greater than 6 in init_coupler_flux.  Would
  go out of bounds, now initializes fcontopn and fsurfn to 6th value for any category greater than 6.
- rename dbug variable name in ice_forcing.F90 to forcing_diag and change namelist variable name.
- update ice_distributionGet output and implementation to support more general arguments
- add ice_distributionGet test in init_domain_distribution when debug_blocks is true.
- fix bug in create_distrb_rake for 1d rake.  add a test that triggers the 1d rake.
- update debug flag in ice_distribution.F90 leverage debug_blocks.
- update documentation.

* - Deprecate IsLoadBalanced in ice_spacecurve
- Update calchk to check 100,000 years
- Update sectrobin decomp test to check land block elimination

* update complog part of baseline script to report missing data as MISS instead of FAIL
…ines (CICE-Consortium#604)

* Update the coverage implementation.

The gcov/lcov tool occasionally generates false negatives or incorrect
statistics with respect to coverage for Fortran 90 continuation lines (using "&").
In some cases, within a single continuation block, some lines have hits which
are correctly counted while other lines have misses which are incorrect and
also counted.  This seems to be partly associate with the lcov -a feature that we
use to aggregate multiple tests, but it also probably is ultimately created by gcov
because it doesn't seem to handle skipped vs missed lines entirely consistently.

With this modification, --coverage creates a temporary sandbox where the tests are
run.  Prior to running the tests, lcov_modify_source.sh is invoked.
"  ! LCOV_EXCL_LINE" (a special defined string in lcov) is added to the end
of some source code lines to request that gcov exclude them.  The lines excluded
are Fortran 90 continuation lines.  In all cases the first and last line of a
continuation block and lines that continue after an "if" are never excluded.
This seems to improve the accuracy of the coverage output overall.

Several other attempts were made to modify the lcov and geninfo perl scripts to
handle the Fortran90 continuation line filtering there without success, so this
solution was implemented.

* update documentation
* update to icepack master but set abort flag in ITD routine
to false
* icepack: update to support staggered atmospheric levels

In the following commit, we will add support for staggered atmoshperic
levels, i.e. receiving the momentum and scalar atmospheric variables at
different vertical levels.

Icepack already supports this through optional arguments, so start by
updating the icepack submodule.

* cicecore: add support for staggered atmoshperic levels

In order to support atmospheric input data given at different levels for
winds and scalars, introduce a new array 'zlvs' in module ice_flux, and
pass it down to 'icepack_atmo_boundary'.

Initialize 'zlvs' to the same value as 'zlvl' (10 metres) so as not to
change the standalone model answers.
…-Consortium#605)

* drivers/hadgem3: add missing 'subname' and use existing 'subname's

* drivers/hadgem3/CICE_InitMod: update 'init_lvl' call

Add the required 'iblk' argument.

* drivers/hadgem3/CICE_RunMod: remove uneeded 'dt' arguments

The subroutines 'prep_radiation', 'zsal_diags', 'bgc_diags' and 'hbrine_diags'
do not take a 'dt' argument anymore, so remove it.

* drivers/hadgem3/CICE_RunMod: get 'Lsub' from Icepack

* drivers/hadgem3/CICE_RunMod: remove 'da_state_update' subroutine

This subroutine is inside an 'ICE_DA' CPP, which is not used in
any configuration. Remove it.

* drivers/hadgem3/CICE_RunMod: remove stray '+'

This '+' sign was copy-pasted there in error in 29b99b6 (CICE: Floe size
distribution  (CICE-Consortium#382), 2019-12-07). Remove it.

* drivers/hadgem3: remove obsolete 'check_finished_file' subroutine

Remove the call to 'check_finished_file' as well as the definition
of the subroutine, as the 'hadgem3' driver is not used on machine 'bering'
and it's unclear if machine 'bering' still exists.

* drivers/hadgem3: fix cice_init so it calls 'count_tracers'

This was forgotten back in 8b0ae03 (Refactor tracer initialization (CICE-Consortium#235), 2018-11-16)

* drivers/hadgem3/CICE_RunMod: add call to 'save_init'

The hadgem3 driver was not updated when 'save_init' was added in 83686a3
(Implement box model test from 2001 JCP paper (CICE-Consortium#151), 2018-10-22). As
this subroutine is necessary to ensure proper initialization of the
model, add it now.

* drivers/hadgem3/CICE_RunMod: tweak loop indices in 'coupling_prep'

Other drivers use 'ilo,ihi' and 'jlo,jhi' here. Do the same.

* drivers/hagdem3: update driver to new time manager

* drivers/hadgem3: pass 'mpi_comm_opa' explicitely to init_communicate

In 066070e (Fix minor issues in documentation, key_ CPPs, bfbcomp return
codes (CICE-Consortium#532), 2020-11-23), the 'ice_communicate' module was updated to
remove CPP macros relating to the OASIS coupler (key_oasis*) and to the
NEMO ocean model (key_iomput). These CPPs were used to make the correct
MPI communicator accessible to the 'init_communicate' subroutine.
However, that subroutine already accepts an optional MPI communicator as
argument and it was deemed cleaner to require the driver layer to
explicitely pass the communicator instead of making it accessible
through 'use' statements.

Update the 'hadgem3' driver, used for coupling with NEMO, to explicitely
pass the NEMO MPI communicator 'mpi_comm_opa' to 'init_communicate'.

* drivers: add 'nemo_concepts' driver

Historically the 'hadgem3' driver has been used when compiling a single
NEMO-CICE executable at ECCC.

Going forward, all driver-level adjustements will be done in our own
driver, 'nemo_concepts', 'CONCEPTS' being the name of the
multi-departmental collaboration around using the NEMO ocean model.

Copy CICE_InitMod, CICE_RunMod and CICE_FinalMod from the 'hadgem3'
directory to a new 'nemo_concepts' directory under 'drivers/direct'.

The following commits will clean up this new driver and port over some
in-house adjustments.

* drivers/nemo_concepts: remove unused 'writeout_finished_file' subroutine

This subroutine was only called on machine 'bering', which is not an
ECCC machine and probably does not exist anymore anyway. Remove it.

* drivers/nemo_concepts: call 'scale_fluxes' with 'aice_init'

Since 'merge_fluxes' is called with aice_init, it is more consistent to
also call 'scale_fluxes', in 'coupling_prep' with 'aice_init'
instead of 'aice'.

Copy this in-house change to the new 'nemo_concepts' driver.
…um#606)

* Update testing

- Set default debug_model_step=0 (was 99999999)
- Add debug_model_[i,j,iblk,task] to define the debug_model diagnostic point
  in local grid index space.  If this point is not set and debug_model
  is turned on, it will use lonpnt(1),latpnt(1).
- Rename forcing_diag namelist/variable to debug_forcing to be more
  consistent with other "debug_" namelist variables
- Rename the local variable forcing_debug in ice_forcing.F90 to local_debug
  to avoid confusion with global varaible debug_forcing.
- Add namelist variable optics_file.  Was hardwired in ice_forcing_bgc.F90
- Update optics file variable name to read, still hardwired in model.
- Update setting of nbtrcr_sw and allocation of trcrn_sw.   nbtrcr_sw
  was not set in icepack after it was computed and trcrn_sw was allocated
  before nbtrcr_sw was computed.  This impacts the dedd_algae implementation
  which still isn't working.
- move default distribution_wgt_file for gx1 to set_nml.gx1
- update test suite, add testing of debug_model_[i,j,iblk,task], add addtional
  testing of maskhalo
- update documentation

* add sumchk unit test to test global reduction methods

* - add bcstchk unit test
- update ice_broadcast to sync up serial and mpi versions
- add get_rank to ice_communicate.F90
- add global_[min/max]val_scalar_int_nodist method to ice_global_reductions.F90
- add tripole output in ice_blocks.F90 with debug_blocks
- update set_nml.tx1 to set ns_boundary_type to 'tripole', was 'open'

* update lsum16 to revert to double precision if NO_R16 is set

* sync up serial ice_global_reductions.F90

* - add optics_file_fieldname namelist
- add grid_type and ns_boundary_type tripole check
- update sumchk unit test to check both Nface and center points.  these are treated
  differently for tripole grids.
- update documentation of unit tests
Update NUOPC/CMEPS driver

Update hera port
* updated orbital calculations needed for cesm

* fixed problems in updated orbital calculations needed for cesm

* update CICE6 to support coupling with UFS

* put in changes so that both ufsatm and cesm requirements for potential temperature and density are satisfied

* update icepack submodule

* Revert "update icepack submodule"

This reverts commit e70d1ab.

* update comp_ice.backend with temporary ice_timers fix

* Fix threading problem in init_bgc

* Fix additional OMP problems

* changes for coldstart running

* Move the forapps directory

* remove cesmcoupled ifdefs

* Fix logging issues for NUOPC

* removal of many cpp-ifdefs

* fix compile errors

* fixes to get cesm working

* fixed white space issue

* Add restart_coszen namelist option

* Update NUOPC cap to work with latest CICE6 master

* nuopc,cmeps or s2s build updates

* fixes for dbug_flag

* Update nuopc2 to latest CICE master

* Fix some merge problems

* Fix dbug variable

* Manual merge of UFS changes

* fixes to get CESM B1850 compset working

* refactored ice_prescribed_mod.F90 to work with cdeps rather than the mct data models

* Fix use_restart_time

* changes for creating masks at runtime

* added ice_mesh_mod

* implemented area correction factors as option

* more cleanup

* Fix dragio

* Fix mushy bug

* updates to nuopc cap to resolve inconsistency between driver inputs and cice namelists

* changed error message

* added icepack_warnings_flush

* updates to get ice categories working

* updates to have F compset almost working with cice6 - still problems in polar regions - need to resolve 253K/cice6 versus 273K/cice5 differences

* changed tolerance of mesh/grid comparison

* added issues raised in PR

* Update CESM-CICE sync with new time manager

* Add back in latlongrid

Co-authored-by: Mariana Vertenstein <mvertens@ucar.edu>
Co-authored-by: apcraig <anthony.p.craig@gmail.com>
Co-authored-by: Denise Worthen <denise.worthen@noaa.gov>
…CICE-Consortium#612)

* icepack: optionally compute 'dragio' using under-ice roughness length

In CICE-Consortium/Icepack@a80472b (icepack_parameters: optionally
compute 'dragio' from under-ice roughness (CICE-Consortium/Icepack#366),
2021-06-22), Icepack was updated to optionally compute the ice-ocean
drag coefficicent 'dragio' using an under-ice roughness length and the
thickness of the first ocean level.

Leverage this new feature in CICE by adding 'calc_dragio' and
'iceruf_ocn' to the CICE namelist. Add the new variables to the index in
the documentation and add a test with the new feature (using default
values for 'iceruf_ocn' and 'thickness_ocn_layer1').

As this new feature will mostly be useful in a coupled context, we do
not add 'thickness_ocn_layer1' to the namelist as it is expected that
the ocean model will pass this information to CICE.

* ice_grid: set 'thickness_ocn_layer1' if using 'calc_dragio'

In the previous commit we updated Icepack to allow computing the
ice-ocean drag coefficient 'dragio' using an under-ice roughness length
and the thickness of the first ocean layer, 'thickness_ocean_layer1', a
new Icepack parameter.

In some situations, we have access in CICE to the thicknesses of the
ocean levels, either hard-coded (use_bathymetry = false,
bathymetry_format = default), read from a file (use_bathymetry = true,
bathymetry_format = pop), or generated from the kmt_file
(use_bathymetry = false, bathymetry_format = pop). In these situations,
for consistency set 'thickness_ocean_layer1' in Icepack to the thickness
of the first ocean level, 'thick(1)' if 'calc_dragio' is active.
apcraig and others added 2 commits July 1, 2021 21:11
…ortium#610)

* Fix history/restart frequency bugs and update scripts

- Fix bugs in history/restart frequency associated with new calendar (CICE-Consortium#589)
- Update set_nml.histall to include hourly output (CICE-Consortium#589)
- Update test scripts to cleanly abort if run fails where possible (CICE-Consortium#608)
- Update decomp test so it's rerunable, remove restart at start of run (CICE-Consortium#601)
- Add ability to do bfbcomp tests with additional options set on command line (CICE-Consortium#569)
- Update documentation of calendar frequency computation, calendar types, and closed boundaries (CICE-Consortium#541)
- Add optional doabort flag to abort_ice to control whether the method aborts.  This
  is useful for testing and code coverage statistics, although doabort=.false.
  will not call the actual abort method, but we can test the interfaces and
  rest of the code.
- Add histfreq_base and dumpfreq_base ('init' or 'zero') to specify
  reference data for history and restart output.  Defaults are
  'zero' and 'init' respectively for hist and dump.
  Setting histfreq_base to 'zero' allows for consistent output
  across multiple runs.  Setting dumpfreq_base to 'init' allows
  the standard testing which requires restarts be written,
  for example, 5 days after the start of the run.
- Remove extra abort calls in bcstchk and sumchk on runs that
  complete fine but don't pass checks.  These aborts should never
  have been there.
- Update documentation.

- Clean up some of the unit tests to better support regression testing

- modify initial/restart implementation
- restart namelist is deprecated, now computed internally
- modify initial/continue init checks and set restart and use_restart_time as needed
- create compute_relative_elapsed method in ice_calendar to improve code reuse
- update documentation with regard to initial/continue modes
- Set default use_restart_time to false
@DeniseWorthen DeniseWorthen merged commit 55586f7 into NOAA-EMC:emc/develop Jul 20, 2021
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