Index: branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solpcg.F90
===================================================================
--- branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solpcg.F90	(revision 2208)
+++ branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solpcg.F90	(revision 2219)
@@ -14,4 +14,5 @@
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
    USE in_out_manager  ! I/O manager
+   USE lib_fortran
 
    IMPLICIT NONE
@@ -95,4 +96,6 @@
       ! Initialization of the algorithm with standard PCG
       ! -------------------------------------------------
+      zgcr = 0.e0 
+      gcr  = 0.e0 
 
       CALL lbc_lnk( gcx, c_solver_pt, 1. )   ! lateral boundary condition
@@ -100,5 +103,4 @@
       ! gcr   = gcb-a.gcx
       ! gcdes = gcr
-
       DO jj = 2, jpjm1
          DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -114,6 +116,5 @@
 
       ! rnorme = (gcr,gcr)
-      rnorme = SUM(  gcr(:,:) * gcdmat(:,:) * gcr(:,:)  )
-      IF( lk_mpp )   CALL mpp_sum( rnorme )   ! sum over the global domain
+      rnorme = glob_sum(  gcr(:,:) * gcdmat(:,:) * gcr(:,:)  )
 
       CALL lbc_lnk( gcdes, c_solver_pt, 1. )   ! lateral boundary condition
@@ -129,6 +130,5 @@
 
       ! alph = (gcr,gcr)/(gcdes,gccd)
-      radd = SUM(  gcdes(:,:) * gcdmat(:,:) * gccd(:,:)  )
-      IF( lk_mpp )   CALL mpp_sum( radd )   ! sum over the global domain
+      radd = glob_sum(  gcdes(:,:) * gcdmat(:,:) * gccd(:,:)  )
       alph = rnorme /radd
 
@@ -162,13 +162,12 @@
          ! rnorme = (gcr,gcr)
          rr = rnorme
-         zsum(1) = SUM(  gcr(:,:) * gcdmat(:,:) * gcr(:,:)  )
 
          ! zgcad = (zgcr,gcr) 
-         zsum(2) = SUM( gcr(2:jpim1,2:jpjm1) * gcdmat(2:jpim1,2:jpjm1) * zgcr(2:jpim1,2:jpjm1) )
-
-         IF( lk_mpp )   CALL mpp_sum( zsum, 2 )   ! sum over the global domain
+         zsum(1) = glob_sum(gcr(:,:) * gcdmat(:,:) * gcr(:,:))
+         zsum(2) = glob_sum(gcr(:,:) * gcdmat(:,:) * zgcr(:,:) * bmask(:,:))
+
+         !!RB we should gather the 2 glob_sum
          rnorme = zsum(1)  
          zgcad  = zsum(2)
-
          ! test of convergence
          IF( rnorme < epsr .OR. jn == nn_nmax ) THEN
Index: branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solsor.F90
===================================================================
--- branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solsor.F90	(revision 2208)
+++ branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solsor.F90	(revision 2219)
@@ -22,4 +22,5 @@
    USE lib_mpp         ! distributed memory computing
    USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
+   USE lib_fortran
 
    IMPLICIT NONE
@@ -64,4 +65,5 @@
       INTEGER  ::   ijmppodd, ijmppeven, ijpr2d
       REAL(wp) ::   ztmp, zres, zres2
+      REAL(wp), DIMENSION(jpi,jpj) ::ztab
       !!----------------------------------------------------------------------
       
@@ -131,6 +133,7 @@
                ENDIF
             CASE ( 1 )                 ! relative precision
-               rnorme = SUM( gcr(2:nlci-1,2:nlcj-1) )
-               IF( lk_mpp )   CALL mpp_sum( rnorme )   ! sum over the global domain
+               ztab = 0.
+               ztab(:,:) = gcr(2:nlci-1,2:nlcj-1)
+               rnorme = glob_sum( ztab)    ! sum over the global domain
                ! test of convergence
                IF( rnorme < epsr .OR. jn == nn_nmax ) THEN
Index: branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solver.F90
===================================================================
--- branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solver.F90	(revision 2208)
+++ branches/DEV_r2191_3partymerge2010/NEMO/OPA_SRC/SOL/solver.F90	(revision 2219)
@@ -102,11 +102,4 @@
       END SELECT
       !
-      IF( nbit_cmp == 1 ) THEN            ! reproductibility test SOR required
-         IF( nn_solv /= 2 ) THEN
-            CALL ctl_stop( ' Reproductibility tests (nbit_cmp=1) require the SOR solver: nn_solv = 2' )
-         ELSE IF( MAX( jpr2di, jpr2dj ) > 0 ) THEN
-            CALL ctl_stop( ' Reproductibility tests (nbit_cmp=1) require jpr2di = jpr2dj = 0' )
-         END IF 
-      END IF
 
       !                             !* Grid-point at which the solver is applied
