From 2df57d352cfa9bb9f9be69701133967c58d6fac7 Mon Sep 17 00:00:00 2001
From: Wautelet Philippe <waup@aeropc45.aero.obs-mip.fr>
Date: Tue, 12 Oct 2021 15:34:32 +0200
Subject: [PATCH] Philippe 12/10/2021: add dimensions (:,:,:) for better
 compiler optimisation and readability

---
 src/MNH/advecuvw_rk.f90     |  6 +--
 src/MNH/advecuvw_weno_k.f90 | 87 ++++++++++++++++++-------------------
 src/MNH/turb.f90            | 14 +++---
 3 files changed, 52 insertions(+), 55 deletions(-)

diff --git a/src/MNH/advecuvw_rk.f90 b/src/MNH/advecuvw_rk.f90
index 20bc33af5..529e14d21 100644
--- a/src/MNH/advecuvw_rk.f90
+++ b/src/MNH/advecuvw_rk.f90
@@ -584,9 +584,9 @@ RKLOOP: DO JS = 1, ISPL
 !$acc & present(ZRUS,ZRVS,ZRWS,ZIBM) present(PRUS_OTHER,PRVS_OTHER,PRWS_OTHER) &
 !$acc & present(PMXM_RHODJ,PMYM_RHODJ,PMZM_RHODJ)
 !
-    ZUT = PU
-    ZVT = PV
-    ZWT = PW
+    ZUT(:,:,:) = PU(:,:,:)
+    ZVT(:,:,:) = PV(:,:,:)
+    ZWT(:,:,:) = PW(:,:,:)
 !
     DO JI = 1, JS
 !
diff --git a/src/MNH/advecuvw_weno_k.f90 b/src/MNH/advecuvw_weno_k.f90
index f328d2e35..f86a88619 100644
--- a/src/MNH/advecuvw_weno_k.f90
+++ b/src/MNH/advecuvw_weno_k.f90
@@ -71,30 +71,27 @@ END MODULE MODI_ADVECUVW_WENO_K
 !*       0.    DECLARATIONS
 !              ------------
 !
-USE MODE_ll
-!
-USE MODD_PARAMETERS
-USE MODD_CONF
 USE MODD_ARGSLIST_ll, ONLY : HALO2LIST_ll
-!
-#ifndef MNH_OPENACC
-USE MODI_SHUMAN
-#else
-USE MODI_SHUMAN_DEVICE
+USE MODD_CONF,        ONLY : L2D, NHALO
+USE MODD_PARAMETERS
+
+USE MODE_ll
+#ifdef MNH_OPENACC
+USE MODE_DEVICE
+USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D
 #endif
+USE MODE_MPPDB
+
 USE MODI_ADVEC_WENO_K_1_AUX
 USE MODI_ADVEC_WENO_K_2_AUX
 USE MODI_ADVEC_WENO_K_3_AUX
-!
-USE MODD_CONF,        ONLY : NHALO
-USE MODE_MPPDB
 USE MODI_GET_HALO
-!
-#ifdef MNH_OPENACC
-USE MODE_DEVICE
-USE MODE_MNH_ZWORK, ONLY : ZT3D, MNH_GET_ZT3D , MNH_REL_ZT3D
+#ifndef MNH_OPENACC
+USE MODI_SHUMAN
+#else
+USE MODI_SHUMAN_DEVICE
 #endif
-!
+
 IMPLICIT NONE
 !
 !*       0.1   Declarations of dummy arguments :
@@ -212,7 +209,7 @@ CASE(1) ! WENO 1
   CALL UP_UX_DEVICE(PUT,ZWORK,ZMEAN)
   CALL DXM_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRUS = PRUS - ZWORK
+  PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   !PRUS = PRUS - DYF(UP_MY(PUT,MXM(PRVCT)))
@@ -220,7 +217,7 @@ CASE(1) ! WENO 1
   CALL UP_MY_DEVICE(PUT,ZWORK,ZMEAN)
   CALL DYF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRUS = PRUS - ZWORK
+  PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   !PRUS = PRUS - DZF(1,IKU,1,UP_MZ(PUT,MXM(PRWCT)))
@@ -228,7 +225,7 @@ CASE(1) ! WENO 1
   CALL UP_MZ_DEVICE(PUT,ZWORK,ZMEAN)
   CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-  PRUS = PRUS - ZWORK
+  PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
 ! V component
@@ -238,7 +235,7 @@ CASE(1) ! WENO 1
   CALL UP_MX_DEVICE(PVT,ZWORK,ZMEAN)
   CALL DXF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRVS = PRVS - ZWORK
+  PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   !PRVS = PRVS - DYM(UP_VY(PVT,MYF(PRVCT)))
@@ -246,7 +243,7 @@ CASE(1) ! WENO 1
   CALL UP_VY_DEVICE(PVT,ZWORK,ZMEAN)
   CALL DYM_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRVS = PRVS - ZWORK
+  PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   !PRVS = PRVS - DZF(1,IKU,1,UP_MZ(PVT,MYM(PRWCT)))
@@ -254,7 +251,7 @@ CASE(1) ! WENO 1
   CALL UP_MZ_DEVICE(PVT,ZWORK,ZMEAN)
   CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-  PRVS = PRVS - ZWORK
+  PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
 ! W component
@@ -264,7 +261,7 @@ CASE(1) ! WENO 1
   CALL UP_MX_DEVICE(PWT,ZWORK,ZMEAN)
   CALL DXF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRWS = PRWS - ZWORK
+  PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   !PRWS = PRWS - DYF(UP_MY(PWT,MZM(1,IKU,1,PRVCT)))
@@ -272,7 +269,7 @@ CASE(1) ! WENO 1
   CALL UP_MY_DEVICE(PWT,ZWORK,ZMEAN)
   CALL DYF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRWS = PRWS - ZWORK
+  PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   !PRWS = PRWS - DZM(1,IKU,1,UP_WZ(PWT,MZF(1,IKU,1,PRWCT)))
@@ -280,7 +277,7 @@ CASE(1) ! WENO 1
   CALL UP_WZ_DEVICE(PWT,ZWORK,ZMEAN)
   CALL DZM_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-  PRWS = PRWS - ZWORK
+  PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 #endif
 !
@@ -342,7 +339,7 @@ CASE(3) ! WENO 3
                          ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
   CALL DXM_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRUS = PRUS - ZWORK
+  PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !   
   IF (.NOT.L2D) THEN
@@ -353,7 +350,7 @@ CASE(3) ! WENO 3
                            ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
     CALL DYF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-    PRUS = PRUS - ZWORK
+    PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
   END IF
 !
@@ -365,7 +362,7 @@ CASE(3) ! WENO 3
                    ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
   CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-  PRUS = PRUS - ZWORK
+  PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
 ! V component
@@ -378,7 +375,7 @@ CASE(3) ! WENO 3
                            ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
     CALL DXF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-    PRVS = PRVS - ZWORK
+    PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !   
     CALL MYF_DEVICE(PRVCT,ZWORK)
@@ -388,7 +385,7 @@ CASE(3) ! WENO 3
                            ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
     CALL DYM_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-    PRVS = PRVS - ZWORK
+    PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
 !    PRVS = PRVS - DZF(1,IKU,1,WENO_K_2_MZ(PVT, MYM(PRWCT)))
@@ -399,7 +396,7 @@ CASE(3) ! WENO 3
                      ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
     CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-    PRVS = PRVS - ZWORK
+    PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
   END IF
 !
@@ -413,7 +410,7 @@ CASE(3) ! WENO 3
                          ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
   CALL DXF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRWS = PRWS - ZWORK
+  PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   IF (.NOT.L2D) THEN
@@ -425,7 +422,7 @@ CASE(3) ! WENO 3
                            ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
     CALL DYF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-    PRWS = PRWS - ZWORK
+    PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
   END IF
 !
@@ -437,7 +434,7 @@ CASE(3) ! WENO 3
                    ZT3D(:,:,:,IZOMP1),  ZT3D(:,:,:,IZOMP2),  ZT3D(:,:,:,IZOMN1),  ZT3D(:,:,:,IZOMN2) )
   CALL DZM_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-  PRWS = PRWS - ZWORK
+  PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   CALL MNH_REL_ZT3D(IZFPOS1,IZFPOS2,IZFNEG1,IZFNEG2,IZBPOS1,IZBPOS2,IZBNEG1,IZBNEG2,IZOMP1,IZOMP2,IZOMN1,IZOMN2)
@@ -519,9 +516,9 @@ CASE(5) ! WENO 5
   CALL GET_HALO_D(ZMEAN)! Update HALO 
   CALL DXM_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRUS = PRUS - ZWORK
+  PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
-!   
+!
   IF (.NOT.L2D) THEN
     CALL MXM_DEVICE(PRVCT,ZWORK)
     CALL ADVEC_WENO_K_3_MY(HLBCY, PUT, ZWORK, ZMEAN, &
@@ -534,7 +531,7 @@ CASE(5) ! WENO 5
     CALL GET_HALO_D(ZMEAN)! Update HALO 
     CALL DYF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-    PRUS = PRUS - ZWORK
+    PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
   END IF
 !
@@ -549,7 +546,7 @@ CASE(5) ! WENO 5
   CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet)
   CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-  PRUS = PRUS - ZWORK
+  PRUS(:,:,:) = PRUS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
 ! V component
@@ -566,7 +563,7 @@ CASE(5) ! WENO 5
     CALL GET_HALO_D(ZMEAN)! Update HALO 
     CALL DXF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-    PRVS = PRVS - ZWORK
+    PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !   
     CALL MYF_DEVICE(PRVCT,ZWORK)
@@ -580,7 +577,7 @@ CASE(5) ! WENO 5
     CALL GET_HALO_D(ZMEAN)! Update HALO 
     CALL DYM_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-    PRVS = PRVS - ZWORK
+    PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
     CALL MYM_DEVICE(PRWCT,ZWORK)
@@ -594,7 +591,7 @@ CASE(5) ! WENO 5
     CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet)
     CALL DZF_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-    PRVS = PRVS - ZWORK
+    PRVS(:,:,:) = PRVS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
   END IF
 !
@@ -611,7 +608,7 @@ CASE(5) ! WENO 5
   CALL GET_HALO_D(ZMEAN)! Update HALO 
   CALL DXF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-  PRWS = PRWS - ZWORK
+  PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   IF (.NOT.L2D) THEN
@@ -626,7 +623,7 @@ CASE(5) ! WENO 5
     CALL GET_HALO_D(ZMEAN)! Update HALO 
     CALL DYF_DEVICE(ZMEAN,ZWORK)
 !$acc kernels
-    PRWS = PRWS - ZWORK
+    PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
   END IF
 !
@@ -641,7 +638,7 @@ CASE(5) ! WENO 5
   CALL GET_HALO_D(ZMEAN)! Update HALO - maybe not necessary (T.Lunet)
   CALL DZM_DEVICE(1,IKU,1,ZMEAN,ZWORK)
 !$acc kernels
-  PRWS = PRWS - ZWORK
+  PRWS(:,:,:) = PRWS(:,:,:) - ZWORK(:,:,:)
 !$acc end kernels
 !
   CALL MNH_REL_ZT3D(IZFPOS1,IZFPOS2,IZFPOS3,IZFNEG1,IZFNEG2,IZFNEG3,IZBPOS1, &
diff --git a/src/MNH/turb.f90 b/src/MNH/turb.f90
index d431deaed..1def8bc58 100644
--- a/src/MNH/turb.f90
+++ b/src/MNH/turb.f90
@@ -993,18 +993,18 @@ IF (ORMC01) THEN
   call Print_msg( NVERB_FATAL, 'GEN', 'TURB', 'OpenACC: ORMC01 not yet implemented' )
 #endif
 #ifndef MNH_BITREP
-  ZUSTAR=(PSFU**2+PSFV**2)**(0.25)
+  ZUSTAR(:,:) = (PSFU(:,:)**2+PSFV(:,:)**2)**(0.25)
 #else
-  ZUSTAR=BR_POW(BR_P2(PSFU)+BR_P2(PSFV),0.25)
+  ZUSTAR(:,:) = BR_POW( BR_P2( PSFU(:,:) ) + BR_P2( PSFV(:,:) ), 0.25 )
 #endif
   IF (KRR>0) THEN
-    ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRM(:,:,IKB,1),PSFTH,PSFRV)
+    ZLMO(:,:) = LMO( ZUSTAR(:,:), ZTHLM(:,:,IKB), ZRM(:,:,IKB,1), PSFTH(:,:), PSFRV(:,:) )
   ELSE
-    ZRVM=0.
-    ZSFRV=0.
-    ZLMO=LMO(ZUSTAR,ZTHLM(:,:,IKB),ZRVM,PSFTH,ZSFRV)
+    ZRVM (:,:) = 0.
+    ZSFRV(:,:) = 0.
+    ZLMO(:,:) = LMO( ZUSTAR(:,:), ZTHLM(:,:,IKB), ZRVM(:,:), PSFTH(:,:), ZSFRV(:,:) )
   END IF
-  CALL RMC01(HTURBLEN,KKA,KKU,KKL,PZZ,PDXX,PDYY,PDZZ,PDIRCOSZW,PSBL_DEPTH,ZLMO,PLEM,ZLEPS)
+  CALL RMC01( HTURBLEN, KKA, KKU, KKL, PZZ, PDXX, PDYY, PDZZ, PDIRCOSZW, PSBL_DEPTH, ZLMO, PLEM, ZLEPS )
 !$acc update device(PLEM,ZLEPS)
 END IF
 !
-- 
GitLab