Skip to content

Patches to BT-solver for ice-shelf layer configs#951

Merged
Hallberg-NOAA merged 5 commits into
NOAA-GFDL:dev/gfdlfrom
adcroft:bt-shelf-patch
Aug 7, 2025
Merged

Patches to BT-solver for ice-shelf layer configs#951
Hallberg-NOAA merged 5 commits into
NOAA-GFDL:dev/gfdlfrom
adcroft:bt-shelf-patch

Conversation

@adcroft
Copy link
Copy Markdown
Member

@adcroft adcroft commented Aug 1, 2025

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:

  • Change the rate at which sources/sinks are applied throughout the BT solver, to avoid grounding out during the filter steps. Fix enabled with BT_ADJUST_SRC_FOR_FILTER = True
  • Disable the re-calculation of BT mass source after the predictor step, using BT_ADJ_CORR_MASS_SRC = False
  • Apply a flux limiter based on initial volume adjusted by mass sinks, enabled with BT_LIMIT_INTEGRAL_TRANSPORT = True

With 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:

  • One minor repositioning of an hchksum() encountered when debugging layout problems (which still exist).
  • Added checks on initial thicknesses that are passed to the BT solver
  • Made negative thickness checks FATAL instead of just WARNINGs, when using the limiter. There is no circumstance I can think of where such a non-physical state should be allowed.

Notes:

  • I tried making the non-negative check on eta_IC always active and FATAL but incredibly "double_gyre" fails! In the interests of progress, I opted to make the test conditional on the limiter being active.

Copy link
Copy Markdown
Member

@Hallberg-NOAA Hallberg-NOAA left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@Hallberg-NOAA Hallberg-NOAA added enhancement New feature or request Parameter change Input parameter changes (addition, removal, or description) labels Aug 6, 2025
Comment thread src/core/MOM_dynamics_split_RK2.F90
adcroft added 4 commits August 7, 2025 09:51
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)
Copy link
Copy Markdown
Member

@Hallberg-NOAA Hallberg-NOAA left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Copy Markdown
Member

@Hallberg-NOAA Hallberg-NOAA left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is now ready to be merged into dev/gfdl.

@Hallberg-NOAA
Copy link
Copy Markdown
Member

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.

@Hallberg-NOAA Hallberg-NOAA merged commit 921a17c into NOAA-GFDL:dev/gfdl Aug 7, 2025
52 checks passed
@adcroft adcroft deleted the bt-shelf-patch branch September 18, 2025 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request Parameter change Input parameter changes (addition, removal, or description)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants