+*Add and revise step_MOM_dyn_split_RK2b#534
Merged
Merged
Conversation
Codecov ReportAttention:
Additional details and impacted files@@ Coverage Diff @@
## dev/gfdl #534 +/- ##
============================================
- Coverage 37.46% 37.17% -0.29%
============================================
Files 270 271 +1
Lines 79695 80308 +613
Branches 14830 14979 +149
============================================
+ Hits 29854 29855 +1
- Misses 44291 44899 +608
- Partials 5550 5554 +4 ☔ View full report in Codecov by Sentry. |
Add the new module MOM_dynamics_split_RK2b and calls to the routines in this module to MOM.F90. These calls are exercised when the run time parameter SPLIT_RK2B is true. For now, all answers are bitwise identical when this new code is being exercised, but there is a new module with multiple public interfaces and a new entry in many MOM_parameter_doc files.
Revised step_MOM_dyn_split_RK2b to use the time-filtered velocities as arguments and reconstruct the instantaneous velocities with the proper phase from the barotropic solver from the saved increments du_av_inst and dv_av_inst. As a part of this change, the continuity solver is used to find the thickness fluxes used in the predictor step Coriolis terms, and the horizontal viscous accelerations are calculated for both the predictor and corrector steps, thereby avoiding the need to vertically remap any 3-d fields apart from a single pair of velocity components. The run-time option STORE_CORIOLIS_ACCEL is no longer used when SPLIT_RK2B = True. FPMIX was also disabled in this mode due to unresolved dimensional inconsistency errors in that code. Additionally, the time-filtered velocities are now used instead of the instantaneous velocities in the second call to radiation_open_bdry_conds(), which should improve the performance of several of the Orlanski-type open boundary conditions. The 2-d fields du_av_inst and dv_av_inst were added to the restart file, while the 3-d fields u2, v2, diffu and diffv and either CAu and CAv or uh, vh and h2 are all removed from the restart files. Remap_dyn_split_RK2b_aux_vars() now has nothing to do, and it should probably be eliminated altogether in a subsequent commit. All answers are changed when SPLIT_RK2B = True, and there are changes to the contents of the restart files.
This commit includes further revisions to MOM_dynamics_split_RK2b that avoid some unnecessary calculations and group some of the halo updates into fewer group passes. All answers are bitwise identical.
Corrected the description of the runtime parameter SPLIT_RK2B that will appear in the MOM_parameter_doc files and in the doxygen descriptions of the MOM module to better reflect what was ultimately being done with this new scheme. All answers are bitwise identical, but there are changes to the (newly added) contents of some MOM_parameter_doc files.
6f3fe3f to
22c3499
Compare
Member
Author
|
This PR has been revised to correct the comments describing the new runtime parameter SPLIT_RK2B, and there are no other known corrections that are needed. |
Member
|
Gaea regression: https://gitlab.gfdl.noaa.gov/ogrp/MOM6/-/pipelines/21748 ✔️ 🟡 |
marshallward
approved these changes
Dec 22, 2023
Member
marshallward
left a comment
There was a problem hiding this comment.
We can look into merging these two RK2-based methods once the new scheme has been road-tested.
This was referenced May 16, 2024
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.
This pull request consists of two commits that add the new module MOM_dynamics_split_RK2b and then revise it to give a new split time-stepping scheme. This new scheme is enabled by setting the new runtime parameter
SPLIT_RK2B = True.With this new scheme, the velocity that is passed back and forth to the driver is averaged over the phases of the barotropic stepping, rather than being an instantaneous velocity. The instantaneous velocities can be regenerated from the phase-averaged velocities using a stored barotopic velocity increment. It is hoped that this new scheme will be slightly more robust than before, although this will be more expensive than the other (previous) split time stepping scheme, with two calls to horizontal_viscosity per baroclinic dynamics time step (instead of one) and four calls to continuity per step (instead of 3). Some of this added cost could be recovered by unwinding the sub-calls within continuity to reuse the PPM thickness reconstructions in one of the two directions.
This new scheme has been tested on all of the examples in the MOM6-examples test suite, where it gives very similar answers. It has also been confirmed that the new scheme reproduces across processor layout and restart files.
When this new scheme is used there are substantial differences in the contents of the restart files, with 7 fewer 3-d fields, but two additional 2-D velocity increments. Moreover, when this scheme is used in ALE mode, there is only a single pair of velocity components that need to be remapped.
Answers will change with
SPLIT_RK2B = True. There is a new publicly visible module with several new public interfaces. In addition, there are changes to the contents of the MOM_parameter_doc.all files even when the new scheme is not being exercised.The commits in this PR include: