Patches to BT-solver for ice-shelf layer configs#951
Conversation
Hallberg-NOAA
left a comment
There was a problem hiding this comment.
I agree that these changes are correct.
I would note, however, that the description of this PR is wrong on one point. The transports in the barotropic solver are not a "linearization" of the layer transports. Rather they are a nonlinear parametric fit to the transports that only amount to a linearization in the limit of small barotropic velocity changes.
When debugging layout non-reproducible problems, this hchksum showed up as having changes in the halo BUT it is immediately followed by a pass_var(). Either we need to only check the C-domain or do hchksum with halos after the pass_var().
The rate at which eta_src was added to eta within the barotropic solver allowed the instantaneous eta to ground-out and drop below the bottom during the extend steps over which the filtered state is calculated. eta_src was previously adjusted so that it could at worst ground out over the course of the baroclinic step, but did not allow for the extra time needed when filtering. This change was found to be helpful when debugging problems in vanished layers under a grounded thermodynamic ice shelf.
An adjustment to the barotropic mass source used in the correction step of RK2 was making matters worse for layers under a grounded ice shelf. This adjustment essentially does not do anything for the deep ocean (i.e. was tiny tiny) so we suspect this was a hold over from the earlier BT algorithms.
The BT solver regularly spits out warnings about the SSH dropping below
the ocean bottom, particularly frequently for extreme scenarios such as
the vicinity of the ground line in an ice shelf cavity. These changes
apply a limiter on the time-integrated transport within the BT solver
that based on the initial volume adjusted for any sinks.
- Added run-time flag BT_LIMIT_INTEGRAL_TRANSPORT that turns on
calculation of the initial and projected available volume.
By default, this is off and the default available volume is huge.
- Implemented a limiter without `if`s for efficiency.
- Added a FATAL test to check that the initial conditions do not already
have negative total thickness.
- Flipped the WARNING about negative total thickness to be FATAL when
using the limiter, since if the limiter is not robust then we've done
something wrong again.
- Extended check on number of steps for BT solver, wrt filtering steps
- Changed an ==0 to <=0, since we encountered a weird situation where
it happened (unknown cause)
c0da5cf to
935d802
Compare
Hallberg-NOAA
left a comment
There was a problem hiding this comment.
Resolving adcroft#6 will automatically address the one omission in this PR that is needed before it can be accepted.
Adds analogous code to MOM_dynamics_split_RK2b.F90 that is identical to the code that was added to MOM_dynamics_split_RK2.F90 to avoid readjusting the barotropic mass source to try to reconcile the baroclinic and barotropic sea surface heights. By default all answers are bitwise identical, but the runtime parameter BT_ADJ_CORR_MASS_SRC will not appear in the MOM_parameter_doc files for cases with SPLIT_RK2B set to True.
Hallberg-NOAA
left a comment
There was a problem hiding this comment.
This PR is now ready to be merged into dev/gfdl.
|
This PR has passed pipeline testing at https://gitlab.gfdl.noaa.gov/ogrp/mom6ci/MOM6/-/pipelines/28465 with the expected warnings about new runtime parameters. |
The ice-shelf configurations push the BT solver to new extremes and have been cluttered by "eta has dropped below bathyT" WARNINGs. This turns out to be because the linearization of BT transports about the baroclinic thicknesses is far from accurate in the vicinity of the grounding line. Rather than address the linearization (which is hard to improve on) we apply a flux limiter that stops divergent fluxes from removing mass that does not exist. Because the reconstructions are fixed, this is done as a flux limiter rather than adjustments to the reconstruction (as is done in the layer continuity fluxes). This BT flux limiter has to account for sinks that will be applied over future BT steps, which means that there are situations where flooding from one direction does not allow draining in another, e.g. where the sink uses up the entire column. The rate at which sinks was applied in the BT solver was leading to negative thicknesses in some cases. We also found that recalculation of the sinks (corrections) was detrimental and made the negative-thickness more likely.
There are three main fixes:
BT_ADJUST_SRC_FOR_FILTER = TrueBT_ADJ_CORR_MASS_SRC = FalseBT_LIMIT_INTEGRAL_TRANSPORT = TrueWith the three fixes enabled, a grounded ice-shelf test with active sources/sinks was able to initialize and run without negative thicknesses occurring for 15+ days.
Incidental changes:
hchksum()encountered when debugging layout problems (which still exist).Notes: