From 540796786368de501691809fe31cb45294f79bbf Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 15 Mar 2019 15:58:55 +0100
Subject: [PATCH] Philippe 15/03/2019: use MNHINT_MPI and MNHREAL_MPI from
 modd_precision, remove MNH_MPI_DOUBLE_PRECISION and MNH_MPI_RANK_KIND
 keywords

---
 src/LIB/SURCOUCHE/src/fmread_ll.f90          |  41 +++----
 src/LIB/SURCOUCHE/src/fmwrit_ll.f90          | 123 ++++++-------------
 src/LIB/SURCOUCHE/src/mode_double_double.f90 |  15 +--
 src/LIB/SURCOUCHE/src/mode_fm.f90            |   1 -
 src/LIB/SURCOUCHE/src/mode_gather.f90        |  95 +++++++-------
 src/LIB/SURCOUCHE/src/mode_init_ll.f90       |  14 +--
 src/LIB/SURCOUCHE/src/mode_io.f90            |   1 -
 src/LIB/SURCOUCHE/src/mode_io_tools.f90      |  12 +-
 src/LIB/SURCOUCHE/src/mode_scatter.f90       |  55 ++++-----
 src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 |  14 +--
 src/MNH/ini_cst.f90                          |   2 +-
 src/Makefile.MESONH.mk                       |   2 +-
 src/Rules.AIX64.mk                           |   8 +-
 src/Rules.BG.mk                              |  10 +-
 src/Rules.BGQ.mk                             |  10 +-
 src/Rules.LXNAGfor.mk                        |   5 +-
 src/Rules.LXarm.mk                           |   9 +-
 src/Rules.LXcray.mk                          |   8 +-
 src/Rules.LXg95.mk                           |   8 +-
 src/Rules.LXgfortran.mk                      |   9 +-
 src/Rules.LXifort.mk                         |   9 +-
 src/Rules.LXpathf95.mk                       |   6 +-
 src/Rules.LXpgi.mk                           |   9 +-
 src/Rules.SX8.mk                             |   8 +-
 24 files changed, 176 insertions(+), 298 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/fmread_ll.f90 b/src/LIB/SURCOUCHE/src/fmread_ll.f90
index 2efa39b22..8f0926575 100644
--- a/src/LIB/SURCOUCHE/src/fmread_ll.f90
+++ b/src/LIB/SURCOUCHE/src/fmread_ll.f90
@@ -4,12 +4,6 @@
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 
-#ifdef MNH_MPI_DOUBLE_PRECISION
-#define MPI_FLOAT MPI_DOUBLE_PRECISION
-#else
-#define MPI_FLOAT MPI_REAL
-#endif
-
 MODULE MODE_FMREAD
 !
 !Correction :
@@ -23,6 +17,7 @@ MODULE MODE_FMREAD
 !
 USE MODD_IO_ll, ONLY : NVERB_FATAL,NVERB_ERROR,NVERB_WARNING,NVERB_INFO,NVERB_DEBUG,TFILEDATA
 USE MODD_MPIF
+use modd_precision, only: MNHREAL_MPI
 !
 USE MODE_FIELD
 USE MODE_IO_READ_LFI
@@ -182,7 +177,7 @@ IF (IRESP==0) THEN
     IF (IRESP==-111) CALL IO_BCAST_FIELD_METADATA(TPFILE,TPFIELD)
     !
     ! Broadcast Field
-    CALL MPI_BCAST(PFIELD,1,MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(PFIELD,1,MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
   END IF
 END IF
 !
@@ -281,7 +276,7 @@ IF (IRESP==0) THEN
     !
     IF (TPFIELD%CDIR /= 'XX' .AND. TPFIELD%CDIR /='YY') THEN
       ! Broadcast Field
-      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     ELSE
       !Scatter Field
       CALL SCATTER_XXFIELD(TPFIELD%CDIR,ZFIELDP,PFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM,TPSPLITTING)
@@ -451,7 +446,7 @@ IF (IRESP==0) THEN
 #endif
       END IF
     ELSE
-      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     END IF
     CALL SECOND_MNH2(T2)
     TIMEZ%T_READ2D_SCAT=TIMEZ%T_READ2D_SCAT + T2 - T1
@@ -613,7 +608,7 @@ IF (IRESP==0) THEN
       END IF
     ELSE
       ! Broadcast Field
-      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     END IF
   ELSE  ! multiprocesses execution & // IO
 !
@@ -733,9 +728,9 @@ IF (IRESP==0) THEN
               NB_REQ = NB_REQ + 1
               ALLOCATE(T_TX2DP(NB_REQ)%X(IXO:IXE,IYO:IYE))
               T_TX2DP(NB_REQ)%X=TX2DP
-              CALL MPI_ISEND(T_TX2DP(NB_REQ)%X,SIZE(TX2DP),MPI_FLOAT,JI-1,199+IK_RANK, &
+              CALL MPI_ISEND(T_TX2DP(NB_REQ)%X,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+IK_RANK, &
                              TZFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR)
-              !CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MPI_FLOAT,JI-1,199+IK_RANK,TZFILE%NMPICOMM,IERR)
+              !CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+IK_RANK,TZFILE%NMPICOMM,IERR)
             ELSE
               PFIELD(:,:,JKK) = TX2DP(:,:)
             END IF
@@ -782,7 +777,7 @@ IF (IRESP==0) THEN
             ZSLICE => PFIELD(:,:,JKK)
             !CALL SCATTER_XYFIELD(ZSLICE_ll,ZSLICE,TZFILE%NMASTER_RANK,TZFILE%NMPICOMM)
             IF (ISP .NE. IK_RANK) THEN
-              CALL MPI_RECV(ZSLICE,SIZE(ZSLICE),MPI_FLOAT,IK_RANK-1,199+IK_RANK, &
+              CALL MPI_RECV(ZSLICE,SIZE(ZSLICE),MNHREAL_MPI,IK_RANK-1,199+IK_RANK, &
                             TZFILE%NMPICOMM,STATUS,IERR)
             END IF
             TZFILE => NULL()
@@ -793,7 +788,7 @@ IF (IRESP==0) THEN
       ELSE
         ! Broadcast Field
         STOP "  Broadcast Field NON PREVU SUR BG POUR LE MOMENT "
-        CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+        CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
       END IF
       CALL SECOND_MNH2(T0)
       IF (NB_REQ .GT.0 ) THEN
@@ -941,7 +936,7 @@ IF (IRESP==0) THEN
         CALL SCATTER_XYFIELD(ZFIELDP,PFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
       END IF
     ELSE
-      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     END IF
   END IF
 END IF
@@ -1066,7 +1061,7 @@ IF (IRESP==0) THEN
         CALL SCATTER_XYFIELD(ZFIELDP,PFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
       END IF
     ELSE
-      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     END IF
   END IF
 END IF
@@ -1173,7 +1168,7 @@ IF (IRESP==0) THEN
       ! XY Scatter Field
       CALL SCATTER_XYFIELD(ZFIELDP,PFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
     ELSE
-      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(PFIELD,SIZE(PFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     END IF
   END IF
 END IF
@@ -1458,7 +1453,7 @@ IF (IRESP==0) THEN
       ! XX or YY Scatter Field
       CALL SCATTER_XXFIELD(TPFIELD%CDIR,IFIELDP,KFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
       ! Broadcast Field
-      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MPI_FLOAT,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     ELSE IF (TPFIELD%CDIR == 'XY') THEN
       IF (LPACK .AND. L2D) THEN
         ! 2D compact case
@@ -1778,7 +1773,7 @@ IF (IRESP==0) THEN
     IF (IRESP==-111) CALL IO_BCAST_FIELD_METADATA(TPFILE,TPFIELD)
     !
     CALL MPI_BCAST(ITDATE,     3,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-    CALL MPI_BCAST(TPDATA%TIME,1,MPI_FLOAT,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(TPDATA%TIME,1,MNHREAL_MPI,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     TPDATA%TDATE%YEAR  = ITDATE(1)
     TPDATA%TDATE%MONTH = ITDATE(2)
     TPDATA%TDATE%DAY   = ITDATE(3)
@@ -1961,8 +1956,8 @@ IF (IRESP==0) THEN
             NB_REQ = NB_REQ + 1
             ALLOCATE(T_TX3DP(NB_REQ)%X(IIB:IIE,IJB:IJE,IKU))
             T_TX3DP(NB_REQ)%X=Z3D(IIB:IIE,IJB:IJE,:)
-            CALL MPI_ISEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MPI_FLOAT,JI-1,99,TPFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR)
-            !CALL MPI_BSEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MPI_FLOAT,JI-1,99,TPFILE%NMPICOMM,IERR)
+            CALL MPI_ISEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR)
+            !CALL MPI_BSEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,IERR)
           ELSE
             CALL GET_DISTRIB_LB(YLBTYPE,JI,'LOC','READ',KRIM,IIB,IIE,IJB,IJE)
             PLB(IIB:IIE,IJB:IJE,:) = TX3DP(:,:,:)
@@ -1989,9 +1984,9 @@ IF (IRESP==0) THEN
       CALL GET_DISTRIB_LB(YLBTYPE,ISP,'LOC','READ',KRIM,IIB,IIE,IJB,IJE)
       IF (IIB /= 0) THEN
         TX3DP=>PLB(IIB:IIE,IJB:IJE,:)
-        CALL MPI_RECV(TX3DP,SIZE(TX3DP),MPI_FLOAT,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,STATUS,IERR)
+        CALL MPI_RECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,STATUS,IERR)
         !NB_REQ = NB_REQ + 1
-        !CALL MPI_IRECV(TX3DP,SIZE(TX3DP),MPI_FLOAT,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR)
+        !CALL MPI_IRECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR)
         !IF (NB_REQ .GT.0 ) CALL MPI_WAITALL(NB_REQ,REQ_TAB,MNH_STATUSES_IGNORE,IERR)
       END IF
       CALL SECOND_MNH2(T1)
diff --git a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90 b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
index 41c659421..f2afbf160 100644
--- a/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
+++ b/src/LIB/SURCOUCHE/src/fmwrit_ll.f90
@@ -10,18 +10,13 @@
 !  Philippe Wautelet: 10/01/2019: write header also for Z-split files
 !-----------------------------------------------------------------
 
-#ifdef MNH_MPI_DOUBLE_PRECISION
-#define MPI_FLOAT MPI_DOUBLE_PRECISION
-#else
-#define MPI_FLOAT MPI_REAL
-#endif
-
 #define MNH_SCALARS_IN_SPLITFILES 0
 
 MODULE MODE_FMWRIT
 
-  USE MODD_MPIF
   USE MODD_IO_ll, ONLY: TFILEDATA
+  USE MODD_MPIF
+  use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
 
   USE MODE_FIELD
   USE MODE_IO_WRITE_LFI
@@ -316,7 +311,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF ! multiprocesses execution
 #if MNH_SCALARS_IN_SPLITFILES
        IF (TPFILE%NSUBFILES_IOZ>0) THEN
@@ -417,11 +412,7 @@ CONTAINS
           IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
           IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
        ELSE ! multiprocesses execution
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_X1','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -444,7 +435,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF ! multiprocesses execution
     END IF
     !
@@ -561,11 +552,7 @@ CONTAINS
           END IF
        ELSE ! multiprocesses execution
           CALL SECOND_MNH2(T0)
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_X2','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -625,7 +612,7 @@ CONTAINS
           CALL SECOND_MNH2(T2)
           TIMEZ%T_WRIT2D_WRIT=TIMEZ%T_WRIT2D_WRIT + T2 - T1
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -764,11 +751,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
        ELSEIF ( TPFILE%NSUBFILES_IOZ==0 .OR. YDIR=='--' ) THEN  ! multiprocesses execution & 1 proc IO
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_X3','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -798,14 +781,10 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
           !
        ELSE ! multiprocesses execution & // IO
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_X3','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -916,9 +895,9 @@ CONTAINS
                             ZSLICE => PFIELD(:,:,JKK)
                             TX2DP=>ZSLICE(IXO:IXE,IYO:IYE)
                             T_TX2DP(NB_REQ)%X=ZSLICE(IXO:IXE,IYO:IYE)
-                            CALL MPI_ISEND(T_TX2DP(NB_REQ)%X,SIZE(TX2DP),MPI_FLOAT,IK_RANK-1,99+IK_RANK &
+                            CALL MPI_ISEND(T_TX2DP(NB_REQ)%X,SIZE(TX2DP),MNHREAL_MPI,IK_RANK-1,99+IK_RANK &
                                           & ,TZFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR)
-                            !CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MPI_FLOAT,IK_RANK-1,99+IK_RANK,TZFILE%NMPICOMM,IERR)
+                            !CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,IK_RANK-1,99+IK_RANK,TZFILE%NMPICOMM,IERR)
                          END IF
                       END IF
                       CALL SECOND_MNH2(T1)
@@ -954,7 +933,7 @@ CONTAINS
                             ZSLICE => PFIELD(:,:,JKK)
                             TX2DP = ZSLICE(IXO:IXE,IYO:IYE)
                          ELSE 
-                            CALL MPI_RECV(TX2DP,SIZE(TX2DP),MPI_FLOAT,JI-1,99+IK_RANK,TZFILE%NMPICOMM,STATUS,IERR)
+                            CALL MPI_RECV(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,99+IK_RANK,TZFILE%NMPICOMM,STATUS,IERR)
                          END IF
                       END IF
                    END DO
@@ -1087,11 +1066,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
        ELSE
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_X4','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -1120,7 +1095,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF ! multiprocess execution
     END IF
     !
@@ -1225,11 +1200,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
           END IF
        ELSE
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_X5','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -1259,7 +1230,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF ! multiprocess execution
     END IF
     !
@@ -1353,11 +1324,7 @@ CONTAINS
           IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,PFIELD,IRESP)
           IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,PFIELD,IRESP)
        ELSE
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(PFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_X6','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -1382,7 +1349,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF ! multiprocess execution
     END IF
     !
@@ -1465,7 +1432,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF ! multiprocess execution
 #if MNH_SCALARS_IN_SPLITFILES
        IF (TPFILE%NSUBFILES_IOZ>0) THEN
@@ -1565,11 +1532,7 @@ CONTAINS
           IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,KFIELD,IRESP)
           IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
        ELSE ! multiprocesses execution
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_N1','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -1592,7 +1555,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -1703,11 +1666,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
           END IF
        ELSE ! multiprocesses execution
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_N2','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -1742,7 +1701,7 @@ CONTAINS
           CALL SECOND_MNH2(T2)
           TIMEZ%T_WRIT2D_WRIT=TIMEZ%T_WRIT2D_WRIT + T2 - T1
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -1853,11 +1812,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,KFIELD,IRESP)
           END IF
        ELSE ! multiprocesses execution
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(KFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_N3','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -1887,7 +1842,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,IFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -1974,7 +1929,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,OFIELD,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF ! multiprocesses execution
 #if MNH_SCALARS_IN_SPLITFILES
        IF (TPFILE%NSUBFILES_IOZ>0) THEN
@@ -2074,11 +2029,7 @@ CONTAINS
           IF (GLFI) CALL IO_WRITE_FIELD_LFI(TPFILE,TPFIELD,OFIELD,IRESP)
           IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,OFIELD,IRESP)
        ELSE ! multiprocesses execution
-#if ( MNH_INT == 4 )
-          CALL MPI_ALLREDUCE(SIZE(OFIELD),ISIZEMAX,1,MPI_INTEGER,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#else
-          CALL MPI_ALLREDUCE(SIZE(OFIELD),ISIZEMAX,1,MPI_INTEGER8,MPI_MAX,TPFILE%NMPICOMM,IRESP)
-#endif
+          CALL MPI_ALLREDUCE(SIZE(OFIELD),ISIZEMAX,1,MNHINT_MPI,MPI_MAX,TPFILE%NMPICOMM,IRESP)
           IF (ISIZEMAX==0) THEN
              CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_BYFIELD_L1','ignoring variable with a zero size ('//TRIM(YRECFM)//')')
              IF (PRESENT(KRESP)) KRESP=0
@@ -2101,7 +2052,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,GFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -2188,7 +2139,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -2293,7 +2244,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,HFIELD,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -2375,7 +2326,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,TFIELD,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -2508,7 +2459,7 @@ CONTAINS
                 IF (IIB /= 0) THEN
                    TX3DP=>Z3D(IIB:IIE,IJB:IJE,:)
                    IF (ISP /= JI) THEN
-                      CALL MPI_RECV(TX3DP,SIZE(TX3DP),MPI_FLOAT,JI-1,99,TPFILE%NMPICOMM,STATUS,IERR)
+                      CALL MPI_RECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,JI-1,99,TPFILE%NMPICOMM,STATUS,IERR)
                    ELSE
                       CALL GET_DISTRIB_LB(YLBTYPE,JI,'LOC','WRITE',IRIM,IIB,IIE,IJB,IJE)
                       TX3DP = PLB(IIB:IIE,IJB:IJE,:)
@@ -2534,9 +2485,9 @@ CONTAINS
                 NB_REQ = NB_REQ + 1
                 ALLOCATE(T_TX3DP(NB_REQ)%X(IIB:IIE,IJB:IJE,IKU))  
                 T_TX3DP(NB_REQ)%X=PLB(IIB:IIE,IJB:IJE,:)
-                CALL MPI_ISEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MPI_FLOAT,TPFILE%NMASTER_RANK-1,99, &
+                CALL MPI_ISEND(T_TX3DP(NB_REQ)%X,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99, &
                                TPFILE%NMPICOMM,REQ_TAB(NB_REQ),IERR)
-                !CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MPI_FLOAT,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,IERR)
+                !CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MNHREAL_MPI,TPFILE%NMASTER_RANK-1,99,TPFILE%NMPICOMM,IERR)
              END IF
              IF (NB_REQ .GT.0 ) THEN
                 CALL MPI_WAITALL(NB_REQ,REQ_TAB,MNH_STATUSES_IGNORE,IERR)
@@ -2545,7 +2496,7 @@ CONTAINS
              DEALLOCATE(T_TX3DP,REQ_TAB)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF
     END IF
     !
@@ -2629,7 +2580,7 @@ CONTAINS
              IF (GNC4) CALL IO_WRITE_FIELD_NC4(TPFILE,TPFIELD,ZFIELDP,IRESP)
           END IF
           !
-          CALL MPI_BCAST(IRESP,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+          CALL MPI_BCAST(IRESP,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
        END IF ! multiprocesses execution
     END IF
     !
diff --git a/src/LIB/SURCOUCHE/src/mode_double_double.f90 b/src/LIB/SURCOUCHE/src/mode_double_double.f90
index 19f0b3610..809944ce8 100644
--- a/src/LIB/SURCOUCHE/src/mode_double_double.f90
+++ b/src/LIB/SURCOUCHE/src/mode_double_double.f90
@@ -43,24 +43,13 @@ MODULE mode_repro_sum
 CONTAINS
 
   SUBROUTINE INIT_DD(KINFO)
+    use modd_precision, only: MNHREAL_MPI
     IMPLICIT NONE
     INTEGER, INTENT(OUT) :: KINFO ! MPI return status
-    REAL                 :: REAL_DEFAULT
-    INTEGER,PARAMETER    :: REAL_KIND=KIND(REAL_DEFAULT)
-    INTEGER              :: MNH_MPI_REAL
-
-    !
-    ! find the default type of REAL for MESONH on MPI
-    !
-     IF (REAL_KIND .EQ. 4 ) THEN
-        MNH_MPI_REAL = MPI_REAL4
-     ELSE
-        MNH_MPI_REAL = MPI_REAL8
-    END IF
     !
     ! define the double-double for MPI
     !
-    CALL MPI_TYPE_CONTIGUOUS(2, MNH_MPI_REAL ,MNH_DOUBLE_DOUBLE , KINFO)
+    CALL MPI_TYPE_CONTIGUOUS(2, MNHREAL_MPI ,MNH_DOUBLE_DOUBLE , KINFO)
     CALL MPI_TYPE_COMMIT(MNH_DOUBLE_DOUBLE , KINFO)
     !
     ! define the double-double sum = MNH_SUM_DD  for MPI 
diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index 02265538c..821550563 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -169,7 +169,6 @@ USE MODE_IO_ll,               ONLY: OPEN_ll,GCONFIO
 USE MODD_CONFZ,ONLY  : NB_PROCIO_R,NB_PROCIO_W
 !JUANZ
 #if defined(MNH_IOCDF4)
-USE MODD_NETCDF, ONLY:IDCDF_KIND
 use mode_io_file_nc4, only: io_create_file_nc4, io_open_file_nc4
 #endif
 use mode_io_file_lfi, only: io_create_file_lfi, io_open_file_lfi
diff --git a/src/LIB/SURCOUCHE/src/mode_gather.f90 b/src/LIB/SURCOUCHE/src/mode_gather.f90
index 756d8dcaa..3cfd58b7f 100644
--- a/src/LIB/SURCOUCHE/src/mode_gather.f90
+++ b/src/LIB/SURCOUCHE/src/mode_gather.f90
@@ -4,12 +4,6 @@
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 
-#ifdef MNH_MPI_DOUBLE_PRECISION
-#define MPI_FLOAT MPI_DOUBLE_PRECISION
-#else
-#define MPI_FLOAT MPI_REAL
-#endif
-
 MODULE MODE_GATHER_ll
 
 ! Modifications:
@@ -19,9 +13,8 @@ MODULE MODE_GATHER_ll
 !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
 !
 USE MODD_MPIF
-!JUANZ
-USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
-!JUANZ
+use modd_precision, only: MNHREAL_MPI
+USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
 
 IMPLICIT NONE 
 
@@ -73,7 +66,7 @@ ELSE
   PRINT *,'Error GATHERALL_X1'
 END IF
 ! PRECV variable of IROOT processor contains the global field
-CALL MPI_BCAST(PRECV,SIZE(PRECV),MPI_FLOAT,IROOT-1,NMNH_COMM_WORLD,KRESP)
+CALL MPI_BCAST(PRECV,SIZE(PRECV),MNHREAL_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP)
 
 END SUBROUTINE GATHERALL_X1
 
@@ -98,7 +91,7 @@ ELSE
   PRINT *,'Error GATHERALL_X2'
 END IF
 ! PRECV variable of IROOT processor contains the global field
-CALL MPI_BCAST(PRECV,SIZE(PRECV),MPI_FLOAT,IROOT-1,NMNH_COMM_WORLD,KRESP)
+CALL MPI_BCAST(PRECV,SIZE(PRECV),MNHREAL_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP)
 
 END SUBROUTINE GATHERALL_X2
 
@@ -124,7 +117,7 @@ ELSE
   KRESP = -1
 END IF
 ! PRECV variable of IROOT processor contains the global field
-CALL MPI_BCAST(PRECV,SIZE(PRECV),MPI_FLOAT,IROOT-1,NMNH_COMM_WORLD,KRESP)
+CALL MPI_BCAST(PRECV,SIZE(PRECV),MNHREAL_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP)
 
 END SUBROUTINE GATHERALL_X3
 
@@ -219,7 +212,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         XP = PSEND(IXO:IXE)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -227,7 +220,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         XP = PSEND(IYO:IYE)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -240,15 +233,15 @@ ELSE
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     XP=>PSEND(IXO:IXE)
     NB_REQ = 1
-    CALL MPI_ISEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,REQ(NB_REQ),IERR)
+    CALL MPI_ISEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,REQ(NB_REQ),IERR)
     CALL MPI_WAITALL(NB_REQ,REQ,MNH_STATUSES_IGNORE,IERR)
-    !CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    !CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     XP=>PSEND(IYO:IYE)
     NB_REQ = 1
-    CALL MPI_ISEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,REQ(NB_REQ),IERR)
+    CALL MPI_ISEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,REQ(NB_REQ),IERR)
     CALL MPI_WAITALL(NB_REQ,REQ,MNH_STATUSES_IGNORE,IERR)
-    !CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    !CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -289,7 +282,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         XP = PSEND(IXO:IXE,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -297,7 +290,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         XP = PSEND(IYO:IYE,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -309,10 +302,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     XP=>PSEND(IXO:IXE,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     XP=>PSEND(IYO:IYE,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -352,7 +345,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         XP = PSEND(IXO:IXE,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -360,7 +353,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         XP = PSEND(IYO:IYE,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -372,10 +365,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     XP=>PSEND(IXO:IXE,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     XP=>PSEND(IYO:IYE,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -415,7 +408,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         XP = PSEND(IXO:IXE,:,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -423,7 +416,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         XP = PSEND(IYO:IYE,:,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -435,10 +428,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     XP=>PSEND(IXO:IXE,:,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     XP=>PSEND(IYO:IYE,:,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -478,7 +471,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         XP = PSEND(IXO:IXE,:,:,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -486,7 +479,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         XP = PSEND(IYO:IYE,:,:,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -498,10 +491,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     XP=>PSEND(IXO:IXE,:,:,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     XP=>PSEND(IYO:IYE,:,:,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -541,7 +534,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         XP = PSEND(IXO:IXE,:,:,:,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -549,7 +542,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         XP = PSEND(IYO:IYE,:,:,:,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -561,10 +554,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     XP=>PSEND(IXO:IXE,:,:,:,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     XP=>PSEND(IYO:IYE,:,:,:,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -861,7 +854,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
         XP = PSEND(IXO:IXE,IYO:IYE)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -873,10 +866,10 @@ ELSE
     NB_REQ = 1
     ALLOCATE(X_2DP(IXO:IXE,IYO:IYE))
     X_2DP=XP
-    CALL MPI_ISEND(X_2DP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,REQ(NB_REQ),IERR)   
+    CALL MPI_ISEND(X_2DP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,REQ(NB_REQ),IERR)
     CALL MPI_WAITALL(NB_REQ,REQ,MNH_STATUSES_IGNORE,IERR)
     DEALLOCATE(X_2DP)
-    !CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    !CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -910,7 +903,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
         XP = PSEND(IXO:IXE,IYO:IYE,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -919,7 +912,7 @@ ELSE
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
   IF (IXO /= 0) THEN ! intersection is not empty
     XP=>PSEND(IXO:IXE,IYO:IYE,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -953,7 +946,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
         XP = PSEND(IXO:IXE,IYO:IYE,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -962,7 +955,7 @@ ELSE
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
   IF (IXO /= 0) THEN ! intersection is not empty
     XP=>PSEND(IXO:IXE,IYO:IYE,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -996,7 +989,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
         XP = PSEND(IXO:IXE,IYO:IYE,:,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -1005,7 +998,7 @@ ELSE
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
   IF (IXO /= 0) THEN ! intersection is not empty
     XP=>PSEND(IXO:IXE,IYO:IYE,:,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -1039,7 +1032,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
         XP = PSEND(IXO:IXE,IYO:IYE,:,:,:,:)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -1048,7 +1041,7 @@ ELSE
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
   IF (IXO /= 0) THEN ! intersection is not empty
     XP=>PSEND(IXO:IXE,IYO:IYE,:,:,:,:)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -1158,7 +1151,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX)
         XP = PSEND(IXO:IXE,IYO:IYE)
       ELSE 
-        CALL MPI_RECV(XP,SIZE(XP),MPI_FLOAT,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(XP,SIZE(XP),MNHREAL_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -1167,7 +1160,7 @@ ELSE
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX)
   IF (IXO /= 0) THEN ! intersection is not empty
     XP=>PSEND(IXO:IXE,IYO:IYE)
-    CALL MPI_BSEND(XP,SIZE(XP),MPI_FLOAT,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(XP,SIZE(XP),MNHREAL_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
diff --git a/src/LIB/SURCOUCHE/src/mode_init_ll.f90 b/src/LIB/SURCOUCHE/src/mode_init_ll.f90
index 6cd17f9c6..58bd9cb4c 100644
--- a/src/LIB/SURCOUCHE/src/mode_init_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_init_ll.f90
@@ -3,15 +3,6 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-
-#ifdef MNH_MPI_DOUBLE_PRECISION
-#define MNH_MPI_REAL MPI_DOUBLE_PRECISION
-#define MNH_MPI_2REAL MPI_2DOUBLE_PRECISION
-#else
-#define MNH_MPI_REAL MPI_REAL
-#define MNH_MPI_2REAL MPI_2REAL
-#endif
-
 !     ###################
       MODULE MODE_INIT_ll
 !     ###################
@@ -59,6 +50,7 @@
 !-------------------------------------------------------------------------------
 !
   USE MODD_MPIF
+  use modd_precision, only: MNHREAL_MPI, MNH2REAL_MPI
 !
   IMPLICIT NONE
 !
@@ -555,8 +547,8 @@
         !
         IP = IP + 1
         !
-        MPI_PRECISION  = MNH_MPI_REAL
-        MPI_2PRECISION = MNH_MPI_2REAL
+        MPI_PRECISION  = MNHREAL_MPI
+        MPI_2PRECISION = MNH2REAL_MPI
         !
         !-------------------------------------------------------------------------------
         !
diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90
index 0434b5ea1..541316a4f 100644
--- a/src/LIB/SURCOUCHE/src/mode_io.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io.f90
@@ -159,7 +159,6 @@ CONTAINS
 
   USE MODD_IO_ll
 #if defined(MNH_IOCDF4)
-  USE MODD_NETCDF,              ONLY:IDCDF_KIND
   use mode_io_file_nc4,         only: io_create_file_nc4, io_open_file_nc4
 #endif
   use mode_io_file_lfi,         only: io_create_file_lfi, io_open_file_lfi
diff --git a/src/LIB/SURCOUCHE/src/mode_io_tools.f90 b/src/LIB/SURCOUCHE/src/mode_io_tools.f90
index 9e8dd1fc8..33cb6cfd9 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_tools.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_tools.f90
@@ -24,8 +24,8 @@ contains
     ! return the file number where to write the K level of data
     !
     IMPLICIT NONE
-    INTEGER(kind=MNH_MPI_RANK_KIND)                   :: k,nb_proc_io
-    INTEGER(kind=MNH_MPI_RANK_KIND)                   :: io_file
+    INTEGER :: k,nb_proc_io
+    INTEGER :: io_file
 
     io_file = MOD ((k-1) , nb_proc_io )
 
@@ -36,12 +36,12 @@ contains
     ! return the proc number which must write the 'IFILE' file
     !
     IMPLICIT NONE
-    INTEGER(kind=MNH_MPI_RANK_KIND)                  :: IFILE,nb_proc,nb_proc_io
-    INTEGER(kind=MNH_MPI_RANK_KIND),OPTIONAL         :: offset_rank
+    INTEGER          :: IFILE,nb_proc,nb_proc_io
+    INTEGER,OPTIONAL :: offset_rank
 
-    INTEGER(kind=MNH_MPI_RANK_KIND)                  :: IO_RANK
+    INTEGER          :: IO_RANK
 
-    INTEGER(kind=MNH_MPI_RANK_KIND)                  :: ipas,irest
+    INTEGER          :: ipas,irest
 
     ipas  =        nb_proc / nb_proc_io
     irest =  MOD ( nb_proc , nb_proc_io )
diff --git a/src/LIB/SURCOUCHE/src/mode_scatter.f90 b/src/LIB/SURCOUCHE/src/mode_scatter.f90
index cc933744a..9857c0ec1 100644
--- a/src/LIB/SURCOUCHE/src/mode_scatter.f90
+++ b/src/LIB/SURCOUCHE/src/mode_scatter.f90
@@ -12,12 +12,6 @@
 !-----------------------------------------------------------------
 !-----------------------------------------------------------------
 
-#ifdef MNH_MPI_DOUBLE_PRECISION
-#define MPI_FLOAT MPI_DOUBLE_PRECISION
-#else
-#define MPI_FLOAT MPI_REAL
-#endif
-
 MODULE MODE_SCATTER_ll
 
 !
@@ -26,6 +20,7 @@ MODULE MODE_SCATTER_ll
 !
 
 USE MODD_MPIF
+use modd_precision, only: MNHREAL_MPI
 
 IMPLICIT NONE 
 
@@ -100,9 +95,9 @@ IF (ISP == KROOT) THEN
          NB_REQ = NB_REQ + 1
          ALLOCATE(T_TX1DP(NB_REQ)%X(SIZE(TX1DP)))
          T_TX1DP(NB_REQ)%X=TX1DP
-         CALL MPI_ISEND(T_TX1DP(NB_REQ)%X,SIZE(TX1DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+         CALL MPI_ISEND(T_TX1DP(NB_REQ)%X,SIZE(TX1DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
               & ,REQ_TAB(NB_REQ),IERR) 
-         !CALL MPI_BSEND(T12DP,SIZE(T12DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+         !CALL MPI_BSEND(T12DP,SIZE(T12DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
          !     & ,IERR)
       ELSE 
          PRECV(:) = TX1DP(:)
@@ -115,7 +110,7 @@ IF (ISP == KROOT) THEN
    DEALLOCATE(T_TX1DP)
    DEALLOCATE(REQ_TAB)
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
   
@@ -158,14 +153,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:) = TX2DP(:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
@@ -198,14 +193,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:,:) = TX2DP(:,:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
   
@@ -238,14 +233,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:,:,:) = TX2DP(:,:,:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
@@ -278,14 +273,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:,:,:,:) = TX2DP(:,:,:,:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
   
@@ -318,14 +313,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:,:,:,:,:) = TX2DP(:,:,:,:,:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
@@ -446,9 +441,9 @@ IF (ISP == KROOT) THEN
          NB_REQ = NB_REQ + 1
          ALLOCATE(T_TX2DP(NB_REQ)%X(IXO:IXE,IYO:IYE))
          T_TX2DP(NB_REQ)%X=TX2DP
-         CALL MPI_ISEND(T_TX2DP(NB_REQ)%X,SIZE(TX2DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+         CALL MPI_ISEND(T_TX2DP(NB_REQ)%X,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
               & ,REQ_TAB(NB_REQ),IERR)
-         !CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+         !CALL MPI_BSEND(TX2DP,SIZE(TX2DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
          !     & ,IERR)
       ELSE 
          PRECV(:,:) = TX2DP(:,:)
@@ -461,7 +456,7 @@ IF (ISP == KROOT) THEN
    DEALLOCATE(T_TX2DP)
    DEALLOCATE(REQ_TAB)
 ELSE
-   CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+   CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
   
@@ -489,14 +484,14 @@ IF (ISP == KROOT) THEN
     TX3DP=>PSEND(IXO:IXE,IYO:IYE,:)
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:,:) = TX3DP(:,:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
@@ -524,14 +519,14 @@ IF (ISP == KROOT) THEN
     TX3DP=>PSEND(IXO:IXE,IYO:IYE,:,:)
         
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:,:,:) = TX3DP(:,:,:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
@@ -559,14 +554,14 @@ IF (ISP == KROOT) THEN
     TX3DP=>PSEND(IXO:IXE,IYO:IYE,:,:,:)
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:,:,:,:) = TX3DP(:,:,:,:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
@@ -594,14 +589,14 @@ IF (ISP == KROOT) THEN
     TX3DP=>PSEND(IXO:IXE,IYO:IYE,:,:,:,:)
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MPI_FLOAT,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MNHREAL_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       PRECV(:,:,:,:,:,:) = TX3DP(:,:,:,:,:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(PRECV,SIZE(PRECV),MPI_FLOAT,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(PRECV,SIZE(PRECV),MNHREAL_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
diff --git a/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 b/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90
index 754a30d12..f16a0b180 100644
--- a/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90
@@ -3,15 +3,6 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-
-#ifdef MNH_MPI_DOUBLE_PRECISION
-#define MNH_MPI_REAL MPI_DOUBLE_PRECISION
-#define MNH_MPI_2REAL MPI_2DOUBLE_PRECISION
-#else
-#define MNH_MPI_REAL MPI_REAL
-#define MNH_MPI_2REAL MPI_2REAL
-#endif
-
 !       ########################
 MODULE MODE_SPLITTINGZ_ll
   !     ########################
@@ -40,6 +31,7 @@ MODULE MODE_SPLITTINGZ_ll
   ! Modifications:
   !  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
   USE MODD_MPIF
+  use modd_precision, only: MNHREAL_MPI, MNH2REAL_MPI
   !
   USE MODE_SPLITTING_ll
   !
@@ -180,8 +172,8 @@ CONTAINS
     !
     CALL MPI_COMM_DUP(NMNH_COMM_WORLD, NGRID_COM, KINFO_ll)
     !
-    MPI_PRECISION  = MNH_MPI_REAL
-    MPI_2PRECISION = MNH_MPI_2REAL
+    MPI_PRECISION  = MNHREAL_MPI
+    MPI_2PRECISION = MNH2REAL_MPI
     !
     ! For bug with intelmpi+ilp64+i8 declare MNH_STATUSES_IGNORE
     !
diff --git a/src/MNH/ini_cst.f90 b/src/MNH/ini_cst.f90
index 0e422740d..9fd09be3a 100644
--- a/src/MNH/ini_cst.f90
+++ b/src/MNH/ini_cst.f90
@@ -159,7 +159,7 @@ XMNH_EPSILON = EPSILON (XMNH_EPSILON )
 XMNH_HUGE    = HUGE    (XMNH_HUGE )
 XMNH_HUGE_12_LOG = LOG ( SQRT(XMNH_HUGE)  )
 
-#ifdef MNH_MPI_DOUBLE_PRECISION
+#if (MNH_REAL == 8)
 XMNH_TINY      = 1.0e-80
 XEPS_DT        = 1.0e-5
 XRES_FLAT_CART = 1.0e-12
diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk
index e4f2f56c8..2358c3f1e 100644
--- a/src/Makefile.MESONH.mk
+++ b/src/Makefile.MESONH.mk
@@ -106,7 +106,7 @@ endif
 # PRE_BUG TEST !!!
 #
 DIR_SURCOUCHE += LIB/SURCOUCHE/src
-#CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_MPI_BSEND -DNAGf95
+#CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DMNH_MPI_BSEND -DNAGf95
 #
 ifdef DIR_SURCOUCHE
 DIR_MASTER   += $(DIR_SURCOUCHE)
diff --git a/src/Rules.AIX64.mk b/src/Rules.AIX64.mk
index 9bf3b1262..03cc10faf 100644
--- a/src/Rules.AIX64.mk
+++ b/src/Rules.AIX64.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -31,9 +31,7 @@ OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 OPT       = $(OPT_BASE) $(OPT_PERF2) 
@@ -84,7 +82,7 @@ endif
 CPP = /usr/lib/cpp -C -P -qlanglvl=classic
 #
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DMNH_SP4
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DAMAX1=MAX -DMNH -DSFX_MNH
diff --git a/src/Rules.BG.mk b/src/Rules.BG.mk
index bf5f73d9a..b1ee2cccd 100644
--- a/src/Rules.BG.mk
+++ b/src/Rules.BG.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -36,9 +36,7 @@ OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -94,8 +92,8 @@ CPP = cpp -P -traditional -Wcomment
 CC  = mpixlc_r
 #
 CPPFLAGS_SURFEX    =
-#CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_ISEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
-CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_BSEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+#CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_ISEND
+CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_BSEND
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DLINUX  -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DAMAX1=MAX -DMNH -DSFX_MNH
diff --git a/src/Rules.BGQ.mk b/src/Rules.BGQ.mk
index 6418fb149..4ce309876 100644
--- a/src/Rules.BGQ.mk
+++ b/src/Rules.BGQ.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -40,10 +40,8 @@ OPT_BASE_I4       := $(OPT_BASE) $(OPT_I4)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE         += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
 OPT_BASE         += $(OPT_I4)
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -143,8 +141,8 @@ CPP = cpp -P -traditional -Wcomment
 
 #
 CPPFLAGS_SURFEX    =
-#CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_ISEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
-CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_BSEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND) -DSNGL=REAL
+#CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_ISEND
+CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DMNH_SP4 -DMNH_MPI_BSEND -DSNGL=REAL
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DLINUX  -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DAMAX1=MAX -DMNH -DSFX_MNH
diff --git a/src/Rules.LXNAGfor.mk b/src/Rules.LXNAGfor.mk
index 397a18c4f..8fd7c4264 100644
--- a/src/Rules.LXNAGfor.mk
+++ b/src/Rules.LXNAGfor.mk
@@ -24,16 +24,13 @@ LFI_RECL  ?=512
 #
 ifneq "$(MNH_REAL)" "4"
 OPT_BASE           += $(OPT_R8)
-CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
 endif
 #
 OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -72,7 +69,7 @@ FX90FLAGS     =  $(OPT) -fixed
 CPP = cpp -P -traditional -Wcomment
 #
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL  -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DMNH -DSFX_MNH
diff --git a/src/Rules.LXarm.mk b/src/Rules.LXarm.mk
index dc9369223..d1e4879e6 100644
--- a/src/Rules.LXarm.mk
+++ b/src/Rules.LXarm.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -34,16 +34,13 @@ LFI_RECL  ?=512
 #
 ifneq "$(MNH_REAL)" "4"
 OPT_BASE           += $(OPT_R8)
-CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
 endif
 #
 OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -88,7 +85,7 @@ FX90FLAGS     =  $(OPT)
 CPP = cpp -P -traditional -Wcomment
 #
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL  -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DMNH -DSFX_MNH
diff --git a/src/Rules.LXcray.mk b/src/Rules.LXcray.mk
index 425a0b9d6..876586124 100644
--- a/src/Rules.LXcray.mk
+++ b/src/Rules.LXcray.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -29,9 +29,7 @@ ifeq "$(MNH_INT)" "8"
 #OPT_BASE         += $(OPT_I8)
 OPT_BASE           = -sdefault64 -hpic -em -ef
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -84,7 +82,7 @@ LDFLAGS    =   -Wl,-warn-once $(PAR) $(OPT_BASE)
 CPP = cpp -P -traditional -Wcomment
 #
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DDEV_NULL -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND) 
+CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DDEV_NULL
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DMNH -DSFX_MNH 
diff --git a/src/Rules.LXg95.mk b/src/Rules.LXg95.mk
index e08e73ed7..0f41dffc3 100644
--- a/src/Rules.LXg95.mk
+++ b/src/Rules.LXg95.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -24,9 +24,7 @@ OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -66,7 +64,7 @@ CPP = cpp -P -traditional -Wcomment
 LFI_INT  ?=4
 LFI_RECL ?=512
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_MPI_BSEND -DDEV_NULL -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DMNH_MPI_BSEND -DDEV_NULL
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX  -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DAINT=INT -DAMOD=MOD -DMNH -DSFX_MNH
diff --git a/src/Rules.LXgfortran.mk b/src/Rules.LXgfortran.mk
index 58689e968..20a065160 100644
--- a/src/Rules.LXgfortran.mk
+++ b/src/Rules.LXgfortran.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -31,16 +31,13 @@ LFI_RECL  ?=512
 #
 ifneq "$(MNH_REAL)" "4"
 OPT_BASE           += $(OPT_R8)
-CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
 endif
 #
 OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -80,7 +77,7 @@ FX90FLAGS     =  $(OPT)
 CPP = cpp -P -traditional -Wcomment
 #
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL  -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DMNH -DSFX_MNH
diff --git a/src/Rules.LXifort.mk b/src/Rules.LXifort.mk
index 231f1949a..ca42df88b 100644
--- a/src/Rules.LXifort.mk
+++ b/src/Rules.LXifort.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -25,16 +25,13 @@ LFI_RECL  ?=512
 #
 ifneq "$(MNH_REAL)" "4"
 OPT_BASE           += $(OPT_R8)
-CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
 endif
 #
 OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -177,7 +174,7 @@ LDFLAGS    =   -Wl,-warn-once $(PAR) -Wl,-rpath=$(LD_LIBRARY_PATH) $(OPT_BASE)
 CPP = cpp -P -traditional -Wcomment
 #
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DDEV_NULL
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DMNH -DSFX_MNH 
diff --git a/src/Rules.LXpathf95.mk b/src/Rules.LXpathf95.mk
index fe34aa467..48ba1c05b 100644
--- a/src/Rules.LXpathf95.mk
+++ b/src/Rules.LXpathf95.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -42,7 +42,7 @@ LDFLAGS   =  -Wl,-noinhibit-exec  -Wl,-warn-once
 CPP = cpp -P -traditional -Wcomment
 #
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_LINUX -DMNH_MPI_BSEND -DDEV_NULL
+CPPFLAGS_SURCOUCHE = -DMNH_LINUX -DMNH_MPI_BSEND -DDEV_NULL
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX
 CPPFLAGS_MNH       = -DAINT=INT -DAMOD=MOD -DMNH -DSFX_MNH
diff --git a/src/Rules.LXpgi.mk b/src/Rules.LXpgi.mk
index 498f56f7b..a91f31843 100644
--- a/src/Rules.LXpgi.mk
+++ b/src/Rules.LXpgi.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -34,16 +34,13 @@ LFI_RECL  ?=512
 #
 ifneq "$(MNH_REAL)" "4"
 OPT_BASE           += $(OPT_R8)
-CPPFLAGS_SURCOUCHE += -DMNH_MPI_DOUBLE_PRECISION
 endif
 #
 OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -100,7 +97,7 @@ CPP = cpp -P -traditional -Wcomment
 #
 
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE += -DMNH_LINUX -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+CPPFLAGS_SURCOUCHE += -DMNH_LINUX
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DMNH -DMNH_PGI -DSFX_MNH
diff --git a/src/Rules.SX8.mk b/src/Rules.SX8.mk
index abbaf8722..dae21a06d 100644
--- a/src/Rules.SX8.mk
+++ b/src/Rules.SX8.mk
@@ -1,6 +1,6 @@
-#MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
+#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 version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 #MNH_LIC for details. version 1.
 ##########################################################
 #                                                        #
@@ -30,9 +30,7 @@ OPT_BASE_I4       := $(OPT_BASE)
 ifeq "$(MNH_INT)" "8"
 OPT_BASE          += $(OPT_I8)
 LFI_INT           ?=8
-MNH_MPI_RANK_KIND ?=8
 else
-MNH_MPI_RANK_KIND ?=4
 LFI_INT           ?=4
 endif
 #
@@ -87,7 +85,7 @@ CPP = cpp -P -traditional -Wcomment
 AR=sxar
 #
 CPPFLAGS_SURFEX    =
-CPPFLAGS_SURCOUCHE = -DMNH_MPI_DOUBLE_PRECISION -DMNH_SX5 -DMNH_MPI_BSEND -DMNH_MPI_RANK_KIND=$(MNH_MPI_RANK_KIND)
+CPPFLAGS_SURCOUCHE = -DMNH_SX5 -DMNH_MPI_BSEND
 CPPFLAGS_RAD       =
 CPPFLAGS_NEWLFI    = -DMNH_SX5 -DLFI_INT=${LFI_INT} -DLFI_RECL=${LFI_RECL}
 CPPFLAGS_MNH       = -DMNH -DSFX_MNH
-- 
GitLab