  SUBROUTINE tssub_advdify(sal,temp &
#ifdef key_substance
                          ,cv_wat   &
#endif
                           )

   !&E---------------------------------------------------------------------
   !&E                 ***  ROUTINE tssub_advdify  ***
   !&E
   !&E ** Purpose : call the good advection scheme depending of the cpp key
   !&E
   !&E ** Description :
   !&E
   !&E ** Called by :
   !&E
   !&E ** External calls :
   !&E
   !&E ** Used ij-arrays : temp,sal,cv_wat
   !&E
   !&E ** Reference :
   !&E
   !&E ** History :
   !&E       !  2008-09  (V. Garnier)  Original code
   !&E       !  2009-04  (A. Mano, V. Garnier) MPI2D
   !&E
   !&E---------------------------------------------------------------------
   !! Modules used
   USE parameters, ONLY : rsh,imin,imax,jmin,jmax,kmax,        &
                          limin,limax,liminm1,limaxp1,limaxp2, &
                          ljmin,ljmax,ljminm1,ljminm2,ljmaxp2
#ifdef key_substance
   USE parameters, ONLY : nb_var
#endif
#ifdef key_tssub_adv_ultimatequickestmacho
   USE comvars2d,  ONLY : nbouc
#endif

   !! * Arguments
   REAL(KIND=rsh),DIMENSION(kmax,liminm1:limaxp2,ljminm1:ljmaxp2),       INTENT(in) :: temp,sal
#ifdef key_substance
   REAL(KIND=rsh),DIMENSION(nb_var,kmax,liminm1:limaxp2,ljminm1:ljmaxp2),INTENT(in) :: cv_wat
#endif

   !!----------------------------------------------------------------------
   !! * Executable part

#ifdef key_tssub_adv_ultimatequickest
   CALL tssub_advdify_uq(sal,temp        &
#ifdef key_substance
                                 ,cv_wat &
#endif
                                         )

#elif key_tssub_adv_ultimatequickestmacho
   IF (MOD(nbouc,2) == 0) THEN
     CALL tssub_advdify_uq(sal,temp        &
#ifdef key_substance
                                   ,cv_wat &
#endif
                                         )
   ELSE
     CALL tssub_advdify_uqm(sal,temp        &
#ifdef key_substance
                                    ,cv_wat &
#endif
                                         )
   END IF

#elif key_tssub_adv_fifthorder
   CALL tssub_advdify_fifthorder(sal,temp  &
#ifdef key_substance
                                    ,cv_wat &
#endif
                                         )

#elif key_tssub_adv_fourthorder
   CALL tssub_advdify_fourthorder(sal,temp  &
#ifdef key_substance
                                    ,cv_wat &
#endif
                                         )

#else
   CALL tssub_advdify_quickupwind(sal,temp        &
#ifdef key_substance
                                          ,cv_wat &
#endif
                                         )

#endif

  END SUBROUTINE tssub_advdify
