Next: advset.F
Up: The Proudman Oceanographic Laboratory
Previous: advpu.F
Subsections
advpuv.F
subroutine advpuv (ua, hin, hout)
The subroutine performs advection of any variable defined on
velocity points in the
(or
)
direction by PPM (the piecewise parabolic method). This method ensures
positivity and conservation with a minimum of numerical diffusion.
Hence momentum is conserved, neglecting density variations (consistent with
the Boussinesq approximation).
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 advpuu, which advects in the
(or
)
direction, followed by a further vertical advection, a complete directionally
split advection cycle has been performed, and a final total depth has been
returned.
The routine advect_vel 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)
This routine requires the input variable ua to have an uptodate halo
see advpbu for the numerics of parabola fitting.
- ua value of advected variable, returns new value
- hin initial depth
- hout final depth
- b2 intermediate value of advected variable
- 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
- fuu volume flux
- sigo3 intermediate sigma levels
- i,j,k,jcg grid indices
- tagua,tagdba,tagdmb,tagd2b,tagv,tagh,taghu,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
- ui 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
- 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
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_vel
- 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 Horizontal diffusion of u and v on
-levels
Limitations of directional splitting
Next: advset.F
Up: The Proudman Oceanographic Laboratory
Previous: advpu.F
The AMMP Project
2005-04-20