Initialize the fourth order and sixth order advection fields.
mdfl_init
DESCRIPTION
Initialize mdfl specific fields.
horz_advect_tracer
DESCRIPTION
Compute horizontal advection of tracers
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.
horz_advect_tracer_upwind
DESCRIPTION
Compute horizontal advection of tracers from first order upwind.
This scheme is positive definite but very diffusive.
horz_advect_tracer_2nd_order
DESCRIPTION
Compute horizontal advection of tracers from
second order centered differences.
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.
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.
horz_advect_tracer_quicker
DESCRIPTION
Compute horizontal advection of tracers from quicker.
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.
vert_advect_tracer_upwind
DESCRIPTION
Compute vertical advection of tracers from first order upwind.
This scheme is positive definite, but very diffusive.
vert_advect_tracer_2nd_order
DESCRIPTION
Compute vertical advection of tracers from second order centered
differences.
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.
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.
vert_advect_tracer_quicker
DESCRIPTION
Compute vertical advection of tracers from quicker.
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.
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.
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
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]