diff --git a/src/ZSOLVER/ppm.f90 b/src/ZSOLVER/ppm.f90
index 150ef055a45211c6956fbda8f9cf9bd40688b480..6c80487d465aecf2a6ddbc78f07daae49da0017f 100644
--- a/src/ZSOLVER/ppm.f90
+++ b/src/ZSOLVER/ppm.f90
@@ -2760,6 +2760,9 @@ REAL, DIMENSION(:,:)             :: ZPSRC_HALO2_WEST
 
 TYPE(HALO2LIST_ll), SAVE , POINTER      :: TZ_PSRC_HALO2_ll         ! halo2 for PSRC
 LOGICAL, SAVE :: GFIRST_CALL_PPM_S0_X = .TRUE.
+!
+REAL , POINTER , CONTIGUOUS , DIMENSION(:,:) :: ZWEST
+
 !-------------------------------------------------------------------------------
 
 !$acc data present( PSRC, PCR, PRHO, PR , &
@@ -2800,8 +2803,9 @@ IF (GFIRST_CALL_PPM_S0_X) THEN
    CALL INIT_HALO2_ll(TZ_PSRC_HALO2_ll,1,IIU,IJU,IKU)
 END IF
 CALL GET_HALO2_DF(PSRC, TZ_PSRC_HALO2_ll, HNAME='PSRC')
+ZWEST => TZ_PSRC_HALO2_ll%HALO2%WEST
 !$acc kernels
-ZPSRC_HALO2_WEST(:,:) = TZ_PSRC_HALO2_ll%HALO2%WEST(:,:)
+ZPSRC_HALO2_WEST(:,:) = ZWEST(:,:)
 ZPHAT=PSRC
 ZFPOS=PSRC
 ZFNEG=PSRC
@@ -3211,6 +3215,8 @@ INTEGER                          :: I,J,K
 REAL, DIMENSION(:,:)             :: ZPSRC_HALO2_SOUTH
 #endif
 !
+REAL , POINTER , CONTIGUOUS , DIMENSION(:,:) :: ZSOUTH
+!
 !-------------------------------------------------------------------------------
 
 !$acc data present( PSRC, PCR, PRHO, PR , &
@@ -3258,12 +3264,13 @@ IF (GFIRST_CALL_PPM_S0_Y) THEN
    NULLIFY(TZ_PSRC_HALO2_ll)
    CALL INIT_HALO2_ll(TZ_PSRC_HALO2_ll,1,IIU,IJU,IKU)
 END IF   
-CALL GET_HALO2_DF(PSRC, TZ_PSRC_HALO2_ll, HNAME='PSRC')  
+CALL GET_HALO2_DF(PSRC, TZ_PSRC_HALO2_ll, HNAME='PSRC')
+ZSOUTH => TZ_PSRC_HALO2_ll%HALO2%SOUTH(:,:)
 !
 ! Initialize with relalistic value all work array 
 !
 !$acc kernels
-ZPSRC_HALO2_SOUTH(:,:) = TZ_PSRC_HALO2_ll%HALO2%SOUTH(:,:) 
+ZPSRC_HALO2_SOUTH(:,:) = ZSOUTH(:,:) 
 ZPHAT=PSRC
 ZFPOS=PSRC
 ZFNEG=PSRC