Next: advpbv_n.F
Up: The Proudman Oceanographic Laboratory
Previous: advpbu_n.F
Subsections
advpbv.F
subroutine advpbv (ba, hin, hout)
The subroutine performs advection of any scalar variable in the
(or
)
direction by PPM (the piecewise parabolic method). This method ensures
positivity and scalar conservation with a minimum of numerical diffusion.
The routine is directionally split, first advecting in the
direction, then
in the vertical. The routine returns new values of the scalar at the original
or
levels and a new total depth. The vertical advection is
performed by considering control volumes, which are remapped on to the
original
or
levels. An alternative (`new') method is chosen if the
CFL condition is violated in the vertical; this method allows any value of
vertical Courant number.
When preceded by advpbu, which advects in the
(or
)
direction, followed by a vertical advection, a complete directionally
split advection cycle has been performed, and a final total depth has been
returned. Since advection is performed on the longer baroclinic time step DT,
the final depth, which is given by the volume fluxes, should be equal to the
final depth over the corresponding number of barotropic time steps. This is
ensured by making the volume fluxes used equal to the sum of barotropic volume
fluxes. The routine advect_sca controls the order of
advection in the two horizontal directions: this may alternate on successive
time steps.
A laplacian horizontal diffusive flux can be included at the intermediate stage,
with either a fixed or Smagorinsky diffusity
(see htmlrefhorizdiffusivityhorizdiffusivity)
See advpbu
- ba value of scalar variable, returns new value
- hin initial depth
- hout final depth
- b2 intermediate value of advected scalar
- bl,br value of parabola at left and right of interval
- d2b value of
- dba difference of
- dfl2 flux difference
- dmb value of
- ds2 difference between intermediate sigma levels
- dsig difference between intermediate and original sigma levels
- fba scalar flux
- fvv volume flux
- sigo3 intermediate sigma levels
- i,j,k,icg,jcg,jlb,jub grid indices
- tagba,tagdba,tagdmb,tagd2b,tagu,tagh,tagbr,tagbl
,tagfu,tagfba integers used in Exch3DS and Exch3DR routines
- a1,a2,a3,b6,bdl,bdr,delb,delb2,delb6 variables used in parabola
calculations (see above description)
- eti,ett variables used in steepening option
- e1,e2,eps parameters used in steepening option
- aip mask variable used in flux calculations
- rcdal length of grid box side in lat-long coordinates
- xdb used in setting parabolas in vertical with uneven grid spacing
- xi length over which parabola is integrated to give flux
- advmask logical variable based on mask
- ivi 0 or 1 whether or not vertical Courant number is
- k1,k0,ka,kb,kc vertical indices used in `new' vertical advection
scheme
- dsi sigma coordinate differences used in `new' vertical
advection scheme
- baa,bab,bat variables used in `new' vertical advection scheme
- inv3,inv6 1/3,1/6
- HD imposed horizontal diffusive flux
- pri turbulent Prandlt number (inverse)
Only used in debugging option.
- none
- Calculate parabolas in horizontal
- Steepen (optional) and monotonise parabolas
- Calculate horizontal fluxes and intermediate
levels
- Calculate parabolas in vertical
- Steepen (optional) and monotonise parabolas
- Calculate intermediate value of ba with horizontal diffusion if
required.
- Redistribute on to original
or
levels
- Exch3DS, Exch3DR
- MPI_GatherV
- advect_sca
- adv_bc advective boundary conditions
- DEBUG, DEBUG_ADV outputs debugging information
- TIMING_ADV timing of advection routines
- SCOORD
-level spacing varies horizontally
- NOSTEEP turns off steepening during horizontal calculation
- NOSTEEPZ turns off steepening during vertical calculation
- HORIZ_DIF_TS Horizontal diffusion of T and S on
-levels
Limitations of directional splitting
Next: advpbv_n.F
Up: The Proudman Oceanographic Laboratory
Previous: advpbu_n.F
The AMMP Project
2005-04-20