mom_tidal_mixing module reference
Interface to vertical tidal mixing schemes including CVMix tidal mixing.
Data Types
Containers for tidal mixing diagnostics. |
|
Control structure with parameters for the tidal mixing module. |
Functions/Subroutines
Initializes internal tidal dissipation scheme for diapycnal mixing. |
|
Depending on whether or not CVMix is active, calls the associated subroutine to compute internal tidal dissipation and to add the effect of internal-tide-driven mixing to the layer or interface diffusivities. |
|
Calls the CVMix routines to compute tidal dissipation and to add the effect of internal-tide-driven mixing to the interface diffusivities. |
|
This subroutine adds the effect of internal-tide-driven mixing to the layer diffusivities. |
|
Sets up diagnostics arrays for tidal mixing. |
|
This subroutine offers up diagnostics of the tidal mixing. |
|
This subroutine returns a zonal slice of the topographic roughness amplitudes. |
|
This subroutine read tidal energy inputs from a file. |
|
This subroutine reads tidal input energy from a file by constituent. |
|
Deallocate fields. |
Detailed Description
Interface to vertical tidal mixing schemes including CVMix tidal mixing.
Type Documentation
- type mom_tidal_mixing/tidal_mixing_diags
Containers for tidal mixing diagnostics.
- Type fields:
% kd_itidal ::
real, dimension(:,:,:), allocatableinternal tide diffusivity at interfaces [H Z T-1 ~> m2 s-1 or kg m-1 s-1]% fl_itidal ::
real, dimension(:,:,:), allocatablevertical flux of tidal turbulent dissipation [H Z2 T-3 ~> m3 s-3 or W m-2]% kd_niku ::
real, dimension(:,:,:), allocatablelee-wave diffusivity at interfaces [H Z T-1 ~> m2 s-1 or kg m-1 s-1]% kd_niku_work ::
real, dimension(:,:,:), allocatablelayer integrated work by lee-wave driven mixing [R Z3 T-3 ~> W m-2]% kd_itidal_work ::
real, dimension(:,:,:), allocatablelayer integrated work by int tide driven mixing [R Z3 T-3 ~> W m-2]% kd_lowmode_work ::
real, dimension(:,:,:), allocatablelayer integrated work by low mode driven mixing [R Z3 T-3 ~> W m-2]% n2_int ::
real, dimension(:,:,:), allocatableBuoyancy frequency squared at interfaces [T-2 ~> s-2].% vert_dep_3d ::
real, dimension(:,:,:), allocatableThe 3-d mixing energy deposition vertical fraction [nondim]?% schmittner_coeff_3d ::
real, dimension(:,:,:), allocatableThe coefficient in the Schmittner et al mixing scheme [nondim].% tidal_qe_md ::
real, dimension(:,:,:), allocatableInput tidal energy dissipated locally, interpolated to model vertical coordinate [R Z3 T-3 ~> W m-2].% kd_lowmode ::
real, dimension(:,:,:), allocatableinternal tide diffusivity at interfaces due to propagating low modes [H Z T-1 ~> m2 s-1 or kg m-1 s-1]% fl_lowmode ::
real, dimension(:,:,:), allocatablevertical flux of tidal turbulent dissipation due to propagating low modes [H Z2 T-3 ~> m3 s-3 or W m-2]% tke_itidal_used ::
real, dimension(:,:), allocatableinternal tide TKE input at ocean bottom [R Z3 T-3 ~> W m-2]% n2_bot ::
real, dimension(:,:), allocatablebottom squared buoyancy frequency [T-2 ~> s-2]% n2_meanz ::
real, dimension(:,:), allocatablevertically averaged buoyancy frequency [T-2 ~> s-2]% polzin_decay_scale_scaled ::
real, dimension(:,:), allocatableVertical scale of decay for tidal dissipation [Z ~> m].% polzin_decay_scale ::
real, dimension(:,:), allocatableVertical decay scale for tidal dissipation with Polzin [Z ~> m].% simmons_coeff_2d ::
real, dimension(:,:), allocatableThe Simmons et al mixing coefficient [nondim].
- type mom_tidal_mixing/tidal_mixing_cs
Control structure with parameters for the tidal mixing module.
- Type fields:
% id_tke_itidal ::
integerDiagnostic identifiers.% id_tke_leewave ::
integerDiagnostic identifiers.% id_kd_itidal ::
integerDiagnostic identifiers.% id_kd_niku ::
integerDiagnostic identifiers.% id_kd_lowmode ::
integerDiagnostic identifiers.% id_kd_itidal_work ::
integerDiagnostic identifiers.% id_kd_niku_work ::
integerDiagnostic identifiers.% id_kd_lowmode_work ::
integerDiagnostic identifiers.% id_nb ::
integerDiagnostic identifiers.% id_n2_bot ::
integerDiagnostic identifiers.% id_n2_meanz ::
integerDiagnostic identifiers.% id_fl_itidal ::
integerDiagnostic identifiers.% id_fl_lowmode ::
integerDiagnostic identifiers.% id_polzin_decay_scale ::
integerDiagnostic identifiers.% id_polzin_decay_scale_scaled ::
integerDiagnostic identifiers.% id_n2_int ::
integerDiagnostic identifiers.% id_simmons_coeff ::
integerDiagnostic identifiers.% id_schmittner_coeff ::
integerDiagnostic identifiers.% id_tidal_qe_md ::
integerDiagnostic identifiers.% id_vert_dep ::
integerDiagnostic identifiers.% debug ::
logicalIf true, do more extensive debugging checks. This is hard-coded.% int_tide_dissipation ::
logicalInternal tide conversion (from barotropic) with the schemes of St Laurent et al (2002) & Simmons et al (2004)% int_tide_profile ::
integerA coded integer indicating the vertical profile for dissipation of the internal waves. Schemes that are currently encoded are St Laurent et al (2002) and Polzin (2009).% lee_wave_dissipation ::
logicalEnable lee-wave driven mixing, following Nikurashin (2010), with a vertical energy deposition profile specified by Lee_wave_profile to be St Laurent et al (2002) or Simmons et al (2004) scheme.% lee_wave_profile ::
integerA coded integer indicating the vertical profile for dissipation of the lee waves. Schemes that are currently encoded are St Laurent et al (2002) and Polzin (2009).% int_tide_decay_scale ::
realdecay scale for internal wave TKE [Z ~> m]% mu_itides ::
realefficiency for conversion of dissipation to potential energy [nondim]% gamma_itides ::
realfraction of local dissipation [nondim]% gamma_lee ::
realfraction of local dissipation for lee waves (Nikurashin’s energy input) [nondim]% decay_scale_factor_lee ::
realScaling factor for the decay scale of lee wave energy dissipation [nondim].% min_zbot_itides ::
realminimum depth for internal tide conversion [Z ~> m].% lowmode_itidal_dissipation ::
logicalIf true, consider mixing due to breaking low modes that have been remotely generated using an internal tidal dissipation scheme to specify the vertical profile of the energy input to drive diapycnal mixing, along the lines of St. Laurent et al. (2002) and Simmons et al. (2004).% nu_polzin ::
realThe non-dimensional constant used in Polzin form of the vertical scale of decay of tidal dissipation [nondim].% nbotref_polzin ::
realReference value for the buoyancy frequency at the ocean bottom used in Polzin formulation of the vertical scale of decay of tidal dissipation [T-1 ~> s-1].% polzin_decay_scale_factor ::
realScaling factor for the decay length scale of the tidal dissipation profile in Polzin [nondim].% polzin_decay_scale_max_factor ::
realThe decay length scale of tidal dissipation profile in Polzin formulation should not exceed Polzin_decay_scale_max_factor * depth of the ocean [nondim].% polzin_min_decay_scale ::
realminimum decay scale of the tidal dissipation profile in Polzin formulation [Z ~> m]% tke_itide_max ::
realmaximum internal tide conversion [R Z3 T-3 ~> W m-2] available to mix above the BBL% utide ::
realconstant tidal amplitude [Z T-1 ~> m s-1] if READ_TIDEAMP is false.% kappa_itides ::
realtopographic wavenumber and non-dimensional scaling [Z-1 ~> m-1].% kappa_h2_factor ::
realfactor for the product of wavenumber * rms sgs height [nondim]% inputdir ::
character(len=200)The directory in which to find input files.% use_cvmix_tidal ::
logicaltrue if CVMix is to be used for determining diffusivity due to tidal mixing% min_thickness ::
realMinimum thickness allowed [Z ~> m].% cvmix_tidal_scheme ::
integer1 for Simmons, 2 for Schmittner% cvmix_tidal_params ::
type(cvmix_tidal_params_type)A CVMix-specific type with parameters for tidal mixing.% cvmix_glb_params ::
type(cvmix_global_params_type)CVMix-specific for Prandtl number only.% tidal_max_coef ::
realCVMix-specific maximum allowable tidal diffusivity. [Z2 T-1 ~> m2 s-1].% tidal_diss_lim_tc ::
realCVMix-specific dissipation limit depth for tidal-energy-constituent data [Z ~> m].% remap_cs ::
type(remapping_cs)The control structure for remapping.% remap_answer_date ::
integerThe vintage of the order of arithmetic and expressions to use for remapping. Values below 20190101 recover the remapping answers from 2018, while higher values use more robust forms of the same remapping expressions.% tidal_answer_date ::
integerThe vintage of the order of arithmetic and expressions in the tidal mixing 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.% int_tide_csp ::
type(int_tide_cs), pointerControl structure for a child module.% tke_niku ::
real, dimension(:,:), allocatableLee wave driven Turbulent Kinetic Energy input [R Z3 T-3 ~> W m-2].% tke_itidal ::
real, dimension(:,:), allocatableThe internal Turbulent Kinetic Energy input divided by the bottom stratification and in non-Boussinesq mode by the near-bottom density [R Z4 H-1 T-2 ~> J m-2 or J m kg-1].% nb ::
real, dimension(:,:), allocatableThe near bottom buoyancy frequency [T-1 ~> s-1].% mask_itidal ::
real, dimension(:,:), allocatableA mask of where internal tide energy is input [nondim].% h2 ::
real, dimension(:,:), allocatableSquared bottom depth variance [Z2 ~> m2].% tideamp ::
real, dimension(:,:), allocatableRMS tidal amplitude [Z T-1 ~> m s-1].% h_src ::
real, dimension(:), allocatabletidal constituent input layer thickness [m]% tidal_qe_2d ::
real, dimension(:,:), allocatableTidal energy input times the local dissipation fraction, q*E(x,y), with the CVMix implementation of Jayne et al tidal mixing [R Z3 T-3 ~> W m-2]. TODO: make this E(x,y) only.% tidal_qe_3d_in ::
real, dimension(:,:,:), allocatableq*E(x,y,z) with the Schmittner parameterization [R Z3 T-3 ~> W m-2]% diag ::
type(diag_ctrl), pointerstructure to regulate diagnostic output timing% dd ::
type(tidal_mixing_diags)Tidal mixing diagnostic arrays.
Function/Subroutine Documentation
- function mom_tidal_mixing/tidal_mixing_init(Time, G, GV, US, param_file, int_tide_CSp, diag, CS)
Initializes internal tidal dissipation scheme for diapycnal mixing.
- Parameters:
time :: [in] The current time.
g :: [in] Grid structure.
gv :: [in] Vertical grid structure.
us :: [in] A dimensional unit scaling type
param_file ::
param_file[in] Run-time parameter file handleint_tide_csp :: A pointer to the internal tides control structure
diag ::
diag[inout] Diagnostics control structure.cs :: [inout] This module’s control structure.
- Call to:
mom_string_functions::lowercasemom_error_handler::mom_errorpolzin_09polzin_profile_stringread_tidal_energyschmittnerschmittner_scheme_stringsimmonssimmons_scheme_stringstlaurent_02stlaurent_profile_stringmom_string_functions::uppercase- Called from:
- subroutine mom_tidal_mixing/calculate_tidal_mixing(dz, j, N2_bot, Rho_bot, N2_lay, N2_int, TKE_to_Kd, max_TKE, G, GV, US, CS, Kd_max, Kv, Kd_lay, Kd_int, VBF)
Depending on whether or not CVMix is active, calls the associated subroutine to compute internal tidal dissipation and to add the effect of internal-tide-driven mixing to the layer or interface 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] The vertical distance across layers [Z ~> m]j ::
j[in] The j-index to work onn2_bot :: [in] The near-bottom squared buoyancy frequency [T-2 ~> s-2].
rho_bot :: [in] The near-bottom in situ density [R ~> kg m-3]
n2_lay :: [in] The squared buoyancy frequency of the layers [T-2 ~> s-2].
n2_int :: [in] The squared buoyancy frequency at the interfaces [T-2 ~> s-2].
tke_to_kd :: [in] 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]
max_tke :: [in] The energy required for a layer to entrain to its maximum realizable thickness [H Z2 T-3 ~> m3 s-3 or W m-2]
cs :: [inout] The control structure for this module
kd_max :: [in] The maximum increment for diapycnal diffusivity due to TKE-based processes, [H Z T-1 ~> m2 s-1 or kg m-1 s-1] Set this to a negative value to have no limit.
kv :: The “slow” vertical viscosity at each interface (not layer!) [H Z T-1 ~> m2 s-1 or Pa s]
kd_lay :: [inout] The diapycnal diffusivity in layers
kd_int :: [inout] The diapycnal diffusivity at interfaces
vbf :: A diagnostic structure for vertical buoyancy fluxes
- Call to:
- subroutine mom_tidal_mixing/calculate_cvmix_tidal(dz, j, N2_int, G, GV, US, CS, Kv, Kd_lay, Kd_int)
Calls the CVMix routines to compute tidal dissipation and to add the effect of internal-tide-driven mixing to the interface diffusivities.
- Parameters:
g :: [in] Grid structure.
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
cs :: [inout] This module’s control structure.
dz ::
dz[in] The vertical distance across layers [Z ~> m]j ::
j[in] The j-index to work onn2_int :: [in] The squared buoyancy frequency at the interfaces [T-2 ~> s-2].
kv :: The “slow” vertical viscosity at each interface (not layer!) [H Z T-1 ~> m2 s-1 or Pa s]
kd_lay :: [inout] The diapycnal diffusivity in the layers
kd_int :: [inout] The diapycnal diffusivity at interfaces
- Call to:
mom_error_handler::mom_errormom_remapping::remapping_core_hschmittnersimmons- Called from:
- subroutine mom_tidal_mixing/add_int_tide_diffusivity(dz, j, N2_bot, Rho_bot, N2_lay, TKE_to_Kd, max_TKE, G, GV, US, CS, Kd_max, Kd_lay, Kd_int, VBF)
This subroutine adds the effect of internal-tide-driven mixing to the layer diffusivities. The mechanisms considered are (1) local dissipation of internal waves generated by the barotropic flow (“itidal”), (2) local dissipation of internal waves generated by the propagating low modes (rays) of the internal tide (“lowmode”), and (3) local dissipation of internal lee waves. Will eventually need to add diffusivity due to other wave-breaking processes (e.g. Bottom friction, Froude-number-depending breaking, PSI, etc.).
- 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] The vertical distance across layers [Z ~> m]j ::
j[in] The j-index to work onn2_bot :: [in] The near-bottom squared buoyancy frequency frequency [T-2 ~> s-2].
rho_bot :: [in] The near-bottom in situ density [R ~> kg m-3]
n2_lay :: [in] The squared buoyancy frequency of the layers [T-2 ~> s-2].
tke_to_kd :: [in] 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]
max_tke :: [in] The energy required for a layer to entrain to its maximum realizable thickness [H Z2 T-3 ~> m3 s-3 or W m-2]
cs :: [inout] The control structure for this module
kd_max :: [in] The maximum increment for diapycnal diffusivity due to TKE-based processes [H Z T-1 ~> m2 s-1 or kg m-1 s-1]. Set this to a negative value to have no limit.
kd_lay :: [inout] The diapycnal diffusivity in layers
kd_int :: [inout] The diapycnal diffusivity at interfaces
vbf :: A diagnostics structure for vertical buoyancy fluxes
- Call to:
mom_internal_tides::get_lowmode_losspolzin_09stlaurent_02- Called from:
- subroutine mom_tidal_mixing/setup_tidal_diagnostics(G, GV, CS)
Sets up diagnostics arrays for tidal mixing.
- Parameters:
g :: [in] The ocean’s grid structure
gv :: [in] The ocean’s vertical grid structure
cs :: [inout] The control structure for this module
- Call to:
mom_error_handler::mom_errorschmittnersimmons
- subroutine mom_tidal_mixing/post_tidal_diagnostics(G, GV, h, CS)
This subroutine offers up diagnostics of the tidal mixing.
- 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].cs :: [inout] The control structure for this module
- subroutine mom_tidal_mixing/tidal_mixing_h_amp(h_amp, G, j, CS)
This subroutine returns a zonal slice of the topographic roughness amplitudes.
- Parameters:
g :: [in] The ocean’s grid structure
h_amp ::
h_amp[out] The topographic roughness amplitude [Z ~> m]j ::
j[in] j-index of the row to work oncs :: [in] The control structure for this module
- subroutine mom_tidal_mixing/read_tidal_energy(G, GV, US, tidal_energy_type, param_file, CS)
This subroutine read tidal energy inputs from a file.
- Parameters:
g :: [in] The ocean’s grid structure
gv :: [in] Vertical grid structure
us :: [in] A dimensional unit scaling type
tidal_energy_type ::
tidal_energy_type[in] The type of tidal energy inputs to readparam_file ::
param_file[in] Run-time parameter file handlecs :: [inout] The control structure for this module
- Call to:
mom_error_handler::mom_errorread_tidal_constituentsmom_string_functions::uppercase- Called from:
- subroutine mom_tidal_mixing/read_tidal_constituents(G, GV, US, tidal_energy_file, param_file, CS)
This subroutine reads tidal input energy from a file by constituent.
- Parameters:
g :: [in] The ocean’s grid structure
gv :: [in] Vertical grid structure
us :: [in] A dimensional unit scaling type
tidal_energy_file ::
tidal_energy_file[in] The file from which to read tidal energy inputsparam_file ::
param_file[in] Run-time parameter file handlecs :: [inout] The control structure for this module
- Call to:
mom_remapping::initialize_remappingmom_error_handler::mom_error- Called from:
- subroutine mom_tidal_mixing/tidal_mixing_end(CS)
Deallocate fields.
- Parameters:
cs :: [inout] This module’s control structure, which will be deallocated in this routine.
- Called from: