changes to suppress elevation classes#4
Draft
mpetrini-norce wants to merge 5 commits intoNorESMhub:noresmfrom
Draft
changes to suppress elevation classes#4mpetrini-norce wants to merge 5 commits intoNorESMhub:noresmfrom
mpetrini-norce wants to merge 5 commits intoNorESMhub:noresmfrom
Conversation
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.
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.
Code needed to suppress Elevation Classes in inversion spin-up within T-compset architecture.