Index: branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_top
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_top	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_top	(revision 3718)
@@ -29,10 +29,11 @@
 &namtrc_adv    !   advection scheme for passive tracer 
 !-----------------------------------------------------------------------
-   ln_trcadv_cen2   =  .false.  !  2nd order centered scheme   
-   ln_trcadv_tvd    =  .true.  !  TVD scheme
-   ln_trcadv_muscl  =  .false.   !  MUSCL scheme
-   ln_trcadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries
-   ln_trcadv_ubs    =  .false.  !  UBS scheme
-   ln_trcadv_qck    =  .false.  !  QUICKEST scheme
+   ln_trcadv_cen2    =  .false.  !  2nd order centered scheme   
+   ln_trcadv_tvd     =  .true.   !  TVD scheme
+   ln_trcadv_muscl   =  .false.  !  MUSCL scheme
+   ln_trcadv_muscl2  =  .false.  !  MUSCL2 scheme + cen2 at boundaries
+   ln_trcadv_ubs     =  .false.  !  UBS scheme
+   ln_trcadv_qck     =  .false.  !  QUICKEST scheme
+   ln_trcadv_msc_ups =  .false.  !  use upstream scheme within muscl
 /
 !-----------------------------------------------------------------------
Index: branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_top
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_top	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_top	(revision 3718)
@@ -46,10 +46,11 @@
 &namtrc_adv    !   advection scheme for passive tracer 
 !-----------------------------------------------------------------------
-   ln_trcadv_cen2   =  .false.  !  2nd order centered scheme   
-   ln_trcadv_tvd    =  .true.   !  TVD scheme
-   ln_trcadv_muscl  =  .false.  !  MUSCL scheme
-   ln_trcadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries
-   ln_trcadv_ubs    =  .false.  !  UBS scheme
-   ln_trcadv_qck    =  .false.  !  QUICKEST scheme
+   ln_trcadv_cen2    =  .false.  !  2nd order centered scheme   
+   ln_trcadv_tvd     =  .true.   !  TVD scheme
+   ln_trcadv_muscl   =  .false.  !  MUSCL scheme
+   ln_trcadv_muscl2  =  .false.  !  MUSCL2 scheme + cen2 at boundaries
+   ln_trcadv_ubs     =  .false.  !  UBS scheme
+   ln_trcadv_qck     =  .false.  !  QUICKEST scheme
+   ln_trcadv_msc_ups =  .false.  !  use upstream scheme within muscl
 /
 !-----------------------------------------------------------------------
Index: branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_top
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_top	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_top	(revision 3718)
@@ -39,10 +39,11 @@
 &namtrc_adv    !   advection scheme for passive tracer 
 !-----------------------------------------------------------------------
-   ln_trcadv_cen2   =  .false.  !  2nd order centered scheme   
-   ln_trcadv_tvd    =  .true.  !  TVD scheme
-   ln_trcadv_muscl  =  .false.   !  MUSCL scheme
-   ln_trcadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries
-   ln_trcadv_ubs    =  .false.  !  UBS scheme
-   ln_trcadv_qck    =  .false.  !  QUICKEST scheme
+   ln_trcadv_cen2    =  .false.  !  2nd order centered scheme   
+   ln_trcadv_tvd     =  .true.   !  TVD scheme
+   ln_trcadv_muscl   =  .false.  !  MUSCL scheme
+   ln_trcadv_muscl2  =  .false.  !  MUSCL2 scheme + cen2 at boundaries
+   ln_trcadv_ubs     =  .false.  !  UBS scheme
+   ln_trcadv_qck     =  .false.  !  QUICKEST scheme
+   ln_trcadv_msc_ups =  .false.  !  use upstream scheme within muscl
 /
 !-----------------------------------------------------------------------
Index: branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_top
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_top	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_top	(revision 3718)
@@ -79,11 +79,11 @@
 &namtrc_adv    !   advection scheme for passive tracer 
 !-----------------------------------------------------------------------
-   ln_trcadv_cen2   =  .false.  !  2nd order centered scheme   
-   ln_trcadv_tvd    =  .false.  !  TVD scheme
-   ln_trcadv_muscl  =  .true.   !  MUSCL scheme
-   ln_trcadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries
-   ln_trcadv_ubs    =  .false.  !  UBS scheme
-   ln_trcadv_qck    =  .false.  !  QUICKEST scheme
-   ln_traadv_msc_ups=  .false.  !  use upstream scheme within muscl
+   ln_trcadv_cen2    =  .false.  !  2nd order centered scheme   
+   ln_trcadv_tvd     =  .false.  !  TVD scheme
+   ln_trcadv_muscl   =  .true.   !  MUSCL scheme
+   ln_trcadv_muscl2  =  .false.  !  MUSCL2 scheme + cen2 at boundaries
+   ln_trcadv_ubs     =  .false.  !  UBS scheme
+   ln_trcadv_qck     =  .false.  !  QUICKEST scheme
+   ln_trcadv_msc_ups =  .false.  !  use upstream scheme within muscl
 /
 !-----------------------------------------------------------------------
Index: branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top	(revision 3718)
@@ -77,11 +77,11 @@
 &namtrc_adv    !   advection scheme for passive tracer 
 !-----------------------------------------------------------------------
-   ln_trcadv_cen2   =  .false.  !  2nd order centered scheme   
-   ln_trcadv_tvd    =  .false.  !  TVD scheme
-   ln_trcadv_muscl  =  .true.   !  MUSCL scheme
-   ln_trcadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries
-   ln_trcadv_ubs    =  .false.  !  UBS scheme
-   ln_trcadv_qck    =  .false.  !  QUICKEST scheme
-   ln_traadv_msc_ups=  .false.  !  use upstream scheme within muscl
+   ln_trcadv_cen2    =  .false.  !  2nd order centered scheme   
+   ln_trcadv_tvd     =  .false.  !  TVD scheme
+   ln_trcadv_muscl   =  .true.   !  MUSCL scheme
+   ln_trcadv_muscl2  =  .false.  !  MUSCL2 scheme + cen2 at boundaries
+   ln_trcadv_ubs     =  .false.  !  UBS scheme
+   ln_trcadv_qck     =  .false.  !  QUICKEST scheme
+   ln_trcadv_msc_ups =  .false.  !  use upstream scheme within muscl
 /
 !-----------------------------------------------------------------------
Index: branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90	(revision 3718)
@@ -44,4 +44,5 @@
    LOGICAL ::   ln_traadv_ubs    = .FALSE.   ! UBS scheme flag
    LOGICAL ::   ln_traadv_qck    = .FALSE.   ! QUICKEST scheme flag
+   LOGICAL ::   ln_traadv_msc_ups= .FALSE.   ! use upstream scheme within muscl
 
 
@@ -105,5 +106,5 @@
       CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt, nit000, 'TRA',         zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  2nd order centered
       CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  TVD 
-      CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts )   !  MUSCL 
+      CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts, ln_traadv_msc_ups )   !  MUSCL 
       CASE ( 4 )   ;    CALL tra_adv_muscl2( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  MUSCL2 
       CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb, tsn, tsa, jpts )   !  UBS 
@@ -117,5 +118,5 @@
          CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv1 - Ta: ', mask1=tmask,               &
             &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' )
-         CALL tra_adv_muscl ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts )          
+         CALL tra_adv_muscl ( kt, nit000, 'TRA', r2dtra, zun, zvn, zwn, tsb,      tsa, jpts, ln_traadv_msc_ups )          
          CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' adv3 - Ta: ', mask1=tmask,               &
             &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' )
@@ -165,11 +166,11 @@
          WRITE(numout,*) '~~~~~~~~~~~'
          WRITE(numout,*) '   Namelist namtra_adv : chose a advection scheme for tracers'
-         WRITE(numout,*) '      2nd order advection scheme     ln_traadv_cen2   = ', ln_traadv_cen2
-         WRITE(numout,*) '      TVD advection scheme           ln_traadv_tvd    = ', ln_traadv_tvd
-         WRITE(numout,*) '      MUSCL  advection scheme        ln_traadv_muscl  = ', ln_traadv_muscl
-         WRITE(numout,*) '      MUSCL2 advection scheme        ln_traadv_muscl2 = ', ln_traadv_muscl2
-         WRITE(numout,*) '      UBS    advection scheme        ln_traadv_ubs    = ', ln_traadv_ubs
-         WRITE(numout,*) '      QUICKEST advection scheme      ln_traadv_qck    = ', ln_traadv_qck
-         WRITE(numout,*) '      upstream scheme within muscl   ln_traadv_msc_ups= ', ln_traadv_msc_ups
+         WRITE(numout,*) '      2nd order advection scheme     ln_traadv_cen2    = ', ln_traadv_cen2
+         WRITE(numout,*) '      TVD advection scheme           ln_traadv_tvd     = ', ln_traadv_tvd
+         WRITE(numout,*) '      MUSCL  advection scheme        ln_traadv_muscl   = ', ln_traadv_muscl
+         WRITE(numout,*) '      MUSCL2 advection scheme        ln_traadv_muscl2  = ', ln_traadv_muscl2
+         WRITE(numout,*) '      UBS    advection scheme        ln_traadv_ubs     = ', ln_traadv_ubs
+         WRITE(numout,*) '      QUICKEST advection scheme      ln_traadv_qck     = ', ln_traadv_qck
+         WRITE(numout,*) '      upstream scheme within muscl   ln_traadv_msc_ups = ', ln_traadv_msc_ups
       ENDIF
 
Index: branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90	(revision 3718)
@@ -144,5 +144,5 @@
          IF(lwp) WRITE(numout,*)
          !
-         IF (.not. ALLOCATED(upsmsk))THEN
+         IF ( .NOT. ALLOCATED( upsmsk ) )  THEN
              ALLOCATE( upsmsk(jpi,jpj), STAT=ierr )
              IF( ierr /= 0 )   CALL ctl_stop('STOP', 'tra_adv_cen2: unable to allocate array')
Index: branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_muscl.F90	(revision 3718)
@@ -38,9 +38,7 @@
 
    LOGICAL  :: l_trd                        ! flag to compute trends
-   LOGICAL, PUBLIC  :: ln_traadv_msc_ups= .FALSE.   ! use upstream scheme within muscl
-
-   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: upsmsk !: mixed upstream/centered scheme near some straits
+   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: upsmsk !: mixed upstream/centered scheme near some straits
    !                                                             !  and in closed seas (orca 2 and 4 configurations)
-   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zind         !: mixed upstream/centered index
+   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xind         !: mixed upstream/centered index
    !! * Substitutions
 #  include "domzgr_substitute.h90"
@@ -54,5 +52,5 @@
 
    SUBROUTINE tra_adv_muscl( kt, kit000, cdtype, p2dt, pun, pvn, pwn, &
-      &                                        ptb, pta, kjpt )
+      &                                        ptb, pta, kjpt, ld_msc_ups )
       !!----------------------------------------------------------------------
       !!                    ***  ROUTINE tra_adv_muscl  ***
@@ -76,8 +74,10 @@
       CHARACTER(len=3)                     , INTENT(in   ) ::   cdtype          ! =TRA or TRC (tracer indicator)
       INTEGER                              , INTENT(in   ) ::   kjpt            ! number of tracers
+      LOGICAL                              , INTENT(in   ) ::   ld_msc_ups      ! use upstream scheme within muscl
       REAL(wp), DIMENSION(        jpk     ), INTENT(in   ) ::   p2dt            ! vertical profile of tracer time-step
       REAL(wp), DIMENSION(jpi,jpj,jpk     ), INTENT(in   ) ::   pun, pvn, pwn   ! 3 ocean velocity components
       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in   ) ::   ptb             ! before tracer field
       REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) ::   pta             ! tracer trend 
+
       !
       INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices
@@ -97,19 +97,19 @@
          IF(lwp) WRITE(numout,*)
          IF(lwp) WRITE(numout,*) 'tra_adv : MUSCL advection scheme on ', cdtype
-         IF(lwp) WRITE(numout,*) '        : xed up-stream            ' , ln_traadv_msc_ups
+         IF(lwp) WRITE(numout,*) '        : mixed up-stream           ', ld_msc_ups
          IF(lwp) WRITE(numout,*) '~~~~~~~'
          IF(lwp) WRITE(numout,*)
          !
          !
-         IF(ln_traadv_msc_ups) THEN
-           IF (.not. ALLOCATED(upsmsk))THEN
-               ALLOCATE( upsmsk(jpi,jpj), STAT=ierr )
-               IF( ierr /= 0 )   CALL ctl_stop('STOP', 'tra_adv_muscl: unable to allocate upsmsk array')
-           ENDIF
-           upsmsk(:,:) = 0._wp                             ! not upstream by default
+         IF( ld_msc_ups ) THEN
+            IF( .NOT. ALLOCATED( upsmsk ) )  THEN
+                ALLOCATE( upsmsk(jpi,jpj), STAT=ierr )
+                IF( ierr /= 0 )   CALL ctl_stop('STOP', 'tra_adv_muscl: unable to allocate upsmsk array')
+            ENDIF
+            upsmsk(:,:) = 0._wp                             ! not upstream by default
          ENDIF
 
-         IF (.not. ALLOCATED(zind))THEN
-             ALLOCATE( zind(jpi,jpj,jpk), STAT=ierr )
+         IF( .NOT. ALLOCATED( xind ) ) THEN
+             ALLOCATE( xind(jpi,jpj,jpk), STAT=ierr )
              IF( ierr /= 0 )   CALL ctl_stop('STOP', 'tra_adv_muscl: unable to allocate zind array')
          ENDIF
@@ -119,22 +119,22 @@
          IF( ( cdtype == 'TRA' .AND. l_trdtra ) .OR. ( cdtype == 'TRC' .AND. l_trdtrc ) ) l_trd = .TRUE.
 
-      !
-      ! Upstream / centered scheme indicator
-      ! ------------------------------------
-         zind(:,:,:) = 1._wp                             ! set equal to 0 where up-stream is needed
-
-         IF(ln_traadv_msc_ups) THEN
-           DO jk = 1, jpk
-              DO jj = 1, jpj
-                 DO ji = 1, jpi
-                    zind(ji,jj,jk) = 1  - MAX (           &
-                       rnfmsk(ji,jj) * rnfmsk_z(jk),      &  ! near runoff mouths (& closed sea outflows)
-                       upsmsk(ji,jj) ) * tmask(ji,jj,jk)     ! some of some straits
-                 END DO
-              END DO
-           END DO
+         !
+         ! Upstream / centered scheme indicator
+         ! ------------------------------------
+         xind(:,:,:) = 1._wp                             ! set equal to 1 where up-stream is not needed
+         !
+         IF( ld_msc_ups )  THEN
+            DO jk = 1, jpk
+               DO jj = 1, jpj
+                  DO ji = 1, jpi
+                     xind(ji,jj,jk) = 1  - MAX (           &
+                        rnfmsk(ji,jj) * rnfmsk_z(jk),      &  ! near runoff mouths (& closed sea outflows)
+                        upsmsk(ji,jj) ) * tmask(ji,jj,jk)     ! some of some straits
+                  END DO
+               END DO
+            END DO
          ENDIF 
-      !
-      ENDIF ! end kit000
+         !
+      ENDIF 
       !                                                     ! ===========
       DO jn = 1, kjpt                                       ! tracer loop
@@ -191,6 +191,6 @@
                   zalpha = 0.5 - z0u
                   zu  = z0u - 0.5 * pun(ji,jj,jk) * zdt / ( e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) )
-                  zzwx = ptb(ji+1,jj,jk,jn) + zind(ji,jj,jk) * (zu * zslpx(ji+1,jj,jk))
-                  zzwy = ptb(ji  ,jj,jk,jn) + zind(ji,jj,jk) * (zu * zslpx(ji  ,jj,jk))
+                  zzwx = ptb(ji+1,jj,jk,jn) + xind(ji,jj,jk) * (zu * zslpx(ji+1,jj,jk))
+                  zzwy = ptb(ji  ,jj,jk,jn) + xind(ji,jj,jk) * (zu * zslpx(ji  ,jj,jk))
                   zwx(ji,jj,jk) = pun(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy )
                   !
@@ -198,6 +198,6 @@
                   zalpha = 0.5 - z0v
                   zv  = z0v - 0.5 * pvn(ji,jj,jk) * zdt / ( e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) )
-                  zzwx = ptb(ji,jj+1,jk,jn) + zind(ji,jj,jk) * (zv * zslpy(ji,jj+1,jk))
-                  zzwy = ptb(ji,jj  ,jk,jn) + zind(ji,jj,jk) * (zv * zslpy(ji,jj  ,jk))
+                  zzwx = ptb(ji,jj+1,jk,jn) + xind(ji,jj,jk) * (zv * zslpy(ji,jj+1,jk))
+                  zzwy = ptb(ji,jj  ,jk,jn) + xind(ji,jj,jk) * (zv * zslpy(ji,jj  ,jk))
                   zwy(ji,jj,jk) = pvn(ji,jj,jk) * ( zalpha * zzwx + (1.-zalpha) * zzwy )
                END DO
@@ -273,6 +273,6 @@
                   zalpha = 0.5 + z0w
                   zw  = z0w - 0.5 * pwn(ji,jj,jk+1) * zdt * zbtr 
-                  zzwx = ptb(ji,jj,jk+1,jn) + zind(ji,jj,jk) * (zw * zslpx(ji,jj,jk+1))
-                  zzwy = ptb(ji,jj,jk  ,jn) + zind(ji,jj,jk) * (zw * zslpx(ji,jj,jk  ))
+                  zzwx = ptb(ji,jj,jk+1,jn) + xind(ji,jj,jk) * (zw * zslpx(ji,jj,jk+1))
+                  zzwy = ptb(ji,jj,jk  ,jn) + xind(ji,jj,jk) * (zw * zslpx(ji,jj,jk  ))
                   zwx(ji,jj,jk+1) = pwn(ji,jj,jk+1) * ( zalpha * zzwx + (1.-zalpha) * zzwy )
                END DO 
Index: branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90	(revision 3718)
@@ -108,5 +108,5 @@
       CASE ( 1 )   ;    CALL tra_adv_cen2  ( kt, nittrc000, 'TRC',       zun, zvn, zwn, trb, trn, tra, jptra )   !  2nd order centered
       CASE ( 2 )   ;    CALL tra_adv_tvd   ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )   !  TVD 
-      CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb,      tra, jptra )   !  MUSCL 
+      CASE ( 3 )   ;    CALL tra_adv_muscl ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb,      tra, jptra, ln_trcadv_msc_ups )   !  MUSCL 
       CASE ( 4 )   ;    CALL tra_adv_muscl2( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )   !  MUSCL2 
       CASE ( 5 )   ;    CALL tra_adv_ubs   ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb, trn, tra, jptra )   !  UBS 
@@ -120,5 +120,5 @@
          WRITE(charout, FMT="('adv2')")  ; CALL prt_ctl_trc_info(charout)
                                            CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')
-         CALL tra_adv_muscl ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb,      tra, jptra )          
+         CALL tra_adv_muscl ( kt, nittrc000, 'TRC', r2dt, zun, zvn, zwn, trb,      tra, jptra, ln_trcadv_msc_ups  )          
          WRITE(charout, FMT="('adv3')")  ; CALL prt_ctl_trc_info(charout)
                                            CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm,clinfo2='trd')
Index: branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/TOP_SRC/TRP/trcnam_trp.F90
===================================================================
--- branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/TOP_SRC/TRP/trcnam_trp.F90	(revision 3717)
+++ branches/2012/dev_MERGE_2012/NEMOGCM/NEMO/TOP_SRC/TRP/trcnam_trp.F90	(revision 3718)
@@ -28,4 +28,6 @@
    LOGICAL , PUBLIC ::   ln_trcadv_ubs    = .FALSE.   ! UBS scheme flag
    LOGICAL , PUBLIC ::   ln_trcadv_qck    = .FALSE.   ! QUICKEST scheme flag
+   LOGICAL , PUBLIC ::   ln_trcadv_msc_ups= .FALSE.   ! use upstream scheme within muscl
+
 
    !                                                 !!: ** lateral mixing namelist (nam_trcldf) **
@@ -73,5 +75,5 @@
       NAMELIST/namtrc_adv/ ln_trcadv_cen2 , ln_trcadv_tvd   ,    &
          &                 ln_trcadv_muscl, ln_trcadv_muscl2,    &
-         &                 ln_trcadv_ubs  , ln_trcadv_qck
+         &                 ln_trcadv_ubs  , ln_trcadv_qck, ln_trcadv_msc_ups
 
       NAMELIST/namtrc_ldf/ ln_trcldf_diff , ln_trcldf_lap  ,     &
