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

Add GL90 parameterization for stacked shallow water #268

Merged
merged 12 commits into from
Dec 23, 2022

Commits on Nov 29, 2022

  1. Add GL90 parameterization in stacked shallow water

    This adds a new vertical viscosity parameterization as in Greatbatch and Lamb (1990),
    Ferreira & Marshall (2006) and Zhao & Vallis (2008), hereafter referred to as the GL90
    vertical viscosity parameterization. This vertical viscosity scheme redistributes momentum
    in the vertical, and is the equivalent of the Gent & McWilliams (1990) parameterization,
    but in a TWA (thickness-weighted averaged) set of equations. The vertical viscosity coefficient
    nu is computed from kappa_GM via thermal wind balance, and the following relation:
    
    nu = kappa_GM * f^2 / N^2.
    
    The vertical viscosity del_z ( nu del_z u) is applied to the momentum equation with stress-free
    boundary conditions at the top and bottom.
    
    In the current implementation, kappa_GM is assumed either (a) constant or as (b) having an
    EBT structure. A third possible formulation of nu is depth-independent:
    
    nu = f^2 * alpha
    
    The latter formulation would be equivalent to a kappa_GM that varies as N^2 with depth.
    Currently, the GL90 parameterization is only implemented in stacked shallow water (SSW) mode,
    in which case we have 1/N^2 = h/g'.
    
    More specifically, this commit adds a new subroutine that computes the couping coefficient
    associated with GL90 via
    
    a_cpl_gl90 = nu / h = kappa_GM * f^2 / g'
    
    or
    
    a_cpl_gl90 = nu / h = f^2 * alpha / h.
    
    Further, a_cpl_gl90 is multiplied by a function (botfn), which is 0 within the GL90 bottom boundary
    layer, whose depth is set by Hbbl_gl90, and 1 otherwise. This modification is necessary to avlid fluxing
    momentum into vanished layers that ride over steep topography.
    
    Finally, a_cpl_gl90 is added to a_cpl, where the latter is the coupling coefficient associated with the
    remaining vertical stresses, used in the vertical viscosity solver.
    
    More information can be found in Loose et al. (https://www.essoar.org/doi/abs/10.1002/essoar.10512867.1),
    Appendix B.
    NoraLoose committed Nov 29, 2022
    Configuration menu
    Copy the full SHA
    8cac514 View commit details
    Browse the repository at this point in the history

Commits on Dec 3, 2022

  1. Configuration menu
    Copy the full SHA
    36ba269 View commit details
    Browse the repository at this point in the history

Commits on Dec 5, 2022

  1. Configuration menu
    Copy the full SHA
    9ebd3a9 View commit details
    Browse the repository at this point in the history
  2. Rewrite comment so it does not contain apostrophe

    Change g' --> g^prime because doxygen and style test does not like
    the apostrophe.
    NoraLoose committed Dec 5, 2022
    Configuration menu
    Copy the full SHA
    35ab8ec View commit details
    Browse the repository at this point in the history

Commits on Dec 8, 2022

  1. Configuration menu
    Copy the full SHA
    949f51a View commit details
    Browse the repository at this point in the history

Commits on Dec 13, 2022

  1. Introduce logical variable KD_GL90_USE_EBT_STRUCT

    This variable is analogous to KHTH_USE_EBT_STRUCT, but is specifically for the GL90 scheme.
    If the user sets KD_GL90_USE_EBT_STRUCT = True, an EBT structure will be applied to KD_GL90.
    Before this commit, KHTH_USE_EBT_STRUCT took the two-fold role of imposing an EBT structure
    on KHTH (used in the GM scheme) and KD_GL90 (used in the GL scheme), which may have been confusing.
    NoraLoose committed Dec 13, 2022
    Configuration menu
    Copy the full SHA
    e79e8bb View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    01ec2c4 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    6ff428f View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    a2361b7 View commit details
    Browse the repository at this point in the history

Commits on Dec 14, 2022

  1. Configuration menu
    Copy the full SHA
    4d56332 View commit details
    Browse the repository at this point in the history

Commits on Dec 21, 2022

  1. Add arguments do_not_log = .not.CS%use_GL90_in_SSW

    All get_param calls that are for variables that are only used when
    GL90 is in use get the argument do_not_log = .not.CS%use_GL90_in_SSW.
    Prior, these variables have been wrapped by an if-statement.
    NoraLoose committed Dec 21, 2022
    Configuration menu
    Copy the full SHA
    2712b20 View commit details
    Browse the repository at this point in the history

Commits on Dec 22, 2022

  1. Configuration menu
    Copy the full SHA
    4ef01e6 View commit details
    Browse the repository at this point in the history