diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index 4e9ca2df06a44cac8cd844f904a7ab167c7d317c..dbe932a9adc5fd4ebbd00d81accaf8c37c25f1c1 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -1687,6 +1687,7 @@ REAL, DIMENSION(:,:,:), INTENT(OUT)   :: PAMOIST,PATHETA
 REAL                :: ZEPS         ! XMV / XMD
 real, dimension(:,:,:), pointer , contiguous :: zrvsat
 real, dimension(:,:,:), pointer , contiguous :: zdrvsatdt
+INTEGER :: izrvsat, izdrvsatdt
 !
 !-------------------------------------------------------------------------------
 
@@ -1699,10 +1700,15 @@ real, dimension(:,:,:), pointer , contiguous :: zdrvsatdt
     call Mppdb_check( pcp,  "Compute_function_thermo beg:pcp"  )
   end if
 
+#ifndef MNH_OPENACC  
   allocate( zrvsat   ( size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) )
   allocate( zdrvsatdt( size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) )
+#else
+izrvsat    = MNH_ALLOCATE_ZT3D( zrvsat   , size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) ) 
+izdrvsatdt = MNH_ALLOCATE_ZT3D( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) )
+#endif
 
-!$acc data create( zrvsat, zdrvsatdt )
+!$acc data present( zrvsat, zdrvsatdt )
 
   ZEPS = XMV / XMD
 !
@@ -1758,7 +1764,7 @@ real, dimension(:,:,:), pointer , contiguous :: zdrvsatdt
   PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:)
 !$acc end kernels
 
-  deallocate( zrvsat, zdrvsatdt )
+
 
   if ( mppdb_initialized ) then
     !Check all out arrays
@@ -1769,6 +1775,12 @@ real, dimension(:,:,:), pointer , contiguous :: zdrvsatdt
 
 !$acc end data
 
+#ifndef MNH_OPENACC 
+  deallocate( zrvsat, zdrvsatdt )
+#else
+  CALL MNH_REL_ZT3D(izrvsat, izdrvsatdt )
+#endif
+ 
 !$acc end data
 
 END SUBROUTINE COMPUTE_FUNCTION_THERMO