From 3cc95b1a7d345a67af3619c3fc48bdd77b37969c Mon Sep 17 00:00:00 2001
From: ESCOBAR Juan <escj@nuwa>
Date: Mon, 14 Sep 2020 16:01:51 +0200
Subject: [PATCH] Juan 14/09/2020 : put XRTHS in acc enter data + update

---
 ini_modeln.f90 |  4 +++-
 modeln.f90     | 15 +++++++++++++--
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/ini_modeln.f90 b/ini_modeln.f90
index 19254a43c..8203f0ada 100644
--- a/ini_modeln.f90
+++ b/ini_modeln.f90
@@ -790,6 +790,7 @@ ALLOCATE(XRUS_PRES(IIU,IJU,IKU)); XRUS_PRES = 0.0
 ALLOCATE(XRVS_PRES(IIU,IJU,IKU)); XRVS_PRES = 0.0
 ALLOCATE(XRWS_PRES(IIU,IJU,IKU)); XRWS_PRES = 0.0
 ALLOCATE(XRTHS(IIU,IJU,IKU))    ; XRTHS = 0.0
+!$acc enter data copyin(XRTHS)
 ALLOCATE(XRTHS_CLD(IIU,IJU,IKU)); XRTHS_CLD = 0.0
 IF (CTURB /= 'NONE') THEN
   ALLOCATE(XTKET(IIU,IJU,IKU))
@@ -1537,7 +1538,8 @@ IF (KMI == 1) THEN
     ALLOCATE(XUFRC_PAST(0,0,0))
     ALLOCATE(XVFRC_PAST(0,0,0))
   END IF
-
+ELSE
+  !Do not allocate because they are the same on all grids (not 'n' variables)
 END IF
 ! ----------------------------------------------------------------------
 !
diff --git a/modeln.f90 b/modeln.f90
index 0b0f5b1b8..a65e4e58a 100644
--- a/modeln.f90
+++ b/modeln.f90
@@ -1501,13 +1501,16 @@ ZTIME1 = ZTIME2
 XTIME_BU_PROCESS = 0.
 XTIME_LES_BU_PROCESS = 0.
 !
+!$acc update device(XRTHS)
+!
 !$acc data create (XUT, XVT, XWT)                                         &
 !$acc &    copyin (XTHT, XPABST, XRT, XSVT, XRTHS_CLD, XRRS_CLD, XTHVREF) &
-!$acc &    copy   (XRTHS, XRRS, XRUS, XRVS, XRWS)                         &
+!$acc &    copy   (XRRS, XRUS, XRVS, XRWS)                         &
 !$acc &    copy   (XRWS_PRES)                                             & !XRWS_PRES copy and not copyout (hidden in UPDATE_HALO)
 !$acc &    present(XDXX, XDYY, XDZZ, XDZX, XDZY, XRHODJ)
 !
 !$acc update device(XUT, XVT, XWT, XRHODJ)
+
 !
 !
 !$acc data copyin (XTKET, XRSVS_CLD) &
@@ -1523,6 +1526,8 @@ CALL ADVECTION_METSV ( TZBAKFILE, GCLOSE_OUT,CUVW_ADV_SCHEME,          &
                  XRTHS_CLD, XRRS_CLD, XRSVS_CLD, XRTKEMS               )
 !$acc end data
 !
+!$acc update host(XRTHS)
+!
 CALL SECOND_MNH2(ZTIME2)
 !
 XT_ADV = XT_ADV + ZTIME2 - ZTIME1 - XTIME_LES_BU_PROCESS - XTIME_BU_PROCESS
@@ -1780,9 +1785,12 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
 !$acc &            XRCM, XWT_ACT_NUC, XDTHRAD, XCF_MF, XRC_MF, XRI_MF,                           &
 !$acc &            XSOLORG, XMI)                                                                 &
 !$acc &    copy   (XSUPSAT, XNACT, XNPRO, XSSPRO,                                                &
-!$acc &            XRTHS, XRT, XRRS, XSVT, XRSVS, XCLDFR, XCIT, XINPRR3D, XEVAP3D,               &
+!$acc &            XRT, XRRS, XSVT, XRSVS, XCLDFR, XCIT, XINPRR3D, XEVAP3D,               &
 !$acc &            XINPRC, XINPRR, XINPRS, XINPRG, XINPRH, XINDEP)                               &
 !$acc &    copyout(XSRCT, XRAINFR)
+
+!$acc update device ( XRTHS )
+  
   IF (CSURF=='EXTE') THEN
     ALLOCATE (ZSEA(SIZE(XRHODJ,1),SIZE(XRHODJ,2)))
     ALLOCATE (ZTOWN(SIZE(XRHODJ,1),SIZE(XRHODJ,2)))
@@ -1832,6 +1840,9 @@ IF (CCLOUD /= 'NONE' .AND. CELEC == 'NONE') THEN
                           XINDEP, XSUPSAT, XNACT, XNPRO,XSSPRO, XRAINFR        )
   END IF
 !$acc end data
+
+!$acc update host(XRTHS)
+  
   XRTHS_CLD(:, :, : )    = XRTHS(:, :, : )    - XRTHS_CLD(:, :, : )
   XRRS_CLD (:, :, :, : ) = XRRS (:, :, :, : ) - XRRS_CLD (:, :, :, : )
   XRSVS_CLD(:, :, :, : ) = XRSVS(:, :, :, : ) - XRSVS_CLD(:, :, :, : )
-- 
GitLab