next up previous
Next: advpbv.F Up: The Proudman Oceanographic Laboratory Previous: advpbu.F

Subsections


advpbu_n.F


subroutine advpbu_n (ba,nv,hin,hout)

Description

The subroutine performs advection of a number of scalar variables simultaneously in the $u$ (or $x$) 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 $u$ direction, then in the vertical. The routine returns new values of the scalar at the original $\sigma $ or $s$ levels and a new total depth. The vertical advection is performed by considering control volumes, which are remapped on to the original $\sigma $ or $s$ 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.

The routine is similar to advpbu except that the simultaneous advection of several scalars saves recalculation of such variables as volume fluxes and control volume displacements. This is particularly useful when there is a large number of scalar variables, as in spm (suspended particulate matter) or ecological models.

When followed by advpbv_n, which advects in the $v$ (or $y$) direction, followed by a further 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 calling routine controls the order of advection in the two horizontal directions: this may alternate on successive time steps.

Numerical Equations

See advpbu.

Subroutine Arguments

ba value of scalar variable, returns new value
nv number of scalar variables
hin initial depth
hout final depth

Local variables

b2 intermediate value of advected scalar
bl,br value of parabola at left and right of interval
d2b value of $\delta^2 b$
dba difference of $ba$
dfl2 flux difference
dmb value of $\delta_m b$
ds2 difference between intermediate sigma levels
dsig difference between intermediate and original sigma levels
fba scalar flux
fuu volume flux
sigo3 intermediate sigma levels
i,j,k,icg,jcg,ilb,iub grid indices
iv counter for scalars
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)
f1,f2 used in vertical advection calculation
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 $< 1$
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

Logical units

Only used in debugging option.

Global variables changed

none

Order of Things

  1. Calculate parabolas in horizontal
  2. Steepen (optional) and monotonise parabolas
  3. Calculate horizontal fluxes and intermediate $\sigma $ levels
  4. Calculate parabolas in vertical
  5. Steepen (optional) and monotonise parabolas
  6. Redistribute on to original $\sigma $ or $s$ levels

Calls

Exch3DS, Exch3DR
MPI_GatherV

Called By

advect_spm or other cross-discipline code

Options - Logical

adv_bc advective boundary conditions

Options - Compiler

DEBUG, DEBUG_ADV outputs debugging information
TIMING_ADV timing of advection routines
SCOORD $\sigma $-level spacing varies horizontally
NOSTEEP turns off steepening during horizontal calculation
NOSTEEPZ turns off steepening during vertical calculation

Known Issues

Limitations of directional splitting Is due to replace signle variable advection routines


next up previous
Next: advpbv.F Up: The Proudman Oceanographic Laboratory Previous: advpbu.F
The AMMP Project 2005-04-20