MOM6
|
Interface to vertical tidal mixing schemes including CVMix tidal mixing.
Data Types | |
type | tidal_mixing_cs |
Control structure with parameters for the tidal mixing module. More... | |
type | tidal_mixing_diags |
Containers for tidal mixing diagnostics. More... | |
character *(20), parameter | stlaurent_profile_string = "STLAURENT_02" |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
character *(20), parameter | polzin_profile_string = "POLZIN_09" |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
integer, parameter | stlaurent_02 = 1 |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
integer, parameter | polzin_09 = 2 |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
character *(20), parameter | simmons_scheme_string = "SIMMONS" |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
character *(20), parameter | schmittner_scheme_string = "SCHMITTNER" |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
integer, parameter | simmons = 1 |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
integer, parameter | schmittner = 2 |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
logical function, public | tidal_mixing_init (Time, G, GV, US, param_file, diag, CS) |
Initializes internal tidal dissipation scheme for diapycnal mixing. More... | |
subroutine, public | calculate_tidal_mixing (h, N2_bot, j, TKE_to_Kd, max_TKE, G, GV, US, CS, N2_lay, N2_int, Kd_lay, Kd_int, Kd_max, Kv) |
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. More... | |
subroutine | calculate_cvmix_tidal (h, j, G, GV, US, CS, N2_int, Kd_lay, Kv) |
Calls the CVMix routines to compute tidal dissipation and to add the effect of internal-tide-driven mixing to the interface diffusivities. More... | |
subroutine | add_int_tide_diffusivity (h, N2_bot, j, TKE_to_Kd, max_TKE, G, GV, US, CS, N2_lay, Kd_lay, Kd_int, Kd_max) |
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.). More... | |
subroutine, public | setup_tidal_diagnostics (G, CS) |
Sets up diagnostics arrays for tidal mixing. More... | |
subroutine, public | post_tidal_diagnostics (G, GV, h, CS) |
This subroutine offers up diagnostics of the tidal mixing. More... | |
subroutine | read_tidal_energy (G, US, tidal_energy_type, tidal_energy_file, CS) |
This subroutine read tidal energy inputs from a file. More... | |
subroutine | read_tidal_constituents (G, US, tidal_energy_file, CS) |
This subroutine reads tidal input energy from a file by constituent. More... | |
subroutine, public | tidal_mixing_end (CS) |
Clear pointers and deallocate memory. More... | |
|
private |
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.).
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | h | Layer thicknesses [H ~> m or kg m-2] |
[in] | n2_bot | The near-bottom squared buoyancy frequency frequency [T-2 ~> s-2]. |
[in] | n2_lay | The squared buoyancy frequency of the layers [T-2 ~> s-2]. |
[in] | j | The j-index to work on |
[in] | tke_to_kd | The conversion rate between the TKE dissipated within a layer and the diapycnal diffusivity within that layer, usually (~Rho_0 / (G_Earth * dRho_lay)) [Z2 T-1 / Z3 T-3 = T2 Z-1 ~> s2 m-1] |
[in] | max_tke | The energy required to for a layer to entrain to its maximum realizable thickness [Z3 T-3 ~> m3 s-3] |
cs | The control structure for this module | |
[in,out] | kd_lay | The diapycnal diffusvity in layers [Z2 T-1 ~> m2 s-1]. |
[in,out] | kd_int | The diapycnal diffusvity at interfaces |
[in] | kd_max | The maximum increment for diapycnal diffusivity due to TKE-based processes [Z2 T-1 ~> m2 s-1]. Set this to a negative value to have no limit. |
Definition at line 943 of file MOM_tidal_mixing.F90.
References mom_error_handler::mom_error(), polzin_09, and stlaurent_02.
Referenced by calculate_tidal_mixing().
|
private |
Calls the CVMix routines to compute tidal dissipation and to add the effect of internal-tide-driven mixing to the interface diffusivities.
[in] | j | The j-index to work on |
[in] | g | Grid structure. |
[in] | gv | ocean vertical grid structure |
[in] | us | A dimensional unit scaling type |
cs | This module's control structure. | |
[in] | n2_int | The squared buoyancy frequency at the interfaces [T-2 ~> s-2]. |
[in] | h | Layer thicknesses [H ~> m or kg m-2]. |
[in,out] | kd_lay | The diapycnal diffusivities in the layers [Z2 T-1 ~> m2 s-1]. |
kv | The "slow" vertical viscosity at each interface (not layer!) [Z2 T-1 ~> m2 s-1]. |
Definition at line 707 of file MOM_tidal_mixing.F90.
References mom_error_handler::mom_error(), mom_remapping::remapping_core_h(), schmittner, and simmons.
Referenced by calculate_tidal_mixing().
subroutine, public mom_tidal_mixing::calculate_tidal_mixing | ( | real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, |
real, dimension(szi_(g)), intent(in) | N2_bot, | ||
integer, intent(in) | j, | ||
real, dimension(szi_(g),szk_(g)), intent(in) | TKE_to_Kd, | ||
real, dimension(szi_(g),szk_(g)), intent(in) | max_TKE, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(tidal_mixing_cs), pointer | CS, | ||
real, dimension(szi_(g),szk_(g)), intent(in) | N2_lay, | ||
real, dimension(szi_(g),szk_(g)+1), intent(in) | N2_int, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(inout) | Kd_lay, | ||
real, dimension(szi_(g),szj_(g),szk_(g)+1), intent(inout), optional | Kd_int, | ||
real, intent(in) | Kd_max, | ||
real, dimension(:,:,:), pointer | Kv | ||
) |
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.
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | h | Layer thicknesses [H ~> m or kg m-2] |
[in] | n2_bot | The near-bottom squared buoyancy frequency [T-2 ~> s-2]. |
[in] | n2_lay | The squared buoyancy frequency of the layers [T-2 ~> s-2]. |
[in] | n2_int | The squared buoyancy frequency at the interfaces [T-2 ~> s-2]. |
[in] | j | The j-index to work on |
[in] | tke_to_kd | The conversion rate between the TKE dissipated within a layer and the diapycnal diffusivity within that layer, usually (~Rho_0 / (G_Earth * dRho_lay)) [Z2 T-1 / Z3 T-3 = T2 Z-1 ~> s2 m-1] |
[in] | max_tke | The energy required to for a layer to entrain to its maximum realizable thickness [Z3 T-3 ~> m3 s-3] |
cs | The control structure for this module | |
[in,out] | kd_lay | The diapycnal diffusvity in layers [Z2 T-1 ~> m2 s-1]. |
[in,out] | kd_int | The diapycnal diffusvity at interfaces, |
[in] | kd_max | The maximum increment for diapycnal diffusivity due to TKE-based processes, [Z2 T-1 ~> m2 s-1]. Set this to a negative value to have no limit. |
kv | The "slow" vertical viscosity at each interface (not layer!) [Z2 T-1 ~> m2 s-1]. |
Definition at line 661 of file MOM_tidal_mixing.F90.
References add_int_tide_diffusivity(), and calculate_cvmix_tidal().
subroutine, public mom_tidal_mixing::post_tidal_diagnostics | ( | type(ocean_grid_type), intent(in) | G, |
type(verticalgrid_type), intent(in) | GV, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, | ||
type(tidal_mixing_cs), pointer | CS | ||
) |
This subroutine offers up diagnostics of the tidal mixing.
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure. |
[in] | h | Layer thicknesses [H ~> m or kg m-2]. |
cs | The control structure for this module |
Definition at line 1468 of file MOM_tidal_mixing.F90.
Referenced by mom_set_diffusivity::set_diffusivity().
|
private |
This subroutine reads tidal input energy from a file by constituent.
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
[in] | tidal_energy_file | The file from which to read tidal energy inputs |
cs | The control structure for this module |
Definition at line 1564 of file MOM_tidal_mixing.F90.
References mom_remapping::initialize_remapping(), and mom_error_handler::mom_error().
Referenced by read_tidal_energy().
|
private |
This subroutine read tidal energy inputs from a file.
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
[in] | tidal_energy_type | The type of tidal energy inputs to read |
[in] | tidal_energy_file | The file from which to read tidalinputs |
cs | The control structure for this module |
Definition at line 1534 of file MOM_tidal_mixing.F90.
References mom_error_handler::mom_error(), read_tidal_constituents(), and mom_string_functions::uppercase().
Referenced by tidal_mixing_init().
subroutine, public mom_tidal_mixing::setup_tidal_diagnostics | ( | type(ocean_grid_type), intent(in) | G, |
type(tidal_mixing_cs), pointer | CS | ||
) |
Sets up diagnostics arrays for tidal mixing.
[in] | g | The ocean's grid structure |
cs | The control structure for this module |
Definition at line 1383 of file MOM_tidal_mixing.F90.
References mom_error_handler::mom_error(), schmittner, and simmons.
Referenced by mom_set_diffusivity::set_diffusivity().
subroutine, public mom_tidal_mixing::tidal_mixing_end | ( | type(tidal_mixing_cs), pointer | CS | ) |
Clear pointers and deallocate memory.
cs | This module's control structure, which will be deallocated in this routine. |
Definition at line 1675 of file MOM_tidal_mixing.F90.
Referenced by mom_diabatic_driver::diabatic_driver_end().
logical function, public mom_tidal_mixing::tidal_mixing_init | ( | type(time_type), intent(in) | Time, |
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(param_file_type), intent(in) | param_file, | ||
type(diag_ctrl), intent(inout), target | diag, | ||
type(tidal_mixing_cs), pointer | CS | ||
) |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 210 of file MOM_tidal_mixing.F90.
References mom_error_handler::is_root_pe(), mom_string_functions::lowercase(), mom_error_handler::mom_error(), polzin_09, polzin_profile_string, read_tidal_energy(), schmittner, schmittner_scheme_string, simmons, simmons_scheme_string, stlaurent_02, stlaurent_profile_string, and mom_string_functions::uppercase().
|
private |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 199 of file MOM_tidal_mixing.F90.
Referenced by add_int_tide_diffusivity(), and tidal_mixing_init().
|
private |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 197 of file MOM_tidal_mixing.F90.
Referenced by tidal_mixing_init().
|
private |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 203 of file MOM_tidal_mixing.F90.
Referenced by calculate_cvmix_tidal(), setup_tidal_diagnostics(), and tidal_mixing_init().
|
private |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 201 of file MOM_tidal_mixing.F90.
Referenced by tidal_mixing_init().
|
private |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 202 of file MOM_tidal_mixing.F90.
Referenced by calculate_cvmix_tidal(), setup_tidal_diagnostics(), and tidal_mixing_init().
|
private |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 200 of file MOM_tidal_mixing.F90.
Referenced by tidal_mixing_init().
|
private |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 198 of file MOM_tidal_mixing.F90.
Referenced by add_int_tide_diffusivity(), and tidal_mixing_init().
character*(20), parameter mom_tidal_mixing::stlaurent_profile_string = "STLAURENT_02" |
Initializes internal tidal dissipation scheme for diapycnal mixing.
[in] | time | The current time. |
[in] | g | Grid structure. |
[in] | gv | Vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Run-time parameter file handle |
[in,out] | diag | Diagnostics control structure. |
cs | This module's control structure. |
TODO: add units
Definition at line 196 of file MOM_tidal_mixing.F90.
Referenced by tidal_mixing_init().