Module ocean_bih_friction_mod
OVERVIEW
This module computes thickness weighted time tendency for horizontal
velocity arising from horizontal biharmonic friction.
This module computes thickness weighted time tendency for horizontal
velocity arising from horizontal biharmonic friction.
The viscosity used to determine the strength of the tendency
can be a general function of space and time as specified by
the Smagorinsky approach as well as a grid-scale dependent
background viscosity. The form of the friction operator
can be isotropic or anisotropic in the horizontal plane.
OTHER MODULES USED
constants_mod
diag_manager_mod
fms_mod
mpp_domains_mod
mpp_mod
ocean_domains_mod
ocean_operators_mod
ocean_types_mod
PUBLIC INTERFACE
PUBLIC DATA
None.
PUBLIC ROUTINES
-
ocean_bih_friction_init
-
DESCRIPTION
- Initialize the horizontal biharmonic friction module by
registering fields for diagnostic output and performing some
numerical checks to see that viscosity is set appropriately.
-
horz_bih_friction
-
DESCRIPTION
- This function computes the time tendency for horizontal
velocity (i.e., the acceleration) from horizontal biharmonic friction.
The algorithm is derived from a functional approach that ensures kinetic
energy is consistenty dissipated for all flow configurations.
The triad do-loops are expanded in order to enhance the
ability of cache-based machines to keep most of the variables
on-cache.
Fundamental to the scheme are the rates of horizontal deformation
horizontal tension = DT = (dy)(u/dy)_x - (dx)(v/dx)_y
horizontal strain = DS = (dx)(u/dx)_y + (dy)(v/dy)_x
Units of the tension and strain are sec^-1.
Four tensions and four strains are computed for each velocity point,
corresponding to the four triads surrounding the point.
The following notation is used to distinguish the triads:
(0,1)=northwest triad (1,1)=northeast triad,
(0,0)=southwest triad, (1,0)=southeast triad
A triad contributes when at least one of its velocities is
not a land point. In order to obtain the correct tension
and strain next to boundaries, tension and strain should not be
masked with umask.
As shown in Griffies and Hallberg (2000),
a biharmonic operator with a nonconstant viscosity is guaranteed to
dissipate kinetic energy *only* when using the sqrt of the biharmonic
viscosity at each of the two stages of the algorithm.
The sqrt approach is employed here.
-
BDX_EU_smag
-
DESCRIPTION
- Compute backwards Derivative in X of a quantity defined on the east
face of a U-cell. Slightly modified version of BDX_EU used in
ocean_operators.F90. If input is a(i,j) then output is defined
at (i-1/2,j).
BDX_EU_smag changes dimensions by m^-3
-
INPUT
-
a | field defined on the east face of a U-cell [real, dimension(isd:ied,jsd:jed)] |
-
BDY_NU_smag
-
DESCRIPTION
- Compute backwards Derivative in Y of a quantity defined on the north
face of a U-cell. Slightly modified version of BDY_EU used in
ocean_operators.F90. If input is a(i,j) then output is defined
at (i,j-1/2).
BDY_EU_smag changes dimensions by m^-3
-
INPUT
-
a | field defined on the north face of a U-cell [real, dimension(isd:ied,jsd:jed)] |
-
horz_bih_viscosity_check
-
DESCRIPTION
- Subroutine to perform linear stability check for the biharmonic
operator given a value for the horizontal biharmonic viscosity.
-
horz_bih_reynolds_check
-
DESCRIPTION
- Subroutine to compute the biharmonic grid Reynolds number. Large
Reynolds numbers indicate regions where solution may experience
some grid noise due to lack of enough horizontal friction.
NAMELIST
&ocean_bih_friction_general_nml
-
bih_friction_on
Must be true to use this module.
[logical]
-
k_smag_iso
This is the dimensionless Smagorinsky coefficient used to set the scale
of the Smagorinsky isotropic viscosity.
[real, units: dimensionless]
-
k_smag_aniso
This is the dimensionless Smagorinsky coefficient used to set the scale
of the Smagorinsky anisotropic viscosity.
[real, units: dimensionless]
-
vel_micom_iso
Velocity scale that is used for computing the MICOM isotropic viscosity.
[real, units: m/sec]
-
vel_micom_aniso
Velocity scale that is used for computing the MICOM anisotropic viscosity.
[real, units: m/sec]
-
equatorial_zonal
Orient the anisotropic friction within a latitudinal band according to zonal direction.
[real]
-
equatorial_zonal_lat
Latitudinal band to use the zonal friction orientation.
[real]
-
eq_vel_micom_iso
Velocity scale that is used for computing the MICOM isotropic viscosity within
a user specified equatorial band.
[real]
-
eq_vel_micom_aniso
Velocity scale that is used for computing the MICOM anisotropic viscosity within
a user specified equatorial band.
[real]
-
eq_lat_micom
Equatorial latitude band (degrees) within which the MICOM viscosity is set according
to eq_vel_micom_iso and eq_vel_micom_aniso.
[real]
-
bottom_5point
To alleviate problems with small partial cells, it is often necessary to reduce the
operator to the traditional 5-point Laplacian at the ocean bottom. This logical
implements this mixing. Velocity scale that is used for computing the MICOM viscosity for 5point Laplacian
at the bottom.
[logical]
DATA SETS
None.
ERROR MESSAGES
None.
REFERENCES
- S.M. Griffies and R.W. Hallberg,
Biharmonic friction with a Smagorinsky viscosity for use in large-scale
eddy-permitting ocean models
Monthly Weather Review vol 128 (2000) pages 2935--2946
- R. D. Smith and J. C. McWilliams,
Anisotropic viscosity for ocean models
Ocean Modelling submitted 2002
COMPILER SPECIFICS
None.
PRECOMPILER OPTIONS
None.
LOADER OPTIONS
None.
TEST PROGRAM
None.
KNOWN BUGS
None.
NOTES
The ocean model can generally run with both Laplacian and biharmonic friction
enabled at the same time. Such has been found useful for some eddying
ocean simulations.
FUTURE PLANS
None.