Skip to content

Commit

Permalink
+*Non-Boussinesq bulk mixed layer calculations
Browse files Browse the repository at this point in the history
  This commit includes a series of distinct changes that enable the use of the
bulk mixed layer code in non-Boussinesq mode, including an option to do the
non-Boussinesq energetic calculations even when the model itself is in
Boussinesq or semi-Boussinesq mode.  When in fully non-Boussinesq mode, there is
no longer any dependence on the Boussinesq reference density.

  Rescaled the units of turbulent kinetic energy in the bulk mixed layer code to
[H L2 T-2 ~> m3 s-2 or J m-2] to reduce the influence of the Boussinesq
reference density in non-Boussinesq configurations, with similar changes to the
internal units of diagnostics and energy sources.  Also revised how Hmix_min is
set in bulkmixedlayer_init to avoid any dependency on the Boussinesq reference
density.

  Add a U_star argument to find_starting_TKE and use find_ustar to set it. In
some places a thickness-based definition of U_star is used. Also added logic to
the code setting the starting TKE and k_Ustar so that they supports a greater
range of valid combinations of available input variables.

  Added the option of using non-Boussinesq energetic calculations in the bulk
mixed layer code, which avoids any dependence on the Boussinesq reference
density, but do the calculations with the approximation that specific volume is
conserved during mixing, thereby ignoring certain weak thermobaric effects.  The
use of this new option is controlled by the new runtime parameter
BML_NONBOUSSINESQ, which is false by default except in fully non-Boussinesq
mode.  All of the new code is wrapped in logical branches that are selected by
the new logical variable CS%nonBous_energetics in the bulk mixed layer control
structure.  This option changes which equation of state routines are called by
the bulk mixed layer module.

  When in non-Boussinesq mode, use forces%tau_mag and tv%SpV_avg instead of
forces%ustar and GV%Rho0 to determine the surface TKE flux.

  Use SpV_avg to rescale opacity in non-Boussinesq mode via the use of an
optional argument to extract_optics_slice

  Use a call to average_specific_vol to translate the mass of the mixed layer
into the mixed layer thickness.

 As a part of these changes, there is extensive but systematic revision to the
code.  Within the bulkmixedlayer_CS type the units of 10 elements (mostly
diagnostics) are changed, and there is one new logical element. There are 17 new
arguments to internal subroutines in the bulk mixed layer module, while the
units of another 11 are changed. There are 35 new or renamed internal variables,
while the units of another 28 internal variables are changed. A total of 23
thickness conversion factors were eliminated, and the remaining references to
the Boussinesq reference density are only used in Boussinesq mode. Apart from
the new runtime parameter, the external interfaces are unchanged.

  By default, answers are bitwise identical for Boussinesq or semi-Boussinesq
configurations, but there is a new entry (BML_NONBOUSINESQ) in some
MOM_parameter_doc files, and answers do change in non-Boussinesq mode and become
independent of the value of RHO_0.
  • Loading branch information
Hallberg-NOAA authored and marshallward committed Sep 25, 2023
1 parent 2337404 commit 2f1bdc0
Showing 1 changed file with 958 additions and 381 deletions.
Loading

0 comments on commit 2f1bdc0

Please sign in to comment.