diff --git a/MNH/ppm.f90 b/MNH/ppm.f90
index 254e3296d7e5f621fb53caedeb059ce078112b9c..08d964d714e47d1f9f6d3bdfcd1bb3df64663b4c 100644
--- a/MNH/ppm.f90
+++ b/MNH/ppm.f90
@@ -250,7 +250,7 @@ USE MODD_LUNIT
 !END JUAN PPM_LL
 USE MODE_MPPDB
 USE MODD_PARAMETERS, ONLY : JPHEXT
-USE MODE_TOOLS_ll, ONLY : GET_INDICE_ll, LEAST_ll, LWEST_ll
+!
 !
 !
 IMPLICIT NONE
@@ -761,6 +761,7 @@ END SUBROUTINE PPM_01_X
       SUBROUTINE PPM_01_Y(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP,PR)
 
         USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D
+        USE MODE_MNH_ZWORK, ONLY : IIU,IJU,IKU
 
 IMPLICIT NONE
 !
@@ -782,7 +783,8 @@ INTEGER :: IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG
 
         CALL  MNH_GET_ZT3D(IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG)
 
-        CALL  PPM_01_Y_D(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP, PR, &
+        CALL  PPM_01_Y_D(IIU,IJU,IKU,HLBCY, KGRID, &
+                     & PSRC, PCR, PRHO, PTSTEP, PR, &
                      & ZT3D(:,:,:,IZQL),ZT3D(:,:,:,IZQR),ZT3D(:,:,:,IZDQ),ZT3D(:,:,:,IZQ6), &
                      & ZT3D(:,:,:,IZDMQ),ZT3D(:,:,:,IZQL0),ZT3D(:,:,:,IZQR0), ZT3D(:,:,:,IZQ60), &
                      & ZT3D(:,:,:,IZFPOS),ZT3D(:,:,:,IZFNEG) )
@@ -791,7 +793,8 @@ INTEGER :: IZQL,IZQR,IZDQ,IZQ6,IZDMQ,IZQL0,IZQR0,IZQ60,IZFPOS,IZFNEG
 
 CONTAINS
 
-        SUBROUTINE  PPM_01_Y_D(HLBCY, KGRID, PSRC, PCR, PRHO, PTSTEP, PR, &
+        SUBROUTINE  PPM_01_Y_D(IIU,IJU,IKU,HLBCY, KGRID, &
+                     & PSRC, PCR, PRHO, PTSTEP, PR, &
                      & ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG)
 
 !     ########################################################################
@@ -827,19 +830,19 @@ CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY  ! Y direction LBC type
 INTEGER,                INTENT(IN)  :: KGRID   ! C grid localisation
 REAL,                   INTENT(IN)  :: PTSTEP   ! Time step 
 !
-REAL, DIMENSION(:,:,:), INTENT(INOUT):: PSRC ! variable at t
-REAL, DIMENSION(:,:,:), INTENT(IN)  :: PCR   &  ! Courant number
+REAL, DIMENSION(IIU,IJU,IKU), INTENT(INOUT):: PSRC ! variable at t
+REAL, DIMENSION(IIU,IJU,IKU), INTENT(IN)  :: PCR   &  ! Courant number
                                      , PRHO     ! density
 !
 ! output source term
-REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PR
+REAL, DIMENSION(IIU,IJU,IKU), INTENT(INOUT) :: PR
 !$acc declare present (PSRC,PCR,PRHO,PR)
 !
 !
 !*       0.2   Declarations of local variables :
 !
 ! terms used in parabolic interpolation, dmq, qL, qR, dq, q6
-REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: &
+REAL, DIMENSION(IIU,IJU,IKU) :: &
      ZQL,ZQR , ZDQ,ZQ6 , ZDMQ & 
 ! extra variables for the initial guess of parabolae parameters
    , ZQL0,ZQR0,ZQ60 &
@@ -850,10 +853,8 @@ REAL, DIMENSION(SIZE(PCR,1),SIZE(PCR,2),SIZE(PCR,3)) :: &
 INTEGER:: IIB,IJB    ! Begining useful area in x,y,z directions
 INTEGER:: IIE,IJE    ! End useful area in x,y,z directions
 !
-!BEG JUAN PPM_LL
-INTEGER                          :: ILUOUT,IRESP             ! for prints
-INTEGER                          :: IIW,IIA
-!END JUAN PPM_LL
+INTEGER                          :: ILUOUT,IRESP             ! for prints      
+INTEGER :: IIW,IIA          
 !
 !JUAN ACC
 INTEGER                          :: I,J,K ,IIU,IJU,IKU
@@ -877,10 +878,6 @@ CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
 IIW=IIB
 IIA=IIE
 
-IIU=size(psrc,1)
-IJU=size(psrc,2)
-IKU=size(psrc,3)
-
 GSOUTH=LSOUTH_ll()
 GNORTH=LNORTH_ll()
 
@@ -902,21 +899,33 @@ CALL GET_HALO_D(PSRC,HDIR="01_Y")
 !
 #define JUAN_ACC_01_Y
 #ifdef JUAN_ACC_01_Y
-!$acc data 
+!acc data 
 ! create/mirror (ZQL,ZQR,ZDQ,ZQ6,ZDMQ,ZQL0,ZQR0,ZQ60,ZFPOS,ZFNEG) 
 !$acc kernels
 #endif
-PR=PSRC
-ZQL=PSRC
-ZQR=PSRC
-ZDQ=PSRC
-ZQ6=PSRC
-ZDMQ=PSRC
-ZQL0=PSRC
-ZQR0=PSRC
-ZQ60=PSRC
-ZFPOS=PSRC
-ZFNEG=PSRC
+
+
+ZFPOS(1:IIW,:,:)=PSRC(1:IIW,:,:)
+ZFNEG(1:IIW,:,:)=PSRC(1:IIW,:,:)
+!!$
+ZFPOS(IIA:,:,:)=PSRC(IIA:,:,:)
+ZFNEG(IIA:,:,:)=PSRC(IIA:,:,:)
+
+
+!!INUTILE $PR=PSRC
+!!INUTILE $ZQL=PSRC
+!!INUTILE $ZQR=PSRC
+!!INUTILE $ZDQ=PSRC
+!!INUTILE $ZQ6=PSRC
+!!INUTILE $ZDMQ=PSRC
+
+!!INUTILE $ZQL0=PSRC
+!!INUTILE $ZQR0=PSRC
+!!INUTILE $ZQ60=PSRC
+
+!!$ZFPOS=PSRC
+!!$ZFNEG=PSRC
+
 ! acc end kernels
 !
 !!$SELECT CASE ( HLBCY(1) ) ! Y direction LBC type: (1) for left side
@@ -998,7 +1007,7 @@ ZFNEG=PSRC
 !!$        (ZDQ(IIW:IIA,IJB-1:IJE,:) - (1.0 - 2.0*PCR(IIW:IIA,IJB:IJE+1,:)/3.0)        &
 !!$        * ZQ6(IIW:IIA,IJB-1:IJE,:))
 !!$!
-!!$   CALL GET_HALO(ZFPOS(:,:,:),HDIR="01_Y")
+!!$   CALL GET_HALO(ZFPOS,HDIR="01_Y")
 !!$!
 !!$! SOUTH BOUND
 !!$!
@@ -1012,7 +1021,7 @@ ZFNEG=PSRC
 !!$!
 !!$! advect the actual field in Y direction by V*dt
 !!$!
-!!$   PR = DYF( PCR*MYM(PRHO)*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + & 
+!!$   PR = DYF( PCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & 
 !!$                             ZFNEG*(0.5-SIGN(0.5,PCR)) ) )
 !!$   CALL GET_HALO(PR,HDIR="01_Y") 
 !!$   CALL MPPDB_CHECK3DM("PPM::PPM_01_Y CYCL ::PR",PRECISION,PR) 
@@ -1135,7 +1144,7 @@ CALL  GET_HALO_D(ZQL0,HDIR="01_Y")
 !
 ! initialize final parabolae parameters
 !
-   ZQL(:,:,:) = ZQL0
+   ZQL = ZQL0
    ZQR = ZQR0
    ZQ6 = ZQ60 
    !#acc end kernels 
@@ -1144,18 +1153,18 @@ CALL  GET_HALO_D(ZQL0,HDIR="01_Y")
 !
    ! acc kernels
    WHERE ( ZDMQ == 0.0 )
-      ZQL(:,:,:) = PSRC
+      ZQL = PSRC
       ZQR = PSRC
       ZQ6 = 0.0
    ENDWHERE
    WHERE ( ( ZDMQ /= 0.0 ) .AND. ( ZQ60*ZDQ < -(ZDQ)**2 ) )
       ZQ6 = 3.0*(ZQL0 - PSRC)
       ZQR = ZQL0 - ZQ6
-      ZQL(:,:,:) = ZQL0
+      ZQL = ZQL0
    ENDWHERE
    WHERE ( ( ZDMQ /= 0.0 ) .AND. ( ZQ60*ZDQ > (ZDQ)**2 ) )
       ZQ6 = 3.0*(ZQR0 - PSRC)
-      ZQL(:,:,:) = ZQR0 - ZQ6
+      ZQL = ZQR0 - ZQ6
       ZQR = ZQR0
    END WHERE
    ! acc end kernels 
@@ -1164,7 +1173,7 @@ CALL  GET_HALO_D(ZQL0,HDIR="01_Y")
 ! recalculate coefficients of the parabolae
 !
    !#acc kernels
-   ZDQ = ZQR - ZQL(:,:,:)
+   ZDQ = ZQR - ZQL
    !#acc end kernels 
 !
    ! and finally calculate fluxes for the advection
@@ -1233,24 +1242,22 @@ CALL GET_HALO_D(ZFPOS,HDIR="01_Y")
                         ZQR(IIW:IIA,IJE,:)
    !#acc end kernels 
    ENDIF
-!!$!
-!!$! advect the actual field in X direction by U*dt
-!!$!
+!
+! advect the actual field in X direction by U*dt
+!
     !#acc kernels   
     mym(ZQL,PRHO)
-    ZQR =  PCR* ZQL(:,:,:)*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) 
+    ZQR =  PCR* ZQL*( ZFPOS*(0.5+SIGN(0.5,PCR)) + ZFNEG*(0.5-SIGN(0.5,PCR)) ) 
     dyf(PR,ZQR)
     !#acc end kernels 
 
-!!$      PR = ZDMQ + ZQL0 + ZDQ +  ZQ60 +  ZQL + ZQR  + ZQ6 + ZQR0 + ZFPOS(:,:,:) + ZFNEG
-
-!!$   PR = DYF( PCR*MYM(PRHO)*( ZFPOS(:,:,:)*(0.5+SIGN(0.5,PCR)) + & 
+!!$   PR = DYF( PCR*MYM(PRHO)*( ZFPOS*(0.5+SIGN(0.5,PCR)) + & 
 !!$                             ZFNEG*(0.5-SIGN(0.5,PCR)) ) )
 !!$!
 
 #ifdef JUAN_ACC_01_Y
 !$acc end kernels 
-!$acc end data 
+!acc end data 
 #endif
 
    CALL GET_HALO_D(PR,HDIR="01_Y")