From ee1cba5bb4db23f8243f83bbab8d908c88a3a8c2 Mon Sep 17 00:00:00 2001
From: ESCOBAR Juan <escj@nuwa>
Date: Thu, 19 May 2022 12:12:33 +0200
Subject: [PATCH] Juan 19/05/2022:*/turb.f90, Bug Nvhpc22.2 seg-fault, array
 syntax -> do conc & some acc -> acc_nv for Cray Opt

---
 src/MNH/turb.f90     | 14 +++++++++-----
 src/ZSOLVER/turb.f90 | 16 ++++++++++------
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index 8ac7c1bb9..b2f17b808 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -1894,7 +1894,8 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) )
          - ZDRVSATDT(:,:,:)                                                  &
         )
 #else
-DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+!$acc_nv loop independent collapse(3)
+DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
  PATHETA(JI,JJ,JK)= PAMOIST(JI,JJ,JK) * PEXN(JI,JJ,JK) *                             &
         ( ( ZRVSAT(JI,JJ,JK) - PRT(JI,JJ,JK,1) ) * PLOCPEXN(JI,JJ,JK) /              &
           ( 1. + ZDRVSATDT(JI,JJ,JK) * PLOCPEXN(JI,JJ,JK) )        *                 &
@@ -1908,13 +1909,16 @@ DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
         )
 ENDDO
 #endif
+!$acc end kernels
 !*      1.7 Lv/Cph/Exner at t-1
 !
-  PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:)
+!$acc kernels present(PLOCPEXN)
+!$acc_nv loop independent collapse(3)
+DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+   PLOCPEXN(JI,JJ,JK) = PLOCPEXN(JI,JJ,JK) / PEXN(JI,JJ,JK)
+END DO
 !$acc end kernels
 
-
-
   if ( mppdb_initialized ) then
     !Check all out arrays
     call Mppdb_check( plocpexn, "Compute_function_thermo end:plocpexn" )
@@ -2038,7 +2042,7 @@ ELSE
 !*         3.1 BL89 mixing length
 !           ------------------
   CASE ('BL89','RM17')
-!$acc kernels
+!$acc kernels present(ZSHEAR)
     ZSHEAR(:, :, : ) = 0.
 !$acc end kernels
     CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD)
diff --git a/src/ZSOLVER/turb.f90 b/src/ZSOLVER/turb.f90
index 30c95d75e..b4a4fff2c 100644
--- a/src/ZSOLVER/turb.f90
+++ b/src/ZSOLVER/turb.f90
@@ -1875,7 +1875,7 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) )
   END DO
 #endif
 !$acc end kernels  
-!$acc kernels present(ZRVSAT,ZDRVSATDT)  
+!$acc kernels present_cr(ZRVSAT,ZDRVSATDT) 
 !
 !*      1.3 saturation  mixing ratio at t
 !
@@ -1906,7 +1906,8 @@ CALL MNH_MEM_GET( zdrvsatdt, size( pexn, 1 ), size( pexn, 2 ), size( pexn, 3 ) )
          - ZDRVSATDT(:,:,:)                                                  &
         )
 #else
-DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+!$acc_nv loop independent collapse(3)
+DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
  PATHETA(JI,JJ,JK)= PAMOIST(JI,JJ,JK) * PEXN(JI,JJ,JK) *                             &
         ( ( ZRVSAT(JI,JJ,JK) - PRT(JI,JJ,JK,1) ) * PLOCPEXN(JI,JJ,JK) /              &
           ( 1. + ZDRVSATDT(JI,JJ,JK) * PLOCPEXN(JI,JJ,JK) )        *                 &
@@ -1920,13 +1921,16 @@ DO CONCURRENT( JI=1:JIU,JJ=1:JJU,JK=1:JKU)
         )
 ENDDO
 #endif
+!$acc end kernels
 !*      1.7 Lv/Cph/Exner at t-1
 !
-  PLOCPEXN(:,:,:) = PLOCPEXN(:,:,:) / PEXN(:,:,:)
+!$acc kernels present(PLOCPEXN)
+!$acc_nv loop independent collapse(3)
+DO CONCURRENT(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+   PLOCPEXN(JI,JJ,JK) = PLOCPEXN(JI,JJ,JK) / PEXN(JI,JJ,JK)
+END DO
 !$acc end kernels
 
-
-
   if ( mppdb_initialized ) then
     !Check all out arrays
     call Mppdb_check( plocpexn, "Compute_function_thermo end:plocpexn" )
@@ -2050,7 +2054,7 @@ ELSE
 !*         3.1 BL89 mixing length
 !           ------------------
   CASE ('BL89','RM17')
-!$acc kernels
+!$acc kernels present(ZSHEAR)
     ZSHEAR(:, :, : ) = 0.
 !$acc end kernels
     CALL BL89(KKA,KKU,KKL,PZZ,PDZZ,PTHVREF,ZTHLM,KRR,ZRM,PTKET,ZSHEAR,ZLM_CLOUD)
-- 
GitLab