mom_set_diffusivity module reference

Calculate vertical diffusivity from all mixing processes.

More…

Data Types

set_diffusivity_cs

This control structure contains parameters for MOM_set_diffusivity.

diffusivity_diags

This structure has memory for used in calculating diagnostics of diffusivity.

Functions/Subroutines

set_diffusivity()

find_tke_to_kd()

Convert turbulent kinetic energy to diffusivity.

find_n2()

Calculate Brunt-Vaisala frequency, N^2.

double_diffusion()

This subroutine sets the additional diffusivities of temperature and salinity due to double diffusion, using the same functional form as is used in MOM4.1, and taken from the appendix of Danabasoglu et al.

add_drag_diffusivity()

This routine adds diffusion sustained by flow energy extracted by bottom drag.

add_lotw_bbl_diffusivity()

Calculates a BBL diffusivity use a Prandtl number 1 diffusivity with a law of the wall turbulent viscosity, up to a BBL height where the energy used for mixing has consumed the mechanical TKE input.

add_mlrad_diffusivity()

This routine adds effects of mixed layer radiation to the layer diffusivities.

set_bbl_tke()

This subroutine calculates several properties related to bottom boundary layer turbulence.

set_density_ratios()

set_diffusivity_init()

set_diffusivity_end()

Clear pointers and deallocate memory.

Detailed Description

Calculate vertical diffusivity from all mixing processes.

Type Documentation

type  mom_set_diffusivity/set_diffusivity_cs

This control structure contains parameters for MOM_set_diffusivity.

Type fields:
  • % id_maxtke :: integer Diagnostic IDs.

  • % id_tke_to_kd :: integer Diagnostic IDs.

  • % id_kd_user :: integer Diagnostic IDs.

  • % id_kd_layer :: integer Diagnostic IDs.

  • % id_kd_bbl :: integer Diagnostic IDs.

  • % id_n2 :: integer Diagnostic IDs.

  • % id_kd_work :: integer Diagnostic IDs.

  • % id_kt_extra :: integer Diagnostic IDs.

  • % id_ks_extra :: integer Diagnostic IDs.

  • % id_r_rho :: integer Diagnostic IDs.

  • % id_kd_bkgnd :: integer Diagnostic IDs.

  • % id_kv_bkgnd :: integer Diagnostic IDs.

  • % id_kd_leak :: integer Diagnostic IDs.

  • % id_kd_quad :: integer Diagnostic IDs.

  • % id_kd_itidal :: integer Diagnostic IDs.

  • % id_kd_froude :: integer Diagnostic IDs.

  • % id_kd_slope :: integer Diagnostic IDs.

  • % id_prof_leak :: integer Diagnostic IDs.

  • % id_prof_quad :: integer Diagnostic IDs.

  • % id_prof_itidal :: integer Diagnostic IDs.

  • % id_prof_froude :: integer Diagnostic IDs.

  • % id_prof_slope :: integer Diagnostic IDs.

  • % id_bbl_thick :: integer Diagnostic IDs.

  • % id_kbbl :: integer Diagnostic IDs.

  • % id_kd_work_added :: integer Diagnostic IDs.

  • % initialized :: logical True if this control structure has been initialized.

  • % debug :: logical If true, write verbose checksums for debugging.

  • % bulkmixedlayer :: logical If true, a refined bulk mixed layer is used with GVnk_rho_varies variable density mixed & buffer layers.

  • % fluxri_max :: real The flux Richardson number where the stratification is large enough that N2 > omega2 [nondim]. The full expression for the Flux Richardson number is usually FLUX_RI_MAX*N2/(N2+OMEGA2). The default is 0.2.

  • % bottomdraglaw :: logical If true, the bottom stress is calculated with a drag law c_drag*|u|*u.

  • % bbl_mixing_as_max :: logical If true, take the maximum of the diffusivity from the BBL mixing and the other diffusivities. Otherwise, diffusivities from the BBL_mixing is added.

  • % use_lotw_bbl_diffusivity :: logical If true, use simpler/less precise, BBL diffusivity.

  • % lotw_bbl_use_omega :: logical If true, use simpler/less precise, BBL diffusivity.

  • % von_karm :: real The von Karman constant as used in the BBL diffusivity calculation [nondim]. See (

  • % bbl_effic :: real Efficiency with which the energy extracted by bottom drag drives BBL diffusion in the original BBL scheme, times conversion factors between the natural units of mean kinetic energy and those those used for TKE [Z2 L-2 ~> nondim].

  • % epbl_bbl_effic :: real efficiency with which the energy extracted by bottom drag drives BBL diffusion in the ePBL BBL scheme [nondim]

  • % epbl_bbl_mstar :: logical logical if the bottom boundary layer uses an mstar x ustar^3 formulation needed here to know whether or not to populate the bottom ustar

  • % cdrag :: real quadratic drag coefficient [nondim]

  • % dz_bbl_avg_min :: real A minimal distance over which to average to determine the average bottom boundary layer density [Z ~> m].

  • % imax_decay :: real Inverse of a maximum decay scale for bottom-drag driven turbulence [H-1 ~> m-1 or m2 kg-1].

  • % kv :: real The interior vertical viscosity [H Z T-1 ~> m2 s-1 or Pa s].

  • % kd :: real interior diapycnal diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kd_min :: real minimum diapycnal diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kd_max :: real maximum increment for diapycnal diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1] Set to a negative value to have no limit.

  • % kd_add :: real uniform diffusivity added everywhere without filtering or scaling [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kd_smooth :: real Vertical diffusivity used to interpolate more sensible values of T & S into thin layers [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • % diag :: type(diag_ctrl), pointer structure to regulate diagnostic output timing

  • % limit_dissipation :: logical If enabled, dissipation is limited to be larger than the following:

  • % dissip_min :: real Minimum dissipation [R Z2 T-3 ~> W m-3].

  • % dissip_n0 :: real Coefficient a in minimum dissipation = a+b*N [R Z2 T-3 ~> W m-3].

  • % dissip_n1 :: real Coefficient b in minimum dissipation = a+b*N [R Z2 T-2 ~> J m-3].

  • % dissip_n2 :: real Coefficient c in minimum dissipation = c*N2 [R Z2 T-1 ~> J s m-3].

  • % dissip_kd_min :: real Minimum Kd [H Z T-1 ~> m2 s-1 or kg m-1 s-1], with dissipation Rho0*Kd_min*N^2.

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

  • % ml_radiation :: logical allow a fraction of TKE available from wind work to penetrate below mixed layer base with a vertical decay scale determined by the minimum of (1) The depth of the mixed layer, or (2) An Ekman length scale. Energy available to drive mixing below the mixed layer is given by E = ML_RAD_COEFF*MSTAR*USTAR**3. Optionally, if ML_rad_TKE_decay is true, this is further reduced by a factor of exp(-h_ML*Idecay_len_TkE), where Idecay_len_TKE is calculated the same way as in the mixed layer code. The diapycnal diffusivity is KD(k) = E/(N2(k)+OMEGA2), where N2 is the squared buoyancy frequency [T-2 ~> s-2] and OMEGA2 is the rotation rate of the earth squared.

  • % ml_rad_kd_max :: real Maximum diapycnal diffusivity due to turbulence radiated from the base of the mixed layer [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • % ml_rad_efold_coeff :: real Coefficient to scale penetration depth [nondim].

  • % ml_rad_coeff :: real Coefficient which scales MSTAR*USTAR^3 to obtain energy available for mixing below mixed layer base [nondim].

  • % ml_rad_bug :: logical If true use code with a bug that reduces the energy available in the transition layer by a factor of the inverse of the energy deposition lenthscale (in m).

  • % ml_rad_tke_decay :: logical If true, apply same exponential decay to ML_rad as applied to the other surface sources of TKE in the mixed layer code.

  • % ustar_min :: real A minimum value of ustar to avoid numerical problems [Z T-1 ~> m s-1]. If the value is small enough, this parameter should not affect the solution.

  • % tke_decay :: real ratio of natural Ekman depth to TKE decay scale [nondim]

  • % mstar :: real ratio of friction velocity cubed to TKE input to the mixed layer [nondim]

  • % ml_use_omega :: logical If true, use absolute rotation rate instead of the vertical component of rotation when setting the decay scale for mixed layer turbulence.

  • % ml_omega_frac :: real When setting the decay scale for turbulence, use this fraction [nondim] of the absolute rotation rate blended with the local value of f, as f^2 ~= (1-of)*f^2 + of*4*omega^2.

  • % user_change_diff :: logical If true, call user-defined code to change diffusivity.

  • % usekappashear :: logical If true, use the kappa_shear module to find the shear-driven diapycnal diffusivity.

  • % vertex_shear :: logical If true, do the calculations of the shear-driven mixing at the cell vertices (i.e., the vorticity points).

  • % use_cvmix_shear :: logical If true, use one of the CVMix modules to find shear-driven diapycnal diffusivity.

  • % double_diffusion :: logical If true, enable double-diffusive mixing using an old method.

  • % use_cvmix_ddiff :: logical If true, enable double-diffusive mixing via CVMix.

  • % use_tidal_mixing :: logical If true, activate tidal mixing diffusivity.

  • % use_int_tides :: logical If true, use internal tides ray tracing.

  • % simple_tke_to_kd :: logical If true, uses a simple estimate of Kd/TKE that does not rely on a layer-formulation.

  • % max_rrho_salt_fingers :: real max density ratio for salt fingering [nondim]

  • % max_salt_diff_salt_fingers :: real max salt diffusivity for salt fingers [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kv_molecular :: real Molecular viscosity for double diffusive convection [H Z T-1 ~> m2 s-1 or Pa s].

  • % answer_date :: integer The vintage of the order of arithmetic and expressions in this module’s calculations. Values below 20190101 recover the answers from the end of 2018, while higher values use updated and more robust forms of the same expressions. Values above 20240630 use more accurate expressions for cases where USE_LOTW_BBL_DIFFUSIVITY is true. Values above 20250301 use less confusing expressions to set the bottom-drag generated diffusivity when USE_LOTW_BBL_DIFFUSIVITY is false.

  • % lotw_bbl_answer_date :: integer The vintage of the order of arithmetic and expressions in the LOTW_BBL calculations. Values below 20240630 recover the original answers, while higher values use more accurate expressions. This only applies when USE_LOTW_BBL_DIFFUSIVITY is true.

  • % drag_diff_answer_date :: integer The vintage of the order of arithmetic in the drag diffusivity calculations. Values above 20250301 use less confusing expressions to set the bottom-drag generated diffusivity when USE_LOTW_BBL_DIFFUSIVITY is false.

  • % inputdir :: character(len=200) The directory in which input files are found.

  • % user_change_diff_csp :: type(user_change_diff_cs), pointer Control structure for a child module.

  • % kappashear_csp :: type(kappa_shear_cs), pointer Control structure for a child module.

  • % cvmix_shear_csp :: type(cvmix_shear_cs), pointer Control structure for a child module.

  • % cvmix_ddiff_csp :: type(cvmix_ddiff_cs), pointer Control structure for a child module.

  • % bkgnd_mixing_csp :: type(bkgnd_mixing_cs), pointer Control structure for a child module.

  • % int_tide_csp :: type(int_tide_cs), pointer Control structure for a child module.

  • % tidal_mixing :: type(tidal_mixing_cs) Control structure for a child module.

[source]

type  mom_set_diffusivity/diffusivity_diags

This structure has memory for used in calculating diagnostics of diffusivity.

Type fields:
  • % n2_3d :: real, dimension(:,:,:), pointer, private squared buoyancy frequency at interfaces [T-2 ~> s-2]

  • % kd_user :: real, dimension(:,:,:), pointer, private user-added diffusivity at interfaces [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kd_bbl :: real, dimension(:,:,:), pointer, private BBL diffusivity at interfaces [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • % kd_work :: real, dimension(:,:,:), pointer, private layer integrated work by diapycnal mixing [R Z3 T-3 ~> W m-2]

  • % kd_work_added :: real, dimension(:,:,:), pointer, private layer integrated work by added mixing [R Z3 T-3 ~> W m-2]

  • % maxtke :: real, dimension(:,:,:), pointer, private energy required to entrain to h_max [H Z2 T-3 ~> m3 s-3 or W m-2]

  • % kd_bkgnd :: real, dimension(:,:,:), pointer, private Background diffusivity at interfaces [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • % kv_bkgnd :: real, dimension(:,:,:), pointer, private Viscosity from background diffusivity at interfaces [H Z T-1 ~> m2 s-1 or Pa s].

  • % kt_extra :: real, dimension(:,:,:), pointer, private Double diffusion diffusivity for temperature [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • % ks_extra :: real, dimension(:,:,:), pointer, private Double diffusion diffusivity for salinity [H Z T-1 ~> m2 s-1 or kg m-1 s-1].

  • % drho_rat :: real, dimension(:,:,:), pointer, private The density difference ratio used in double diffusion [nondim].

  • % kd_leak :: real, dimension(:,:,:), pointer, private internal tides leakage diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kd_quad :: real, dimension(:,:,:), pointer, private internal tides bottom drag diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kd_itidal :: real, dimension(:,:,:), pointer, private internal tides wave drag diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kd_froude :: real, dimension(:,:,:), pointer, private internal tides high Froude diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % kd_slope :: real, dimension(:,:,:), pointer, private internal tides critical slopes diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • % prof_leak :: real, dimension(:,:,:), pointer, private vertical profile for leakage [H-1 ~> m-1 or m2 kg-1]

  • % prof_quad :: real, dimension(:,:,:), pointer, private vertical profile for bottom drag [H-1 ~> m-1 or m2 kg-1]

  • % prof_itidal :: real, dimension(:,:,:), pointer, private vertical profile for wave drag [H-1 ~> m-1 or m2 kg-1]

  • % prof_froude :: real, dimension(:,:,:), pointer, private vertical profile for Froude drag [H-1 ~> m-1 or m2 kg-1]

  • % prof_slope :: real, dimension(:,:,:), pointer, private vertical profile for critical slopes [H-1 ~> m-1 or m2 kg-1]

  • % bbl_thick :: real, dimension(:,:), pointer, private bottom boundary layer thickness [H ~> m or kg m-2]

  • % kbbl :: real, dimension(:,:), pointer, private top of bottom boundary layer

  • % tke_to_kd :: real, dimension(:,:,:), pointer, private conversion rate (~1.0 / (G_Earth + dRho_lay)) between TKE dissipated within a layer and Kd in that layer [T2 Z-1 ~> s2 m-1]

[source]

Function/Subroutine Documentation

subroutine mom_set_diffusivity/set_diffusivity(u, v, h, u_h, v_h, tv, fluxes, optics, visc, dt, Kd_int, G, GV, US, CS, VBF, Kd_lay, Kd_extra_T, Kd_extra_S)
Parameters:
  • g :: [in] The ocean’s grid structure.

  • gv :: [in] The ocean’s vertical grid structure.

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

  • u :: u [in] The zonal velocity [L T-1 ~> m s-1].

  • v :: v [in] The meridional velocity [L T-1 ~> m s-1].

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

  • u_h :: u_h [in] Zonal velocity interpolated to h points [L T-1 ~> m s-1].

  • v_h :: v_h [in] Meridional velocity interpolated to h points [L T-1 ~> m s-1].

  • tv :: tv [inout] Structure with pointers to thermodynamic fields. Out is for tvTempxPmE.

  • fluxes :: fluxes [in] A structure of thermodynamic surface fluxes

  • optics :: optics A structure describing the optical properties of the ocean.

  • visc :: visc [inout] Structure containing vertical viscosities, bottom boundary layer properties and related fields.

  • dt :: dt [in] Time increment [T ~> s].

  • kd_int :: [out] Diapycnal diffusivity at each interface

  • cs :: Module control structure.

  • vbf :: A diagnostic control structure for vertical buoyancy fluxes

  • kd_lay :: [out] Diapycnal diffusivity of each layer

  • kd_extra_t :: [out] The extra diffusivity at interfaces of

  • kd_extra_s :: [out] The extra diffusivity at interfaces of

Call to:

add_drag_diffusivity add_lotw_bbl_diffusivity add_mlrad_diffusivity mom_kappa_shear::calc_kappa_shear_vertex mom_error_handler::calltree_enter mom_error_handler::calltree_leave mom_error_handler::calltree_waypoint mom_cvmix_ddiff::compute_ddiff_coeffs double_diffusion find_n2 find_tke_to_kd mom_full_convection::full_convection mom_internal_tides::get_lowmode_diffusivity id_clock_cvmix_ddiff id_clock_kappashear mom_isopycnal_slopes::vert_fill_ts

[source]

subroutine mom_set_diffusivity/find_tke_to_kd(h, tv, dRho_int, N2_lay, j, dt, G, GV, US, CS, TKE_to_Kd, maxTKE, kb)

Convert turbulent kinetic energy to diffusivity.

Parameters:
  • g :: [in] The ocean’s grid structure

  • gv :: [in] The ocean’s vertical grid structure

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

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

  • tv :: tv [in] Structure containing pointers to any available thermodynamic fields.

  • drho_int :: [in] Change in locally referenced potential density across each interface [R ~> kg m-3].

  • n2_lay :: [in] The squared buoyancy frequency of the layers [T-2 ~> s-2].

  • j :: j [in] j-index of row to work on

  • dt :: dt [in] Time increment [T ~> s].

  • cs :: Diffusivity control structure

  • tke_to_kd :: [out] The conversion rate between the TKE dissipated within a layer and the diapycnal diffusivity within that layer, usually (~Rho_0 / (G_Earth * dRho_lay)) [T2 Z-1 ~> s2 m-1]

  • maxtke :: [out] The energy required to for a layer to entrain to its maximum realizable thickness [H Z2 T-3 ~> m3 s-3 or W m-2]

  • kb :: kb [out] Index of lightest layer denser than the buffer layer, or -1 without a bulk mixed layer.

Call to:

mom_eos::eos_domain set_density_ratios

Called from:

set_diffusivity

[source]

subroutine mom_set_diffusivity/find_n2(h, tv, T_f, S_f, fluxes, j, G, GV, US, CS, dRho_int, N2_lay, N2_int, N2_bot, Rho_bot, h_bot, k_bot)

Calculate Brunt-Vaisala frequency, N^2.

Parameters:
  • g :: [in] The ocean’s grid structure

  • gv :: [in] The ocean’s vertical grid structure

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

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

  • tv :: tv [in] Structure containing pointers to any available thermodynamic fields.

  • t_f :: [in] layer temperature with the values in massless layers

  • s_f :: [in] Layer salinities with values in massless

  • fluxes :: fluxes [in] A structure of thermodynamic surface fluxes

  • j :: j [in] j-index of row to work on

  • cs :: Diffusivity control structure

  • drho_int :: [out] Change in locally referenced potential density

  • n2_int :: [out] The squared buoyancy frequency at the interfaces [T-2 ~> s-2].

  • n2_lay :: [out] The squared buoyancy frequency of the layers [T-2 ~> s-2].

  • n2_bot :: [out] The near-bottom squared buoyancy frequency [T-2 ~> s-2].

  • rho_bot :: [out] Near-bottom density [R ~> kg m-3].

  • h_bot :: h_bot [out] Bottom boundary layer thickness [H ~> m or kg m-2].

  • k_bot :: k_bot [out] Bottom boundary layer top layer index.

Call to:

mom_eos::eos_domain mom_interface_heights::find_rho_bottom

Called from:

set_diffusivity

[source]

subroutine mom_set_diffusivity/double_diffusion(tv, h, T_f, S_f, j, G, GV, US, CS, Kd_T_dd, Kd_S_dd)

This subroutine sets the additional diffusivities of temperature and salinity due to double diffusion, using the same functional form as is used in MOM4.1, and taken from the appendix of Danabasoglu et al. (2006), which updates what was in Large et al. (1994). All the coefficients here should probably be made run-time variables rather than hard-coded constants.

Todo

Find reference for NCAR tech note above.

Parameters:
  • g :: [in] The ocean’s grid structure.

  • gv :: [in] The ocean’s vertical grid structure.

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

  • tv :: tv [in] Structure containing pointers to any available thermodynamic fields; absent fields have NULL ptrs.

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

  • t_f :: [in] layer temperatures with the values in massless layers

  • s_f :: [in] Layer salinities with values in massless

  • j :: j [in] Meridional index upon which to work.

  • cs :: Module control structure.

  • kd_t_dd :: [out] Interface double diffusion diapycnal

  • kd_s_dd :: [out] Interface double diffusion diapycnal

Call to:

mom_eos::eos_domain

Called from:

set_diffusivity

[source]

subroutine mom_set_diffusivity/add_drag_diffusivity(h, u, v, tv, fluxes, visc, j, TKE_to_Kd, maxTKE, kb, rho_bot, G, GV, US, CS, Kd_lay, Kd_int, Kd_BBL)

This routine adds diffusion sustained by flow energy extracted by bottom drag.

Parameters:
  • g :: [in] The ocean’s grid structure

  • gv :: [in] The ocean’s vertical grid structure

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

  • u :: u [in] The zonal velocity [L T-1 ~> m s-1]

  • v :: v [in] The meridional velocity [L T-1 ~> m s-1]

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

  • tv :: tv [in] Structure containing pointers to any available thermodynamic fields.

  • fluxes :: fluxes [in] A structure of thermodynamic surface fluxes

  • visc :: visc [in] Structure containing vertical viscosities, bottom boundary layer properties and related fields

  • j :: j [in] j-index of row to work on

  • tke_to_kd :: [in] The conversion rate between the TKE TKE dissipated within a layer and the diapycnal diffusivity within that layer, usually (~Rho_0 / (G_Earth * dRho_lay)) [T2 Z-1 ~> s2 m-1]

  • maxtke :: [in] The energy required to for a layer to entrain to its maximum-realizable thickness [H Z2 T-3 ~> m3 s-3 or W m-2]

  • kb :: kb [in] Index of lightest layer denser than the buffer layer, or -1 without a bulk mixed layer

  • rho_bot :: rho_bot [in] In situ density averaged over a near-bottom region [R ~> kg m-3]

  • cs :: Diffusivity control structure

  • kd_lay :: [inout] The diapycnal diffusivity in layers, [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • kd_int :: [inout] The diapycnal diffusivity at interfaces, [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • kd_bbl :: Interface BBL diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

Called from:

set_diffusivity

[source]

subroutine mom_set_diffusivity/add_lotw_bbl_diffusivity(h, u, v, tv, fluxes, visc, j, N2_int, Rho_bot, Kd_int, G, GV, US, CS, Kd_BBL, Kd_lay)

Calculates a BBL diffusivity use a Prandtl number 1 diffusivity with a law of the wall turbulent viscosity, up to a BBL height where the energy used for mixing has consumed the mechanical TKE input.

Parameters:
  • g :: [in] Grid structure

  • gv :: [in] Vertical grid structure

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

  • u :: u [in] u component of flow [L T-1 ~> m s-1]

  • v :: v [in] v component of flow [L T-1 ~> m s-1]

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

  • tv :: tv [in] Structure containing pointers to any available thermodynamic fields.

  • fluxes :: fluxes [in] Surface fluxes structure

  • visc :: visc [in] Structure containing vertical viscosities, bottom boundary layer properties and related fields.

  • j :: j [in] j-index of row to work on

  • n2_int :: [in] Square of Brunt-Vaisala at interfaces [T-2 ~> s-2]

  • rho_bot :: [in] In situ density averaged over a near-bottom region [R ~> kg m-3]

  • kd_int :: [inout] Interface net diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • cs :: Diffusivity control structure

  • kd_bbl :: Interface BBL diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • kd_lay :: [inout] Layer net diffusivity [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

Called from:

set_diffusivity

[source]

subroutine mom_set_diffusivity/add_mlrad_diffusivity(dz, fluxes, tv, j, Kd_int, G, GV, US, CS, TKE_to_Kd, Kd_lay)

This routine adds effects of mixed layer radiation to the layer diffusivities.

Parameters:
  • g :: [in] The ocean’s grid structure

  • gv :: [in] The ocean’s vertical grid structure

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

  • dz :: dz [in] Height change across layers [Z ~> m]

  • fluxes :: fluxes [in] Surface fluxes structure

  • tv :: tv [in] Structure containing pointers to any available thermodynamic fields.

  • j :: j [in] The j-index to work on

  • kd_int :: [inout] The diapycnal diffusivity at interfaces [H Z T-1 ~> m2 s-1 or kg m-1 s-1]

  • cs :: Diffusivity control structure

  • tke_to_kd :: [in] The conversion rate between the TKE TKE dissipated within a layer and the diapycnal diffusivity witin that layer, usually (~Rho_0 / (G_Earth * dRho_lay)) [T2 Z-1 ~> s2 m-1]

  • kd_lay :: [inout] The diapycnal diffusivity in layers

Called from:

set_diffusivity

[source]

subroutine mom_set_diffusivity/set_bbl_tke(u, v, h, tv, fluxes, visc, G, GV, US, CS, OBC)

This subroutine calculates several properties related to bottom boundary layer turbulence.

Parameters:
  • g :: [in] The ocean’s grid structure

  • gv :: [in] The ocean’s vertical grid structure

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

  • u :: u [in] The zonal velocity [L T-1 ~> m s-1]

  • v :: v [in] The meridional velocity [L T-1 ~> m s-1]

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

  • tv :: tv [in] Structure with pointers to thermodynamic fields

  • fluxes :: fluxes [in] A structure of thermodynamic surface fluxes

  • visc :: visc [inout] Structure containing vertical viscosities, bottom boundary layer properties and related fields.

  • cs :: Diffusivity control structure

  • obc :: Open boundaries control structure.

[source]

subroutine mom_set_diffusivity/set_density_ratios(h, tv, kb, G, GV, US, CS, j, ds_dsp1, rho_0)
Parameters:
  • g :: [in] The ocean’s grid structure.

  • gv :: [in] The ocean’s vertical grid structure.

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

  • tv :: tv [in] Structure containing pointers to any available thermodynamic fields; absent fields have NULL ptrs.

  • kb :: kb [in] Index of lightest layer denser than the buffer layer, or -1 without a bulk mixed layer.

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

  • cs :: Control structure returned by previous call to diabatic_entrain_init.

  • j :: j [in] Meridional index upon which to work.

  • ds_dsp1 :: ds_dsp1 [out] Coordinate variable (sigma-2) difference across an interface divided by the difference across the interface below it [nondim]

  • rho_0 :: rho_0 [in] Layer potential densities relative to

Call to:

mom_eos::eos_domain

Called from:

find_tke_to_kd

[source]

subroutine mom_set_diffusivity/set_diffusivity_init(Time, G, GV, US, param_file, diag, CS, int_tide_CSp, halo_TS, double_diffuse, physical_OBL_scheme)
Parameters:
  • time :: [in] The current model time

  • g :: [inout] The ocean’s grid structure.

  • gv :: [in] The ocean’s vertical grid structure.

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

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

  • diag :: diag [inout] A structure used to regulate diagnostic output.

  • cs :: pointer set to point to the module control structure.

  • int_tide_csp :: Internal tide control structure

  • halo_ts :: [out] The halo size of tracer points that must be valid for the calculations in set_diffusivity.

  • double_diffuse :: double_diffuse [out] This indicates whether some version of double diffusion is being used.

  • physical_obl_scheme :: [in] If true, a physically based parameterization (like KPP or ePBL or a bulk mixed layer) is used outside of set_diffusivity to specify the mixing that occurs in the ocean’s surface boundary layer.

Call to:

id_clock_cvmix_ddiff id_clock_kappashear mom_kappa_shear::kappa_shear_at_vertex mom_diag_mediator::register_diag_field mom_tidal_mixing::tidal_mixing_init

[source]

subroutine mom_set_diffusivity/set_diffusivity_end(CS)

Clear pointers and deallocate memory.

Parameters:

cs :: [inout] Control structure for this module

Call to:

mom_bkgnd_mixing::bkgnd_mixing_end mom_cvmix_shear::cvmix_shear_end mom_tidal_mixing::tidal_mixing_end user_change_diffusivity::user_change_diff_end

[source]

[source]