Index: branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
===================================================================
--- branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90	(revision 7037)
+++ branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90	(revision 7508)
@@ -117,5 +117,5 @@
       !!              aeiu, aeiv initialized once for all or l_ldfeiv_time set to true
       !!----------------------------------------------------------------------
-      INTEGER  ::   jk                ! dummy loop indices
+      INTEGER  ::   jk, jj, ji        ! dummy loop indices
       INTEGER  ::   ierr, inum, ios   ! local integer
       REAL(wp) ::   zah0              ! local scalar
@@ -185,8 +185,11 @@
       IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'ldf_tra_init: failed to allocate arrays')
       !
-!$OMP PARALLEL WORKSHARE
-      ahtu(:,:,jpk) = 0._wp                           ! last level always 0  
-      ahtv(:,:,jpk) = 0._wp
-!$OMP END PARALLEL WORKSHARE
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            ahtu(ji,jj,jpk) = 0._wp                           ! last level always 0  
+            ahtv(ji,jj,jpk) = 0._wp
+         END DO
+      END DO
       !
       !                                               ! value of eddy mixing coef.
@@ -203,15 +206,23 @@
          CASE(   0  )      !==  constant  ==!
             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = constant = ', rn_aht_0
-!$OMP PARALLEL WORKSHARE
-            ahtu(:,:,:) = zah0 * umask(:,:,:)
-            ahtv(:,:,:) = zah0 * vmask(:,:,:)
-!$OMP END PARALLEL WORKSHARE
+!$OMP PARALLEL DO schedule(static) private(jk,jj,ji)
+            DO jk = 1, jpk
+               DO jj = 1, jpj
+                  DO ji = 1, jpi
+                     ahtu(ji,jj,jk) = zah0 * umask(ji,jj,jk)
+                     ahtv(ji,jj,jk) = zah0 * vmask(ji,jj,jk)
+                  END DO
+               END DO
+            END DO
             !
          CASE(  10  )      !==  fixed profile  ==!
             IF(lwp) WRITE(numout,*) '          tracer mixing coef. = F( depth )'
-!$OMP PARALLEL WORKSHARE
-            ahtu(:,:,1) = zah0 * umask(:,:,1)                      ! constant surface value
-            ahtv(:,:,1) = zah0 * vmask(:,:,1)
-!$OMP END PARALLEL WORKSHARE
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  ahtu(ji,jj,1) = zah0 * umask(ji,jj,1)                      ! constant surface value
+                  ahtv(ji,jj,1) = zah0 * vmask(ji,jj,1)
+               END DO
+            END DO
             CALL ldf_c1d( 'TRA', r1_4, ahtu(:,:,1), ahtv(:,:,1), ahtu, ahtv )
             !
@@ -276,6 +287,13 @@
          !
          IF( ln_traldf_blp .AND. .NOT. l_ldftra_time ) THEN
-            ahtu(:,:,:) = SQRT( ahtu(:,:,:) )
-            ahtv(:,:,:) = SQRT( ahtv(:,:,:) )
+!$OMP PARALLEL DO schedule(static) private(jk,jj,ji)
+            DO jk = 1, jpk
+               DO jj = 1, jpj
+                  DO ji = 1, jpi
+                     ahtu(ji,jj,jk) = SQRT( ahtu(ji,jj,jk) )
+                     ahtv(ji,jj,jk) = SQRT( ahtv(ji,jj,jk) )
+                  END DO
+               END DO
+            END DO
          ENDIF
          !
@@ -396,5 +414,5 @@
       !!               l_ldfeiv_time : =T if EIV coefficients vary with time
       !!----------------------------------------------------------------------
-      INTEGER  ::   jk                ! dummy loop indices
+      INTEGER  ::   jk, jj, ji        ! dummy loop indices
       INTEGER  ::   ierr, inum, ios   ! local integer
       !
@@ -437,15 +455,23 @@
          CASE(   0  )      !==  constant  ==!
             IF(lwp) WRITE(numout,*) '          eddy induced velocity coef. = constant = ', rn_aeiv_0
-!$OMP PARALLEL WORKSHARE
-            aeiu(:,:,:) = rn_aeiv_0
-            aeiv(:,:,:) = rn_aeiv_0
-!$OMP END PARALLEL WORKSHARE
+!$OMP PARALLEL DO schedule(static) private(jk,jj,ji)
+            DO jk = 1, jpk
+               DO jj = 1, jpj
+                  DO ji = 1, jpi
+                     aeiu(ji,jj,jk) = rn_aeiv_0
+                     aeiv(ji,jj,jk) = rn_aeiv_0
+                  END DO
+               END DO
+            END DO
             !
          CASE(  10  )      !==  fixed profile  ==!
             IF(lwp) WRITE(numout,*) '          eddy induced velocity coef. = F( depth )'
-!$OMP PARALLEL WORKSHARE
-            aeiu(:,:,1) = rn_aeiv_0                                ! constant surface value
-            aeiv(:,:,1) = rn_aeiv_0
-!$OMP END PARALLEL WORKSHARE
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  aeiu(ji,jj,1) = rn_aeiv_0                                ! constant surface value
+                  aeiv(ji,jj,1) = rn_aeiv_0
+               END DO
+            END DO
             CALL ldf_c1d( 'TRA', r1_4, aeiu(:,:,1), aeiv(:,:,1), aeiu, aeiv )
             !
@@ -521,10 +547,13 @@
       CALL wrk_alloc( jpi,jpj,   zn, zah, zhw, zross, zaeiw )
       !      
-!$OMP PARALLEL WORKSHARE
-      zn   (:,:) = 0._wp      ! Local initialization
-      zhw  (:,:) = 5._wp
-      zah  (:,:) = 0._wp
-      zross(:,:) = 0._wp
-!$OMP END PARALLEL WORKSHARE
+!$OMP PARALLEL DO schedule(static) private(jj,ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            zn   (ji,jj) = 0._wp      ! Local initialization
+            zhw  (ji,jj) = 5._wp
+            zah  (ji,jj) = 0._wp
+            zross(ji,jj) = 0._wp
+         END DO
+      END DO
       !                       ! Compute lateral diffusive coefficient at T-point
       IF( ln_traldf_triad ) THEN
@@ -668,8 +697,12 @@
       
 !$OMP PARALLEL
-!$OMP WORKSHARE      
-      zpsi_uw(:,:, 1 ) = 0._wp   ;   zpsi_vw(:,:, 1 ) = 0._wp
-      zpsi_uw(:,:,jpk) = 0._wp   ;   zpsi_vw(:,:,jpk) = 0._wp
-!$OMP END WORKSHARE NOWAIT
+!$OMP DO schedule(static) private(jj,ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            zpsi_uw(ji,jj, 1 ) = 0._wp   ;   zpsi_vw(ji,jj, 1 ) = 0._wp
+            zpsi_uw(ji,jj,jpk) = 0._wp   ;   zpsi_vw(ji,jj,jpk) = 0._wp
+         END DO
+      END DO
+!$OMP END DO NOWAIT
       !
 !$OMP DO schedule(static) private(jk,jj,ji)
@@ -748,7 +781,11 @@
       !
 !$OMP PARALLEL
-!$OMP WORKSHARE
-      zw3d(:,:,jpk) = 0._wp                                    ! bottom value always 0
-!$OMP END WORKSHARE NOWAIT
+!$OMP DO schedule(static) private(jj,ji)
+      DO jj = 1, jpj
+         DO ji = 1, jpi
+            zw3d(ji,jj,jpk) = 0._wp                                    ! bottom value always 0
+         END DO
+      END DO
+!$OMP END DO NOWAIT
       !
 !$OMP DO schedule(static) private(jk)
@@ -786,7 +823,10 @@
          zztmp = 0.5_wp * rau0 * rcp 
 !$OMP PARALLEL
-!$OMP WORKSHARE
-         zw2d(:,:) = 0._wp
-!$OMP END WORKSHARE
+!$OMP DO schedule(static) private(jj,ji)
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               zw2d(ji,jj) = 0._wp
+            END DO
+         END DO
          DO jk = 1, jpkm1
 !$OMP DO schedule(static) private(jj,ji)
@@ -803,7 +843,10 @@
          CALL iom_put( "ueiv_heattr", zw2d )                  ! heat transport in i-direction
 !$OMP PARALLEL
-!$OMP WORKSHARE
-         zw2d(:,:) = 0._wp 
-!$OMP END WORKSHARE
+!$OMP DO schedule(static) private(jj,ji)
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               zw2d(ji,jj) = 0._wp
+            END DO
+         END DO
          DO jk = 1, jpkm1
 !$OMP DO schedule(static) private(jj,ji)
