diff --git a/src/LIB/MPIvide/mpivide.c b/src/LIB/MPIvide/mpivide.c
index eebe91b71a8e3178634fb98688f9118c8325037b..1a9a8d9a3501b53562c7dd941f307c363c3dd11f 100644
--- a/src/LIB/MPIvide/mpivide.c
+++ b/src/LIB/MPIvide/mpivide.c
@@ -158,6 +158,20 @@ int              *__ierr;
     *__ierr = 0;
 }
 
+#pragma weak mpi_sendrecv__ = mpi_sendrecv
+#pragma weak mpi_sendrecv_  = mpi_sendrecv
+void mpi_sendrecv(void *sendbuf, int *sendcounts, int *sendtype, int *dest  , int *sendtag ,
+                  void *recvbuf, int *recvcounts, int *recvtype, int *source, int *recvtag ,
+		  int *comm, int *__ierr)
+{
+    int size;
+
+    disppass("sendrecv");
+    size = findtypesize(*sendtype);
+    memcpy(recvbuf, sendbuf, (*recvcounts)*size);
+
+    *__ierr = 0;
+}
 
 #pragma weak mpi_alltoallv__ = mpi_alltoallv
 #pragma weak mpi_alltoallv_  = mpi_alltoallv
diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk
index 6ad235831de52676df58510c69e06282150f02c8..4bb42a92c93c8888e05a60633e9d031d1013450c 100644
--- a/src/Makefile.MESONH.mk
+++ b/src/Makefile.MESONH.mk
@@ -337,7 +337,7 @@ INC_MPI                = -I$(B)$(DIR_MPI)
 DIR_MASTER            += $(DIR_MPI)
 OBJS_LISTE_MASTER     += mpivide.o
 INC                   += $(INC_MPI)
-mpivide.o  : CPPFLAGS += -DMNH_INT=$(MNH_INT) -DMNH_REAL=$(MNH_REAL) \
+mpivide.o  : CPPFLAGS_C += -DMNH_INT=$(MNH_INT) -DMNH_REAL=$(MNH_REAL) \
                         -I$(DIR_MPI)/include
 VPATH                 += $(DIR_MPI)
 endif
diff --git a/src/Rules.LXgfortran.mk b/src/Rules.LXgfortran.mk
index 5ec39bca92b635e1da8988dd66665dfa6b9cbe03..63e4afd014284e5b04fc0597ac0bb5dc3fb5a2e6 100644
--- a/src/Rules.LXgfortran.mk
+++ b/src/Rules.LXgfortran.mk
@@ -97,9 +97,10 @@ LDFLAGS = $(OPT)
 #
 # preprocessing flags 
 #
-CPP = cpp -P -traditional -Wcomment
+#CPP = cpp -P -traditional -Wcomment
+CPP = mnh_expand -imacros MNH_OPENACC_NV_CR.CPP
 #
-CPPFLAGS_C         = -DLITTLE_endian
+CPPFLAGS_C         += -DLITTLE_endian
 CPPFLAGS_SURFEX    =
 CPPFLAGS_SURCOUCHE += -DDEV_NULL
 CPPFLAGS_RAD       =