diff --git a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90 b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90
index 3998269cfba2176385530bf0631aaa4766c29109..cc8363bbdd0c233a7b1b1b3894e9d0b55226b0ff 100644
--- a/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90
+++ b/src/ZSOLVER/tensorproductmultigrid_Source/discretisation.f90
@@ -797,23 +797,16 @@ end subroutine construct_vertical_coeff
 #ifdef MNH_COMPILER_NVHPC       
        !$acc loop independent  collapse(2)
 #endif
-       !dir$ concurrent
-       do ij=ijb,ije
-          !dir$ concurrent
-          do ii=iib,iie
+       do concurrent(ii=iib:iie,ij=ijb:ije)
              zv_st(ii,ij,iz)   = zd_k(iz)* ( (-zb_k(iz)-zc_k(iz))*Tij * zu_st(ii,ij,iz  )  &
                                               +zb_k(iz)          *Tij * zu_st(ii,ij,iz+1)  )
-          end do
        end do
        !
        do iz=2,ize-1
 #ifdef MNH_COMPILER_NVHPC          
           !$acc loop independent  collapse(2)
 #endif          
-          !dir$ concurrent
-          do ij=ijb,ije
-             !dir$ concurrent
-             do ii=iib,iie
+          do concurrent(ii=iib:iie,ij=ijb:ije)
                 zv_st(ii,ij,iz) = zd_k(iz)* ( ((-zb_k(iz)-zc_k(iz))*Tij - 4.0_rl ) * zu_st(ii,ij,iz)    &
                                                 +zb_k(iz)          *Tij            * zu_st(ii,ij,iz+1)  &
                                                          +zc_k(iz) *Tij            * zu_st(ii,ij,iz-1)  &
@@ -824,19 +817,14 @@ end subroutine construct_vertical_coeff
                                        )
              end do
           end do
-       end do
        !
        iz=ize
 #ifdef MNH_COMPILER_NVHPC       
        !$acc loop independent  collapse(2)
-#endif       
-       !dir$ concurrent
-       do ij=ijb,ije
-          !dir$ concurrent
-          do ii=iib,iie
+#endif
+       do concurrent(ii=iib:iie,ij=ijb:ije)       
              zv_st(ii,ij,iz) = zd_k(iz)*  (  (-zb_k(iz)-zc_k(iz))*Tij  * zu_st(ii,ij,iz)    &
                                                        +zc_k(iz) *Tij  * zu_st(ii,ij,iz-1)  )
-          end do
        end do
        !$acc end kernels
     endif
@@ -2099,9 +2087,12 @@ end subroutine line_Jacobi_mnh
       tmp_k => Ttridiag_mnh(level)%tmp_k
       c_k => Ttridiag_mnh(level)%c_k
          
-      !$acc kernels
+      !$acc kernels present(zSr_st,zSu_out_st)
        iz=1 
        zSr_st(iib:iie,ijb:ije,iz) = zb_st(iib:iie,ijb:ije,iz)
+#ifdef MNH_COMPILER_NVHPC          
+       !$acc loop independent collapse(2)
+#endif
        do iz=2,nz-1
           do concurrent(ii=iib:iie,ij=ijb:ije)
              zSr_st(ii,ij,iz) = zb_st(ii,ij,iz) - zd_k(iz) * ( &
@@ -2124,14 +2115,10 @@ end subroutine line_Jacobi_mnh
 #ifdef MNH_COMPILER_NVHPC          
           !$acc loop independent collapse(2)
 #endif          
-          !dir$ concurrent
-          do ij=ijb,ije
-             !dir$ concurrent
-             do ii=iib,iie
-                zSu_out_st(ii,ij,iz) = (zSr_st(ii,ij,iz) / (Tijs*zd_k(iz)) & 
+          do concurrent(ii=iib:iie,ij=ijb:ije)
+             zSu_out_st(ii,ij,iz) = (zSr_st(ii,ij,iz) / (Tijs*zd_k(iz)) & 
                                      - zSu_out_st(ii,ij,iz-1)*zc_k(iz)) / tmp_k(iz)
-             end do
-          end do          
+          end do
        end do
        !
        iz=nz
@@ -2141,8 +2128,13 @@ end subroutine line_Jacobi_mnh
        ! STEP 2: back substitution
        !$acc loop seq
        do iz=nz-1,1,-1
-          zSu_out_st(iib:iie,ijb:ije,iz) = zSu_out_st(iib:iie,ijb:ije,iz) & 
-                                        - c_k(iz) * zSu_out_st(iib:iie,ijb:ije,iz+1)
+#ifdef MNH_COMPILER_NVHPC          
+          !$acc loop independent collapse(2)
+#endif          
+          do concurrent(ii=iib:iie,ij=ijb:ije)
+             zSu_out_st(ii,ij,iz) = zSu_out_st(ii,ij,iz) & 
+                                        - c_k(iz) * zSu_out_st(ii,ij,iz+1)
+          end do
        end do
        !$acc end kernels