PUBLIC INTERFACE ~ PUBLIC DATA ~ PUBLIC ROUTINES ~ NAMELIST ~ DIAGNOSTIC FIELDS ~ ERROR MESSAGES ~ REFERENCES ~ NOTES

Module ocean_convect_mod

Contact:  Stephen M. Griffies R. Fiedler
Reviewers: 
Change History: WebCVS Log


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

ocean_convect_init:
convection:
convection_full_scalar:
convection_full_vector:
convection_ncon:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. 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.


  2. convection

    DESCRIPTION
    Subroutine calls one of the two possible convection schemes.


  3. 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



  4. 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



  5. 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

  1. 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.


top