diff --git a/MNH/ppm_met.f90 b/MNH/ppm_met.f90
index 82deee454258ff1c7d6db70e698dd19b9420363c..e18fce18d6b8ca851da7fde05b26382ba2a8e326 100644
--- a/MNH/ppm_met.f90
+++ b/MNH/ppm_met.f90
@@ -6,8 +6,7 @@ CONTAINS
       SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT,              &
                           PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
                           PTHT, PTKET, PRT,                       &
-                          PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME,   &
-                          ZRHOX11    )
+                          PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME    )
 !     ######################################################################
 !
 !!****  *PPM_MET * 
@@ -57,12 +56,12 @@ USE MODI_ADVEC_PPM_ALGO
 ! incorporate ADVEC_4TH_ORDER_ALG, MZF4 and MZM4
 !USE MODI_ADVEC_4TH_ORDER_AUX
 !
-!define ZSRC ZW3D26
 USE MODE_MNH_ZWORK, ONLY : ZUNIT3D, &
-& ZRHOX1=>ZW3D20 ,ZRHOX2=>ZW3D21, &
-& ZRHOY1=>ZW3D22 ,ZRHOY2=>ZW3D23, &
-& ZRHOZ1=>ZW3D24 ,ZRHOZ2=>ZW3D25  
-!& ZSRC
+& ZRHOX1=>ZRHOX1_PPM_MET ,ZRHOX2=>ZRHOX2_PPM_MET, &
+& ZRHOY1=>ZRHOY1_PPM_MET ,ZRHOY2=>ZRHOY2_PPM_MET, &
+& ZRHOZ1=>ZRHOZ1_PPM_MET ,ZRHOZ2=>ZRHOZ2_PPM_MET, & 
+& ZSRCTHT=>ZSRC_PPM_MET, &
+& ZSRC=>ZSRC_PPM_MET
 !
 IMPLICIT NONE
 !
@@ -88,7 +87,6 @@ REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT
 REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHS, PRTKES! Source terms
 REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS 
 !
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: ZRHOX11
 !
 !*       0.2   Declarations of local variables :
 !
@@ -101,7 +99,7 @@ INTEGER :: IGRID ! localisation on the model grid
 !*        Variables specific to ppm scheme
 !
 ! Advection source term calulated in the PPM algorithm
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC,ZSRCTHT
+!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC
 !
 ! Temporary advected rhodj
 !!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
@@ -126,56 +124,40 @@ IGRID = 1
 !
 ! Calculate the advection of the density RHODJ to pass to the algorithm
 !
-! acc data
-! acc update device (PCRV) async(11)
-! acc update device (PCRW) async(12)
-! acc update device (PTHT) async(13)
-! acc update device (PRT)  async(14)
-! acc & pcopyout(ZRHOX1,ZRHOY1,ZRHOZ1,ZRHOZ2,ZRHOY2,ZRHOX2) 
-
-!$acc data pcopyin (PCRU,PRHODJ) pcopyin(PCRV,PCRW) 
-! create(ZSRC)
+!$acc data pcopyin(PCRU,PCRV,PCRW,PRHODJ) 
+! create/mirror(ZRHOX1,ZRHOY1,ZRHOZ1,ZRHOZ2,ZRHOY2,ZRHOX2)
 CALL PPM_S0_X(HLBCX, IGRID, ZUNIT3D, PCRU, PRHODJ, PTSTEP, ZRHOX1)
-! acc wait(1)
-! acc update device (PCRV) async(11)
-! acc wait(11)
 CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT3D, PCRV, ZRHOX1, PTSTEP, ZRHOY1)
-! acc wait(12)
 CALL PPM_S0_Z(IGRID, ZUNIT3D, PCRW, ZRHOY1, PTSTEP, ZRHOZ1)
 CALL PPM_S0_Z(IGRID, ZUNIT3D, PCRW, PRHODJ, PTSTEP, ZRHOZ2)
 CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT3D, PCRV, ZRHOZ2, PTSTEP, ZRHOY2)
 CALL PPM_S0_X(HLBCX, IGRID, ZUNIT3D, PCRU, ZRHOY2, PTSTEP, ZRHOX2)
-! acc end data
-! acc update host (ZRHOX1) 
-!
 !
 ! Potential temperature
 !
-! acc wait(13)
-!$acc data copyin (PTHT) 
-! pcopyout(ZSRC) 
-!$acc data create(ZSRCTHT) 
+!$acc data pcopyin (PTHT) pcopy(PRTHS)
+! create/mirror(ZSRCTHT) 
 CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, &
                     ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
-                    ZSRCTHT, KTCOUNT, PCRU, PCRV, PCRW)
+                    ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
+!$acc kernels
 ! add the advection to the sources
-!PRTHS = PRTHS +  ZSRCTHT 
-!$acc update host(ZSRCTHT)
-!$acc end data  ! create(ZSRCTHT)
-!$acc end data ! pcopyout(PRTHS)
-PRTHS = PRTHS +  ZSRCTHT 
-! acc end data
+PRTHS = PRTHS +  ZSRC
+!$acc end kernels 
+!$acc end data  
 !
 IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADV_BU_RTH')
 !
 ! Turbulence variables
 !
 IF (GTKEALLOC) THEN
-!$acc data pcopyin (PTKET)
+!$acc data pcopyin (PTKET) pcopy(PRTKES)
    CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTKET,PRHODJ,PTSTEP, &
                        ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
                        ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
-  PRTKES = PRTKES + ZSRC
+   !$acc kernels
+   PRTKES = PRTKES + ZSRC
+   !$acc end kernels
 !$acc end data 
 !
   IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADV_BU_RTKE')
@@ -188,13 +170,16 @@ END IF
 !
 ! acc wait(14)
 DO JRR=1,KRR
-!$acc update device(PRT(:,:,:,JRR))
-!
+   ! acc update device(PRT(:,:,:,JRR))
+   !$acc data pcopy(PRRS(:,:,:,JRR)) pcopyin(PRT(:,:,:,JRR))
    CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PRT(:,:,:,JRR), &
                        PRHODJ, PTSTEP, &
                        ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
                        ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
+   !$acc kernels
    PRRS(:,:,:,JRR) = PRRS(:,:,:,JRR) + ZSRC(:,:,:)
+   !$acc end kernels
+!$acc end data
 !
    IF (JRR==1.AND.LBUDGET_RV) CALL BUDGET (PRRS(:,:,:,1),6,'ADV_BU_RRV') 
    IF (JRR==2.AND.LBUDGET_RC) CALL BUDGET (PRRS(:,:,:,2),7,'ADV_BU_RRC')