adv_arakawa_j7_2dh - 2DH Arakawa J7 advection of 2D quantities

INTERFACE:

    subroutine adv_arakawa_j7_2dh(dt,f,fi,Di,adv,vfU,vfV,Dn,DU,DV,  &
 #if defined(SPHERICAL) || defined(CURVILINEAR)
                                  dxv,dyu,dxu,dyv,arcd1,            &
 #endif
                                  AH,az,                            &
                                  mask_uflux,mask_vflux,mask_xflux)
    Note (KK): Keep in sync with interface in advection.F90
DESCRIPTION:

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),target,intent(in)               :: f
    REALTYPE,dimension(E2DFIELD),intent(in)                      :: vfU,vfV,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
    logical,dimension(:,:),pointer,contiguous,intent(in)         :: mask_uflux,mask_xflux
    logical,dimension(_IRANGE_HALO_,_JRANGE_HALO_-1),intent(in)  :: mask_vflux
INPUT/OUTPUT PARAMETERS:
    REALTYPE,dimension(E2DFIELD),target,intent(inout)            :: fi,Di,adv
LOCAL VARIABLES:
    logical                      :: use_AH
    integer                      :: i,j,matsuno_it
    REALTYPE                     :: Dio,advn
    REALTYPE,dimension(:,:),pointer,contiguous :: faux,p_fiaux,p_Diaux,p_advaux
    REALTYPE,dimension(E2DFIELD) :: flux_e,flux_n,flux_ne,flux_nw
    REALTYPE,dimension(E2DFIELD) :: f_e,f_n,f_ne,f_nw
    REALTYPE,dimension(E2DFIELD),target :: fiaux,Diaux,advaux
    REALTYPE,dimension(E2DFIELD) :: uflux,vflux
    REALTYPE,parameter           :: one3rd = _ONE_/_THREE_
    REALTYPE,parameter           :: one6th = one3rd/_TWO_
REVISION HISTORY:
    Original author(s): Knut Klingbeil