Skip to content

Commit

Permalink
(*)+Modified MOM_restart to fix rotated restarts
Browse files Browse the repository at this point in the history
  Modified MOM_restart so that restart files generated by rotated runs match
unrotated restart files, and the model can be properly initialized from a
restart file when the grid is rotated.  Also added runtime options to convert
negative zeros into ordinary zeros before they are written to restart files
(selected with RESTART_UNSIGNED_ZEROS) and to properly do the checksums on the
velocity points on all of the faces (selected with RESTART_SYMMETRIC_CHECKSUMS).

  Also added the new interfaces copy_restart_var and copy_restart vector to use
the names of restart variables and the pointers stored in the restart control
structure to obtain a copy of the variables as the restart variables with the
option to undo the rotation.  These routines are necessary because the reading
of restart files occurs during a phase of the model initialization that works on
an unrotated grid, and they are called from inside of MOM_initialize_state.

  The ranges for the checksums are now set correctly for each variable,
depending on where it is discretized, but when RESTART_SYMMETRIC_CHECKSUMS is
false, the previous ranges are still used so answers do not change in unrotated
test case.

  The conversion factors used for the pair of register_restart_field calls in
register_restart_pair now include the necessary sign changes for the rotation,
as set in the new internal routine set_conversion_pair.  There is also now a
scalar_pair optional argument to the register_restart_pair routines to
accommodate the rotation of pairs of scalars that do not change sign when
rotated (e.g., grid-lengths).

  Instead of working with the hor_grid character string, the restart code has
been modified to instead use the encoded integer position argument returned
from query_vardesc.  This avoids several redundant blocks of code that translate
the hor_grid strings into positions.

  All answers are bitwise identical when there is no grid rotation, but with
grid rotation the restart files that are created are modified to have the
correct signs and replicate the restart fields with no rotation.  Also, cases
with grid rotation can now be reinitialized from restart files, while previously this
simply did not work, either giving an incorrect reinitialized state or a
segmentation fault.  There are also two new runtime parameters in some
MOM_parameter_doc files.
  • Loading branch information
Hallberg-NOAA committed Dec 26, 2024
1 parent 671884f commit e33f93f
Show file tree
Hide file tree
Showing 2 changed files with 375 additions and 83 deletions.
Loading

0 comments on commit e33f93f

Please sign in to comment.