in AROME condensation.F90 is written with a big loop on JK and multiple loop in JIJ associated with scalars and arrays on D%NIJT private within JK.
For local accelaration with OpenACC in Méso-NH, we need to have only 2 nested DO loops with all independent arrays (in 2D on D%NIJT,D%NKT).
A number of pyft transformation must be applied on condensation.F90 :
[ ] supprimer le bloc concernant OCND2 car il y a des appels à des fonctions et des routines dans des boucles. A transformation is prepared but is buggy ! (it does not remove the 'ELSE' and 'END IF' statemements in case IF(.FALSE.) is removed and it does not handle IF(.NOT. .FALSE) either
[ ] transformer tous les scalaires et tableaux locaux sur D%NIJT en (D%NIJT, D%NKT) qui sont dans la boucle principale.
[ ] même chose pour 2 tableaux en arguments en entré de condensation déclarés sur D%NIJT : je dois passer par un tableau local en (D%NIJT, D%NKT) avec recopie.
[ ] supprimer les boucles sur JIJ dans la boucle principale et la déplacer tout en haut après la boucle sur JK.
[ ] Ajouter un bloc très spécifique (calculs d'indices spécifiques en amont de la boucle principale) :
DO JK = IKTB, IKTE
JKPK(JK) = MAX(MIN(JK+IKL, IKTE),IKTB)
JKMK(JK) = MAX(MIN(JK-IKL, IKTE),IKTB)
END DO
Today inlining and addIncludes is only applied with pyft on condensation.F90 on MesoNH side.
These transformations have been made by hand for now and a duplicate of condensation.F90 is now on src/mesonh/condensation.F90
in AROME condensation.F90 is written with a big loop on JK and multiple loop in JIJ associated with scalars and arrays on D%NIJT private within JK. For local accelaration with OpenACC in Méso-NH, we need to have only 2 nested DO loops with all independent arrays (in 2D on D%NIJT,D%NKT).
A number of pyft transformation must be applied on condensation.F90 :
Today inlining and addIncludes is only applied with pyft on condensation.F90 on MesoNH side.
These transformations have been made by hand for now and a duplicate of condensation.F90 is now on src/mesonh/condensation.F90