PUBLIC INTERFACE ~ PUBLIC ROUTINES ~ NAMELIST

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. 4. Legacy (pre TEOS-10) versions now supplied. In TEOS-10 we need to mix S_prog, fdelta first, and then compute S_A. This approach is not the same as mixing S_A directly.


OTHER MODULES USED

        constants_mod
diag_manager_mod
fms_mod
mpp_mod
ocean_density_mod
ocean_domains_mod
ocean_parameters_mod
ocean_tracer_util_mod
ocean_types_mod
ocean_workspace_mod

PUBLIC INTERFACE

ocean_convect_init:
convection:
convection_full_scalar:
convection_full_vector:
convection_ncon:
convection_full_scalar_preteos10:
convection_full_vector_preteos10:
convection_diag:
watermass_diag_init:
watermass_diag:


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=fdelta, 4=other) tsm = sum of tracers (weighted by thickness) in the instability zsm = total thickness of the instability rho_salinity_mx = computed density salinity resulting from mixing of tracers.


  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 Aug2011 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 rho_salinity_mx = computed density salinity resulting from mixing of tracers.


  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 April 2001


  6. convection_full_scalar_preteos10

    DESCRIPTION
    This routine is a legacy version which is consistent with using the old equation of state. 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_preteos10 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


  7. convection_full_vector_preteos10

    DESCRIPTION
    This routine is a legacy version which is consistent with using the old equation of state. 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_preteos10. Answers differ, but not significantly. Code written by russell.fiedler@csiro.au most recently modified Aug2011 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


  8. convection_diag

    DESCRIPTION
    Some diagnostics for convection.


  9. watermass_diag_init

    DESCRIPTION
    Initialization of watermass diagnostic output files.


  10. watermass_diag

    DESCRIPTION
    Diagnose effects from convection of temp and salt on the watermass transformation diagnostics.



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. Retained only for legacy purposes to reproduce very 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 russell.fiedler@csiro.au.
[logical]


REFERENCES

  1. Stefan Rahmstorf (Ocean Modelling, 1993 vol 101 pages 9-11)


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

To recover the exact same numerical values as the original Rahmstorf code, look for the two "Rahmstorf" comments in the code.


top