diff --git a/src/Rules.LXnvhpc2005.mk b/src/Rules.LXnvhpc2005.mk
new file mode 100644
index 0000000000000000000000000000000000000000..9aafd7a102b3905cf115bbfe734912e7ef483f9e
--- /dev/null
+++ b/src/Rules.LXnvhpc2005.mk
@@ -0,0 +1,250 @@
+#MNH_LIC Copyright 1994-2019 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.
+##########################################################
+#                                                        #
+# Compiler Options                                       #
+#                                                        #
+##########################################################
+#OBJDIR_PATH=${WORKDIR}
+#
+#Version of CUDA
+#(8.0 at least if compute capability >= 6.0)
+CUDALEVEL=cuda10.2
+#
+#Compute capability of GPU
+#
+OPT_CPTCAP=cc35,cc50
+#Aeropc45: cc50
+#Nuwa: cc35
+#Ouessant Firestone K80: cc35
+#Ouessant Minsky P100: cc60
+#
+#Compiler info level
+#OPT_INFO = -Minfo=ftn,accel,inline,ipa,loop,lre,mp,opt,par,unified,vect,ccff
+OPT_INFO = -Minfo=accel
+#
+#Compiler profiling options
+#OPT_PROF = -Mprof=ccff
+#
+#PW: if -Ktrap=fp: nvprof/pgprof do not work   OPT_BASE   =  -Ktrap=fp ...
+#PW: -g: big impact on performance
+OPT_BASE   =  -Mbackslash -Mextend -Kieee -nofma
+#
+OPT_PERF0  =  -O0
+OPT_PERF1  =  -O1
+OPT_PERF2  =  -O2
+#
+OPT_MANAGED    = -Mframe -Mnostack_arrays -Mallocatable=95 -acc=host,gpu -gpu=nofma,$(OPT_CPTCAP),$(CUDALEVEL),managed $(OPT_INFO) $(OPT_PROF)
+OPT_MULTICORE  = -acc=multicore $(OPT_INFO) $(OPT_PROF)
+OPT_NOOPENACC  = -acc=host $(OPT_INFO) $(OPT_PROF)
+OPT_OPENACC    = -Mnostack_arrays -Mallocatable=95 -acc=host,gpu -gpu=nofma,$(OPT_CPTCAP),$(CUDALEVEL) $(OPT_INFO) $(OPT_PROF)
+#
+OPT_CHECK  =  -C #-Mchkfpstk -Mchkptr
+OPT_I8     =  -i8
+OPT_R8     =  -r8
+#
+ifeq "$(VER_USER)" "ZSOLVER"
+CPPFLAGS  += -DCARTESIANGEOMETRY -DOVERLAPCOMMS -DPIECEWISELINEAR
+PROG_LIST += MG_MAIN MG_MAIN_MNH_ALL
+endif
+#
+IGNORE_OBJS += pgprof.o
+#
+# 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)
+LFI_INT           ?=8
+else
+LFI_INT           ?=4
+endif
+#
+#
+OPT       = $(OPT_BASE) $(OPT_PERF2)
+OPT0      = $(OPT_BASE) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2)
+#
+ifeq "$(OPTLEVEL)" "DEBUG"
+OPT       = -g $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
+OPT0      = -g $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
+OPT_NOCB  = -g $(OPT_BASE) $(OPT_PERF0)
+OBJS_DWARF3 = spll_model_n.o
+$(OBJS_DWARF3) : OPT = -g -Mdwarf2 $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
+endif
+#
+ifeq "$(OPTLEVEL)" "MANAGED"
+CPPFLAGS    += -DMNH_OPENACC
+OPT       = -g $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2)
+OPT0      = -g $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF0)
+OPT_NOCB  = -g $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) 
+CXXFLAGS = -g -acc -Kieee -Mnofma $(OPT_MANAGED)
+OBJS_REPROD= spll_mode_sum_ll.o
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
+endif
+#
+ifeq "$(OPTLEVEL)" "MULTICORE"
+CPPFLAGS    += -DMNH_OPENACC
+OPT       = $(OPT_BASE) $(OPT_MULTICORE) 
+OPT0      = $(OPT_BASE) $(OPT_MULTICORE) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_MULTICORE) 
+CXXFLAGS = -acc -Kieee -Mnofma $(OPT_MULTICORE)
+endif
+#
+ifeq "$(OPTLEVEL)" "OPENACC"
+CPPFLAGS    += -DMNH_OPENACC
+# -imacros MNH_OPENACC_SHUMAN_MACRO.CPP
+OPT       = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
+OPT0      = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
+OPT_NOCB  = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) 
+CXXFLAGS =  -g -acc -Kieee -Mnofma $(OPT_OPENACC)
+OBJS_REPROD= spll_mode_sum_ll.o
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
+endif
+ifeq "$(OPTLEVEL)" "OPENACCO2"
+CPPFLAGS    += -DMNH_OPENACC
+OPT       = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2)
+OPT0      = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
+OPT_NOCB  = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) 
+CXXFLAGS = -g -acc -Kieee -Mnofma $(OPT_OPENACC)
+OBJS_REPROD= spll_mode_sum_ll.o
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
+endif
+#
+ifeq "$(OPTLEVEL)" "OPENACCDEFONLY"
+CPPFLAGS    += -DMNH_OPENACC -D_FAKEOPENACC
+OPT       = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2)
+OPT0      = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2)
+CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC)
+OBJS_REPROD= spll_mode_sum_ll.o
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
+endif
+#
+ifeq "$(OPTLEVEL)" "NOOPENACC"
+#CPPFLAGS   += -D_OPT_LINEARIZED_LOOPS
+OPT       = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2)
+OPT0      = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2)
+CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC)
+OBJS_REPROD= spll_mode_sum_ll.o
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
+endif
+#
+CC = pgcc
+FC = pgf90
+ifeq "$(VER_MPI)" "MPIAUTO"
+F90 = mpif90
+CC = mpicc
+CXX = mpicxx
+else
+F90 = pgf90
+CC = pgcc
+CXX = pgcxx
+endif
+#
+F77FLAGS  =  $(OPT)
+F77 = $(F90)
+F90FLAGS  =  $(OPT)
+FX90 = $(F90)
+FX90FLAGS =  $(OPT)
+#
+LDFLAGS    =   -Wl,-warn-once $(OPT)
+#
+# preprocessing flags 
+#
+CPP = cpp -P -traditional -Wcomment -D_OPENACC=201711
+#
+CPPFLAGS_SURFEX    =
+CPPFLAGS_SURCOUCHE +=
+CPPFLAGS_RAD       =
+CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT}
+CPPFLAGS_MNH       = -DMNH -DMNH_PGI -DSFX_MNH
+CPPFLAGS_MNH      += -Uvector -Upixel
+#
+# Gribex flags
+#
+TARGET_GRIBEX=linux
+CNAME_GRIBEX=_pgf77
+GRIBAPI_CONF="CPP=cpp"
+CDF_CONF="CPP=cpp"
+#
+# BITREP flags
+#
+#if MNH_BITREP exists => compile with the BITREP library
+MNH_BITREP = YES
+ifeq "$(MNH_BITREP)" "YES"
+CPPFLAGS_MNH += -DMNH_BITREP
+endif
+#
+# LIBTOOLS flags
+#
+#if MNH_TOOLS exists => compile the tools
+MNH_TOOLS = yes
+#
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
+##########################################################
+#                                                        #
+# Source of MESONH PACKAGE  Distribution                 #
+#                                                        #
+##########################################################
+#DIR_SURFEX   += ARCH_SRC/surfex.MNH-462
+
+OBJS_NOCB +=  spll_isba.o
+#
+include Makefile.MESONH.mk
+#
+##########################################################
+#                                                        #
+# extra VPATH, Compilation flag modification             #
+#         systeme module , etc ...                       #
+#         external precompiled module librairie          #
+#         etc ...                                        #
+#                                                        #
+##########################################################
+OBJS_O1= spll_modd_isba_n.o spll_mode_construct_ll.o \
+         spll_init_surf_atm_n.o spll_mode_scatter_ll.o spll_convert_patch_teb.o \
+         spll_define_mask_n.o spll_del1dfield_ll.o spll_mode_fm.o spll_mode_gather_ll.o \
+         spll_convect_updraft.o spll_convect_updraft_shal.o \
+         spll_mode_dustopt.o spll_mode_saltopt.o
+#spll_pack_isba_patch_n.o 
+#spll_phys_param_n.o
+$(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1)
+
+OBJS_O0= spll_mode_mppdb.o \
+         spll_fft55.o spll_fft.o spll_flat_invz.o \
+         spll_mode_repro_sum.o \
+# spll_fast_terms.o 
+# spll_mode_sum_ll.o
+$(OBJS_O0) : OPT = $(OPT_BASE) $(OPT_PERF0)
+
+OBJS_O2= spll_mode_device.o
+$(OBJS_O2) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2)
+
+ifneq "$(findstring 8,$(LFI_INT))" ""
+OBJS_I8=spll_NEWLFI_ALL.o
+$(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
+endif
+
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif
diff --git a/src/Rules.LXpgi2004.mk b/src/Rules.LXpgi2004.mk
new file mode 100644
index 0000000000000000000000000000000000000000..c160330859b516f67101d3cac9851d6f0e74c0ac
--- /dev/null
+++ b/src/Rules.LXpgi2004.mk
@@ -0,0 +1,231 @@
+#MNH_LIC Copyright 1994-2019 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.
+##########################################################
+#                                                        #
+# Compiler Options                                       #
+#                                                        #
+##########################################################
+#OBJDIR_PATH=${WORKDIR}
+#
+#Version of CUDA
+#(8.0 at least if compute capability >= 6.0)
+CUDALEVEL=cuda10.2
+#
+#Compute capability of GPU
+#
+OPT_CPTCAP=cc35,cc50
+#Aeropc45: cc50
+#Nuwa: cc35
+#Ouessant Firestone K80: cc35
+#Ouessant Minsky P100: cc60
+#
+#Compiler info level
+#OPT_INFO = -Minfo=ftn,accel,inline,ipa,loop,lre,mp,opt,par,unified,vect,ccff
+OPT_INFO = -Minfo=accel,ccff
+#
+#Compiler profiling options
+OPT_PROF = -Mprof=ccff
+#
+#PW: if -Ktrap=fp: nvprof/pgprof do not work   OPT_BASE   =  -Ktrap=fp ...
+#PW: -g: big impact on performance
+OPT_BASE   =  -Mbackslash -Mextend -Kieee -nofma
+#
+OPT_PERF0  =  -O0
+OPT_PERF1  =  -O1
+OPT_PERF2  =  -O2
+#
+OPT_MANAGED   = -g -ta=host,tesla:nofma,$(OPT_CPTCAP),$(CUDALEVEL),managed $(OPT_INFO) $(OPT_PROF)
+OPT_MULTICORE  = -ta=multicore $(OPT_INFO) $(OPT_PROF)
+OPT_NOOPENACC  = -ta=host $(OPT_INFO) $(OPT_PROF)
+OPT_OPENACC    = -g -ta=host,tesla:nofma,$(OPT_CPTCAP),$(CUDALEVEL) $(OPT_INFO) $(OPT_PROF)
+#
+OPT_CHECK  =  -C #-Mchkfpstk -Mchkptr
+OPT_I8     =  -i8
+OPT_R8     =  -r8
+#
+IGNORE_OBJS += pgprof.o
+#
+# 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)
+LFI_INT           ?=8
+else
+LFI_INT           ?=4
+endif
+#
+#
+OPT       = $(OPT_BASE) $(OPT_PERF2)
+OPT0      = $(OPT_BASE) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_PERF2)
+#
+ifeq "$(OPTLEVEL)" "DEBUG"
+OPT       = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
+OPT0      = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
+OPT_NOCB  = $(OPT_BASE) $(OPT_PERF0)
+endif
+#
+ifeq "$(OPTLEVEL)" "MANAGED"
+CPPFLAGS    += -DMNH_OPENACC
+OPT       = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2)
+OPT0      = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) 
+CXXFLAGS = -acc -Kieee -Mnofma $(OPT_MANAGED)
+endif
+#
+ifeq "$(OPTLEVEL)" "MULTICORE"
+CPPFLAGS    += -DMNH_OPENACC
+OPT       = $(OPT_BASE) $(OPT_MULTICORE) 
+OPT0      = $(OPT_BASE) $(OPT_MULTICORE) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_MULTICORE) 
+CXXFLAGS = -acc -Kieee -Mnofma $(OPT_MULTICORE)
+endif
+#
+ifeq "$(OPTLEVEL)" "OPENACC"
+CPPFLAGS    += -DMNH_OPENACC
+OPT       = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
+OPT0      = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) 
+CXXFLAGS = -acc -Kieee -Mnofma $(OPT_OPENACC)
+OBJS_REPROD= spll_mode_sum_ll.o
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
+endif
+#
+ifeq "$(OPTLEVEL)" "OPENACCDEFONLY"
+CPPFLAGS    += -DMNH_OPENACC -D_FAKEOPENACC
+OPT       = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2)
+OPT0      = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2)
+CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC)
+OBJS_REPROD= spll_mode_sum_ll.o
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
+endif
+#
+ifeq "$(OPTLEVEL)" "NOOPENACC"
+#CPPFLAGS   += -D_OPT_LINEARIZED_LOOPS
+OPT       = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2)
+OPT0      = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF0)
+OPT_NOCB  = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2)
+CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC)
+OBJS_REPROD= spll_mode_sum_ll.o
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
+endif
+#
+CC = pgcc
+FC = pgf90
+ifeq "$(VER_MPI)" "MPIAUTO"
+F90 = mpif90
+CC = mpicc
+CXX = mpicxx
+else
+F90 = pgf90
+CC = pgcc
+CXX = pgcxx
+endif
+#
+F77FLAGS  =  $(OPT)
+F77 = $(F90)
+F90FLAGS  =  $(OPT)
+FX90 = $(F90)
+FX90FLAGS =  $(OPT)
+#
+LDFLAGS    =   -Wl,-warn-once $(OPT)
+#
+# preprocessing flags 
+#
+CPP = cpp -P -traditional -Wcomment -D_OPENACC=201711
+#
+CPPFLAGS_SURFEX    =
+CPPFLAGS_SURCOUCHE +=
+CPPFLAGS_RAD       =
+CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT}
+CPPFLAGS_MNH       = -DMNH -DMNH_PGI -DSFX_MNH
+CPPFLAGS_MNH      += -Uvector -Upixel
+#
+# Gribex flags
+#
+TARGET_GRIBEX=linux
+CNAME_GRIBEX=_pgf77
+GRIBAPI_CONF="CPP=cpp"
+CDF_CONF="CPP=cpp"
+#
+# BITREP flags
+#
+#if MNH_BITREP exists => compile with the BITREP library
+MNH_BITREP = YES
+ifeq "$(MNH_BITREP)" "YES"
+CPPFLAGS_MNH += -DMNH_BITREP
+endif
+#
+# LIBTOOLS flags
+#
+#if MNH_TOOLS exists => compile the tools
+MNH_TOOLS = yes
+#
+## COMPRESS flag
+#
+#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
+MNH_COMPRESS=yes
+#
+## S4PY flag
+#
+#if MNH_S4PY exists => compile the libs4py library (for epygram)
+#MNH_S4PY=no
+#
+##########################################################
+#                                                        #
+# Source of MESONH PACKAGE  Distribution                 #
+#                                                        #
+##########################################################
+#DIR_SURFEX   += ARCH_SRC/surfex.MNH-462
+
+OBJS_NOCB +=  spll_isba.o
+#
+include Makefile.MESONH.mk
+#
+##########################################################
+#                                                        #
+# extra VPATH, Compilation flag modification             #
+#         systeme module , etc ...                       #
+#         external precompiled module librairie          #
+#         etc ...                                        #
+#                                                        #
+##########################################################
+OBJS_O1= spll_modd_isba_n.o spll_mode_construct_ll.o \
+         spll_init_surf_atm_n.o spll_mode_scatter_ll.o spll_convert_patch_teb.o \
+         spll_define_mask_n.o spll_del1dfield_ll.o spll_mode_fm.o spll_mode_gather_ll.o \
+         spll_convect_updraft.o spll_convect_updraft_shal.o \
+         spll_mode_dustopt.o spll_mode_saltopt.o
+#spll_pack_isba_patch_n.o 
+#spll_phys_param_n.o
+$(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1)
+
+OBJS_O0= spll_mode_mppdb.o \
+         spll_fft55.o spll_fft.o spll_flat_invz.o \
+         spll_mode_repro_sum.o \
+# spll_fast_terms.o 
+# spll_mode_sum_ll.o
+$(OBJS_O0) : OPT = $(OPT_BASE) $(OPT_PERF0)
+
+OBJS_O2= spll_mode_device.o
+$(OBJS_O2) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2)
+
+ifneq "$(findstring 8,$(LFI_INT))" ""
+OBJS_I8=spll_NEWLFI_ALL.o
+$(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
+endif
+
+ifeq "$(MNH_INT)" "8"
+OBJS_I4=spll_modd_netcdf.o
+$(OBJS_I4) : OPT = $(OPT_BASE_I4)
+endif