diff --git a/src/MNH/gravity_impl.f90 b/src/MNH/gravity_impl.f90
index 2667b4733d7064abc13e445497f9079da23cdc90..0f934aa68f9cb304c59f3f68fcead668d94a1431 100644
--- a/src/MNH/gravity_impl.f90
+++ b/src/MNH/gravity_impl.f90
@@ -126,6 +126,9 @@ REAL, DIMENSION(:,:,:,:), allocatable :: ZR
 !
 INTEGER :: JR
 !
+INTEGER  :: JI,JJ,JK
+INTEGER  :: JIU,JJU,JKU
+!
 !-------------------------------------------------------------------------------
 
 !$acc data present( PTHT, PRHODJ, PRT, PTHVREF, PRWS, PRTHS, PRRS, PRTHS_CLD, PRRS_CLD )
@@ -144,6 +147,10 @@ IF (MPPDB_INITIALIZED) THEN
   CALL MPPDB_CHECK(PRWS,     "GRAVITY_IMPL beg:PRWS")
 END IF
 
+JIU =  size(ptht, 1 )
+JJU =  size(ptht, 2 )
+JKU =  size(ptht, 3 )
+
 allocate( zrws_grav( size( ptht, 1 ), size( ptht, 2 ), size( ptht, 3 ) ) )
 allocate( zth      ( size( ptht, 1 ), size( ptht, 2 ), size( ptht, 3 ) ) )
 allocate( zr       ( size( prt,  1 ), size( prt,  2 ), size( prt,  3 ), size( prt, 4 ) ) )
@@ -154,9 +161,10 @@ allocate( zr       ( size( prt,  1 ), size( prt,  2 ), size( prt,  3 ), size( pr
 ! guess of Theta at future time-step
 !$acc kernels
 ZTH(:,:,:) = (PRTHS(:,:,:) + PRTHS_CLD(:,:,:)) / PRHODJ(:,:,:) * PTSTEP
-DO JR = 1, KRR
- ZR(:,:,:,JR) = (PRRS(:,:,:,JR) + PRRS_CLD(:,:,:,JR)) / PRHODJ(:,:,:) * PTSTEP
-END DO
+!
+DO CONCURRENT (  JI=1:JIU,JJ=1:JJU,JK=1:JKU , JR = 1:KRR )
+ ZR(JI,JJ,JK,JR) = (PRRS(JI,JJ,JK,JR) + PRRS_CLD(JI,JJ,JK,JR)) / PRHODJ(JI,JJ,JK) * PTSTEP
+END DO ! CONCURRENT
 !$acc end kernels
 !
 #ifndef MNH_OPENACC