Skip to content

changes to suppress elevation classes#4

Draft
mpetrini-norce wants to merge 5 commits intoNorESMhub:noresmfrom
mpetrini-norce:ec_suppress
Draft

changes to suppress elevation classes#4
mpetrini-norce wants to merge 5 commits intoNorESMhub:noresmfrom
mpetrini-norce:ec_suppress

Conversation

@mpetrini-norce
Copy link
Copy Markdown
Collaborator

Code needed to suppress Elevation Classes in inversion spin-up within T-compset architecture.

mpetrini-norce and others added 5 commits October 27, 2025 11:34
This commit modifies the algorithm for extrapolating ocean thermal forcing
into sub-ice-shelf cavities. The new algorithm reduces the unphysical striping
in the previous version, giving smoother and more reasonable fields.
Thanks to Michele Petrini for testing and improving the algorithm.

The algorithm now works as follows:
* At startup, set TF to an unphysical value everywhere in sub-shelf cavities.
* Extrapolate off-shelf values into cavities, iterating until there are physical values
  in all cells that levels that need them. Weigh adjacent cells using a Laplacian smoother.
   - With a 1-level Laplacian smoother, the extrapolation gets stuck from time to time.
     In that case we fill levels in the vertical direction as needed, and then continue the iteration.
   - With a 3-level Laplacian smoother, the extrapolation fills nearly all cells and levels
     without getting stuck. The only levels remaining are those which are separated by one or more
     levels or cells from the nearest filled value.
   - When the Laplacian smoother has gone as far as it can, fill the remaining levels
     by averaging valid values at all vertical levels in adjacent grid cells.

Three stencil sizes are supported for the Laplacian smoother:
* 9 (3 x 3 at one level)
* 25 (5 x 5 at one level)
* 27 (3 x 3 at three levels)
The 27-point smoother converges in fewer iterations than the other two, so it is the default.

Each cell and level that starts with TF = unphys_val receives its initial value by taking
a smoothed average of neighboring values that have been filled.
This initial value can be smoothed one or more additional times by setting max_count_smoothing > 1.
The default is max_count_smooothing = 2, which gives one additional smoothing.
This additional smoothing reduces the striping along grid diagonals in large cavities, especially Ross.
Further smoothing does not make a big difference.
With max_count_smoothing = 2 or more, the 9-point stencil gives results similar to the 25-point stencil.
For now, max_count_smoothing is hardwired; it could be a config option if desired.

Optionally, the user can use a parameter called cavity_buffer to set TF to an unphysical value
in open-ocean cells that are near but not at the calving front (either 1 or 2 cells away).
The default buffer is 0, but it can be set to 1 or 2. It is hardwired; could be a config option if desired.

The full extrapolation, starting without any valid values in cavities, is done only at initialization.
On subsequent timesteps (and on restart), valid values in cavities are retained; the extrapolation is applied
only where the grounding line has retreated.

I compared the extrapolated TF at the lower ice surface to the values obtained from Xylar's ISMIP6 TF data set,
where TF is already extrapolated into cavities. A couple of differences:
* For Larsen C the CISM TF is notably larger; I'm not sure why.
* For Ross, the CISM TF is larger in the Byrd sector than in most of the cavity; this difference does not appear in Xylar's TF.
For most cavities, however, the two patterns look pretty similar.
This commit removes the use of, and calls to, subroutine point_diag from
modules glissade_grid_operators and glissade_utils, where using
the glide_diagnostics module creates circular dependencies.

In the longer term, we might want to move point_diag to glissade_utils
or some other low-level module.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

3 participants