Index: trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_closea.F90
===================================================================
--- trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_closea.F90	(revision 7646)
+++ trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_closea.F90	(revision 7698)
@@ -388,4 +388,5 @@
       !
       DO jc = 1, jpncs
+!$OMP PARALLEL DO schedule(static) private(jj,ji)
          DO jj = ncsj1(jc), ncsj2(jc)
             DO ji = ncsi1(jc), ncsi2(jc)
Index: trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_hgr.F90
===================================================================
--- trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_hgr.F90	(revision 7646)
+++ trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_hgr.F90	(revision 7698)
@@ -103,4 +103,6 @@
       ENDIF
       !   
+!$OMP PARALLEL
+!$OMP DO schedule(static) private(jj, ji, zim1, zjm1)
       DO jj = 1, jpj 
          DO ji = 1, jpi 
@@ -129,17 +131,24 @@
          END DO
       END DO
+!$OMP END DO NOWAIT
       !
       !                       !== Horizontal scale factors ==! (in meters)
       !                     
       !                                         ! constant grid spacing
-      pe1t(:,:) =  ze1     ;      pe2t(:,:) = ze1
-      pe1u(:,:) =  ze1     ;      pe2u(:,:) = ze1
-      pe1v(:,:) =  ze1     ;      pe2v(:,:) = ze1
-      pe1f(:,:) =  ze1     ;      pe2f(:,:) = ze1
-      !
-      !                                         ! NO reduction of grid size in some straits 
+!$OMP DO schedule(static) private(jj, ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            pe1t(ji,jj) =  ze1     ;      pe2t(ji,jj) = ze1
+            pe1u(ji,jj) =  ze1     ;      pe2u(ji,jj) = ze1
+            pe1v(ji,jj) =  ze1     ;      pe2v(ji,jj) = ze1
+            pe1f(ji,jj) =  ze1     ;      pe2f(ji,jj) = ze1
+            !
+            !                                         ! NO reduction of grid size in some straits 
+            pe1e2u(ji,jj) = 0._wp                       !    CAUTION: set to zero to avoid error with some compilers that
+            pe1e2v(ji,jj) = 0._wp                       !             require an initialization of INTENT(out) arguments
+         END DO
+      END DO
+!$OMP END PARALLEL
       ke1e2u_v = 0                              !    ==>> u_ & v_surfaces will be computed in dom_ghr routine
-      pe1e2u(:,:) = 0._wp                       !    CAUTION: set to zero to avoid error with some compilers that
-      pe1e2v(:,:) = 0._wp                       !             require an initialization of INTENT(out) arguments
       !
       !
@@ -153,6 +162,11 @@
       zf0   = 2. * omega * SIN( rad * zphi0 )            !  compute f0 1st point south
       !
-      pff_f(:,:) = ( zf0 + zbeta * ABS( pphif(:,:) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south)
-      pff_t(:,:) = ( zf0 + zbeta * ABS( pphit(:,:) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south)
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            pff_f(ji,jj) = ( zf0 + zbeta * ABS( pphif(ji,jj) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south)
+            pff_t(ji,jj) = ( zf0 + zbeta * ABS( pphit(ji,jj) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south)
+         END DO
+      END DO
       !
       IF(lwp) WRITE(numout,*) '                           beta-plane used. beta = ', zbeta, ' 1/(s.m)'
Index: trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_istate.F90
===================================================================
--- trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_istate.F90	(revision 7646)
+++ trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_istate.F90	(revision 7698)
@@ -55,8 +55,24 @@
       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~   Ocean at rest, with an horizontally uniform T and S profiles'
       !
-      pu  (:,:,:) = 0._wp        ! ocean at rest
-      pv  (:,:,:) = 0._wp
-      pssh(:,:)   = 0._wp
+!$OMP PARALLEL
+!$OMP DO schedule(static) private(jk,jj,ji)
+      DO jk = 1, jpk
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               pu  (ji,jj,jk) = 0._wp        ! ocean at rest
+               pv  (ji,jj,jk) = 0._wp
+            END DO
+         END DO
+      END DO
+!$OMP END DO NOWAIT
+!$OMP DO schedule(static) private(jj,ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            pssh(ji,jj)   = 0._wp
+         END DO
+      END DO
+!$OMP END DO NOWAIT
       !
+!$OMP DO schedule(static) private(jk,jj,ji)
       DO jk = 1, jpk             ! horizontally uniform T & S profiles
          DO jj = 1, jpj
@@ -79,4 +95,5 @@
          END DO
       END DO
+!$OMP END PARALLEL
       !   
    END SUBROUTINE usr_def_istate
Index: trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_sbc.F90
===================================================================
--- trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_sbc.F90	(revision 7646)
+++ trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_sbc.F90	(revision 7698)
@@ -109,4 +109,5 @@
       ztrp= - 40.e0        ! retroaction term on heat fluxes (W/m2/K)
       zconv = 3.16e-5      ! convertion factor: 1 m/yr => 3.16e-5 mm/s
+!$OMP PARALLEL DO schedule(static) private(jj, ji, t_star)
       DO jj = 1, jpj
          DO ji = 1, jpi
@@ -137,7 +138,12 @@
 
       ! freshwater (mass flux) and update of qns with heat content of emp
-      emp (:,:) = emp(:,:) - zsumemp * tmask(:,:,1)        ! freshwater flux (=0 in domain average)
-      sfx (:,:) = 0.0_wp                                   ! no salt flux
-      qns (:,:) = qns(:,:) - emp(:,:) * sst_m(:,:) * rcp   ! evap and precip are at SST
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            emp (ji,jj) = emp(ji,jj) - zsumemp * tmask(ji,jj,1)          ! freshwater flux (=0 in domain average)
+            sfx (ji,jj) = 0.0_wp                                         ! no salt flux
+            qns (ji,jj) = qns(ji,jj) - emp(ji,jj) * sst_m(ji,jj) * rcp   ! evap and precip are at SST
+         END DO
+      END DO
 
 
@@ -166,4 +172,6 @@
       ztau_sais = 0.015
       ztaun = ztau - ztau_sais * COS( (ztime - ztimemax) / (ztimemin - ztimemax) * rpi )
+!$OMP PARALLEL
+!$OMP DO schedule(static) private(jj, ji)
       DO jj = 1, jpj
          DO ji = 1, jpi
@@ -177,4 +185,5 @@
       ! module of wind stress and wind speed at T-point
       zcoef = 1. / ( zrhoa * zcdrag ) 
+!$OMP DO schedule(static) private(jj, ji, ztx, zty, zmod)
       DO jj = 2, jpjm1
          DO ji = fs_2, fs_jpim1   ! vect. opt.
@@ -186,4 +195,5 @@
          END DO
       END DO
+!$OMP END PARALLEL
       CALL lbc_lnk( taum(:,:), 'T', 1. )   ;   CALL lbc_lnk( wndm(:,:), 'T', 1. )
 
Index: trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_zgr.F90
===================================================================
--- trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_zgr.F90	(revision 7646)
+++ trunk/NEMOGCM/NEMO/OPA_SRC/USR/usrdef_zgr.F90	(revision 7698)
@@ -199,4 +199,6 @@
       !
       REAL(wp), DIMENSION(jpi,jpj) ::   z2d   ! 2D local workspace
+
+      INTEGER  ::   ji, jj
       !!----------------------------------------------------------------------
       !
@@ -206,11 +208,21 @@
       IF(lwp) WRITE(numout,*) '       GYRE case : closed flat box ocean without ocean cavities'
       !
-      z2d(:,:) = REAL( jpkm1 , wp )          ! flat bottom
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            z2d(ji,jj) = REAL( jpkm1 , wp )          ! flat bottom
+         END DO
+      END DO
       !
       CALL lbc_lnk( z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed)
       !
-      k_bot(:,:) = INT( z2d(:,:) )           ! =jpkm1 over the ocean point, =0 elsewhere
-      !
-      k_top(:,:) = MIN( 1 , k_bot(:,:) )     ! = 1    over the ocean point, =0 elsewhere
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            k_bot(ji,jj) = INT( z2d(ji,jj) )           ! =jpkm1 over the ocean point, =0 elsewhere
+            !
+            k_top(ji,jj) = MIN( 1 , k_bot(ji,jj) )     ! = 1    over the ocean point, =0 elsewhere
+         END DO
+      END DO
       !
    END SUBROUTINE zgr_msk_top_bot
@@ -234,19 +246,24 @@
       REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   pe3w , pe3uw, pe3vw         !    -       -      -
       !
-      INTEGER  ::   jk
+      INTEGER  ::   ji, jj, jk
       !!----------------------------------------------------------------------
       !
       IF( nn_timing == 1 )  CALL timing_start('zgr_zco')
       !
+!$OMP PARALLEL DO schedule(static) private(jk, jj, ji)
       DO jk = 1, jpk
-         pdept(:,:,jk) = pdept_1d(jk)
-         pdepw(:,:,jk) = pdepw_1d(jk)
-         pe3t (:,:,jk) = pe3t_1d (jk)
-         pe3u (:,:,jk) = pe3t_1d (jk)
-         pe3v (:,:,jk) = pe3t_1d (jk)
-         pe3f (:,:,jk) = pe3t_1d (jk)
-         pe3w (:,:,jk) = pe3w_1d (jk)
-         pe3uw(:,:,jk) = pe3w_1d (jk)
-         pe3vw(:,:,jk) = pe3w_1d (jk)
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               pdept(ji,jj,jk) = pdept_1d(jk)
+               pdepw(ji,jj,jk) = pdepw_1d(jk)
+               pe3t (ji,jj,jk) = pe3t_1d (jk)
+               pe3u (ji,jj,jk) = pe3t_1d (jk)
+               pe3v (ji,jj,jk) = pe3t_1d (jk)
+               pe3f (ji,jj,jk) = pe3t_1d (jk)
+               pe3w (ji,jj,jk) = pe3w_1d (jk)
+               pe3uw(ji,jj,jk) = pe3w_1d (jk)
+               pe3vw(ji,jj,jk) = pe3w_1d (jk)
+            END DO
+         END DO
       END DO
       !
