Index: trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
===================================================================
--- trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90	(revision 7646)
+++ trunk/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90	(revision 7698)
@@ -84,4 +84,5 @@
       !!----------------------------------------------------------------------
       INTEGER, INTENT(in) ::   kt   ! ocean time-step index
+      INTEGER ::  jk, jj, ji
       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv
       !!----------------------------------------------------------------------
@@ -91,6 +92,13 @@
       IF( l_trddyn ) THEN                    ! Temporary saving of ua and va trends (l_trddyn)
          CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv )
-         ztrdu(:,:,:) = ua(:,:,:)
-         ztrdv(:,:,:) = va(:,:,:)
+!$OMP PARALLEL DO schedule(static) private(jk, jj, ji)
+         DO jk = 1, jpk
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  ztrdu(ji,jj,jk) = ua(ji,jj,jk)
+                  ztrdv(ji,jj,jk) = va(ji,jj,jk)
+               END DO
+            END DO
+         END DO
       ENDIF
       !
@@ -105,6 +113,13 @@
       !
       IF( l_trddyn ) THEN      ! save the hydrostatic pressure gradient trends for momentum trend diagnostics
-         ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:)
-         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:)
+!$OMP PARALLEL DO schedule(static) private(jk, jj, ji)
+         DO jk = 1, jpk
+            DO jj = 1, jpj
+               DO ji = 1, jpi
+                  ztrdu(ji,jj,jk) = ua(ji,jj,jk) - ztrdu(ji,jj,jk)
+                  ztrdv(ji,jj,jk) = va(ji,jj,jk) - ztrdv(ji,jj,jk)
+               END DO
+            END DO
+         END DO
          CALL trd_dyn( ztrdu, ztrdv, jpdyn_hpg, kt )
          CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )
@@ -198,5 +213,12 @@
       ! 
       ! initialisation of ice shelf load
-      IF ( .NOT. ln_isfcav ) riceload(:,:)=0.0
+      IF ( .NOT. ln_isfcav ) THEN
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               riceload(ji,jj)=0.0
+            END DO
+         END DO
+      END IF
       IF (       ln_isfcav ) THEN
          CALL wrk_alloc( jpi,jpj, 2,  ztstop) 
@@ -212,5 +234,11 @@
          
          ! assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude)
-         ztstop(:,:,1)=-1.9_wp ; ztstop(:,:,2)=34.4_wp
+!$OMP PARALLEL DO schedule(static) private(jj, ji)
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               ztstop(ji,jj,1)=-1.9_wp
+               ztstop(ji,jj,2)=34.4_wp
+            END DO
+         END DO
 
          ! compute density of the water displaced by the ice shelf 
@@ -226,4 +254,6 @@
          ! divided by 2 later
          ziceload = 0._wp
+!$OMP PARALLEL
+!$OMP DO schedule(static) private(jj,ji,ikt,jk)
          DO jj = 1, jpj
             DO ji = 1, jpi
@@ -238,5 +268,11 @@
             END DO
          END DO
-         riceload(:,:)=ziceload(:,:)  ! need to be saved for diaar5
+!$OMP DO schedule(static) private(jj, ji)
+         DO jj = 1, jpj
+            DO ji = 1, jpi
+               riceload(ji,jj)=ziceload(ji,jj)  ! need to be saved for diaar5
+            END DO
+         END DO
+!$OMP END PARALLEL
 
          CALL wrk_dealloc( jpi,jpj, 2,  ztstop) 
@@ -282,4 +318,6 @@
 
       ! Surface value
+!$OMP PARALLEL
+!$OMP DO schedule(static) private(ji,jj, zcoef1)
       DO jj = 2, jpjm1
          DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -297,4 +335,5 @@
       ! interior value (2=<jk=<jpkm1)
       DO jk = 2, jpkm1
+!$OMP DO schedule(static) private(ji,jj, zcoef1)
          DO jj = 2, jpjm1
             DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -313,5 +352,7 @@
             END DO
          END DO
-      END DO
+!$OMP END DO NOWAIT
+      END DO
+!$OMP END PARALLEL
       !
       CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zhpj )
@@ -351,4 +392,6 @@
 
       !  Surface value (also valid in partial step case)
+!$OMP PARALLEL
+!$OMP DO schedule(static) private(ji,jj,zcoef1)
       DO jj = 2, jpjm1
          DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -365,4 +408,5 @@
       ! interior value (2=<jk=<jpkm1)
       DO jk = 2, jpkm1
+!$OMP DO schedule(static) private(ji,jj, zcoef1)
          DO jj = 2, jpjm1
             DO ji = fs_2, fs_jpim1   ! vector opt.
@@ -384,4 +428,5 @@
 
       ! partial steps correction at the last level  (use gru & grv computed in zpshde.F90)
+!$OMP DO schedule(static) private(ji,jj,iku,ikv,zcoef2,zcoef3)
       DO jj = 2, jpjm1
          DO ji = 2, jpim1
@@ -404,4 +449,5 @@
          END DO
       END DO
+!$OMP END PARALLEL
       !
       CALL wrk_dealloc( jpi,jpj,jpk,   zhpi, zhpj )
