diff --git a/MNH/ppm_met.f90 b/MNH/ppm_met.f90
index b7132970d1d2d5af05ddf6a2a1646af1e2044cd0..82deee454258ff1c7d6db70e698dd19b9420363c 100644
--- a/MNH/ppm_met.f90
+++ b/MNH/ppm_met.f90
@@ -1,48 +1,13 @@
+MODULE MODI_PPM_MET
 !
-!     #####################
-      MODULE MODI_PPM_MET  
-!     #####################
-!
-INTERFACE
-!
-      SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT,              &
-                          PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
-                          PTHT, PTKET, PRT,                       &
-                          PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME    )
-!
-USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
-!
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCX ! X direction LBC type
-CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
-CHARACTER (LEN=6),               INTENT(IN) :: HMET_ADV_SCHEME
-!
-INTEGER,                  INTENT(IN)    :: KRR    ! Number of moist variables
-INTEGER,                  INTENT(IN)    :: KTCOUNT! iteration count
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRU  ! Courant
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  ! numbers
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! 
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
-!
-REAL,                     INTENT(IN)    :: PTSTEP ! Single Time step 
-!
-REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PTHT, PTKET        ! Vars at t
-REAL, DIMENSION(:,:,:,:), INTENT(IN)    :: PRT 
-!
-REAL, DIMENSION(:,:,:),   INTENT(INOUT) :: PRTHS, PRTKES! Source terms
-REAL, DIMENSION(:,:,:,:), INTENT(INOUT) :: PRRS 
-!
-END SUBROUTINE PPM_MET   
-!
-END INTERFACE
-!
-END MODULE MODI_PPM_MET
+CONTAINS
 !
 !     ######################################################################
       SUBROUTINE PPM_MET (HLBCX,HLBCY, KRR, KTCOUNT,              &
                           PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
                           PTHT, PTKET, PRT,                       &
-                          PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME    )
+                          PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME,   &
+                          ZRHOX11    )
 !     ######################################################################
 !
 !!****  *PPM_MET * 
@@ -92,9 +57,12 @@ USE MODI_ADVEC_PPM_ALGO
 ! incorporate ADVEC_4TH_ORDER_ALG, MZF4 and MZM4
 !USE MODI_ADVEC_4TH_ORDER_AUX
 !
-USE MODE_MNH_ZWORK, ONLY : &
-& ZUNIT3D ,&
-& ZW3D10
+!define ZSRC ZW3D26
+USE MODE_MNH_ZWORK, ONLY : ZUNIT3D, &
+& ZRHOX1=>ZW3D20 ,ZRHOX2=>ZW3D21, &
+& ZRHOY1=>ZW3D22 ,ZRHOY2=>ZW3D23, &
+& ZRHOZ1=>ZW3D24 ,ZRHOZ2=>ZW3D25  
+!& ZSRC
 !
 IMPLICIT NONE
 !
@@ -120,6 +88,8 @@ 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 :
 !
 INTEGER :: JRR           ! Loop index for  moist variables
@@ -131,13 +101,13 @@ 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
+REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZSRC,ZSRCTHT
 !
 ! Temporary advected rhodj
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
+!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,ZRHOX2
 !!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX2
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOY1,ZRHOY2
-REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOZ1,ZRHOZ2
+!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOY1,ZRHOY2
+!!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOZ1,ZRHOZ2
 !!$REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZUNIT3D
 !
 !-------------------------------------------------------------------------------
@@ -157,36 +127,56 @@ IGRID = 1
 ! Calculate the advection of the density RHODJ to pass to the algorithm
 !
 ! acc data
-!$acc data  pcopyin (PCRU,PRHODJ,PCRV,PCRW) &
-!$acc & pcopyout(ZRHOX1,ZRHOY1,ZRHOZ1,ZRHOZ2,ZRHOY2,ZRHOX2)
-!!$ZUNIT3D = 1.0
+! 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)
 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 end data
 ! acc update host (ZRHOX1) 
 !
 !
 ! Potential temperature
 !
+! acc wait(13)
+!$acc data copyin (PTHT) 
+! pcopyout(ZSRC) 
+!$acc data create(ZSRCTHT) 
 CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, &
                     ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
-                    ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
+                    ZSRCTHT, KTCOUNT, PCRU, PCRV, PCRW)
 ! add the advection to the sources
-PRTHS = PRTHS +  ZSRC 
+!PRTHS = PRTHS +  ZSRCTHT 
+!$acc update host(ZSRCTHT)
+!$acc end data  ! create(ZSRCTHT)
+!$acc end data ! pcopyout(PRTHS)
+PRTHS = PRTHS +  ZSRCTHT 
+! acc end data
 !
 IF (LBUDGET_TH) CALL BUDGET (PRTHS,4,'ADV_BU_RTH')
 !
 ! Turbulence variables
 !
 IF (GTKEALLOC) THEN
+!$acc data pcopyin (PTKET)
    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 end data 
 !
   IF (LBUDGET_TKE) CALL BUDGET (PRTKES,5,'ADV_BU_RTKE')
 !
@@ -196,7 +186,9 @@ END IF
 !
 ! Case with KRR moist variables
 !
+! acc wait(14)
 DO JRR=1,KRR
+!$acc update device(PRT(:,:,:,JRR))
 !
    CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PRT(:,:,:,JRR), &
                        PRHODJ, PTSTEP, &
@@ -213,7 +205,9 @@ DO JRR=1,KRR
    IF (JRR==7.AND.LBUDGET_RH) CALL BUDGET (PRRS(:,:,:,7),12,'ADV_BU_RRH') 
 !
 END DO
-! acc end data
+!$acc end data
 !
 !
 END SUBROUTINE PPM_MET
+
+END MODULE MODI_PPM_MET