From 9f653a912a6d870bdbff38d67b802642cb8ca20e Mon Sep 17 00:00:00 2001
From: Juan Escobar <juan.escobar@aero.obs-mip.fr>
Date: Thu, 9 Sep 2021 17:28:17 +0200
Subject: [PATCH] Juan 09/09/2021:gdiv.f90, for GPU replace auto array ->
 pointer contiguous + MNH_ALLOCATE

---
 src/ZSOLVER/gdiv.f90 | 24 ++++++++++++++++++------
 1 file changed, 18 insertions(+), 6 deletions(-)

diff --git a/src/ZSOLVER/gdiv.f90 b/src/ZSOLVER/gdiv.f90
index d548d9fa4..5bfd218bf 100644
--- a/src/ZSOLVER/gdiv.f90
+++ b/src/ZSOLVER/gdiv.f90
@@ -135,10 +135,11 @@ REAL, DIMENSION(:,:,:), INTENT(OUT)     :: PGDIV             ! divergence at
 !*       0.2   declarations of local variables
 !
                                          ! Contravariant components along:
-REAL, DIMENSION(SIZE(PU,1),SIZE(PU,2),SIZE(PU,3)) :: ZUC      ! x
-REAL, DIMENSION(SIZE(PV,1),SIZE(PV,2),SIZE(PV,3)) :: ZVC      ! y 
-REAL, DIMENSION(SIZE(PW,1),SIZE(PW,2),SIZE(PW,3)) :: ZWC, &   ! z 
-                                                     Z1,Z2,Z3 !work arrays
+REAL, DIMENSION(:,:,:) , POINTER , CONTIGUOUS :: ZUC      ! x
+REAL, DIMENSION(:,:,:) , POINTER , CONTIGUOUS :: ZVC      ! y 
+REAL, DIMENSION(:,:,:) , POINTER , CONTIGUOUS :: ZWC      ! z 
+REAL, DIMENSION(:,:,:) , POINTER , CONTIGUOUS :: Z1,Z2,Z3 !work arrays
+INTEGER :: IZUC,IZVC,IZWC,IZ1,IZ2,IZ3
 !
 INTEGER :: IIB          ! indice I for the first inner mass point along x
 INTEGER :: IIE          ! indice I for the last inner mass point along x
@@ -168,11 +169,22 @@ CALL GET_INDICE_ll(IIB,IJB,IIE,IJE)
 IKB=1+JPVEXT
 IKE=SIZE(PU,3) - JPVEXT
 !
-#ifdef MNH_OPENACC
+!
 IIU=SIZE(PU,1)
 IJU=SIZE(PU,2)
 IKU=SIZE(PU,3)
 !
+#ifndef MNH_OPENACC
+ALLOCATE(ZUC(IIU,IJU,IKU),ZVC(IIU,IJU,IKU),ZWC(IIU,IJU,IKU))
+ALLOCATE(Z1(IIU,IJU,IKU),Z2(IIU,IJU,IKU),Z2(IIU,IJU,IKU))
+#else
+IZUC = MNH_ALLOCATE_ZT3D(ZUC,IIU,IJU,IKU  )
+IZVC = MNH_ALLOCATE_ZT3D(ZVC,IIU,IJU,IKU  )
+IZWC = MNH_ALLOCATE_ZT3D(ZWC,IIU,IJU,IKU  )
+IZ1 = MNH_ALLOCATE_ZT3D(Z1,IIU,IJU,IKU  )
+IZ2 = MNH_ALLOCATE_ZT3D(Z2,IIU,IJU,IKU  )
+IZ3 = MNH_ALLOCATE_ZT3D(Z3,IIU,IJU,IKU  )
+!
 IZTMP1 = MNH_ALLOCATE_ZT3D( ZTMP1,IIU,IJU,IKU  )
 IZTMP2 = MNH_ALLOCATE_ZT3D( ZTMP2,IIU,IJU,IKU  )
 #endif
@@ -333,7 +345,7 @@ END IF
 !$acc wait
 !
 #ifdef MNH_OPENACC
-CALL MNH_REL_ZT3D ( IZTMP1,IZTMP2 )
+CALL MNH_REL_ZT3D (IZUC,IZVC,IZWC,IZ1,IZ2,IZ3,IZTMP1,IZTMP2)
 #endif
 !
 !-------------------------------------------------------------------------------
-- 
GitLab