Module ocean_form_drag_mod
OVERVIEW
Compute form drag as per Greatbatch and Lamb (1990) and/or
Aiki etal (2004).
Compute thickness weighted and density weighted tendency
[velocity*(kg/m^3)*meter/sec] for velocity associated with
parameterized form drag. Code employs the methods described
in Greatbatch and Lamb (1990) as well as Aiki etal (2004).
This scheme has not been updated for C-grid specific layout.
However, there is little reason to expect that shifting the
viscosity by 1/2 grid point will make sense physically for this
scheme. Indeed, one does not expect this scheme to be relevant
near boundaries anyhow. So use for both Bgrid and Cgrid should
be reasonable, though with the caveat that differences will appear
near boundaries.
OTHER MODULES USED
constants_mod
diag_manager_mod
fms_mod
mpp_mod
mpp_domains_mod
ocean_domains_mod
ocean_parameters_mod
ocean_types_mod
ocean_workspace_mod
PUBLIC INTERFACE
PUBLIC ROUTINES
-
ocean_form_drag_init
-
DESCRIPTION
-
Initial set up for parameterized pressure form drag.
-
compute_visc_form_drag
-
DESCRIPTION
-
Compute vertical viscosity arising from parameterized
form drag according to the methods from the Greatbatch TEM approach.
Follow the method of Ferreira and Marshall (2006)
for transitioning through the diabatic surface mixed layer.
We take the surf_blthick from mixed layer schemes (e.g., KPP), and use
this to define the region where the eddy induced velocity has
zero vertical shear. Note that we do not introduce an additional
transitional layer.
There are four methods to compute the vertical viscosity within
the interior, with one required to be chosen:
1/ form_drag_gbatch_f2overN2
visc = kappa*(f/N)^2, with kappa=gm-diffusivity
2/ form_drag_gbatch_f2overNb2
visc = kappa*(f/Nb)^2, with Nb=buoyancy freq just below surface mixed layer
3/ form_drag_gbatch_f2overNo2
visc = kappa*(f/No)^2, with No=constant buoyancy freq
4/ form_drag_gbatch_alpha_f2
visc = alpha*f^2, with alpha = constant (units of m^2*sec)
-
form_drag_accel
-
DESCRIPTION
-
Compute the rho*dz weighted acceleration from the Aiki etal
form drag scheme.
NAMELIST
&ocean_form_drag_nml
-
use_this_module
Needs to be true in order to use this scheme. Default is false.
[logical]
-
debug_this_module
For debugging.
[logical]
-
verbose_init
For verbose initialization information.
[logical]
-
use_form_drag_gbatch
For using the Greatbatch form drag approach, which places
the contributions from "GM" into the momentum equation.
use_form_drag_gbatch, is the traditional transformed
Eulerian mean approach as per Greatbatch and Lamb (1990)
and Greatbatch (1998). In this approach, we modify
visc_cbu so that the the "GM-effects" occur through
vertical viscosity.
Since thise scheme is experimental, it is not recommended
for general use, so we set default
use_form_drag_gbatch=.false.
[logical]
-
form_drag_gbatch_surf_layer
Logical to enable the use of a diabatic layer over which the
eddy-induce velocity is assumed to be constant with depth.
Default form_drag_gbatch_surf_layer=.false.
[logical]
-
ksurf_blayer_min
Minimum number of vertical grid points in the surface turbulent
boundary layer for use with form_drag_gbatch_surf_layer=.true.
Default ksurf_blayer_min=3.
[integer]
-
form_drag_gbatch_alpha_f2
For use of a vertical viscosity with the form_drag_gbatch that is
equal to visc = form_drag_gbatch_alpha * f^2. This form of the
vertical viscosity is used by Ferreira and Marshall, 2006.
Default form_drag_gbatch_alpha_f2=.false.
[logical]
-
form_drag_gbatch_alpha
For use of a vertical viscosity with the form_drag_gbatch that is
equal to visc = form_drag_gbatch_alpha * f^2.
Default form_drag_gbatch_alpha=3e8
[real, units: m^2*sec]
-
form_drag_gbatch_f2overN2
To compute vertical viscosity according to visc=kappa*(f/N)**2
with kappa=gm-diffusivity, f=Coriolis, and N=buoyancy frequency.
This is the form suggested by Greatbatch and Lamb (1990).
Default form_drag_gbatch_f2overN2=.false.
[logical]
-
form_drag_gbatch_f2overNb2
To compute vertical viscosity according to visc=kappa*(f/Nb)**2
with kappa=gm-diffusivity, f=Coriolis, and Nb=buoyancy frequency
just below the diabatic mixed layer. This is the form suggested
by Danabasoglu and Marshall (2007).
Default form_drag_gbatch_f2overNb2=.false.
[logical]
-
form_drag_gbatch_f2overNo2
To compute vertical viscosity according to visc=kappa*(f/No)**2
with kappa=gm-diffusivity, f=Coriolis, and No=constant buoyancy
frequency set via namelist.
Default form_drag_gbatch_f2overNo2=.false.
[logical]
-
form_drag_gbatch_No
To compute vertical viscosity according to visc=kappa*(f/No)**2
with kappa=gm-diffusivity, f=Coriolis, and No=constant buoyancy
frequency. Default form_drag_gbatch_No=5e-3
[real, units: sec^-1]
-
form_drag_gbatch_smooth_N2
For vertically smoothing the squared buoyancy frequency for
use in computing the vertical viscosity in the form drag
approach. Default form_drag_gbatch_smooth_N2=.false.
[logical]
-
num_121_passes
Number of 1-2-1 passes for vertically smoothing the squared
buoyancy frequency. Default num_121_passes=1.
[integer]
-
visc_cbu_form_drag_max
Maximum vertical viscosity used for the form drag contribution
to vertical friction from the Greatbatch TEM approach.
Default visc_cbu_form_drag_max=1m^2/sec.
[real, units: m^2/sec]
-
vel_form_drag_max
For diagnostic purpuses, maximum form drag eddy induced velocity.
Default vel_form_drag_max=1m/sec.
[real, units: m/sec]
-
N_squared_min
Minimum sequared buoyancy frequency (N^2) for use in computing
the vertical viscosity from the Greatbatch form drag scheme.
Default N_squared_min=1e-10.
[real, units: 1/sec]
-
use_form_drag_aiki
For using the Aiki form drag approach.
[logical]
-
cprime_aiki
Dimensionless parameters from the Aiki etal scheme.
Default cprime_aiki=0.3.
[real, units: dimensionless]
-
form_drag_aiki_scale_by_gm
Compute a dimensionless scale function proportional to
the GM-diffusivity, for use with the Aiki etal form
drag scheme. Default form_drag_aiki_scale_by_gm=.false.
[logical]
-
form_drag_aiki_bottom_layer
For implementing the Aiki form drag just in a selected number of
bottom layers. Will still insist that the scheme conserves
momentum, as a form drag scheme should do.
Default form_drag_aiki_bottom_layer=.false.
[logical]
-
form_drag_aiki_bottom_klevels
Number of klevels above the bottom that we choose to close the
Aiki form drag scheme. Default form_drag_aiki_bottom_klevels=3.
This should ideally be less than the minimum number of klevels
in the model.
[integer]
-
form_drag_aiki_scale_by_gradH
For scaling the coefficient used by the form drag scheme with
the bottom slope.
[logical]
-
form_drag_aiki_gradH_power
For scaling the coefficient used by the form drag scheme with
the bottom slope raised to the power "form_drag_aiki_gradH_power".
[real]
-
form_drag_aiki_gradH_max
For scaling setting the maximum of the bottom slope
for use with scaling the form drag coefficient.
Default form_drag_aiki_gradH_max=.05
[logical]
REFERENCES
-
Greatbatch and Lamb, 1990: On parameterizing vertical mixing of
momentum in non eddy-resolving ocean models. Journal of
Physical Oceanography. vol. 20, pages 1634-1637.
-
Greatbatch, 1998: Exploring the relationship betwen eddy-induced
transport velocity, vertical momentum transfer, and the isopycnal
flux of potential vorticity. Journal of Physical Oceanography,
vol. 28, pages 422-432.
-
Aiki, Jacobson, and Yamagata, 2004: Parameterizing ocean eddy transports
from surface to bottom. Geophysical Research Letters, vol. 31.
-
Ferreira and Marshall, 2006: Formulation and implementation of
a residual-mean ocean circulation model. Ocean Modelling,
vol. 13, pages 86--107.
-
Danabosaglu and Marshall, 2007: Effects of vertical variations of thickness
diffusivity in an ocean general circulation model.
Ocean Modelling, vol. 18, pages 122-141.