From ecd715dc1caaeded1b3e180afe45d5465d2a4b8b Mon Sep 17 00:00:00 2001
From: ESCOBAR Juan <escj@nuwa>
Date: Thu, 27 Oct 2022 11:20:17 +0200
Subject: [PATCH] Juan 27/10/2022:turb_hor_thermo_corr.f90, Strange BUG with
 Nvhpc/22.7+ , turb+I/O do SegFault => convert array syntax adding mnh_expand
 to eliminate listing reference to zflx$f/zwork$f

---
 src/MNH/turb_hor_thermo_corr.f90 | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/MNH/turb_hor_thermo_corr.f90 b/src/MNH/turb_hor_thermo_corr.f90
index 3c4d48773..93378881d 100644
--- a/src/MNH/turb_hor_thermo_corr.f90
+++ b/src/MNH/turb_hor_thermo_corr.f90
@@ -347,7 +347,9 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
 #ifndef MNH_BITREP
     ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE(:,:,:)**2 + ZTMP2_DEVICE(:,:,:)**2 )
 #else
-    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE) + BR_P2(ZTMP2_DEVICE) )
+!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE(:,:,:)) + BR_P2(ZTMP2_DEVICE(:,:,:)) )
+!$mnh_end_expand_array()
 #endif
 !$acc end kernels
   ELSE
@@ -356,7 +358,9 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
 #ifndef MNH_BITREP
     ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:)**2
 #else
-    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE)
+!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+    ZFLX(:,:,:) = XCTV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE(:,:,:))
+!$mnh_end_expand_array()
 #endif
 !$acc end kernels
   END IF
@@ -398,6 +402,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
   CALL MYF_DEVICE(PDYY(:,:,IKB:IKB), ZTMP2_DEVICE(:,:,1:1))
   !
 !$acc kernels
+!$mnh_expand_array(JI=1:JIU,JJ=1:JJU)
   ZFLX(:,:,IKB) = XCTV * PLM(:,:,IKB)                  &
   * PLEPS(:,:,IKB) *  (                                    &
   ( ZTMP3_DEVICE(:,:,1)      &
@@ -414,12 +419,15 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
      ) * 0.5 * ( PDZY(:,:,IKB+1)+PDZY(:,:,IKB) )     &
      / ZTMP2_DEVICE(:,:,1)                                  &
   ) ** 2                                             )
+!$mnh_end_expand_array()
 #endif
   !
   ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB)
   !
   IF ( KRRL > 0 ) THEN
+!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
     ZWORK(:,:,:) = ZFLX(:,:,:) * PATHETA(:,:,:) * PATHETA(:,:,:)
+!$mnh_end_expand_array()
   END IF
 !$acc end kernels
   !
@@ -620,8 +628,10 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
     ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB)
     !
     IF ( KRRL > 0 )  THEN
+!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
       ZWORK(:,:,:) = ZWORK(:,:,:) +       &
                      2. * PATHETA(:,:,:) * PAMOIST(:,:,:) * ZFLX(:,:,:)    
+!$mnh_end_expand_array()
     END IF
 !$acc end kernels
     ! stores <THl Rnp>
@@ -726,7 +736,9 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
 #ifndef MNH_BITREP
       ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( ZTMP1_DEVICE(:,:,:)**2 + ZTMP2_DEVICE(:,:,:)**2 )
 #else
-      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE) + BR_P2(ZTMP2_DEVICE) )
+!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ( BR_P2(ZTMP1_DEVICE(:,:,:)) + BR_P2(ZTMP2_DEVICE(:,:,:)) )
+!$mnh_end_expand_array()
 #endif
 !$acc end kernels
     ELSE
@@ -735,7 +747,9 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
 #ifndef MNH_BITREP
       ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * ZTMP1_DEVICE(:,:,:)**2
 #else
-      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE)
+!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
+      ZFLX(:,:,:) = XCHV * PLM(:,:,:) * PLEPS(:,:,:) * BR_P2(ZTMP1_DEVICE(:,:,:))
+!$mnh_end_expand_array()
 #endif
 !$acc end kernels
     END IF
@@ -776,6 +790,7 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
     CALL MYF_DEVICE(PDYY(:,:,IKB:IKB),ZTMP6_DEVICE(:,:,1:1))
     !
 !$acc kernels
+!$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
     ZFLX(:,:,IKB) = XCHV * PLM(:,:,IKB)                  &
     * PLEPS(:,:,IKB) *  (                                    &
     ( ZTMP3_DEVICE(:,:,1)      &
@@ -792,12 +807,15 @@ IF ( ( KRRL > 0 .AND. OSUBG_COND) .OR. ( OTURB_FLX .AND. tpfile%lopened ) &
        ) * 0.5 * ( PDZY(:,:,IKB+1)+PDZY(:,:,IKB) )     &
        / ZTMP6_DEVICE(:,:,1)                                  &
     ) ** 2   )
+!$mnh_end_expand_array()
 #endif
 !
     ZFLX(:,:,IKB-1) = ZFLX(:,:,IKB)
     !
     IF ( KRRL > 0 ) THEN       
+    !$mnh_expand_array(JI=1:JIU,JJ=1:JJU,JK=1:JKU)
       ZWORK(:,:,:) = ZWORK(:,:,:)+ PAMOIST(:,:,:) * PAMOIST(:,:,:) * ZFLX(:,:,:)
+    !$mnh_end_expand_array()
     END IF
 !$acc end kernels
     ! stores <Rnp Rnp>
-- 
GitLab