From c2e1a1bd0a0808befac8020713a9ba32b526b311 Mon Sep 17 00:00:00 2001
From: ESCOBAR Juan <escj@nuwa>
Date: Mon, 25 Aug 2014 11:15:11 +0200
Subject: [PATCH] Juan 25/08/2014: version reprod on GPU until next bug on
 advecuvw_4th

---
 MNH/ppm_rhodj.f90 | 22 +++++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/MNH/ppm_rhodj.f90 b/MNH/ppm_rhodj.f90
index 90e8e5191..cc6e3a30a 100644
--- a/MNH/ppm_rhodj.f90
+++ b/MNH/ppm_rhodj.f90
@@ -73,7 +73,11 @@ END MODULE MODI_PPM_RHODJ
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODI_PPM             
+USE MODI_PPM
+     
+USE&
+    OPENACC    
+   
 !
 !
 !
@@ -87,11 +91,14 @@ CHARACTER (LEN=4), DIMENSION(2), INTENT(IN) :: HLBCY ! Y direction LBC type
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRU  ! contravariant
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRV  !  components
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PCRW  ! of momentum
+!$acc declare pcopyin(PCRU,PCRV,PCRW) 
 REAL, DIMENSION(:,:,:),   INTENT(IN)    :: PRHODJ ! density
+!$acc declare present(PRHODJ)
 ! Temporary advected rhodj
 REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOX1,PRHOX2
 REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOY1,PRHOY2
 REAL, DIMENSION(:,:,:),   INTENT(OUT)   :: PRHOZ1,PRHOZ2
+!$acc declare pcopyout(PRHOX1,PRHOX2, PRHOY1,PRHOY2, PRHOZ1,PRHOZ2 )
 !
 REAL,                     INTENT(IN)    :: PTSTEP ! Time step 
 !
@@ -100,19 +107,32 @@ REAL,                     INTENT(IN)    :: PTSTEP ! Time step
 INTEGER :: IGRID ! localisation on the model grid
 !
 REAL, DIMENSION(SIZE(PCRU,1),SIZE(PCRU,2),SIZE(PCRU,3)) :: ZUNIT
+!BUG PGI ? acc declare create(ZUNIT)
 !
 !-------------------------------------------------------------------------------
 !
+
+!!$if ( acc_is_present(PRHODJ) )  print*,"PRHODJ JPRESENT"
+
 !
 IGRID = 1
 !
+!$acc data create (ZUNIT) 
+
+!$acc kernels
 ZUNIT = 1.0
+!$acc end kernels
+
+!$acc update device(PRHODJ)
+
 CALL PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, PRHODJ, PTSTEP,PRHOX1)
 CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, PRHOX1, PTSTEP,PRHOY1)
 CALL PPM_S0_Z(IGRID, ZUNIT, PCRW, PRHOY1, PTSTEP,PRHOZ1)
 CALL PPM_S0_Z(IGRID, ZUNIT, PCRW, PRHODJ, PTSTEP,PRHOZ2)
 CALL PPM_S0_Y(HLBCY, IGRID, ZUNIT, PCRV, PRHOZ2, PTSTEP,PRHOY2)
 CALL PPM_S0_X(HLBCX, IGRID, ZUNIT, PCRU, PRHOY2, PTSTEP,PRHOX2)
+
+!$acc end data
 !
 !
 END SUBROUTINE PPM_RHODJ
-- 
GitLab