Module ocean_convect_mod
OVERVIEW
Vertically adjusts gravitationally unstable columns of ocean fluid.
This module vertically adjusts gravitationally unstable columns of
ocean fluid. Three algorithms are available:
1. Full convection from Rahmstorf. The algorithm produces a fully
stable fluid column. Since most convection propagates downward, the
scheme looks downward first and follows any instability (upward or
downward) before checking the other direction. The routine mixes
passive tracers only after the entire instability is found.
2. Full convection from Rahmstorf as optimized for vector machines
by Russ Fiedler.
3. The Cox (1984) NCON-scheme. This scheme is recommended only
for those wishing to maintain legacy code.
OTHER MODULES USED
diag_manager_mod
fms_mod
ocean_density_mod
ocean_domains_mod
ocean_parameters_mod
ocean_types_mod
ocean_workspace_mod
PUBLIC INTERFACE
PUBLIC DATA
None.
PUBLIC ROUTINES
-
ocean_convect_init
-
DESCRIPTION
- Initialize the convection module.
For the full convection module, we register two fields
for diagnostic output.
ktot = number of levels convected in a vertical column
kven = number of levels ventilated in a vertical column
Note that ktot can in rare cases count some levels twice, if they
get involved in two originally separate, but then
overlapping convection areas in the water column. The field
kven is 0 on land, 1 on ocean points with no
convection, and any value up to nk on convecting points.
-
convection
-
DESCRIPTION
- Subroutine calls one of the two possible convection schemes.
-
convection_full_scalar
-
DESCRIPTION
- Subroutine to vertically adjust gravitationally unstable columns of ocean fluid.
Produces updated values for all the tracers. Code implemented on scalar
machines at GFDL. Has been found to be slow on vector machines. Use
convection_full_vector for vector machines.
internal variables:
chk_la = logical flag to check level above kt
chk_lb = logical flag to check level below kb
kb = bottom level of (potential) instability
kbo = bottom level of ocean
kt = top level of (potential) instability
la = test level above kt
lb = test level below kb
rl = lower level density referenced to lower level
ru = upper level density referenced to lower level
tmx = mixed tracer (1=temp, 2=salt, 3=other)
tsm = sum of tracers (weighted by thickness) in the instability
zsm = total thickness of the instability
-
convection_full_vector
-
DESCRIPTION
- Subroutine to vertically adjust gravitationally unstable columns of ocean fluid.
Produces updated values for all the tracers. Code implemented on vector
machines at CSIRO. Has been found to be faster on these machines than
convection_full_scalar. Answers differ, but not significantly.
Code written by russell.fiedler@csiro.au
most recently modified Aug2005
internal variables:
chk_la = logical flag to check level above kt
chk_lb = logical flag to check level below kb
kb = bottom level of (potential) instability
kbo = bottom level of ocean
kt = top level of (potential) instability
la = test level above kt
lb = test level below kb
rl = lower level density referenced to lower level
ru = upper level density referenced to lower level
tmx = mixed tracer (1=temp, 2=salt, 3=other)
tsm = sum of tracers (weighted by thickness) in the instability
zsm = total thickness of the instability
-
convection_ncon
-
DESCRIPTION
- "ncon" convection scheme
Convectively adjust water column if gravitationally unstable.
Based on algorithm from Mike Cox used in his code from 1984.
Algorithm has well known problems with incomplete homogenization
and sensitivity to the ncon parameter.
Coded in mom4 for legacy purposes by Stephen.Griffies@noaa.gov
April 2001
NAMELIST
&ocean_convect_nml
-
use_this_module
Must be true to use this module. Default is false.
[logical]
-
convect_ncon
If true, will use the old NCON convection scheme from Cox. Recommended only
if wishing to reproduce old results.
[logical]
-
ncon
Number of passes through the NCON-scheme.
[integer]
-
convect_full_scalar
If true, will use the full convection scheme as implemented at GFDL for scalar
machines.
[logical]
-
convect_full_vector
If true, will use the full convection scheme as optimized for vector machines
by Russ Fiedler.
[logical]
DATA SETS
None.
ERROR MESSAGES
None.
REFERENCES
- Stefan Rahmstorf (Ocean Modelling, 1993 vol 101 pages 9-11)
COMPILER SPECIFICS
None.
PRECOMPILER OPTIONS
None.
LOADER OPTIONS
None.
TEST PROGRAM
None.
KNOWN BUGS
None.
NOTES
Implementation of the full convection scheme is
based on mom2/3 code by Stefan Rahmstorf
(rahmstorf@pik-potsdam.de). But modified slightly
for efficiency purposes in mom3.1
by M. Eby (eby@uvic.ca) in June 2000. Notably, Eby
eliminated goto statements.
The Eby code was ported to mom4 by Griffies (Stephen.Griffies@noaa.gov).
To recover the exact same numerical values as the original
Rahmstorf code, look for the two "Rahmstorf" comments in the code.
FUTURE PLANS
None.