diff --git a/MNH/ppm_met.f90 b/MNH/ppm_met.f90
index 5fca9c10ef978df198ab55a46557986c8cdfe400..78667fdb0bfdf30f0bef4be574d64d272ea0e748 100644
--- a/MNH/ppm_met.f90
+++ b/MNH/ppm_met.f90
@@ -7,6 +7,61 @@ CONTAINS
                           PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
                           PTHT, PTKET, PRT,                       &
                           PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME    )
+        
+        USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D
+        USE MODE_MNH_ZWORK, ONLY : ZUNIT3D
+
+        IMPLICIT NONE
+!
+!*       0.1   Declarations of dummy arguments :
+!
+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  ! contravariant
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  !  components
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! of momentum
+REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
+!
+REAL,                     INTENT(IN)    :: PTSTEP ! 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 
+
+
+INTEGER :: IZSRC,IZRHOX1,IZRHOX2,IZRHOY1,IZRHOY2,IZRHOZ1,IZRHOZ2
+
+      CALL  MNH_GET_ZT3D(IZSRC,IZRHOX1,IZRHOX2,IZRHOY1,IZRHOY2,IZRHOZ1,IZRHOZ2)
+
+      CALL PPM_MET_D(HLBCX,HLBCY, KRR, KTCOUNT,              &
+                   & PCRU, PCRV, PCRW, PTSTEP, PRHODJ,       &
+                   & PTHT, PTKET, PRT,                       &
+                   & PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME ,  &
+                   & ZT3D(:,:,:,IZSRC), &
+                   & ZT3D(:,:,:,IZRHOX1),ZT3D(:,:,:,IZRHOX2),ZT3D(:,:,:,IZRHOY1), &
+                   & ZT3D(:,:,:,IZRHOY2),ZT3D(:,:,:,IZRHOZ1),ZT3D(:,:,:,IZRHOZ2), &
+                   & ZUNIT3D   )
+
+      CALL  MNH_REL_ZT3D(IZSRC,IZRHOX1,IZRHOX2,IZRHOY1,IZRHOY2,IZRHOZ1,IZRHOZ2)
+
+CONTAINS
+
+      SUBROUTINE PPM_MET_D(HLBCX,HLBCY, KRR, KTCOUNT,                 &
+                         & PCRU, PCRV, PCRW, PTSTEP, PRHODJ,          &
+                         & PTHT, PTKET, PRT,                          &
+                         & PRTHS, PRTKES, PRRS, HMET_ADV_SCHEME,      &
+                         & ZSRC,                                      &
+                         & ZRHOX1,ZRHOX2,ZRHOY1,ZRHOY2,ZRHOZ1,ZRHOZ2, &
+                         & ZUNIT   )
+
+
 !     ######################################################################
 !
 !!****  *PPM_MET * 
@@ -56,13 +111,6 @@ 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, &
-& 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
 !
 !*       0.1   Declarations of dummy arguments :
@@ -99,14 +147,15 @@ 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
+!$acc declare present (ZSRC)
 !
 ! 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)) :: 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)) :: ZUNIT3D
+REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZRHOX1,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)) :: ZUNIT
+!$acc declare present (ZRHOX1,ZRHOX2,ZRHOY1,ZRHOY2,ZRHOZ1,ZRHOZ2,ZUNIT)
 !
 !-------------------------------------------------------------------------------
 !
@@ -124,19 +173,17 @@ IGRID = 1
 !
 ! Calculate the advection of the density RHODJ to pass to the algorithm
 !
-!$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)
-CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT3D, PCRV, ZRHOX1, PTSTEP, ZRHOY1)
-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 data pcopyin(PCRU,PCRV,PCRW,PRHODJ)
+CALL PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, PRHODJ, PTSTEP, ZRHOX1)
+CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, ZRHOX1, PTSTEP, ZRHOY1)
+CALL PPM_S0_Z(IGRID, ZUNIT, PCRW, ZRHOY1, PTSTEP, ZRHOZ1)
+CALL PPM_S0_Z(IGRID, ZUNIT, PCRW, PRHODJ, PTSTEP, ZRHOZ2)
+CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, ZRHOZ2, PTSTEP, ZRHOY2)
+CALL PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, ZRHOY2, PTSTEP, ZRHOX2)
 !
 ! Potential temperature
 !
 !$acc data pcopyin (PTHT) pcopy(PRTHS)
-! create/mirror(ZSRC) 
 CALL ADVEC_PPM_ALGO(HMET_ADV_SCHEME, HLBCX, HLBCY, IGRID, PTHT, PRHODJ, PTSTEP, &
                     ZRHOX1, ZRHOX2, ZRHOY1, ZRHOY2, ZRHOZ1, ZRHOZ2, &
                     ZSRC, KTCOUNT, PCRU, PCRV, PCRW)
@@ -164,13 +211,9 @@ IF (GTKEALLOC) THEN
 !
 END IF
 !
-!
-!
 ! Case with KRR moist variables
 !
-! acc wait(14)
 DO JRR=1,KRR
-   ! 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, &
@@ -192,7 +235,8 @@ DO JRR=1,KRR
 END DO
 !$acc end data
 !
-!
+END SUBROUTINE PPM_MET_D
+
 END SUBROUTINE PPM_MET
 
 END MODULE MODI_PPM_MET