diff --git a/src/ZSOLVER/pressurez.f90 b/src/ZSOLVER/pressurez.f90
index 83d8b2ecc1b06fc30bcfae3e351f0cf51d3e3afd..2d1146b364cdca7f3affc3641060269af07f5b2e 100644
--- a/src/ZSOLVER/pressurez.f90
+++ b/src/ZSOLVER/pressurez.f90
@@ -663,32 +663,33 @@ CALL GX_M_U_DEVICE(1,IKU,1,ZPHIT,PDXX,PDZZ,PDZX,ZDV_SOURCE)
 IF ( GWEST ) THEN
 !!!!!!!!!!!!!!!!  FUJI  compiler directive !!!!!!!!!!
 !!!!!!!!!!!!!!!!  FUJI  compiler directive !!!!!!!!!!
-   !$acc kernels
-    DO JK=2,IKU-1
-      ZDV_SOURCE(IIB,:,JK)=                                                    &
-       (ZPHIT(IIB,:,JK) - ZPHIT(IIB-1,:,JK) - 0.5 * (                              &
-        PDZX(IIB,:,JK)   * (ZPHIT(IIB,:,JK)-ZPHIT(IIB,:,JK-1)) / PDZZ(IIB,:,JK)      &
-       +PDZX(IIB,:,JK+1) * (ZPHIT(IIB,:,JK+1)-ZPHIT(IIB,:,JK)) / PDZZ(IIB,:,JK+1)    &
+   !$acc kernels loop independent collapse(2) async
+   DO CONCURRENT (JJ=1:IJU , JK=2:IKU-1)
+      ZDV_SOURCE(IIB,JJ,JK)=                                                    &
+       (ZPHIT(IIB,JJ,JK) - ZPHIT(IIB-1,JJ,JK) - 0.5 * (                              &
+        PDZX(IIB,JJ,JK)   * (ZPHIT(IIB,JJ,JK)-ZPHIT(IIB,JJ,JK-1)) / PDZZ(IIB,JJ,JK)      &
+       +PDZX(IIB,JJ,JK+1) * (ZPHIT(IIB,JJ,JK+1)-ZPHIT(IIB,JJ,JK)) / PDZZ(IIB,JJ,JK+1)    &
                                               )                              &
-       ) / PDXX(IIB,:,JK)
+       ) / PDXX(IIB,JJ,JK)
    END DO
    !$acc end kernels
 ENDIF
   !
 IF( GEAST ) THEN
-   !$acc kernels
-    DO JK=2,IKU-1
-      ZDV_SOURCE(IIE+1,:,JK)=                                                   &
-        (ZPHIT(IIE+1,:,JK) - ZPHIT(IIE+1-1,:,JK) - 0.5 * (                        &
-         PDZX(IIE+1,:,JK)   * (ZPHIT(IIE+1-1,:,JK)-ZPHIT(IIE+1-1,:,JK-1))           &
-                          / PDZZ(IIE+1-1,:,JK)                                  &
-        +PDZX(IIE+1,:,JK+1) * (ZPHIT(IIE+1-1,:,JK+1)-ZPHIT(IIE+1-1,:,JK))           &
-                          / PDZZ(IIE+1-1,:,JK+1)                                &
+   !$acc kernels loop independent collapse(2) async
+   DO CONCURRENT (JJ=1:IJU , JK=2:IKU-1)
+      ZDV_SOURCE(IIE+1,JJ,JK)=                                                   &
+        (ZPHIT(IIE+1,JJ,JK) - ZPHIT(IIE+1-1,JJ,JK) - 0.5 * (                        &
+         PDZX(IIE+1,JJ,JK)   * (ZPHIT(IIE+1-1,JJ,JK)-ZPHIT(IIE+1-1,JJ,JK-1))           &
+                          / PDZZ(IIE+1-1,JJ,JK)                                  &
+        +PDZX(IIE+1,JJ,JK+1) * (ZPHIT(IIE+1-1,JJ,JK+1)-ZPHIT(IIE+1-1,JJ,JK))           &
+                          / PDZZ(IIE+1-1,JJ,JK+1)                                &
                                                      )                        &
-        ) / PDXX(IIE+1,:,JK)
+        ) / PDXX(IIE+1,JJ,JK)
    END DO
    !$acc end kernels
 END IF
+!$acc wait
 !
 CALL MPPDB_CHECK3DM("before MXM PRESSUREZ :PRU/V/WS",PRECISION,PRUS,PRVS,PRWS)
 IF(CEQNSYS=='MAE' .OR. CEQNSYS=='DUR') THEN  
@@ -720,31 +721,31 @@ IF(.NOT. L2D) THEN
    IF ( GSOUTH ) THEN
 !!!!!!!!!!!!!!!!  FUJI  compiler directive !!!!!!!!!!
 !!!!!!!!!!!!!!!!  FUJI  compiler directive !!!!!!!!!!
-      !$acc kernels async
-      DO JK=2,IKU-1
-        ZDV_SOURCE(:,IJB,JK)=                                                  &
-         (ZPHIT(:,IJB,JK) - ZPHIT(:,IJB-1,JK) - 0.5 * (                            &
-          PDZY(:,IJB,JK)   * (ZPHIT(:,IJB,JK)-ZPHIT(:,IJB,JK-1)) / PDZZ(:,IJB,JK)    &
-         +PDZY(:,IJB,JK+1) * (ZPHIT(:,IJB,JK+1)-ZPHIT(:,IJB,JK)) / PDZZ(:,IJB,JK+1)  &
-                                                )                            &
-         ) / PDYY(:,IJB,JK)
-     END DO
-     !$acc end kernels
-    END IF
-    !
-    IF ( GNORTH ) THEN
-      !$acc kernels async
-      DO JK=2,IKU-1
-        ZDV_SOURCE(:,IJE+1,JK)=                                                &
-         (ZPHIT(:,IJE+1,JK) - ZPHIT(:,IJE+1-1,JK) - 0.5 * (                      &
-          PDZY(:,IJE+1,JK)   * (ZPHIT(:,IJE+1-1,JK)-ZPHIT(:,IJE+1-1,JK-1))         &
-                           / PDZZ(:,IJE+1-1,JK)                                &
-         +PDZY(:,IJE+1,JK+1) * (ZPHIT(:,IJE+1-1,JK+1)-ZPHIT(:,IJE+1-1,JK))         &
-                           / PDZZ(:,IJE+1-1,JK+1)                              &
-                                                      )                      &
-        ) / PDYY(:,IJE+1,JK)
-     END DO
-     !$acc end kernels
+      !$acc kernels loop independent collapse(2) async
+      DO CONCURRENT (JI=1:IIU , JK=2:IKU-1)
+         ZDV_SOURCE(JI,IJB,JK)=                                                  &
+              (ZPHIT(JI,IJB,JK) - ZPHIT(JI,IJB-1,JK) - 0.5 * (                            &
+              PDZY(JI,IJB,JK)   * (ZPHIT(JI,IJB,JK)-ZPHIT(JI,IJB,JK-1)) / PDZZ(JI,IJB,JK)    &
+              +PDZY(JI,IJB,JK+1) * (ZPHIT(JI,IJB,JK+1)-ZPHIT(JI,IJB,JK)) / PDZZ(JI,IJB,JK+1)  &
+              )                            &
+              ) / PDYY(JI,IJB,JK)
+      END DO
+      !$acc end kernels
+   END IF
+   !
+   IF ( GNORTH ) THEN
+      !$acc kernels loop independent collapse(2) async
+      DO CONCURRENT (JI=1:IIU , JK=2:IKU-1) 
+         ZDV_SOURCE(JI,IJE+1,JK)=                                                &
+              (ZPHIT(JI,IJE+1,JK) - ZPHIT(JI,IJE+1-1,JK) - 0.5 * (                      &
+              PDZY(JI,IJE+1,JK)   * (ZPHIT(JI,IJE+1-1,JK)-ZPHIT(JI,IJE+1-1,JK-1))         &
+              / PDZZ(JI,IJE+1-1,JK)                                &
+              +PDZY(JI,IJE+1,JK+1) * (ZPHIT(JI,IJE+1-1,JK+1)-ZPHIT(JI,IJE+1-1,JK))         &
+              / PDZZ(JI,IJE+1-1,JK+1)                              &
+              )                      &
+              ) / PDYY(JI,IJE+1,JK)
+      END DO
+      !$acc end kernels
   END IF
 !$acc wait  
 !