PUBLIC INTERFACE ~ PUBLIC ROUTINES ~ NAMELIST

Module ocean_vert_tidal_mod

Contact:  S. M. Griffies
Reviewers:  Harper Simmons Hyun-Chul Lee
Change History: WebCVS Log


OVERVIEW

This module computes a vertical diffusivity and vertical viscosity deduced from barotropic and baroclinic tidal dissipation. Assume Prandtl number unity.

This module computes a vertical diffusivity and vertical viscosity deduced from barotropic and baroclinic tidal dissipation. For the baroclinic dissipation, we follow Simmons etal, and for the barotropic dissipation we follow Lee etal. Assume Prandtl number unity. This code is more general than that in the ocean_vert_kpp_mom4p0_mod. The KPP_mom4p0 code remains part of MOM for legacy purposes.


OTHER MODULES USED

       constants_mod
diag_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
ocean_domains_mod
ocean_operators_mod
ocean_parameters_mod
ocean_types_mod
ocean_workspace_mod

PUBLIC INTERFACE

ocean_vert_tidal_init:
vert_mix_tidal:
compute_bvfreq:
vert_mix_wave:
vert_mix_drag_bgrid:
vert_mix_drag_cgrid:
compute_bvfreq_legacy:
vert_mix_wave_legacy:
vert_mix_drag_legacy:


PUBLIC ROUTINES

  1. ocean_vert_tidal_init

    DESCRIPTION
    Initialization for the ocean_vert_tidal module.


  2. vert_mix_tidal

    DESCRIPTION
    This subroutine computes vertical tracer diffusivity and viscosity based on one or both of the following dissipation mechanisms: 1. internal wave breaking as parameterized by Simmons etal. 2. barotropic tides feeling the bottom drag, as parameterized by Lee etal.


  3. compute_bvfreq

    DESCRIPTION
    This subroutine computes the absolute value of rho*N^2 and abs of N^2, with N^2 the squared Brunt-Vaisala (or buoyancy) frequency.


  4. vert_mix_wave

    DESCRIPTION
    This subroutine computes dia-surface tracer diffusivity based on the methods of Simmons et al., which consider dissipation from breaking internal gravity waves and their conversion into local dia-surface mixing, which is parameterized as diffusion. Also compute a prototype parameterization of mixing due to breaking leewaves from Nikurashin. We assume a unit Prandtl number. Note that if umask(i,j,k) is 1.0, then so is tmask(i,j,k), tmask(i+1,j,k), tmask(i,j+1,k), and tmask(i+1,j+1,k). So there is no need to compute the "active_cells" when doing the space average to go from t-cell to u-cell to compute visc_cbu.


  5. vert_mix_drag_bgrid

    DESCRIPTION
    This subroutine computes dia-surface tracer diffusivity based on the methods of Lee etal., which consider the dissipation from barotropic tides rubbing against the ocean bottom. We assume B-grid layout for the velocity We assume a unit Prandtl number, so compute the viscosity as a four-point average of the diffusivity. We perform various averages here in order to smooth Richardson number. 1. compute Richardson number on U-cell by averaging bvfreq from T-cell 2. average U-cell Richardson number to then get T-cell diffusivity 3. average T-cell diffusivity to get U-cell viscosity. Note that if umask(i,j,k)==1.0, then so is tmask(i,j,k), tmask(i+1,j,k), tmask(i,j+1,k), and tmask(i+1,j+1,k). So there is no need to compute active_cells when averaging from T-cell to U-cell.


  6. vert_mix_drag_cgrid

    DESCRIPTION
    This subroutine computes dia-surface tracer diffusivity based on the methods of Lee etal., which consider the dissipation from barotropic tides rubbing against the ocean bottom. We assume a unit Prandtl number, so compute the viscosity as a four-point average of the diffusivity. We assume C-grid layout for the velocity, which renders slight distinctions for the calculation of Richardson number. Otherwise, the calculations are the same as the Bgrid. We introduce this separate routine, however, to enable easier bitwise agreement with older model results. Also, further development of this scheme may lead to more distinctions from the Bgrid.


  7. compute_bvfreq_legacy

    DESCRIPTION
    This subroutine computes the absolute value of rho*N^2 and abs of N^2, with N^2 the squared Brunt-Vaisala (or buoyancy) frequency. This routine employs a legacy approach, which is not recommended. It remains solely to allow exact reproduction of older results.


  8. vert_mix_wave_legacy

    DESCRIPTION
    Legacy routine maintained only to exactly reproduce older results. It is not recommended for new experiments, as it uses some obsolete methods. This subroutine computes dia-surface tracer diffusivity based on the methods of Simmons etal., which consider the dissipation from breaking internal gravity waves and their conversion into local dia-surface diffusion. We assume a unit Prandtl number, so compute the viscosity as a four-point average of the diffusivity. Note that if umask(i,j,k) is 1.0, then so is tmask(i,j,k), tmask(i+1,j,k), tmask(i,j+1,k), and tmask(i+1,j+1,k). So there is no need to compute the "active_cells" when doing the space average to go from t-cell to u-cell to compute viscosity.


  9. vert_mix_drag_legacy

    DESCRIPTION
    Legacy routine maintained only to exactly reproduce older results. It is not recommended for new experiments, as it uses some obsolete methods. This subroutine computes dia-surface tracer diffusivity based on the methods of Lee etal., which consider the dissipation from barotropic tides rubbing against the ocean bottom. We assume a unit Prandtl number, so compute the viscosity as a four-point average of the diffusivity. We perform various averages here in order to smooth Richardson number. 1. compute Richardson number on U-cell by averaging bvfreq from T-cell 2. average U-cell Richardson number to then get T-cell diffusivity 3. average T-cell diffusivity to get U-cell viscosity. Note that if umask(i,j,k)==1.0, then so is tmask(i,j,k), tmask(i+1,j,k), tmask(i,j+1,k), and tmask(i+1,j+1,k). So there is no need to compute active_cells when averaging from T-cell to U-cell.



NAMELIST

&ocean_vert_tidal_nml

use_this_module=
Must be .true. to use this module. Default is false.
[logical]
debug_this_module
For debugging purposes.
[logical]
use_wave_dissipation=
Set to .true. for using the Simmons etal scheme for obtaining a diffusivity and viscosity based on internal wave breaking. This is a general form of the KPP scheme "int_tidal_mix". Default use_wave_dissipation=.false.
[logical]
use_drag_dissipation=
Set to .true. for using the Lee etal scheme for obtaining a diffusivity and viscosity based on drag of barotropic tides on bottom. This is a general form of the KPP scheme "coastal_tidal_mix". Default use_drag_dissipation=.false.
[logical]
use_leewave_dissipation=
Set to .true. for using a prototype Nikurashin scheme for obtaining a diffusivity and viscosity based on breaking leewaves. This scheme is not related to tides, but it is incorporated to the baroclinic tide parameterization scheme as a prototype. It will be placed into ts own module when the parameterization matures. Default use_leewave_dissipation=.false.
[logical]
read_leewave_dissipation
If .true. then read in leewave dissipation from a file. Default read_leewave_dissipation=.false.
[logical]
read_wave_dissipation
If .true. then read in wave dissipation computed from Jayne and St.Laurent (2001) tide model (or another model). Default read_wave_dissipation=.false.
[logical]
fixed_wave_dissipation
If .true. then fix the wave dissipation from that read in by the tide model, such as Jayne and St.Laurent (2001). This power dissipation will be employed for computing wave induced mixing. Default fixed_wave_dissipation=.false.
[logical]
read_roughness
If .true. then read in bottom roughness amplitude h, where roughness_length = kappa*h^2, with kappa a representative roughness wavelength and h a representative topographic amplitude. This information is used for the Simmons etal wave dissipation parameterization.
[logical]
reading_roughness_length
If .true., then the field in the roughness file is roughness_length = kappa*h^2, with kappa a representative roughness wavelength and h a representative topographic amplitude. This information is used for the Simmons etal wave dissipation parameterization. Default reading_roughness_length=.false.
[logical]
reading_roughness_amp
If .true., then the field in the roughness file is roughness_amp=h, where roughness_length=kappa*h^2. This information is used for the Simmons etal wave dissipation parameterization. Default reading_roughness_amp=.false.
[logical]
default_roughness_length
Default value for kappa*h^2 = roughness length for use in the absence of a roughness length dataset. MOM default is default_roughness_length=25.0m.
[real, units: m]
read_tide_speed
If .true. then read in tidal speed (m/s) from a tidal model. This information is used for the computing the energy dissipation from tides. scheme.
[logical]
tide_speed_data_on_t_grid
To set the input tide speed data on T-grid, set to true. Otherwise, set to false. Default tide_speed_data_on_t_grid=.true.
[logical]
roughness_scale
Scale for the roughness that characterizes the roughness affecting the tidal dissipation process. Used for setting roughness_length via roughness_length = kappa*h^2, with kappa = 2pi/(roughness_scale) and h=topography amplitude. Default roughness_scale=1e4 as in Jayne and St. Laurent (2001)
[real, units: m]
default_tide_speed
Default value for tidal speed for use in the absence of a value from a tidal model.
[real, units: m/s]
speed_min
For the drag scheme, we set the diffusivity as well as the Richardson number to zero if the tide speed is less than speed_min. This serves two purposes: 1/ to reduce overflows in some of the diagnostics; 2/ to set the drag induced diffusivity to zero in regions where the tide speed is small. Default speed_min=5e-3m/s.
[real, units: m/s]
shelf_depth_cutoff
For use in defining a mask for the Simmons scheme, with depths shallower than shelf_depth_cutoff removed from the scheme. shelf_depth_cutoff=1000m in Simmons etal. Default shelf_depth_cutoff=-1000m so there is no cutoff.
[real, units: m]
decay_scale
In the Simmons etal vertical profile function, the exponential decay scale is determined by this parameter. Default = 500m as in Simmons etal (2004). This vertical profile determines how to deposit the internal wave energy within a vertical column.
[real, units: m]
tidal_diss_efficiency
Fraction of barotropic tidal energy that is dissipated locally, as opposed to that which propagates away. Default=1/3 as in Simmons etal (2004).
[real, units: dimensionless]
mixing_efficiency
Fraction of energy that is dissipated which is converted into dianeutral diffusion of tracer. Default=0.2 based on Osborn (1980).
[real, units: dimensionless]
mixing_efficiency_n2depend
Allow for mixing efficiency to be a function of N^2/(N^2+Omega^2), which is close to unity except in regions where N is very small. Default mixing_efficiency_n2depend=.false.
[logical]
wave_energy_flux_max
The maximum mechanical energy from internal tides that is provided for mixing. Default wave_energy_flux_max=0.1Watt/m^2.
[real, units: W/m2]
wave_diffusivity_monotonic
Enforce a monotonic decay of the wave dissipation diffusivity, with largest values near bottom and smaller as move to shallower water. This behaviour is not guaranteed in general, since the division by the buoyancy frequency can give non-monotone diffusivities. Default wave_diffusivity_monotonic=.true.
[logical]
munk_anderson_p
The p constant in the Munk-Anderson scheme employed by Lee etal. This parameter is minus the "p_tide" parameter in the KPP schemes. Default munk_anderson_p=0.25
[real, units: dimensionless]
munk_anderson_sigma
The sigma constant in the Munk-Anderson scheme employed by Lee etal. This parameter is called "sigma_tide" in the KPP schemes. Default munk_anderson_sigma=3.0
[real, units: dimensionless]
drag_dissipation_use_cdbot
For using the cdbot_array computed from ocean_bbc.F90 module. Default drag_dissipation_use_cdbot=.false., as this is consistent with earlier simulations.
[logical]
bottom_drag_cd
Bottom drag coefficient from Lee etal. Default bottom_drag_cd=2.4e-3
[real, units: dimensionless]
background_diffusivity
Background vertical diffusivity not accounted for by the tidal schemes nor any other scheme such as KPP. Default=0.1e-4.
[real, units: m^2/s]
background_viscosity
Background vertical viscosity not accounted for by the tidal schemes nor any other scheme such as KPP. Default=0.1e-4.
[real, units: m^2/s]
max_wave_diffusivity
Maximum tracer diffusivity deduced from the wave dissipation scheme from Simmons etal. Default = 5.e-3 m^2/sec.
[real, units: m^2/s]
max_drag_diffusivity
Maximum tracer diffusivity deduced from the drag dissipation scheme from Lee etal. Default = 5.e-3 m^2/sec.
[real, units: m^2/s]
drag_dissipation_efold
For setting an efolding whereby the drag dissipation diffusivity exponentially decreases as move upward in the water column. There are good reasons to set this logical to true, as the scheme can produce unreasonably large diffusivities far from the bottom, if there are tides in the deep ocean. Default drag_dissipation_efold=.true.
[logical]
drag_dissipation_tide_period
Characteristic tide period for use in computing efolding depth for the tide drag scheme. Default = 12*60*60 = 12hours for semi-diurnal tide.
[real, units: s]
drag_mask_deep
For masking out the deep ocean regions for the drag dissipation scheme. This scheme is meant to apply only in shallow shelves, so it is physically relevant to mask it out. We apply a mask as determined by the ratio of the frictional tide depth scale and the total ocean depth. Default drag_mask_deep=.true.
[logical]
drag_mask_deep_ratio
For determining the drag dissipation mask. The mask = 0 in regions where tide_depth/total_depth < drag_mask_deep_ratio Default drag_mask_deep_ratio=0.1
[real]
smooth_ri_drag_cgrid
For smoothing the raw C-grid Richardson number computed for the drag scheme on the Cgrid. Default smooth_ri_drag_cgrid=.true.
[logical]
use_legacy_methods
To compute all mixing coefficients using legacy methods. There are good reasons to prefer the newer approaches, which motivates setting the default use_legacy_methods=.false.
[logical]
drhodz_min
Minimum absolute value for the drhodz used to compute N^2 and rhoN2. This value is needed in order to regularize the diffusivity computed from the tide mixing schemes. Default is drhodz_min=1e-10, which is much smaller than the (N^2)min = 10^-8 sec^-2 used by Simmons etal. There is some sensitivity to the choice of drhodz_min, with larger values leading to reduced deep diffusivities, due to the N^-2 dependence in the diffusivity calculation.
[real, units: kg/m^3]
smooth_bvfreq_bottom
For smoothing the buoyancy frequency at the bottom. Default smooth_bvfreq_bottom=.true.
[logical]
vel_micom_smooth
Velocity scale that is used for computing the MICOM Laplacian mixing coefficient used in the Laplacian smoothing of diffusivities. Default vel_micom_smooth=0.2.
[real, units: m/sec]
smooth_rho_N2
For smoothing the rho_N2 field via a 1-2-1 filter in vertical. This is useful to produce smoother diffusivities. Default is smooth_rho_N2=.true.
[logical]
num_121_passes
Number of passes of 1-2-1 filter in vertical for smoothing the rho_N2 field. Default num_121_passes=1.
[integer]


REFERENCES

  1. Simmons, Jayne, St. Laurent, and Weaver, 2004: Tidally driven mixing in a numerical model of the ocean general circulation. Ocean Modelling, vol. 6, pages 245-263.
  2. Jayne and St. Laurent, 2001: Parameterizing tidal dissipation over rough topography. Geophysical Research Letters, vol. 28, pages 811-814.
  3. Hyun-Chul Lee, A. Rosati, and M.J. Spelman, 2006: Barotropic tidal mixing effects in a coupled climate model: ocean conditions in the northern Atlantic Ocean Modelling, vol 11, pages 464--477
  4. Osborn, T.R., 1980: Estimates of the local rate of vertical diffusion from dissipation measurements. JPO, vol. 10, pages 83-89.
  5. Munk and Anderson, 1948: Notes on a theory of the thermocline. Journal of Marine Research, vol 3. pages 276-295.
  6. S.M. Griffies, Elements of MOM (2012)


top