MOM6
|
Calculate vertical diffusivity from all mixing processes.
Data Types | |
type | diffusivity_diags |
This structure has memory for used in calculating diagnostics of diffusivity. More... | |
type | set_diffusivity_cs |
This control structure contains parameters for MOM_set_diffusivity. More... | |
integer | id_clock_kappashear |
CPU time clocks. More... | |
integer | id_clock_cvmix_ddiff |
CPU time clocks. More... | |
subroutine, public | set_diffusivity (u, v, h, u_h, v_h, tv, fluxes, optics, visc, dt, G, GV, US, CS, Kd_lay, Kd_int) |
Sets the interior vertical diffusion of scalars due to the following processes: More... | |
subroutine | 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. More... | |
subroutine | find_n2 (h, tv, T_f, S_f, fluxes, j, G, GV, US, CS, dRho_int, N2_lay, N2_int, N2_bot) |
Calculate Brunt-Vaisala frequency, N^2. More... | |
subroutine | 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 an NCAR technical note (REF?) that updates what was in Large et al. (1994). All the coefficients here should probably be made run-time variables rather than hard-coded constants. More... | |
subroutine | add_drag_diffusivity (h, u, v, tv, fluxes, visc, j, TKE_to_Kd, maxTKE, kb, G, GV, US, CS, Kd_lay, Kd_int, Kd_BBL) |
This routine adds diffusion sustained by flow energy extracted by bottom drag. More... | |
subroutine | add_lotw_bbl_diffusivity (h, u, v, tv, fluxes, visc, j, N2_int, G, GV, US, CS, Kd_lay, Kd_int, Kd_BBL) |
Calculates a BBL diffusivity use a Prandtl number 1 diffusivitiy 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. More... | |
subroutine | add_mlrad_diffusivity (h, fluxes, j, G, GV, US, CS, Kd_lay, TKE_to_Kd, Kd_int) |
This routine adds effects of mixed layer radiation to the layer diffusivities. More... | |
subroutine, public | set_bbl_tke (u, v, h, fluxes, visc, G, GV, US, CS) |
This subroutine calculates several properties related to bottom boundary layer turbulence. More... | |
subroutine | set_density_ratios (h, tv, kb, G, GV, US, CS, j, ds_dsp1, rho_0) |
subroutine, public | set_diffusivity_init (Time, G, GV, US, param_file, diag, CS, int_tide_CSp, tm_CSp, halo_TS) |
subroutine, public | set_diffusivity_end (CS) |
Clear pointers and dealocate memory. More... | |
|
private |
This routine adds diffusion sustained by flow energy extracted by bottom drag.
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | u | The zonal velocity [L T-1 ~> m s-1] |
[in] | v | The meridional velocity [L T-1 ~> m s-1] |
[in] | h | Layer thicknesses [H ~> m or kg m-2] |
[in] | tv | Structure containing pointers to any available thermodynamic fields. |
[in] | fluxes | A structure of thermodynamic surface fluxes |
[in] | visc | Structure containing vertical viscosities, bottom boundary layer properies, and related fields |
[in] | j | j-index of row to work on |
[in] | tke_to_kd | 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)) [Z2 T-1 / Z3 T-3 = T2 Z-1 ~> s2 m-1] |
[in] | maxtke | The energy required to for a layer to entrain to its maximum-realizable thickness [m3 T-3 ~> m3 s-3] |
[in] | kb | Index of lightest layer denser than the buffer layer, or -1 without a bulk mixed layer |
cs | Diffusivity control structure | |
[in,out] | kd_lay | The diapycnal diffusvity in layers, |
[in,out] | kd_int | The diapycnal diffusvity at interfaces, |
kd_bbl | Interface BBL diffusivity [Z2 T-1 ~> m2 s-1]. |
Definition at line 1100 of file MOM_set_diffusivity.F90.
Referenced by set_diffusivity().
|
private |
Calculates a BBL diffusivity use a Prandtl number 1 diffusivitiy 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.
[in] | g | Grid structure |
[in] | gv | Vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | u | u component of flow [L T-1 ~> m s-1] |
[in] | v | v component of flow [L T-1 ~> m s-1] |
[in] | h | Layer thickness [H ~> m or kg m-2] |
[in] | tv | Structure containing pointers to any available thermodynamic fields. |
[in] | fluxes | Surface fluxes structure |
[in] | visc | Structure containing vertical viscosities, bottom boundary layer properies, and related fields. |
[in] | j | j-index of row to work on |
[in] | n2_int | Square of Brunt-Vaisala at interfaces [T-2 ~> s-2] |
cs | Diffusivity control structure | |
[in,out] | kd_lay | Layer net diffusivity [Z2 T-1 ~> m2 s-1] |
[in,out] | kd_int | Interface net diffusivity [Z2 T-1 ~> m2 s-1] |
kd_bbl | Interface BBL diffusivity [Z2 T-1 ~> m2 s-1] |
Definition at line 1335 of file MOM_set_diffusivity.F90.
Referenced by set_diffusivity().
|
private |
This routine adds effects of mixed layer radiation to the layer 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] | fluxes | Surface fluxes structure |
cs | Diffusivity control structure | |
[in,out] | kd_lay | The diapycnal diffusvity in layers [Z2 T-1 ~> m2 s-1]. |
[in] | j | The j-index to work on |
[in] | tke_to_kd | 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)) [Z2 T-1 / Z3 T-3 = T2 Z-1 ~> s2 m-1] |
[in,out] | kd_int | The diapycnal diffusvity at interfaces |
Definition at line 1495 of file MOM_set_diffusivity.F90.
Referenced by set_diffusivity().
|
private |
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 an NCAR technical note (REF?) that updates what was in Large et al. (1994). All the coefficients here should probably be made run-time variables rather than hard-coded constants.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | tv | Structure containing pointers to any available thermodynamic fields; absent fields have NULL ptrs. |
[in] | h | Layer thicknesses [H ~> m or kg m-2]. |
[in] | t_f | layer temperatures with the values in massless layers |
[in] | s_f | Layer salinities with values in massless |
[in] | j | Meridional index upon which to work. |
cs | Module control structure. | |
[out] | kd_t_dd | Interface double diffusion diapycnal |
[out] | kd_s_dd | Interface double diffusion diapycnal |
Definition at line 1015 of file MOM_set_diffusivity.F90.
Referenced by set_diffusivity().
|
private |
Calculate Brunt-Vaisala frequency, N^2.
[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] | tv | Structure containing pointers to any available thermodynamic fields. |
[in] | t_f | layer temperature with the values in massless layers |
[in] | s_f | Layer salinities with values in massless |
[in] | fluxes | A structure of thermodynamic surface fluxes |
[in] | j | j-index of row to work on |
cs | Diffusivity control structure | |
[out] | drho_int | Change in locally referenced potential density |
[out] | n2_int | The squared buoyancy frequency at the interfaces [T-2 ~> s-2]. |
[out] | n2_lay | The squared buoyancy frequency of the layers [T-2 ~> s-2]. |
[out] | n2_bot | The near-bottom squared buoyancy frequency [T-2 ~> s-2]. |
Definition at line 840 of file MOM_set_diffusivity.F90.
Referenced by set_diffusivity().
|
private |
Convert turbulent kinetic energy to diffusivity.
[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] | tv | Structure containing pointers to any available thermodynamic fields. |
[in] | drho_int | Change in locally referenced potential density across each interface [R ~> kg m-3]. |
[in] | n2_lay | The squared buoyancy frequency of the layers [T-2 ~> s-2]. |
[in] | j | j-index of row to work on |
[in] | dt | Time increment [T ~> s]. |
cs | Diffusivity control structure | |
[out] | tke_to_kd | The conversion rate between the TKE dissipated within a layer and the diapycnal diffusivity witin that layer, usually (~Rho_0 / (G_Earth * dRho_lay)) [Z2 T-1 / Z3 T-3 = T2 Z-1 ~> s2 m-1] |
[out] | maxtke | The energy required to for a layer to entrain to its maximum realizable thickness [Z3 T-3 ~> m3 s-3] |
[out] | kb | Index of lightest layer denser than the buffer layer, or -1 without a bulk mixed layer. |
Definition at line 625 of file MOM_set_diffusivity.F90.
References set_density_ratios().
Referenced by set_diffusivity().
subroutine, public mom_set_diffusivity::set_bbl_tke | ( | real, dimension(szib_(g),szj_(g),szk_(g)), intent(in) | u, |
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(in) | v, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, | ||
type(forcing), intent(in) | fluxes, | ||
type(vertvisc_type), intent(in) | visc, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(set_diffusivity_cs), pointer | CS | ||
) |
This subroutine calculates several properties related to bottom boundary layer turbulence.
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | u | The zonal velocity [L T-1 ~> m s-1] |
[in] | v | The meridional velocity [L T-1 ~> m s-1] |
[in] | h | Layer thicknesses [H ~> m or kg m-2] |
[in] | fluxes | A structure of thermodynamic surface fluxes |
[in] | visc | Structure containing vertical viscosities, bottom boundary layer properies, and related fields. |
cs | Diffusivity control structure |
Definition at line 1635 of file MOM_set_diffusivity.F90.
|
private |
[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]. |
[in] | tv | Structure containing pointers to any available thermodynamic fields; absent fields have NULL ptrs. |
[in] | kb | Index of lightest layer denser than the buffer layer, or -1 without a bulk mixed layer. |
[in] | us | A dimensional unit scaling type |
cs | Control structure returned by previous call to diabatic_entrain_init. | |
[in] | j | Meridional index upon which to work. |
[out] | ds_dsp1 | Coordinate variable (sigma-2) difference across an interface divided by the difference across the interface below it [nondim] |
[in] | rho_0 | Layer potential densities relative to |
Definition at line 1772 of file MOM_set_diffusivity.F90.
Referenced by find_tke_to_kd().
subroutine, public mom_set_diffusivity::set_diffusivity | ( | real, dimension(szib_(g),szj_(g),szk_(g)), intent(in) | u, |
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(in) | v, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | u_h, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | v_h, | ||
type(thermo_var_ptrs), intent(inout) | tv, | ||
type(forcing), intent(in) | fluxes, | ||
type(optics_type), pointer | optics, | ||
type(vertvisc_type), intent(inout) | visc, | ||
real, intent(in) | dt, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(set_diffusivity_cs), pointer | CS, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(out) | Kd_lay, | ||
real, dimension(szi_(g),szj_(g),szk_(g)+1), intent(out), optional | Kd_int | ||
) |
Sets the interior vertical diffusion of scalars due to the following processes:
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | u | The zonal velocity [L T-1 ~> m s-1]. |
[in] | v | The meridional velocity [L T-1 ~> m s-1]. |
[in] | h | Layer thicknesses [H ~> m or kg m-2]. |
[in] | u_h | Zonal velocity interpolated to h points [L T-1 ~> m s-1]. |
[in] | v_h | Meridional velocity interpolated to h points [L T-1 ~> m s-1]. |
[in,out] | tv | Structure with pointers to thermodynamic fields. Out is for tvTempxPmE. |
[in] | fluxes | A structure of thermodynamic surface fluxes |
optics | A structure describing the optical properties of the ocean. | |
[in,out] | visc | Structure containing vertical viscosities, bottom boundary layer properies, and related fields. |
[in] | dt | Time increment [T ~> s]. |
cs | Module control structure. | |
[out] | kd_lay | Diapycnal diffusivity of each layer [Z2 T-1 ~> m2 s-1]. |
[out] | kd_int | Diapycnal diffusivity at each interface [Z2 T-1 ~> m2 s-1]. |
Definition at line 206 of file MOM_set_diffusivity.F90.
References 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(), id_clock_cvmix_ddiff, id_clock_kappashear, mom_tidal_mixing::post_tidal_diagnostics(), mom_tidal_mixing::setup_tidal_diagnostics(), mom_bkgnd_mixing::sfc_bkgnd_mixing(), and mom_isopycnal_slopes::vert_fill_ts().
subroutine, public mom_set_diffusivity::set_diffusivity_end | ( | type(set_diffusivity_cs), pointer | CS | ) |
Clear pointers and dealocate memory.
cs | Control structure for this module |
Definition at line 2207 of file MOM_set_diffusivity.F90.
References mom_bkgnd_mixing::bkgnd_mixing_end(), mom_cvmix_shear::cvmix_shear_end(), and user_change_diffusivity::user_change_diff_end().
subroutine, public mom_set_diffusivity::set_diffusivity_init | ( | type(time_type), intent(in) | Time, |
type(ocean_grid_type), intent(inout) | 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(set_diffusivity_cs), pointer | CS, | ||
type(int_tide_cs), pointer | int_tide_CSp, | ||
type(tidal_mixing_cs), pointer | tm_CSp, | ||
integer, intent(out), optional | halo_TS | ||
) |
[in] | time | The current model time |
[in,out] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | param_file | A structure to parse for run-time parameters. |
[in,out] | diag | A structure used to regulate diagnostic output. |
cs | pointer set to point to the module control structure. | |
int_tide_csp | pointer to the internal tides control structure (BDM) | |
tm_csp | pointer to tidal mixing control structure | |
[out] | halo_ts | The halo size of tracer points that must be valid for the calculations in set_diffusivity. |
Definition at line 1878 of file MOM_set_diffusivity.F90.
References id_clock_cvmix_ddiff, id_clock_kappashear, mom_kappa_shear::kappa_shear_at_vertex(), and mom_diag_mediator::register_diag_field().
|
private |
CPU time clocks.
Definition at line 189 of file MOM_set_diffusivity.F90.
Referenced by set_diffusivity(), and set_diffusivity_init().
|
private |
CPU time clocks.
Definition at line 189 of file MOM_set_diffusivity.F90.
Referenced by set_diffusivity(), and set_diffusivity_init().