subroutine adv_upstream_2dh(dt,f,fi,Di,adv,U,V,Dn,DU,DV, &
#if defined(SPHERICAL) || defined(CURVILINEAR)
dxv,dyu,dxu,dyv,arcd1, &
#endif
AH,az)
Note (KK): Keep in sync with interface in advection.F90
DESCRIPTION:
In this routine, the first-order upstream advection scheme is applied for the two horizontal directions in one step. The scheme should be positive definite and of high resolution. In order to remove truncation errors which might in Wadden Sea applications cause non-monotonicity, a truncation of over- and undershoots is carried out at the end of this subroutine. Such two-dimensional schemes are advantageous in Wadden Sea applications, since one-dimensional directional-split schemes might compute negative intermediate depths. USES:
use domain, only: imin,imax,jmin,jmax
#if !( defined(SPHERICAL) || defined(CURVILINEAR) )
use domain, only: dx,dy,ard1
#endif
$ use omp_lib
IMPLICIT NONE
INPUT PARAMETERS:
REALTYPE,intent(in) :: dt,AH
REALTYPE,dimension(E2DFIELD),intent(in) :: f,U,V,Dn,DU,DV
#if defined(SPHERICAL) || defined(CURVILINEAR)
REALTYPE,dimension(:,:),pointer,contiguous,intent(in) :: dxu,dyu
REALTYPE,dimension(_IRANGE_HALO_,_JRANGE_HALO_-1),intent(in) :: dxv,dyv
REALTYPE,dimension(E2DFIELD),intent(in) :: arcd1
#endif
integer,dimension(E2DFIELD),intent(in) :: az
INPUT/OUTPUT PARAMETERS:
REALTYPE,dimension(E2DFIELD),intent(inout) :: fi,Di,advLOCAL VARIABLES:
integer :: i,j,ii,jj
REALTYPE :: Dio,advn
REALTYPE,dimension(E2DFIELD) :: uflux,vflux
REALTYPE,dimension(E2DFIELD) :: cmin,cmax
REVISION HISTORY:
Original author(s): Hans Burchard & Karsten Bolding