diff --git a/conf/profile_mesonh.ihm b/conf/profile_mesonh.ihm
index 11c7060f121da936de1c2838919ed1763808d31b..249d1decb31b35b9a2009ea87ad7ada264e81756 100755
--- a/conf/profile_mesonh.ihm
+++ b/conf/profile_mesonh.ihm
@@ -126,6 +126,17 @@ export VERSION_NCL=${VERSION_NCL}
 #
 export MNH_MEGAN=${MNH_MEGAN}
 #
+#  Use MNH_EXPAND if VER_MNHEXP=MNHEXPAUTO
+#
+export VER_MNHEXP=${VER_MNHEXP}
+if [ "x${VER_MNHEXP}" == "xMNHEXPAUTO" ] ;then
+export VERSION_MNHEXP=${VERSION_MNHEXP}  
+export VERSION_FILEPP=${VERSION_FILEPP}
+export FILEPP=\${SRC_MESONH}/pub/FILEPP
+export PATH=\${FILEPP}/MNH_Expand_Array-\${VERSION_MNHEXP}:\${PATH}
+export PATH=\${FILEPP}/FILEPP-\${VERSION_FILEPP}/bin:\${PATH}
+export MANPATH=\${FILEPP}/FILEPP-\${VERSION_FILEPP}/share/man:\${MANPATH}
+fi
 ##########################################################
 ##########################################################
 ##########################################################
diff --git a/src/MNH/ch_aer_maattanen_neutral.f90 b/src/MNH/ch_aer_maattanen_neutral.f90
index 8a9c8b5d3ed298541696d6f7eca74e11fe77a0a9..1396805c9daae9729db68d25cc44480a627577af 100644
--- a/src/MNH/ch_aer_maattanen_neutral.f90
+++ b/src/MNH/ch_aer_maattanen_neutral.f90
@@ -189,50 +189,50 @@ DO II = 1, SIZE(PSULF,1)
                     & 3.3827029855551838 * PTEMP(II) - &
                     & 3.2423555796175563e-2 * PTEMP(II)**2 +  &
                     & 7.0120069477221989e-5 * PTEMP(II)**3 + &
-                    & 8.0286874752695141 / ZAL(II) + &
+                    & 8.0286874752695141 / ZAL(II) &
                     & -2.6939840579762231e-1 * LOG(PRH(II)) + &
-                    & 1.6079879299099518 * PTEMP(II) * LOG(PRH(II)) +  &
+                    & 1.6079879299099518 * PTEMP(II) * LOG(PRH(II)) &
                     & -1.9667486968141933e-2 * PTEMP(II)**2 * LOG(PRH(II)) +  &
                     & 5.5244755979770844e-5 * PTEMP(II)**3 * LOG(PRH(II)) + &
                     & (7.8884704837892468 * LOG(PRH(II))) / ZAL(II) + &
                     & 4.6374659198909596 * LOG(PRH(II))**2 - &
                     & 8.2002809894792153e-2 * PTEMP(II) * LOG(PRH(II))**2 +  &
-                    & 8.5077424451172196e-4 * PTEMP(II)**2 * LOG(PRH(II))**2 +  &
+                    & 8.5077424451172196e-4 * PTEMP(II)**2 * LOG(PRH(II))**2   &
                     & -2.6518510168987462e-6 * PTEMP(II)**3 * LOG(PRH(II))**2 +  &
                     & (-1.4625482500575278 * LOG(PRH(II))**2)/ZAL(II) - &
                     & 5.2413002989192037e-1 * LOG(PRH(II))**3 +  &
-                    & 5.2755117653715865e-3 * PTEMP(II) * LOG(PRH(II))**3 +  &
-                    & -2.9491061332113830e-6 * PTEMP(II)**2 * LOG(PRH(II))**3 +  &
+                    & 5.2755117653715865e-3 * PTEMP(II) * LOG(PRH(II))**3   &
+                    & -2.9491061332113830e-6 * PTEMP(II)**2 * LOG(PRH(II))**3   &
                     & -2.4815454194486752e-8 * PTEMP(II)**3 * LOG(PRH(II))**3 +  &
                     & (-5.2663760117394626e-2 * LOG(PRH(II))**3) / ZAL(II) +  &
-                    & 1.6496664658266762 * LOG(ZSULF(II)) +  &
+                    & 1.6496664658266762 * LOG(ZSULF(II))   &
                     & -8.0809397859218401e-1 * PTEMP(II) * LOG(ZSULF(II)) +  &
-                    & 8.9302927091946642e-3 * PTEMP(II)**2 * LOG(ZSULF(II)) +  &
+                    & 8.9302927091946642e-3 * PTEMP(II)**2 * LOG(ZSULF(II))   &
                     & -1.9583649496497497e-5 * PTEMP(II)**3 * LOG(ZSULF(II)) +  &
-                    & (-8.9505572676891685 * LOG(ZSULF(II))) / ZAL(II) +  &
+                    & (-8.9505572676891685 * LOG(ZSULF(II))) / ZAL(II)   &
                     & -3.0025283601622881e+1 * LOG(PRH(II)) * LOG(ZSULF(II)) +  &
-                    & 3.0783365644763633e-1 * PTEMP(II) * LOG(PRH(II)) * LOG(ZSULF(II)) +  &
-                    & -7.4521756337984706e-4 * PTEMP(II)**2 * LOG(PRH(II)) * LOG(ZSULF(II)) +  &
+                    & 3.0783365644763633e-1 * PTEMP(II) * LOG(PRH(II)) * LOG(ZSULF(II))   &
+                    & -7.4521756337984706e-4 * PTEMP(II)**2 * LOG(PRH(II)) * LOG(ZSULF(II))   &
                     & -5.7651433870681853e-7 * PTEMP(II)**3 * LOG(PRH(II)) * LOG(ZSULF(II)) +  &
-                    & (1.2872868529673207 * LOG(PRH(II)) * LOG(ZSULF(II))) / ZAL(II) +  &
+                    & (1.2872868529673207 * LOG(PRH(II)) * LOG(ZSULF(II))) / ZAL(II)   &
                     & -6.1739867501526535e-1 * LOG(PRH(II))**2 * LOG(ZSULF(II)) +  &
-                    & 7.2347385705333975e-3 * PTEMP(II) * LOG(PRH(II))**2 * LOG(ZSULF(II)) +  &
+                    & 7.2347385705333975e-3 * PTEMP(II) * LOG(PRH(II))**2 * LOG(ZSULF(II))   &
                     & -3.0640494530822439e-5 * PTEMP(II)**2 * LOG(PRH(II))**2 * LOG(ZSULF(II)) +  &
                     & 6.5944609194346214e-8 * PTEMP(II)**3 * LOG(PRH(II))**2 * LOG(ZSULF(II)) +  &
                     & (-2.8681650332461055e-2 * LOG(PRH(II))**2 * LOG(ZSULF(II))) / ZAL(II) +  &
-                    & 6.5213802375160306 * LOG(ZSULF(II))**2 +  &
-                    & -4.7907162004793016e-2 * PTEMP(II) * LOG(ZSULF(II))**2 +  &
+                    & 6.5213802375160306 * LOG(ZSULF(II))**2   &
+                    & -4.7907162004793016e-2 * PTEMP(II) * LOG(ZSULF(II))**2   &
                     & -1.0727890114215117e-4 * PTEMP(II)**2 * LOG(ZSULF(II))**2 +  &
                     & 5.6401818280534507e-7 * PTEMP(II)**3 * LOG(ZSULF(II))**2 +  &
                     & (5.4113070888923009e-1 * LOG(ZSULF(II))**2) / ZAL(II) +  &
-                    & 5.2062808476476330e-1 * LOG(PRH(II)) * LOG(ZSULF(II))**2 +  &
+                    & 5.2062808476476330e-1 * LOG(PRH(II)) * LOG(ZSULF(II))**2   &
                     & -6.0696882500824584e-3 * PTEMP(II) * LOG(PRH(II)) * LOG(ZSULF(II))**2 +  &
-                    & 2.3851383302608477e-5 * PTEMP(II)**2 * LOG(PRH(II)) * LOG(ZSULF(II))**2 +  &
+                    & 2.3851383302608477e-5 * PTEMP(II)**2 * LOG(PRH(II)) * LOG(ZSULF(II))**2   &
                     & -1.5243837103067096e-8 * PTEMP(II)**3 * LOG(PRH(II)) * LOG(ZSULF(II))**2 +  &
-                    & (-5.6543192378015687e-2 * LOG(PRH(II)) * LOG(ZSULF(II))**2) / ZAL(II) +  &
+                    & (-5.6543192378015687e-2 * LOG(PRH(II)) * LOG(ZSULF(II))**2) / ZAL(II)   &
                     & -1.1630806410696815e-1 * LOG(ZSULF(II))**3 +  &
-                    & 1.3806404273119610e-3 * PTEMP(II) * LOG(ZSULF(II))**3 +  &
-                    & -2.0199865087650833e-6 * PTEMP(II)**2 * LOG(ZSULF(II))**3 +  &
+                    & 1.3806404273119610e-3 * PTEMP(II) * LOG(ZSULF(II))**3   &
+                    & -2.0199865087650833e-6 * PTEMP(II)**2 * LOG(ZSULF(II))**3   &
                     & -3.0200284885763192e-9 * PTEMP(II)**3 * LOG(ZSULF(II))**3 +  &
                     & (-6.9425267104126316e-3 * LOG(ZSULF(II))**3) / ZAL(II)
           !
@@ -252,41 +252,41 @@ DO II = 1, SIZE(PSULF,1)
                      & 7.5641448594711666e-7*PTEMP(II)**3*LOG(PRH(II)) + &
                      & (-2.0668639384228818e-02*LOG(PRH(II)))/ZAL(II) - &
                      & 3.7593072011595188e-2*LOG(PRH(II))**2 + &
-                     & 8.0993182774415718e-4*PTEMP(II)*LOG(PRH(II))**2 + &
+                     & 8.0993182774415718e-4*PTEMP(II)*LOG(PRH(II))**2  &
                      & -9.5698412164297149e-6*PTEMP(II)**2*LOG(PRH(II))**2 + &
                      & 3.7163166416110421e-8*PTEMP(II)**3*LOG(PRH(II))**2 + &
                      & (1.1026579525210847e-2*LOG(PRH(II))**2)/ZAL(II) + &
-                     & 1.1530844115561925e-2*LOG(PRH(II))**3 + &
-                     & - 1.8083253906466668e-4*PTEMP(II)*LOG(PRH(II))**3 +&
-                     & 8.0213604053330654e-7*PTEMP(II)**2*LOG(PRH(II))**3 +  &
+                     & 1.1530844115561925e-2*LOG(PRH(II))**3  &
+                     & -1.8083253906466668e-4*PTEMP(II)*LOG(PRH(II))**3 +&
+                     & 8.0213604053330654e-7*PTEMP(II)**2*LOG(PRH(II))**3  &
                      & -8.5797885383051337e-10*PTEMP(II)**3*LOG(PRH(II))**3 + &
-                     & (1.0243693899717402e-3*LOG(PRH(II))**3)/ZAL(II) + &
+                     & (1.0243693899717402e-3*LOG(PRH(II))**3)/ZAL(II) &
                      & -1.7248695296299649e-2*LOG(ZSULF(II)) + &
-                     & 1.1294004162437157e-2*PTEMP(II)*LOG(ZSULF(II)) + &
+                     & 1.1294004162437157e-2*PTEMP(II)*LOG(ZSULF(II)) &
                      & -1.2283640163189278e-4*PTEMP(II)**2*LOG(ZSULF(II)) + &
                      & 2.7391732258259009e-7*PTEMP(II)**3*LOG(ZSULF(II)) +  &
                      & (6.8505583974029602e-2*LOG(ZSULF(II)))/ZAL(II) + &
-                     & 2.9750968179523635e-1*LOG(PRH(II))*LOG(ZSULF(II)) + &
+                     & 2.9750968179523635e-1*LOG(PRH(II))*LOG(ZSULF(II)) &
                      & -3.6681154503992296e-3*PTEMP(II)*LOG(PRH(II))*LOG(ZSULF(II)) + &
                      & 1.0636473034653114e-5*PTEMP(II)**2*LOG(PRH(II))*LOG(ZSULF(II)) +  &
                      & 5.8687098466515866e-9*PTEMP(II)**3*LOG(PRH(II))*LOG(ZSULF(II)) + &
                      & (-5.2028866094191509e-3*LOG(PRH(II))*LOG(ZSULF(II)))/ZAL(II) +  &
                      & 7.6971988880587231e-4*LOG(PRH(II))**2*LOG(ZSULF(II)) - &
                      & 2.4605575820433763e-5*PTEMP(II)*LOG(PRH(II))**2*LOG(ZSULF(II)) +  &
-                     & 2.3818484400893008e-7*PTEMP(II)**2*LOG(PRH(II))**2*LOG(ZSULF(II)) +  &
+                     & 2.3818484400893008e-7*PTEMP(II)**2*LOG(PRH(II))**2*LOG(ZSULF(II))   &
                      & -8.8474102392445200e-10*PTEMP(II)**3*LOG(PRH(II))**2*LOG(ZSULF(II)) +  &
                      & (-1.6640566678168968e-4*LOG(PRH(II))**2*LOG(ZSULF(II)))/ZAL(II) - &
                      & 7.7390093776705471e-2*LOG(ZSULF(II))**2 + &
                      & 5.8220163188828482e-4*PTEMP(II)*LOG(ZSULF(II))**2 + &
-                     & 1.2291679321523287e-6*PTEMP(II)**2*LOG(ZSULF(II))**2 + &
+                     & 1.2291679321523287e-6*PTEMP(II)**2*LOG(ZSULF(II))**2  &
                      & -7.4690997508075749e-9*PTEMP(II)**3*LOG(ZSULF(II))**2 + &
-                     & (-5.6357941220497648e-3*LOG(ZSULF(II))**2)/ZAL(II) + &
+                     & (-5.6357941220497648e-3*LOG(ZSULF(II))**2)/ZAL(II)  &
                      & -4.7170109625089768e-3*LOG(PRH(II))*LOG(ZSULF(II))**2 + & 
-                     & 6.9828868534370193e-5*PTEMP(II)*LOG(PRH(II))*LOG(ZSULF(II))**2 + &
+                     & 6.9828868534370193e-5*PTEMP(II)*LOG(PRH(II))*LOG(ZSULF(II))**2  &
                      & -3.1738912157036403e-7*PTEMP(II)**2*LOG(PRH(II))*LOG(ZSULF(II))**2 + &
                      & 2.3975538706787416e-10*PTEMP(II)**3*LOG(PRH(II))*LOG(ZSULF(II))**2 + &
                      & (4.2304213386288567e-4*LOG(PRH(II))*LOG(ZSULF(II))**2)/ZAL(II) + &
-                     & 1.3696520973423231e-3*LOG(ZSULF(II))**3 + &
+                     & 1.3696520973423231e-3*LOG(ZSULF(II))**3  &
                      & -1.6863387574788199e-5*PTEMP(II)*LOG(ZSULF(II))**3 + &
                      & 2.7959499278844516e-8*PTEMP(II)**2*LOG(ZSULF(II))**3 + &
                      & 3.9423927013227455e-11*PTEMP(II)**3*LOG(ZSULF(II))**3 + &
diff --git a/src/Makefile b/src/Makefile
index 1692dd7d5e9421ad37fa9168fe0d0320af193446..3ef6c95ef60837be6957ac376a4e2e8c837017a2 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -324,7 +324,7 @@ $(ECCODES_MOD) :
 	AEC_PATH=$(CDF_PATH) cmake ${DIR_ECCODES_SRC} -DCMAKE_INSTALL_PREFIX=${DIR_ECCODES_INSTALL} -DBUILD_SHARED_LIBS=OFF \
 	-DENABLE_NETCDF=OFF -DENABLE_JPG=OFF -DENABLE_PYTHON=OFF -DENABLE_EXAMPLES=OFF \
 	-DCMAKE_Fortran_COMPILER=$(FC) -DCMAKE_C_COMPILER=$(CC) \
-	-DCMAKE_Fortran_FLAGS=$(ECCODES_FFLAGS) -DCMAKE_C_FLAGS=$(ECCODES_CFLAGS) && \
+	-DCMAKE_Fortran_FLAGS=$(ECCODES_FFLAGS) -DCMAKE_C_FLAGS=$(ECCODES_CFLAGS) ${EC_CONF} && \
 	$(MAKE) && $(MAKE) install && $(MAKE) clean
 
 eccodes_lib_clean :
@@ -342,10 +342,10 @@ NETCDF_OPT ?= ${OPT_BASE_I4:-$OPT_BASE}
 #
 cdf : $(CDF_MOD)
 $(CDF_MOD) :
-	cd ${DIR_LIBAEC} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 CC="$(CC)" CFLAGS="$(HDF_OPT)" && \
+	cd ${DIR_LIBAEC} && autoreconf -i && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 CC="$(CC)" CFLAGS="$(HDF_OPT)" ${CDF_CONF} && \
 	$(MAKE) && $(MAKE) install && $(MAKE) clean
 	cd ${DIR_HDF} && ./configure --enable-fortran --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-szlib=${CDF_PATH}/include,${CDF_PATH}/lib64 \
-	CC="$(CC)" CFLAGS="$(HDF_OPT)" FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lsz -laec -lz -ldl " && \
+	CC="$(CC)" CFLAGS="$(HDF_OPT)" ${HDF_CONF} FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lsz -laec -lz" && \
 	$(MAKE) && $(MAKE) install && $(MAKE) clean
 	cd ${DIR_CDFC} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-dap \
 	CC="$(CC)" CFLAGS="$(NETCDF_OPT)" CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lhdf5_hl -lhdf5 -lsz -laec -lz -ldl " && \
@@ -524,48 +524,48 @@ ARFLAGS=r
 #
 #  GENERATION OF DEPENDANCE FILES : *.D
 # 
-
+SPLL ?= spll
 %.D:%.F90
 	$(CPP) $(INC) $(CPPFLAGS) $< >  $(OBJDIR)/$(*F).f90 
-	spll $(NSOURCE) $(OBJDIR)/$(*F).f90 
+	$(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f90 
 	rm -f $(OBJDIR)/$(*F).f90 
 
 %.D:%.f90
 	$(CPP) $(INC) $(CPPFLAGS) $< >  $(OBJDIR)/$(*F).f90 
-	spll $(NSOURCE) $(OBJDIR)/$(*F).f90 
+	$(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f90 
 	rm -f $(OBJDIR)/$(*F).f90 
 
 %.D:%.fx90
 	$(CPP)  $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).fx90
-	spll $(NSOURCE) $(OBJDIR)/$(*F).fx90 
+	$(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).fx90 
 	rm -f $(OBJDIR)/$(*F).fx90
  
 %.D:%.f
 	$(CPP)  $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).f
-	spll $(NSOURCE) $(OBJDIR)/$(*F).f 
+	$(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f 
 	rm -f $(OBJDIR)/$(*F).f
  
 #
 # GENERATION OF OBJET FILES : *.o
 #
 
-%.o:%.f90
-	echo "inc=$(INC)"
-	$(F90) -I$(OBJDIR) $(INC) -c $(F90FLAGS) $< 
-	-mv  $(*F).o $(OBJDIR)/. || echo OK $(*F).o
+#%.o:%.f90
+#	echo "inc=$(INC)"
+#	$(F90) -I$(OBJDIR) $(INC) -c $(F90FLAGS) $< 
+#	-mv  $(*F).o $(OBJDIR)/. || echo OK $(*F).o
 
 %.o:%.f
 	echo "inc=$(INC)"
 	$(F77) -I$(OBJDIR) $(INC) -c $(F77FLAGS)  $<  
 	-mv  $(*F).o $(OBJDIR)/. || echo OK $(*F).o
 
-%.o:%.fx90
-	cp $< $(OBJDIR)/$(*F).f 
-	$(FX90) -I$(OBJDIR) $(INC) -c $(FX90FLAGS) $(OBJDIR)/$(*F).f   
-	-mv  $(*F).o $(OBJDIR)/. || echo OK $(*F).o
+#%.o:%.fx90
+#	cp $< $(OBJDIR)/$(*F).f 
+#	$(FX90) -I$(OBJDIR) $(INC) -c $(FX90FLAGS) $(OBJDIR)/$(*F).f   
+#	-mv  $(*F).o $(OBJDIR)/. || echo OK $(*F).o
 
 %.o : %.c
-	$(CC) $(INC) $(CFLAGS) $(CPPFLAGS) -c $< -o $(OBJDIR)/$(*F).o
+	$(CC) $(INC) $(CFLAGS) $(CPPFLAGS_C) -c $< -o $(OBJDIR)/$(*F).o
 	-mv  $(*F).o $(OBJDIR)/. || echo OK $(*F).o
 
 ifeq "$(DO_COMP_MASTER)" "YES"
diff --git a/src/Rules.LXcray.mk b/src/Rules.LXcray.mk
index 8b5a2ec2e28d06909c75cd99c88f3a866b9f7707..d21f8318df6236687ea32d9e8aec8a5f072bf2d1 100644
--- a/src/Rules.LXcray.mk
+++ b/src/Rules.LXcray.mk
@@ -1,4 +1,4 @@
-#MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
+#MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier
 #MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 #MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
@@ -7,26 +7,41 @@
 # Compiler Options                                       #
 #                                                        #
 ##########################################################
+#
+#   craytfn version
+CFV=$(shell crayftn --version | grep -E -m1 -o ' [[:digit:]\.]{2,}( |$$)'  | sed 's/\.//g' )
+#
 #OBJDIR_PATH=/home/escj/azertyuiopqsdfghjklm/wxcvbn/azertyuiopqsdfghjklmwxcvbn
 #
-#OPT_BASE   =  -r8 -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -traceback  -fp-model precise -switch fe_inline_all_arg_copy_inout
-OPT_BASE   =  -sreal64 -hpic -em -ef
+OPT_BASE   =  -hpic -emf -h acc_model=auto_async_none:no_fast_addr:no_deep_copy -halias=none
 OPT_PERF0  =  -O0 -g
-OPT_PERF2  =  -O2 -hflex_mp=intolerant -Ofp0 -hnoomp
-OPT_PERF1  =  -O1 -hflex_mp=intolerant -Ofp0 -hnoomp -hcpu=istanbul -hfp0 -K trap=fp
-# –hcpu=Istanbul –hfp0
-#OPT_CHECK  =  -CB -ftrapuv 
+OPT_PERF1  =  -G2 -O1 -hflex_mp=intolerant -Ofp0 -hnofma -hnoomp -K trap=fp -hipa0 
+OPT_PERF2  =  -G2 -O2 -hflex_mp=intolerant -Ofp0 -hnofma -hnoomp -hipa0 
+#
+OPT_NOOPENACC     = -hnoacc
+OPT_OPENACC       = -hacc
+#
 OPT_CHECK  =  -Rbc
-OPT_I8     =  -sdefault64
+OPT_I8     =  -sinteger64
+OPT_R8     =  -sreal64
+#
+ifeq "$(VER_USER)" "ZSOLVER"
+CPPFLAGS  += -DCARTESIANGEOMETRY -DPIECEWISELINEAR
+PROG_LIST += MG_MAIN MG_MAIN_MNH_ALL
+endif
 #
-# Integer 4/8 option
+# Real/integer 4/8 option
 #
+MNH_REAL  ?=8
 MNH_INT   ?=4
 #
+ifneq "$(MNH_REAL)" "4"
+OPT_BASE           += $(OPT_R8)
+endif
+#
 OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
-#OPT_BASE         += $(OPT_I8)
-OPT_BASE           = -sdefault64 -hpic -em -ef
+OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
 else
 LFI_INT           ?=4
@@ -42,17 +57,89 @@ OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF0)
 CFLAGS   += -g
 endif
-ifeq "$(OPTLEVEL)" "O2PAR"
-PAR= -homp
-OPT       = $(OPT_BASE) $(OPT_PERF2) $(PAR)
-OPT0      = $(OPT_BASE) $(OPT_PERF0) $(PAR)
-OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) $(PAR)
+#
+ifeq "$(OPTLEVEL)" "OPENACC"
+MNH_BITREP_OMP=YES
+CPPFLAGS    += -DMNH_OPENACC -DMNH_GPUDIRECT
+OPT       = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC)
+OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_OPENACC)
+OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC)
+#CXXFLAGS = -fopenmp
+#OBJS_REPROD= spll_mode_sum_ll.o
+#$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -Mvect=nosimd -Minfo=all -g
+#OBJS_O1_OPENACC= spll_ice4_tendencies.o spll_turb_ver_thermo_flux.o
+#OBJS_O1_OPENACC= spll_rain_ice_red.o
+#$(OBJS_O1_OPENACC) : OPT = $(OPT_BASE) $(OPT_PERF0) $(OPT_OPENACC)
+
+#OBJS_ASYNAll=spll_turb_ver_thermo_flux.o spll_turb_ver_thermo_corr.o spll_turb_ver_dyn_flux.o \
+#             spll_turb_hor_uv.o spll_turb_hor_uw.o spll_turb_hor_vw.o spll_mode_turb.o\
+#             spll_turb_hor_dyn_corr.o spll_turb_hor_thermo_flux.o spll_turb_hor_sv_corr.o  
+# spll_mode_turb.o spll_p_abs.o spll_advection_metsv.o \
+#             spll_advection_uvw.o spll_resolved_cloud.o
+#$(OBJS_ASYNAll) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -h acc_model=auto_async_all
+
+OBJS_CONCURRENT=spll_multigrid.o spll_turb_ver_thermo_flux.o
+#spll_resolved_cloud.o 
+$(OBJS_CONCURRENT) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -h concurrent -rimo
+
+endif
+ifeq "$(OPTLEVEL)" "OPENACCNOBITREP"
+#MNH_BITREP_OMP=YES
+CPPFLAGS    += -DMNH_OPENACC -DMNH_GPUDIRECT
+OPT       = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC)
+OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_OPENACC)
+OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC)
+#CXXFLAGS = -fopenmp
+#OBJS_REPROD= spll_mode_sum_ll.o
+#$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -Mvect=nosimd -Minfo=all -g
+#OBJS_O1_OPENACC= spll_ice4_tendencies.o spll_turb_ver_thermo_flux.o
+#OBJS_O1_OPENACC= spll_rain_ice_red.o
+#$(OBJS_O1_OPENACC) : OPT = $(OPT_BASE) $(OPT_PERF0) $(OPT_OPENACC)
+
+#OBJS_ASYNAll=spll_turb_ver_thermo_flux.o spll_turb_ver_thermo_corr.o spll_turb_ver_dyn_flux.o \
+#             spll_turb_hor_uv.o spll_turb_hor_uw.o spll_turb_hor_vw.o spll_mode_turb.o\
+#             spll_turb_hor_dyn_corr.o spll_turb_hor_thermo_flux.o spll_turb_hor_sv_corr.o  
+# spll_mode_turb.o spll_p_abs.o spll_advection_metsv.o \
+#             spll_advection_uvw.o spll_resolved_cloud.o
+#$(OBJS_ASYNAll) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -h acc_model=auto_async_all
+
+OBJS_CONCURRENT=spll_multigrid.o spll_turb_ver_thermo_flux.o
+# spll_resolved_cloud.o 
+$(OBJS_CONCURRENT) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -h concurrent -rdimo
+
+endif
+#
+
+ifeq "$(OPTLEVEL)" "OPENACCDEFONLY"
+MNH_BITREP_OMP=YES
+CPPFLAGS    += -DMNH_OPENACC -D_FAKEOPENACC
+OPT       = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC)  
+OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_NOOPENACC) 
+OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC)
+#CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC)
+#OBJS_REPROD= spll_mode_sum_ll.o
+#$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC) -Mvect=nosimd -Minfo=all -g
 endif
+#
+ifeq "$(OPTLEVEL)" "NOOPENACC"
+OPT       = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC)
+OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_NOOPENACC)
+OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC)
+#CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC)
+#OBJS_REPROD= spll_mode_sum_ll.o
+#$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC) -Mvect=nosimd -Minfo=all -g
+endif
+#
 ifeq "$(OPTLEVEL)" "O2NOVEC"
 OPT       = $(OPT_BASE) $(OPT_PERF2) -O vector0
 OPT0      = $(OPT_BASE) $(OPT_PERF0) -O vector0
 OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2) -O vector0
 endif
+ifeq "$(OPTLEVEL)" "O2"
+OPT       = $(OPT_BASE) $(OPT_PERF2)
+OPT0      = $(OPT_BASE) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2)
+endif
 ifeq "$(OPTLEVEL)" "O1"
 OPT       = $(OPT_BASE) $(OPT_PERF1) 
 OPT0      = $(OPT_BASE) $(OPT_PERF0) 
@@ -60,11 +147,18 @@ OPT_NOCB  = $(OPT_BASE) $(OPT_PERF1)
 endif
 #
 #
-FC = ftn -em -ef
-FCFLAGS = -em -ef
-CC=gcc
+FC = ftn
+FCFLAGS = -emf
+CC=cc
+CXX=CC
 export FC CC FCFLAGS
+ifeq "$(VER_MPI)" "MPIAUTO"
+F90 = mpif90
+#CPPFLAGS_SURCOUCHE = -DUSE_MPI
+else
 F90 = ftn
+CPPFLAGS_SURCOUCHE = -DUSE_MPI
+endif
 F90FLAGS  =  $(OPT)
 F77  = $(F90)
 F77FLAGS  =  $(OPT) 
@@ -78,19 +172,56 @@ LDFLAGS    =   -Wl,-warn-once $(PAR) $(OPT_BASE)
 #
 # preprocessing flags 
 #
-CPP = cpp -P -traditional -Wcomment
+#CPP = cpp -P -Wcomment -traditional -D_OPENACC=201306
+CPP = mnh_expand -D_OPENACC=201306
 #
-CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE = -DDEV_NULL
-CPPFLAGS_RAD       =
+CPPFLAGS_C         = -DLITTLE_endian
+CPPFLAGS_SURFEX    = 
+CPPFLAGS_SURCOUCHE +=  -DDEV_NULL -DMNH_COMPILER_CCE
+CPPFLAGS_RAD       = 
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT}
-CPPFLAGS_MNH       = -DMNH -DSFX_MNH 
+CPPFLAGS_MNH       = -DMNH=MNH -DSFX_MNH -DMNH_NO_MPI_LOGICAL48 -DMNH_COMPILER_CCE
+ifeq ($(shell test $(CFV) -ge 1402 ; echo $$?),0)
+CPPFLAGS_MNH       += -DMNH_COMPILER_CCE_1403
+endif
+CPPFLAGS_MNH       += -DMNH_EXPAND -DMNH_EXPAND_LOOP -DMNH_EXPAND_OPENACC
+CPPFLAGS_MNH       += -imacros MNH_OPENACC_NV_CR.CPP
 ifdef VER_GA
 CPPFLAGS_SURCOUCHE += -DMNH_GA
 INC                += -I${GA_ROOT}/include
 LIBS               += -L${GA_ROOT}/lib -larmci -lga -lgfortran
 endif
 #
+# BITREP flags
+#
+#if MNH_BITREP exists => compile with the BITREP library
+MNH_BITREP = NO
+ifeq "$(MNH_BITREP)" "YES"
+CPPFLAGS_MNH += -DMNH_BITREP
+endif
+#
+# Test of bitrep with OMP compilation 
+#
+ifeq "$(MNH_BITREP_OMP)" "YES"
+CXXFLAGS = -fopenmp
+CPPFLAGS_MNH += -DMNH_BITREP_OMP
+DIR_MASTER += LIB/BITREP
+VPATH += LIB/BITREP
+OBJS_LISTE_MASTER += br_transcendentals.o
+LIBS += -lstdc++
+%.o : %.cpp
+	$(CXX) $(INC) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $(OBJDIR)/$(*F).o
+#
+# Add gu.c , for Zero Floating Point Graduate UnderFlow on CPU & GPU
+#
+DIR_MASTER += ARCH_SRC/cray_gu
+VPATH += ARCH_SRC/cray_gu
+OBJS_LISTE_MASTER += gu.o
+gu.o : CC=gcc
+gu.o : INC=
+gu.o : CPPFLAGS_C=
+endif
+#
 # LIBTOOLS flags
 #
 #if MNH_TOOLS exists => compile the tools
@@ -117,6 +248,17 @@ MNH_COMPRESS=yes
 #
 MNH_GRIBAPI=no
 #
+NETCDF_SUPPFLAGS='-emf'
+ECCODES_FFLAGS='-emf -hsystem_alloc'
+ECCODES_CFLAGS=' -gdwarf-4 '
+EC_CONF='-DIEEE_LE=1'
+CDF_CONF= CPP=cpp 
+HDF_CONF= CPP=cpp 
+#
+# Bypat nvidia70 problème
+ifeq "$(CRAY_ACCEL_TARGET)" "nvidia70"
+CPPFLAGS_MNH       += -DTARGET_NV70
+endif
 ##########################################################
 #                                                        #
 # Source of MESONH PACKAGE  Distribution                 #
@@ -139,9 +281,12 @@ include Makefile.MESONH.mk
 ##########################################################
 # Juan & Maud 20/03/2008 --> Ifort 10.1.008 Bug O2 optimization
 #OPT_PERF1  =  -O1
-OBJS_O1= spll_schu.o spll_ps2str.o spll_p_abs.o spll_ini_one_way_n.o spll_urban_solar_abs.o
+OBJS_O1= spll_schu.o spll_ps2str.o spll_ini_one_way_n.o spll_urban_solar_abs.o spll_mode_ekf.o mode_ekf.mod
+#spll_p_abs.o
 $(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1)
-OBJS_O0= spll_mode_gridproj.o spll_ini_dynamics.o spll_sunpos_n.o spll_ground_param_n.o
+OBJS_O0= mode_gridproj.mod spll_mode_gridproj.o spll_ini_dynamics.o spll_sunpos_n.o spll_average_diag.o spll_write_lfifm1_for_diag.o \
+         spll_write_aircraft_balloon.o spll_mode_write_les_n.o mode_write_les_n.mod modd_mnh_surfex_n.mod
+# spll_ground_param_n.o
 
 $(OBJS_O0) : OPT = $(OPT_BASE) $(OPT_PERF0)
 
@@ -151,10 +296,41 @@ $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
 endif
 
 ifeq "$(MNH_INT)" "8"
-OBJS_I4=spll_modd_netcdf.o
+OBJS_I4=spll_modd_netcdf.o modd_netcdf.mod
 $(OBJS_I4) : OPT = $(OPT_BASE_I4)
 endif
 
-#mpi.mod : 
-#	ln -sf /opt/cray/mpt/5.6.3/gni/mpich2-cray/74/include/MPI.mod $(OBJDIR_MASTER)/mpi.mod
+OBJS_LST = spll_condensation.o spll_turb_ver_thermo_flux.o spll_rotate_wind.o spll_mode_mnh_zwork.o mode_mnh_zwork.mod spll_contrav_device.o \
+           spll_advection_metsv.o \
+           spll_mym_device.o spll_myf_device.o spll_dyf_device.o \
+           spll_gx_m_u_device.o spll_gy_m_v_device.o \
+           spll_gravity.o spll_gravity_impl.o \
+           spll_advection_uvw.o spll_resolved_cloud.o spll_mode_tools.o mode_tools.mod \
+           spll_mode_rain_ice_sedimentation_split.o mode_rain_ice_sedimentation_split.mod spll_ice_adjust.o \
+           spll_countjv1d_device.o spll_countjv2d_device.o spll_countjv3d_device.o \
+           spll_mode_turb.o mode_turb.mod spll_phys_param_n.o spll_model_n.o spll_tridiag_tke.o \
+           spll_turb_ver_thermo_corr.o spll_tke_eps_sources.o spll_turb_ver_dyn_flux.o \
+           spll_turb_hor_uv.o spll_turb_hor_uw.o spll_turb_hor_vw.o \
+           spll_turb_hor_dyn_corr.o spll_turb_hor_thermo_flux.o \
+           spll_pressurez.o spll_p_abs.o spll_zsolver.o spll_zsolver_inv.o spll_dotprod.o \
+           spll_communication.o spll_discretisation.o spll_multigrid.o spll_datatypes.o \
+           spll_get_halo_start_d.o spll_get_halo_stop_d.o spll_mass_leak.o \
+           spll_ppm_01_x.o spll_ppm_01_y.o spll_ppm_01_z.o \
+           spll_ppm_s0_x.o spll_ppm_s0_y.o spll_ppm_s0_z.o \
+           spll_mode_rain_ice_slow.o mode_rain_ice_slow.mod spll_mode_rain_ice_fast_rs.o mode_rain_ice_fast_rs.mod \
+           spll_prandtl.o spll_mode_rain_ice_fast_rg.o mode_rain_ice_fast_rg.mod spll_mode_rain_ice_fast_ri.o mode_rain_ice_fast_ri.mod \
+           spll_mode_rain_ice.o mode_rain_ice.mod spll_mode_rain_ice_warm.o mode_rain_ice_warm.mod \
+           spll_ground_param_n.o spll_advec_ppm_algo.o \
+           spll_turb_hor_sv_corr.o spll_rain_ice.o spll_mode_rain_ice_nucleation.o mode_rain_ice_nucleation.mod \
+           spll_mode_prandtl.o mode_prandtl.mod spll_turb_ver.o spll_mode_repro_sum.o mode_repro_sum.mod \
+           spll_tridiag_thermo.o spll_tridiag_wind.o spll_tridiag_w.o \
+           spll_tridiag_tke.o spll_advec_weno_k_2_my.o spll_advec_weno_k_2_mx.o \
+           spll_advec_weno_k_2_vy.o spll_advec_weno_k_2_ux.o spll_mxm_device.o \
+           spll_mym_device.o spll_mzm_device.o
+           
+#$(OBJS_LST) : OPT += -rdimo
+
+OPT += -rimo
+
+SPLL = spll_lst
 
diff --git a/src/configure b/src/configure
index f87e4813771c7b35328b1e457630b47cca3497e7..8e7b855c4bb589f0d44f83aa0ff6ac756aaea41c 100755
--- a/src/configure
+++ b/src/configure
@@ -9,7 +9,7 @@ if [ "x$XYZ" = "x" ]
 then
 # 
 export VERSION_MASTER=${VERSION_MASTER:-MNH-V5-6}
-export VERSION_BUG=${VERSION_BUG:-0}
+export VERSION_BUG=${VERSION_BUG:-00}
 export VERSION_XYZ=${VERSION_XYZ:-${VERSION_MASTER}-${VERSION_BUG}${VER_OASIS:+-${VER_OASIS}}}
 export VERSION_DATE=${VERSION_DATE:-"31/01/2023"}
 export VERSION_LIBAEC=${VERSION_LIBAEC:-"v1.0.6"}
@@ -32,6 +32,13 @@ export VERSION_NCL=${VERSION_NCL:-"ncl-6.4.0"}
 export VERSION_ECRAD=${VERSION_ECRAD:-"1.4.0"}
 export VER_ECRAD=${VERSION_ECRAD//./}
 
+#
+#  Install MNH_EXPAND if VER_MNHEXP=MNHEXPAUTO
+#
+export VER_MNHEXP=${VER_MNHEXP:-"MNHEXPAUTO"}
+export VERSION_MNHEXP=${VERSION_MNHEXP:-"MNH_EXPAND_1-2-2"}
+export VERSION_FILEPP=${VERSION_FILEPP:-"1.8.0"}
+
 export LEN_HREC=${LEN_HREC:-16}
 
 #
@@ -45,6 +52,83 @@ cd ${LOCAL}/conf
 TARG=$(uname -s -n)
 #
 case "$TARG" in
+'Linux login'*)
+                export ARCH=${ARCH:-LXcray}
+                export VER_MPI=${VER_MPI:-MPICRAY}
+                export OPTLEVEL=${OPTLEVEL:-OPENACC}
+                export MVWORK=${MVWORK:-NO}
+                export VER_CDF=${VER_CDF:-CDFAUTO}
+if [ "${VER_MPI}" == "MPICRAY" ] 
+then	
+export MNHENV=${MNHENV:-"
+module purge
+module load craype-x86-trento
+module load craype-network-ofi
+module load PrgEnv-cray/8.3.3
+module load cce/15.0.0
+module load craype/2.7.19
+module load cray-mpich/8.1.21
+module load libfabric/1.15.2.0
+module load craype-accel-amd-gfx90a
+module load rocm/5.2.3
+
+export CCE_ALIAS_NONE=:on
+export CCE_NO_PTR_TO_PTR_ALIAS=:on
+
+module list
+"}
+else
+export MNHENV=${MNHENV:-"
+module purge
+module use /lus/home/NAT/gda2203/SHARED/escobar/my_modules >& /dev/null
+module load craype-x86-trento
+module load PrgEnv-cray/8.3.3
+module load craype/2.7.19
+module load craype-accel-amd-gfx90a 
+export version=5.2.3
+module load rocm/${version}
+module rm craype-network-ofi cray-mpich cray-libsci cray-dsmml
+module load ompij/4.1.2-cray-15.0.0-ucx_rocm
+
+export CCE_ALIAS_NONE=:on
+export CCE_NO_PTR_TO_PTR_ALIAS=:on
+
+module list
+"}	 
+fi
+
+              ;;
+
+'Linux login2'*)
+                export ARCH=${ARCH:-LXcray}
+                export VER_MPI=${VER_MPI:-MPICRAY}
+                #export VER_MPI=${VER_MPI:-MPIAUTO}
+                #export OPTLEVEL=${OPTLEVEL:-MANAGED02}
+               export OPTLEVEL=${OPTLEVEL:-OPENACC}
+               # export OPTLEVEL=${OPTLEVEL:-OPENACCDEFONLY}
+                export MVWORK=${MVWORK:-NO}
+                export VER_CDF=${VER_CDF:-CDFAUTO}
+                #export VER_USER=${VER_USER:-ZSOLVER}
+                export MNHENV=${MNHENV:-"
+module purge
+module load craype-x86-trento
+module load craype-network-ofi
+module load PrgEnv-cray/8.3.3
+
+module load libfabric/1.15.0.0
+module load xpmem/2.4.4-2.3_2.12__gff0e1d9.shasta
+module load cray-pmi/6.1.2
+module load craype-accel-amd-gfx90a
+module load rocm
+
+
+ulimit -s unlimited
+
+
+#export CRAY_ACC_DEBUG=2
+"}
+              ;;
+
 'Linux jean-zay'*|'Linux idrsrv'*)
                 export ARCH=${ARCH:-LXifort}
                 export VER_MPI=${VER_MPI:-MPIINTEL}
@@ -511,7 +595,22 @@ if [ "x${NEED_TOOLS}" == "xYES" ] ; then
 	   ;;
   esac
 fi
-
+#
+#  Install MNH_EXPAND if VER_MNHEXP=MNHEXPAUTO
+#
+if [ "x${VER_MNHEXP}" == "xMNHEXPAUTO" ] ;then
+    (
+	cd $LOCAL/pub/FILEPP
+	if [ ! -d MNH_Expand_Array-${VERSION_MNHEXP} ] ; then
+	    tar xvf  ${VERSION_MNHEXP}.tar.gz
+	    tar xvf  filepp-${VERSION_FILEPP}.tar.gz
+	    cd filepp-${VERSION_FILEPP}
+	    FILEPP=$LOCAL/pub/FILEPP
+	    ./configure --prefix=${FILEPP}/FILEPP-${VERSION_FILEPP}
+	    make install
+	fi
+    )
+fi 
 #
 # Generate profile_mesonh
 #