Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to ROMS 2D Kernel and Implicit Vertical Advection #11

Open
wants to merge 39 commits into
base: develop
Choose a base branch
from

Conversation

hga007
Copy link
Collaborator

@hga007 hga007 commented Jul 14, 2023

Description

This is a major update to ROMS numerical kernels:

  • Major update to ROMS barotropic kernel (step2d) using the Generalized Forward-Backward 3rd-order Adams-Bashforth /4th-order Adams-Moulton (FB AB3-AM4) time stepping algorithm (Shchepetkin and McWilliams, 2005; 2009). Use the STEP2D_FB_AB3_AM4 option to activate this time-stepping algorithm. Notice that step2d.F module has the following logic:
#ifdef NONLINEAR
# if defined STEP2D_FB_AB3_AM4
#  include "step2d_FB.h"
# elif defined STEP2D_FB_LF_AM3
#  include "step2d_FB_LF_AM3.h"
# else
#  include "step2d_LF_AM3.h"
# endif
#else
      MODULE step2d_mod
      END MODULE step2d_mod
#endif

The new routine step2d_FB.h is more efficient, accurate, and compact. No predictor and corrector blocks exist in main2d or main3d. In 3D configurations (SOLVE3D), it suppresses the computation of momentum advection, Coriolis, and lateral viscosity terms because these terms are already included in the baroclinic-to-barotropic forcing arrays rufrc and rvfrc. It does not mean we are entirely omitting them, but it is a choice between recomputing them at every barotropic step or keeping them frozen during the fast-time stepping. However, in some coarse grid applications with larger baroclinic timestep (say, DT around 20 minutes or larger), adding the Coriolis term in the barotropic equations is useful since f*DT is no longer small. In such a case, we recommend activating STEP2D_CORIOLIS.

Currently, the FB AB3-AM4 only works for the nonlinear kernel. Although the TLM, RPM, and ADM versions are coded, we must determine the correct cycling logic for updating the time-stepping indices in the adjoint model.

  • Implement the adaptive, Courant-number-dependent implicit scheme for vertical advection (Shchepetkin, 2015). The vertical velocity is split into explicit (W) and implicit (Wi) parts that adjust automatically to the local flow conditions based on the Courant number for stability, allowing a larger timestep (DT). It is activated with the OMEGA_IMPLICIT option.

We are still working on the TLM, RPM, and ADM versions of omega.F.

Issue(s) Addressed:

None.

Impact

None.

References:

Shchepetkin, A.F. and J.C. McWilliams, 2005: The regional oceanic modeling system (ROMS): a split-explicit, free-surface, topography-following-coordinate oceanic model, Ocean Modelling, 9, 347-404, doi:10.1016/j.ocemod.2004.08.002.

Shchepetkin, A.F., and J.C. McWilliams, 2009: Computational kernel algorithms for fine-scale, multiprocess, longtime oceanic simulations, pp 121-183. In Handbook of Numerical Analysis: Computational Methods for the Atmosphere and Oceans, R.M. Teman and J.J. Tribbia, eds, Elsevier Science.

Shchepetkin, A.F., 2015: An adaptive, Courant-number-dependent implicit scheme for vertical advection in oceanic modeling, Ocean Modelling, 91, 38-69, doi:10.1016/j.ocemod.2015.03.006.

@hga007 hga007 added the enhancement New feature or request label Jul 14, 2023
@hga007 hga007 self-assigned this Jul 14, 2023
hga007 added 27 commits July 27, 2023 18:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant