INTERFACE:
module advection_3dDESCRIPTION:
This module does 3D advection of scalars. The module follows the same convention as the other modules in 'getm'. The module is initialised by calling 'init_advection_3d()'. In the time-loop 'do_advection_3d' is called. 'do_advection_3d' is a wrapper routine which - dependent on the actual advection scheme chosen - makes calls to the appropriate subroutines, which may be done as one-step or multiple-step schemes. The actual subroutines are coded in external FORTRAN files. New advection schemes are easily implemented - at least from a program point of view - since only this module needs to be changed. Additional work arrays can easily be added following the stencil given below. To add a new advection scheme three things must be done:
use domain, only: imin,imax,jmin,jmax,kmax
use advection
IMPLICIT NONE
private
PUBLIC DATA MEMBERS:
public init_advection_3d, do_advection_3d,print_adv_settings_3d
integer,public :: adv_ver_iterations=1
integer,public,parameter :: HVSPLIT=3,W_TAG=33
character(len=64),public,parameter :: adv_splits_3d(0:3) = &
(/"no split: one 3D uvw step ", &
"full step splitting: u + v + w ", &
"half step splitting: u/2 + v/2 + w + v/2 + u/2", &
"hor/ver splitting: uv + w "/)
REVISION HISTORY:
Original author(s): Karsten Bolding & Hans Burchard