From ef3c46060b2bf781fe2d6d3e5db825829ebf03cd Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Thu, 27 Jul 2023 10:12:34 +0200
Subject: [PATCH] Quentin 27/07/2023: add apply_pft script to transform files
 for GPU

Quentin 27/05/2023: update apply_pft to handle update of Stack

Quentin 1/08/2023: better documentation of apply_pft.sh and generelize application folder of the script
---
 tools/apply_pft.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)
 create mode 100755 tools/apply_pft.sh

diff --git a/tools/apply_pft.sh b/tools/apply_pft.sh
new file mode 100755
index 000000000..6ef26d4d6
--- /dev/null
+++ b/tools/apply_pft.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+#This script apply pft.py transformations to arrange the code for GPU testing
+PATH_SRC=$(pwd)/../src/common/
+
+
+#List of files to apply transformations
+turb_hor=$(find $PATH_SRC/turb -name '*turb_hor*')
+lima=$(find $PATH_SRC/micro -name '*lima*')
+rain_ice_old=$(find $PATH_SRC/micro -name '*rain_ice_old*')
+other_micro=$(find $PATH_SRC/micro -name '*xker*')
+other_turb="$PATH_SRC/turb/mode_ibm_mixinglength.F90 $PATH_SRC/turb/mode_tridiag_w.F90 $PATH_SRC/turb/mode_sbl.F90 $PATH_SRC/turb/mode_coefj.F90 $PATH_SRC/turb/mode_rotate_wind.F90"
+micro_rrcol="$PATH_SRC/micro/mode_nrcolss.F90 $PATH_SRC/micro/mode_rrcolss.F90 $PATH_SRC/micro/mode_rscolrg.F90 $PATH_SRC/micro/mode_nscolrg.F90"
+black_list="$turb_hor $lima $rain_ice_old $other_micro $other_turb $micro_rrcol $PATH_SRC/micro/mode_ice4_rsrimcg_old.F90"
+turb=$(find $PATH_SRC/turb -name \*90)
+micro=$(find $PATH_SRC/micro -name \*90)
+all="$turb $micro $PATH_SRC/aux/shuman_phy.F90 $PATH_SRC/aux/mode_gradient_m_phy.F90 $PATH_SRC/aux/mode_gradient_u_phy.F90 $PATH_SRC/aux/mode_gradient_v_phy.F90 $PATH_SRC/aux/mode_gradient_w_phy.F90"
+for file in $black_list
+do
+	all=${all//$file/}
+done
+
+echo $all
+# Link all .h files localy for --addIncludes transformation
+includes=$(find $PATH_SRC -name \*.h)
+for file in $includes
+do
+	ln -sf $file .
+done
+# (Temporary) Use of temp file to save where STACK must be written (--addStack writes then --checkStackArginCall reads it)
+rm -f subroutines_wth_stack.txt
+touch subroutines_wth_stack.txt
+
+# Apply transformations
+for file in $all
+do
+	echo $file
+	pft.py $file $file --addIncludes
+	pft.py $file $file --applyCPP
+	pft.py $file $file --deleteNonColumnCalls --simplify
+	pft.py $file $file --inlineContainedSubroutines
+	pft.py $file $file --changeIfStatementsInIfConstructs 
+	pft.py $file $file --expandAllArrays
+	pft.py $file $file --attachArraySpecToEntity
+	pft.py $file $file --removeIJLoops
+	pft.py $file $file --reDimKlonArrayToScalar
+	#pft.py $file $file --addStack "{kind}, DIMENSION({doubledotshape}), ALLOCATABLE :: {name}#ALLOCATE({name}({shape}))" "MESONH"
+	pft.py $file $file --addStack "temp ({kind}, {name}, ({shape}))#alloc ({name})" "AROME"
+done
+
+
+# Add stack (for AROME)
+# Recursive checks (maximum found at PHYEX 0.5.0 is 2 mode_prandtl>psi3 then mode_turb_ver_>psi3
+for i in {1..3}
+do
+	for file in $all
+	do
+		echo $file
+		pft.py $file $file --checkStackArginCall
+	done
+
+done
-- 
GitLab