mom_bkgnd_mixing module reference

Interface to background mixing schemes, including the Bryan and Lewis (1979) which is applied via CVMix.

More…

Data Types

bkgnd_mixing_cs

Control structure including parameters for this module.

Functions/Subroutines

bkgnd_mixing_init()

Initialize the background mixing routine.

calculate_bkgnd_mixing()

Calculates the vertical background diffusivities/viscosities.

cvmix_bkgnd_is_used()

Reads the parameter “USE_CVMix_BACKGROUND” and returns state.

check_bkgnd_scheme()

Sets CSbkgnd_scheme_str to check whether multiple background diffusivity schemes are activated.

bkgnd_mixing_end()

Clear pointers and dealocate memory.

Detailed Description

Interface to background mixing schemes, including the Bryan and Lewis (1979) which is applied via CVMix.

Type Documentation

type mom_bkgnd_mixing/bkgnd_mixing_cs

Control structure including parameters for this module.

Type fields
  • % bryan_lewis_c1 [real] :: The vertical diffusivity values for Bryan-Lewis profile at |z|=D [m2 s-1].

  • % bryan_lewis_c2 [real] :: The amplitude of variation in diffusivity for the Bryan-Lewis diffusivity profile [m2 s-1].

  • % bryan_lewis_c3 [real] :: The inverse length scale for transition region in the Bryan-Lewis diffusivity profile [m-1].

  • % bryan_lewis_c4 [real] :: The depth where diffusivity is Bryan_Lewis_bl1 in the Bryan-Lewis profile [m].

  • % bckgrnd_vdc1 [real] :: Background diffusivity (Ledwell) when horiz_varying_background=.true. [Z2 T-1 ~> m2 s-1].

  • % bckgrnd_vdc_eq [real] :: Equatorial diffusivity (Gregg) when horiz_varying_background=.true. [Z2 T-1 ~> m2 s-1].

  • % bckgrnd_vdc_psim [real] :: Max. PSI induced diffusivity (MacKinnon) when horiz_varying_background=.true. [Z2 T-1 ~> m2 s-1].

  • % bckgrnd_vdc_banda [real] :: Banda Sea diffusivity (Gordon) when horiz_varying_background=.true. [Z2 T-1 ~> m2 s-1].

  • % kd_min [real] :: minimum diapycnal diffusivity [Z2 T-1 ~> m2 s-1]

  • % kd [real] :: interior diapycnal diffusivity [Z2 T-1 ~> m2 s-1]

  • % omega [real] :: The Earth’s rotation rate [T-1 ~> s-1].

  • % n0_2omega [real] :: ratio of the typical Buoyancy frequency to twice the Earth’s rotation period, used with the Henyey scaling from the mixing

  • % prandtl_bkgnd [real] :: Turbulent Prandtl number used to convert vertical background diffusivity into viscosity.

  • % kd_tanh_lat_scale [real] :: A nondimensional scaling for the range of diffusivities with Kd_tanh_lat_fn. Valid values are in the range of -2 to 2; 0.4 reproduces CM2M.

  • % kdml [real] :: mixed layer diapycnal diffusivity [Z2 T-1 ~> m2 s-1] when bulkmixedlayer==.false.

  • % hmix [real] :: mixed layer thickness [Z ~> m] when bulkmixedlayer==.false.

  • % kd_tanh_lat_fn [logical] :: If true, use the tanh dependence of Kd_sfc on latitude, like GFDL CM2.1/CM2M. There is no physical justification for this form, and it can not be used with Henyey_IGW_background.

  • % bryan_lewis_diffusivity [logical] :: If true, background vertical diffusivity uses Bryan-Lewis (1979) like tanh profile.

  • % horiz_varying_background [logical] :: If true, apply vertically uniform, latitude-dependent background diffusivity, as described in Danabasoglu et al., 2012.

  • % henyey_igw_background [logical] :: If true, use a simplified variant of the Henyey et al, JGR (1986) latitudinal scaling for the background diapycnal diffusivity, which gives a marked decrease in the diffusivity near the equator. The simplification here is to assume that the in-situ stratification is the same as the reference stratificaiton.

  • % henyey_igw_background_new [logical] :: same as Henyey_IGW_background but incorporate the effect of stratification on TKE dissipation, e = f/f_0 * acosh(N/f) / acosh(N_0/f_0) * e_0 where e is the TKE dissipation, and N_0 and f_0 are the reference buoyancy frequency and inertial frequencies respectively. e_0 is the reference dissipation at (N_0,f_0). In the previous version, N=N_0. Additionally, the squared inverse relationship between diapycnal diffusivities and stratification is included:

  • % bulkmixedlayer [logical] :: If true, a refined bulk mixed layer scheme is used.

  • % kd_via_kdml_bug [logical] :: If true and KDML /= KD and a number of other higher precedence options are not used, the background diffusivity is set incorrectly using a bug that was introduced in March, 2018.

  • % debug [logical] :: If true, turn on debugging in this module.

  • % diag [type(diag_ctrl),pointer] :: A structure that regulates diagnostic output.

  • % bkgnd_scheme_str [character (len=40)] :: Background scheme identifier.

Function/Subroutine Documentation

subroutine mom_bkgnd_mixing/bkgnd_mixing_init(Time, G, GV, US, param_file, diag, CS)

Initialize the background mixing routine.

Parameters
  • time :: [in] The current time.

  • g :: [in] Grid structure.

  • gv :: [in] Vertical grid structure.

  • us :: [in] A dimensional unit scaling type

  • param_file :: [in] Run-time parameter file handle

  • diag :: [inout] Diagnostics control structure.

  • cs :: This module’s control structure.

Call to

check_bkgnd_scheme mdl mom_error_handler::mom_error

subroutine mom_bkgnd_mixing/calculate_bkgnd_mixing(h, tv, N2_lay, Kd_lay, Kd_int, Kv_bkgnd, j, G, GV, US, CS)

Calculates the vertical background diffusivities/viscosities.

Parameters
  • g :: [in] Grid structure.

  • gv :: [in] Vertical grid structure.

  • h :: [in] Layer thickness [H ~> m or kg m-2].

  • tv :: [in] Thermodynamics structure.

  • n2_lay :: [in] squared buoyancy frequency associated with layers [T-2 ~> s-2]

  • kd_lay :: [out] The background diapycnal diffusivity of each layer [Z2 T-1 ~> m2 s-1].

  • kd_int :: [out] The background diapycnal diffusivity of each interface [Z2 T-1 ~> m2 s-1].

  • kv_bkgnd :: [out] The background vertical viscosity at each interface [Z2 T-1 ~> m2 s-1]

  • j :: [in] Meridional grid index

  • us :: [in] A dimensional unit scaling type

  • cs :: The control structure returned by a previous call to bkgnd_mixing_init.

Call to

mom_intrinsic_functions::invcosh

function mom_bkgnd_mixing/cvmix_bkgnd_is_used(param_file) [logical]

Reads the parameter “USE_CVMix_BACKGROUND” and returns state. This function allows other modules to know whether this parameterization will be used without needing to duplicate the log entry.

Parameters

param_file :: [in] A structure to parse for run-time parameters

Call to

mdl

subroutine mom_bkgnd_mixing/check_bkgnd_scheme(CS, str)

Sets CSbkgnd_scheme_str to check whether multiple background diffusivity schemes are activated. The string is also for error/log messages.

Parameters
  • cs :: Control structure

  • str :: [in] Background scheme identifier deducted from MOM_input parameters

Call to

mom_error_handler::mom_error

Called from

bkgnd_mixing_init

subroutine mom_bkgnd_mixing/bkgnd_mixing_end(CS)

Clear pointers and dealocate memory.

Parameters

cs :: Control structure for this module that will be deallocated in this subroutine

Called from

mom_set_diffusivity::set_diffusivity_end