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 ePBL bottom boundary layer mixing option #717

Open
wants to merge 6 commits into
base: dev/gfdl
Choose a base branch
from

Commits on Dec 2, 2024

  1. *Fix a bug when EPBL_ORIGINAL_PE_CALC is false

      Corrected a bug that causes ePBL column to set the wrong variable and then use
    an uninitialized variable when EPBL_ORIGINAL_PE_CALC is set to false.  This bug
    was present when the EPBL_ORIGINAL_PE_CALC was first added on Sept. 30, 2016,
    but it was not detected because only the default case with EPBL_ORIGINAL_PE_CALC
    = True appears to being used or tested.  Any runs that used this code with
    debugging compile options would have trapped it immediately.  This will change
    answers when EPBL_ORIGINAL_PE_CALC is false.
    Hallberg-NOAA committed Dec 2, 2024
    Configuration menu
    Copy the full SHA
    49414ac View commit details
    Browse the repository at this point in the history
  2. +Add EPBL_MLD_ITER_BUG runtime parameter

      Added the new runtime parameter EPBL_MLD_ITER_BUG that can be set to false to
    correct buggy logic that gives the wrong bounds for the next iteration  when
    USE_MLD_ITERATION is true and successive guesses increase by exactly
    EPBL_MLD_TOLERANCE.  By default all answers are bitwise identical, but there is
    a new runtime parameter in some MOM_parameter_doc files.
    Hallberg-NOAA committed Dec 2, 2024
    Configuration menu
    Copy the full SHA
    972f8e3 View commit details
    Browse the repository at this point in the history
  3. +Add run-time ability to debug ePBL sensitivities

      Added the ability to passively run ePBL_column twice in a diagnostic mode and
    then provide diagnostics of the differences in the diffusivities and boundary
    layer depths that are generated with the two options.  This is controlled by the
    new runtime parameter EPBL_OPTIONS_DIFF, which is an integer that specifies
    which options to change or 0 (the default) to disable this capability.
    Associated with this are the new diagnostics ePBL_opt_diff_Kd_ePBL,
    ePBL_opt_maxdiff_Kd_ePBL and ePBL_opt_diff_h_ML, which only are registered when
    the differencing is enabled.  For now, only changes associated with the settings
    of EPBL_ORIGINAL_PE_CALC and EPBL_ANSWER_DATE can be evaluated, but this list
    will grow as new options are added.
    
      As a part of these changes, there were some other reforms to the way that
    MOM_energetic_PBL handles diagnostics, with the 2-d and 3-d arrays changed from
    allocatable arrays with enduring memory commitments in the energetic_PBL_CS type
    into simple arrays in energetic_PBL, relying on the fact that compilers will be
    smart enough to avoid actually allocating this memory when it is unused to avoid
    expanding the overall memory requirements of MOM6.  A number of allocate and
    deallocate calls were eliminated by these changes.
    
      In addition, explicit 'units=' descriptors were added to numerous
    register_diag_field calls to help identify inconsistent conversion factors.
    
      Also, the diagnostic of the number of boundary layer depth iterations was
    added to the ePBL_column_diags, which enabled the intent of the CS and G
    arguments to ePBL_column to be changed to intent(in).  The unnecessary extra
    logic associated with the use of the OBL_converged variable in ePBL_column was
    eliminated, but the results are uneffected.
    
      Because the MOM_parameter_doc files were changing anyway, and because this
    commit is only a diagnostic change, about 6 spelling errors were corrected in
    ePBL parameter descriptions as a part of this commit.
    
      All answers are bitwise identical, but there is a new runtime parameter and
    there may be new diagnostics depending on the choice of a non-default value for
    that new parameter.
    Hallberg-NOAA committed Dec 2, 2024
    Configuration menu
    Copy the full SHA
    92f3032 View commit details
    Browse the repository at this point in the history
  4. +Add and test find_Kd_from_PE_chg

      Added the new internal subroutine find_Kd_from_PE_chg inside of the
    MOM_energetic_PBL module to directly calculate an increment in the diapycnal
    diffusivity from an energy input.  This can be used when ePBL does not convert
    released mean kinetic energy into turbulent kinetic energy (i.e., if
    MKE_TO_TKE_EFFIC = 0.) and is more efficient than the more general iterative
    approach.  To preserve old answers, this new option is only enabled for the
    surface boundary layer when the new runtime parameter DIRECT_EPBL_MIXING_CALC is
    set to true.  This new option can be tested passively by setting
    EPBL_OPTIONS_DIFF to 3 in a run that uses ePBL.  By default all answers are
    bitwise identical, but there is a new runtime parameter in some of the
    MOM_parameter_doc files.
    Hallberg-NOAA committed Dec 2, 2024
    Configuration menu
    Copy the full SHA
    6f2c5fd View commit details
    Browse the repository at this point in the history
  5. +(*)Add ePBL bottom boundary mixing option

      Add the option to do energetically consistent bottom boundary layer mixing
    with the new routine ePBL_BBL_column.  ePBL_BBL_column is closely based on the
    surface-focused ePBL mixing in ePBL_column, but without adding convective
    instability driven mixing or mean-TKE driven mixing to avoid possible
    double-counting.  This new option is enabled by setting the new runtime
    parameter EPBL_BBL_EFFIC to be positive.
    
      If both EPBL_BBL_EFFIC and BBL_EFFIC are set to positive values, there is a
    risk of double-counting, but this case is not being trapped for now.
    
      The changes include the addition of a new mandatory vertvisc_type argument to
    the publicly visible routine energetic_PBL.
    
      When this new ePBL bottom boundary layer mixing option is enabled, there are
    several new diagnostics available that are related to bottom boundary layer
    mixing.  Several new checksum calls were also added with this new option when
    DEBUG = True. The MOM_parameter_doc files are altered by the addition of two new
    runtime parameters, and by the correction of several spelling errors in the
    descriptions of other ePBL parameters.  By default, all answers are bitwise
    identical.
    Hallberg-NOAA committed Dec 2, 2024
    Configuration menu
    Copy the full SHA
    0c17f5f View commit details
    Browse the repository at this point in the history
  6. +Add DECAY_ADJUSTED_BBL_TKE option for ePBL BBL

      Added the ability to modify the bottom boundary layer TKE budget to account
    for an exponential decay of TKE away from the boundary and the fact that when
    the diffusivity is increased at an interface, it causes an increased buoyancy
    flux that varies linearly throughout a well mixed bottom boundary layer and
    through the layer above.  This new capability is enabled by the new runtime
    parameter DECAY_ADJUSTED_BBL_TKE and is implemented via the new internal
    function exp_decay_TKE_adjust.
    
      In addition, this commit adds 9 bottom-boundary layer specific run-time
    parameters that are analogous to parameters that set the properties of the
    surface-driven mixing, and take their defaults from them, but can now be set
    independently for the bottom boundary layer.  The inefficient option to use
    bisection to estimate the bottom boundary layer depth was eliminated, as it
    certain that it is not being used yet in any cases, and it should be deprecated
    for the estimation of the surface boundary layer.
    
      By default, all answers are bitwise identical, but there are up to 10 new
    runtime parameters that will appear in some MOM_parameter_doc files.
    Hallberg-NOAA committed Dec 2, 2024
    Configuration menu
    Copy the full SHA
    80c2fc5 View commit details
    Browse the repository at this point in the history