Index: trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90
===================================================================
--- trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90	(revision 909)
+++ trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90	(revision 910)
@@ -9,4 +9,6 @@
    !!                  and vertical advection trends using a 2nd order 
    !!                  centered finite difference scheme
+   !!   ups_orca_set : allow mixed upstream/centered scheme in specific
+   !!                  area (set for orca 2 and 4 only)
    !!----------------------------------------------------------------------
    !! * Modules used
@@ -15,4 +17,6 @@
    USE trcbbl              ! advective passive tracers in the BBL
    USE prtctl_trc
+   USE sbcrnf              ! river runoffs
+   USE closea              ! closed sea
 
    IMPLICIT NONE
@@ -21,4 +25,8 @@
    !! * Accessibility
    PUBLIC trc_adv_cen2    ! routine called by trcstp.F90
+   PUBLIC ups_orca_set    ! routine used by trcadv_cen2.F90
+
+   REAL(wp), PUBLIC, DIMENSION(jpi,jpj) ::   upsmsk    !: mixed upstream/centered scheme near some straits 
+   !                                                   !  and in closed seas (orca 2 and 4 configurations)
 
    !! * Substitutions
@@ -144,4 +152,9 @@
    
          zbtr2(:,:) = 1. / ( e1t(:,:) * e2t(:,:) )
+         !
+         upsmsk(:,:) = 0.e0                              ! not upstream by default
+         IF( cp_cfg == "orca" )   CALL ups_orca_set      ! set mixed Upstream/centered scheme near some straits
+         !                                               ! and in closed seas (orca2 and orca4 only)
+         !   
       ENDIF
 
@@ -162,6 +175,6 @@
          DO jj = 1, jpj
             DO ji = 1, jpi
-               zind(ji,jj,jk) =  MAX ( upsrnfh(ji,jj) * upsrnfz(jk),     &  ! changing advection scheme near runoff
-                  &                    upsadv(ji,jj)                     &  ! in the vicinity of some straits
+               zind(ji,jj,jk) =  MAX ( rnfmsk(ji,jj) * rnfmsk_z(jk),     &  ! changing advection scheme near runoff
+                  &                    upsmsk(ji,jj)                     &  ! in the vicinity of some straits
 #if defined key_lim3 || defined key_lim2
                   &                  , tmask(ji,jj,jk)                   &  ! half upstream tracer fluxes
@@ -332,4 +345,65 @@
 
    END SUBROUTINE trc_adv_cen2
+   
+   SUBROUTINE ups_orca_set
+      !!----------------------------------------------------------------------
+      !!                  ***  ROUTINE ups_orca_set  ***
+      !!       
+      !! ** Purpose :   add a portion of upstream scheme in area where the
+      !!                centered scheme generates too strong overshoot
+      !!
+      !! ** Method  :   orca (R4 and R2) confiiguration setting. Set upsmsk
+      !!                array to nozero value in some straith. 
+      !!
+      !! ** Action : - upsmsk set to 1 at some strait, 0 elsewhere for orca
+      !!----------------------------------------------------------------------
+      INTEGER  ::   ii0, ii1, ij0, ij1      ! temporary integers
+      !!----------------------------------------------------------------------
+      
+      ! mixed upstream/centered scheme near river mouths
+      ! ------------------------------------------------
+      SELECT CASE ( jp_cfg )
+      !                                        ! =======================
+      CASE ( 4 )                               !  ORCA_R4 configuration 
+         !                                     ! =======================
+         !                                          ! Gibraltar Strait
+         ii0 =  70   ;   ii1 =  71
+         ij0 =  52   ;   ij1 =  53   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
+         !
+         !                                     ! =======================
+      CASE ( 2 )                               !  ORCA_R2 configuration 
+         !                                     ! =======================
+         !                                          ! Gibraltar Strait
+         ij0 = 102   ;   ij1 = 102
+         ii0 = 138   ;   ii1 = 138   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.20
+         ii0 = 139   ;   ii1 = 139   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40
+         ii0 = 140   ;   ii1 = 140   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
+         ij0 = 101   ;   ij1 = 102
+         ii0 = 141   ;   ii1 = 141   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
+         !                                          ! Bab el Mandeb Strait
+         ij0 =  87   ;   ij1 =  88
+         ii0 = 164   ;   ii1 = 164   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.10
+         ij0 =  88   ;   ij1 =  88
+         ii0 = 163   ;   ii1 = 163   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
+         ii0 = 162   ;   ii1 = 162   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.40
+         ii0 = 160   ;   ii1 = 161   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
+         ij0 =  89   ;   ij1 =  89
+         ii0 = 158   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
+         ij0 =  90   ;   ij1 =  90
+         ii0 = 160   ;   ii1 = 160   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
+         !                                          ! Sound Strait
+         ij0 = 116   ;   ij1 = 116
+         ii0 = 144   ;   ii1 = 144   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
+         ii0 = 145   ;   ii1 = 147   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.50
+         ii0 = 148   ;   ii1 = 148   ;   upsmsk( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.25
+         !
+      END SELECT 
+      
+      ! mixed upstream/centered scheme over closed seas
+      ! -----------------------------------------------
+      CALL clo_ups( upsmsk(:,:) )
+      !
+   END SUBROUTINE ups_orca_set
+
 #else
 
@@ -342,4 +416,6 @@
       WRITE(*,*) 'trc_adv_cen2: You should not have seen this print! error?', kt
    END SUBROUTINE trc_adv_cen2
+   SUBROUTINE ups_orca_set
+   END SUBROUTINE ups_orca_set
 #endif
    !!======================================================================
Index: trunk/NEMO/TOP_SRC/oce_trc.F90
===================================================================
--- trunk/NEMO/TOP_SRC/oce_trc.F90	(revision 909)
+++ trunk/NEMO/TOP_SRC/oce_trc.F90	(revision 910)
@@ -208,7 +208,11 @@
 
    !! wind speed
-   USE taumod , ONLY :        &     
-      taux    =>    taux ,  &  !: i-surface stress component
-      tauy    =>    tauy       !: j-surface stress component
+   USE sbc_oce , ONLY :     &     
+      taux    =>    utau ,  &  !: i-surface stress component
+      tauy    =>    vtau ,  &  !: j-surface stress component
+      qsr     =>    qsr  ,  &  !: penetrative solar radiation (w m-2)  
+      emp     =>    emp  ,  &  !: evaporation minus precipitation (kg m-2 s-2) 
+      emps    =>    emps       !: evaporation minus precipitation (kg m-2 s-2)
+
 
 #if   defined key_trabbl_dif   ||   defined key_trabbl_adv
@@ -252,11 +256,4 @@
       ln_qsr_sms  =>  ln_qsr_sms    !: flag to use or not the biological fluxes for light
 
-   !! surface fluxes
-   USE ocesbc , ONLY :             &   
-      qt      =>    qt    ,  & !: total surface heat flux (w m-2)   
-      qsr     =>    qsr   ,  & !: penetrative solar radiation (w m-2)  
-      emp     =>    emp   ,  & !: evaporation minus precipitation (kg m-2 s-2) 
-      emps    =>    emps       !: evaporation minus precipitation (kg m-2 s-2)
-
    !! freezing area
    USE ocfzpt , ONLY :            &      
@@ -283,8 +280,7 @@
 
    !! ocean forcings runoff
-   USE flxrnf , ONLY :              &   
-      upsrnfh =>   upsrnfh ,  & !: mixed adv scheme in runoffs vicinity (hori.) 
-      upsrnfz =>   upsrnfz ,  & !: mixed adv scheme in runoffs vicinity (vert.)
-      upsadv  =>   upsadv       !: mixed adv scheme in straits vicinity (hori.)
+   USE sbcrnf , ONLY :         &   
+      upsrnfh => rnfmsk     ,  & !: mixed adv scheme in runoffs vicinity (hori.) 
+      upsrnfz => rnfmsk_z        !: mixed adv scheme in runoffs vicinity (vert.)
 
 END MODULE oce_trc
