advpuv.F

subroutine advpuv (ua, hin, hout)

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

**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

- 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