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

Module ocean_tracer_advect_mod

Contact:  Matt Harrison Ron Pacanowski S. M. Griffies John Dunne Alistair Adcroft J. Simeon
Reviewers: 
Change History: WebCVS Log


OVERVIEW

This module computes thickness weighted tracer advection tendencies.

This module computes thickness weighted tracer advection tendencies using a variety of advection schemes.


OTHER MODULES USED

          fms_mod
mpp_domains_mod
mpp_mod
diag_manager_mod
ocean_domains_mod
ocean_obc_mod
ocean_topog_mod
ocean_types_mod

PUBLIC INTERFACE

tracer_advection_init:
quicker_init:
fourth_sixth_init:
mdfl_init:
horz_advect_tracer:
vert_advect_tracer:
horz_advect_tracer_upwind:
horz_advect_tracer_2nd_order:
horz_advect_tracer_4th_order:
horz_advect_tracer_6th_order:
horz_advect_tracer_quicker:
horz_advect_tracer_quickmom3:
vert_advect_tracer_upwind:
vert_advect_tracer_2nd_order:
vert_advect_tracer_4th_order:
vert_advect_tracer_6th_order:
vert_advect_tracer_quicker:
vert_advect_tracer_quickmom3:
advect_tracer_mdfl_sub_b:
advect_tracer_mdfl_sweby:
advect_tracer_sweby_all:


PUBLIC DATA

None.


PUBLIC ROUTINES

  1. tracer_advection_init

    DESCRIPTION
    Initialize the tracer advection module.


  2. quicker_init

    DESCRIPTION
    Initialize quicker specific fields.


  3. fourth_sixth_init

    DESCRIPTION
    Initialize the fourth order and sixth order advection fields.


  4. mdfl_init

    DESCRIPTION
    Initialize mdfl specific fields.


  5. horz_advect_tracer

    DESCRIPTION
    Compute horizontal advection of tracers


  6. vert_advect_tracer

    DESCRIPTION
    Compute vertical advection of tracers. Note that the mdfl-schemes are three-dimensional, with full advection tendency computed in horz_advect_tracer. So no need to do anything here if they are chosen.



  7. horz_advect_tracer_upwind

    DESCRIPTION
    Compute horizontal advection of tracers from first order upwind. This scheme is positive definite but very diffusive.


  8. horz_advect_tracer_2nd_order

    DESCRIPTION
    Compute horizontal advection of tracers from second order centered differences.


  9. horz_advect_tracer_4th_order

    DESCRIPTION
    Compute horizontal advection of tracers from fourth order centered differences. NOTE: this code does not account for non-uniform grids.


  10. horz_advect_tracer_6th_order

    DESCRIPTION
    Compute horizontal advection of tracers from sixth order centered differences. NOTE: this code does not account for non-uniform grids.


  11. horz_advect_tracer_quicker

    DESCRIPTION
    Compute horizontal advection of tracers from quicker.


  12. horz_advect_tracer_quickmom3

    DESCRIPTION
    Compute horizontal advection of tracers from quicker using MOM3 masking. This method has proven useful for reproducing MOM3 results with MOM4.


  13. vert_advect_tracer_upwind

    DESCRIPTION
    Compute vertical advection of tracers from first order upwind. This scheme is positive definite, but very diffusive.


  14. vert_advect_tracer_2nd_order

    DESCRIPTION
    Compute vertical advection of tracers from second order centered differences.


  15. vert_advect_tracer_4th_order

    DESCRIPTION
    Compute vertical advection of tracers from fourth order centered differences. NOTE: this code does not account for non-uniform grids.


  16. vert_advect_tracer_6th_order

    DESCRIPTION
    Compute vertical advection of tracers from sixth order centered differences. NOTE: this code does not account for non-uniform grids.


  17. vert_advect_tracer_quicker

    DESCRIPTION
    Compute vertical advection of tracers from quicker.


  18. vert_advect_tracer_quickmom3

    DESCRIPTION
    Compute vertical advection of tracers from quicker using MOM3 masking. This method has proven useful for reproducing MOM3 results with MOM4.


  19. advect_tracer_mdfl_sub_b

    DESCRIPTION
    Compute tendency due to 3D advection of tracers using a multi-dimensional flux-limited method. This method differs from other methods in the following ways:

    1) Horizontal and vertical advection are combined 2) Calculations of the three coordinates (Z, X, Y) are performed sequentially as updates to the tracer, so that the advection components for X and Y depend on Z and Z,Y respectively... This helps limit the flux. 3) During the update for each direction, the 2nd order Super-B flux limiter is applied. 4) Flux divergence is included within the calculation to also help limit the flux: - During the update for each direction, the divergence in each direction is added. - During the overall tendency calculated, the divergence in all three directions is removed. 5) All fluxes are functions of the tracer field at the taum1 time step. This means that this method is ideally suited for the twolevel time stepping scheme, in which "taum1=tau", thus enabling twice the tracer time step available for the threelevel scheme.

    The calculation proceeds as follows:

    IMPORTANT NOTE: If this scheme is used at all, it must be used as the option for BOTH horizontal and vertical advection. In the the tracer tendency, it is applied as the horizontal term, but applies to vertical as well, for which case the vertical term in the tracer tendency equation is set to zero.

    This scheme was ported to mom4 from the MIT-GCM by John Dunne and Alistair Adcroft during Summer 2003

    smg: 3/3/2004 need to generalize to thickness weighted algorithm. Presently is in terms of pure advection tendency. Not clean, though may be workable.



  20. advect_tracer_mdfl_sweby

    DESCRIPTION
    Compute tendency due to 3D advection of tracers using a multi-dimensional flux-limited method. This method differs from other methods in the following ways:

    1) Horizontal and vertical advection are combined 2) Calculations of the three coordinates (Z, X, Y) are performed sequentially as updates to the tracer, so that the advection components for X and Y depend on Z and Z,Y respectively... This helps limit the flux. 3) During the update for each direction, the 3rd order Sweby flux limiter is applied. 4) Flux divergence is included within the calculation to also help limit the flux: - During the update for each direction, the divergence in each direction is added. - During the overall tendency calculated, the divergence in all three directions is removed. 5) All fluxes are functions of the tracer field at the taum1 time step. This means that this method is ideally suited for the twolevel time stepping scheme, in which "taum1=tau", thus enabling twice the tracer time step available for the threelevel scheme.

    The calculation proceeds as follows:

    IMPORTANT NOTE: If this scheme is used at all, it must be used as the option for BOTH horizontal and vertical advection. In the the tracer tendency, it is applied as the horizontal term, but applies to vertical as well, for which case the vertical term in the tracer tendency equation is set to zero.

    This scheme was ported to mom4 from the MIT-GCM by John Dunne and Alistair Adcroft during Summer 2003

    Griffies: 5/27/04 Optimized by filling 3d arrays prior to sending for mpp_update_domains


  21. advect_tracer_sweby_all

    DESCRIPTION
    Griffies: June 2004

    Sweby scheme optimized by doing all tracers at once, so can send larger packet to mpp_update_domains.

    This scheme is available ONLY when advecting all tracers with the sweby scheme (which is the common case at GFDL).

    This scheme has not been ported to the OBC, though such port is likely trivial to do.




NAMELIST

&ocean_tracer_advect_nml

limit_with_upwind
If true, will compute tracer fluxes entering a cell using upwind if the tracer value is outside a specified range. Implemented only for quick at this time. This is an ad hoc and incomplete attempt to maintain monotonicity with the quicker scheme.
[logical]
debug_tracer_advect
For debugging
[logical]


DATA SETS

None.


ERROR MESSAGES

None.


top