From c4ec109395bfb25a8132ff2e2d239dcda2b6cdd7 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Fri, 26 Apr 2019 13:37:29 +0200
Subject: [PATCH] Philippe 26/04/2019: use MNHINT_MPI and MNHLOG_MPI instead of
 MPI_INTEGER and MPI_LOGICAL for MPI communications

---
 src/LIB/SURCOUCHE/src/mode_gather.f90        | 54 +++++++++----------
 src/LIB/SURCOUCHE/src/mode_io_field_read.f90 | 57 ++++++++++----------
 src/LIB/SURCOUCHE/src/mode_mppdb.f90         | 34 ++++++------
 src/LIB/SURCOUCHE/src/mode_scatter.f90       | 23 ++++----
 src/LIB/SURCOUCHE/src/mode_sum2_ll.f90       | 11 ++--
 src/LIB/SURCOUCHE/src/mode_sum_ll.f90        | 23 ++++----
 src/LIB/SURCOUCHE/src/mode_tools_ll.f90      | 31 +++++------
 src/LIB/SURCOUCHE/src/update_nhalo1d.f90     | 12 +++--
 src/MNH/clustering.f90                       | 14 ++---
 src/MNH/flash_geom_elec.f90                  | 47 ++++++++--------
 src/MNH/mode_elec_ll.f90                     | 28 +++++-----
 src/MNH/retrieve2_nest_infon.f90             | 17 +++---
 src/MNH/zdiffusetup.f90                      | 21 ++++----
 13 files changed, 191 insertions(+), 181 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/mode_gather.f90 b/src/LIB/SURCOUCHE/src/mode_gather.f90
index fc88e9133..a1ce0afae 100644
--- a/src/LIB/SURCOUCHE/src/mode_gather.f90
+++ b/src/LIB/SURCOUCHE/src/mode_gather.f90
@@ -4,17 +4,17 @@
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
 ! Modifications:
-!   J.Escobar 10/02/2012 : Bug , in MPI_RECV replace MPI_STATUSES_IGNORE
-!                          with MPI_STATUS_IGNORE
-!   J.Escobar 22/05/2012 : Bug in ISEND with non-contiguous buffer , reintroduce intermediate buffer
-!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  J. Escobar  10/02/2012: bug in MPI_RECV: replace MPI_STATUSES_IGNORE with MPI_STATUS_IGNORE
+!  J. Escobar  22/05/2012: bug in ISEND with non-contiguous buffer: reintroduce intermediate buffer
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !
 !-----------------------------------------------------------------
 
 MODULE MODE_GATHER_ll
 
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI
+use modd_precision, only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI
 USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
 
 IMPLICIT NONE 
@@ -142,7 +142,7 @@ ELSE
   PRINT *,'Error GATHERALL_N1'
 END IF
 ! KRECV variable of IROOT processor contains the global field
-CALL MPI_BCAST(KRECV,SIZE(KRECV),MPI_INTEGER,IROOT-1,NMNH_COMM_WORLD,KRESP)
+CALL MPI_BCAST(KRECV,SIZE(KRECV),MNHINT_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP)
 
 END SUBROUTINE GATHERALL_N1
 
@@ -167,7 +167,7 @@ ELSE
   PRINT *,'Error GATHERALL_N2'
 END IF
 ! KRECV variable of IROOT processor contains the global field
-CALL MPI_BCAST(KRECV,SIZE(KRECV),MPI_INTEGER,IROOT-1,NMNH_COMM_WORLD,KRESP)
+CALL MPI_BCAST(KRECV,SIZE(KRECV),MNHINT_MPI,IROOT-1,NMNH_COMM_WORLD,KRESP)
 
 END SUBROUTINE GATHERALL_N2
 
@@ -599,7 +599,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         ITP = KSEND(IXO:IXE)
       ELSE 
-        CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -607,7 +607,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         ITP = KSEND(IYO:IYE)
       ELSE 
-        CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -619,10 +619,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     ITP=>KSEND(IXO:IXE)
-    CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     ITP=>KSEND(IYO:IYE)
-    CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -664,7 +664,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN 
         ITP = KSEND(IXO:IXE,:)
       ELSE 
-        CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN 
@@ -672,7 +672,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN 
         ITP = KSEND(IYO:IYE,:)
       ELSE 
-        CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -684,10 +684,10 @@ ELSE
   
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     ITP=>KSEND(IXO:IXE,:)
-    CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     ITP=>KSEND(IYO:IYE,:)
-    CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -725,7 +725,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN
         IP = KSEND(IXO:IXE,:,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
@@ -733,7 +733,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN
         IP = KSEND(IYO:IYE,:,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -745,10 +745,10 @@ ELSE
 
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     IP=>KSEND(IXO:IXE,:,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     IP=>KSEND(IYO:IYE,:,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -789,7 +789,7 @@ IF (ISP == KROOT)  THEN
       IF (JI == KROOT) THEN
         GTP = OSEND(IXO:IXE)
       ELSE
-        CALL MPI_RECV(GTP,SIZE(GTP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(GTP,SIZE(GTP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
 
     ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
@@ -797,7 +797,7 @@ IF (ISP == KROOT)  THEN
       IF (JI==KROOT) THEN
         GTP = OSEND(IYO:IYE)
       ELSE
-        CALL MPI_RECV(GTP,SIZE(GTP),MPI_LOGICAL,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(GTP,SIZE(GTP),MNHLOG_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -809,10 +809,10 @@ ELSE
 
   IF (HDIR == 'XX' .AND. IYM <= IGYE .AND. IYM >= IGYO) THEN
     GTP=>OSEND(IXO:IXE)
-    CALL MPI_BSEND(GTP,SIZE(GTP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(GTP,SIZE(GTP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   ELSE IF (HDIR == 'YY' .AND. IXM <= IGXE .AND. IXM >= IGXO) THEN
     GTP=>OSEND(IYO:IYE)
-    CALL MPI_BSEND(GTP,SIZE(GTP),MPI_LOGICAL,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(GTP,SIZE(GTP),MNHLOG_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
@@ -1073,14 +1073,14 @@ IF (ISP == KROOT)  THEN
       CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE)
       ITP = KSEND(IXO:IXE,IYO:IYE)
     ELSE 
-      CALL MPI_RECV(ITP,SIZE(ITP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+      CALL MPI_RECV(ITP,SIZE(ITP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
     END IF
   END DO
 ELSE 
   ! Other processors
   CALL GET_DOMWRITE_ll(ISP,'local',IXO,IXE,IYO,IYE)
   ITP=>KSEND(IXO:IXE,IYO:IYE)
-  CALL MPI_BSEND(ITP,SIZE(ITP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+  CALL MPI_BSEND(ITP,SIZE(ITP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
 END IF
 
 END SUBROUTINE GATHERXY_N2
@@ -1111,7 +1111,7 @@ IF (ISP == KROOT)  THEN
         CALL GET_DOMWRITE_ll(JI,'local',IXO,IXE,IYO,IYE,KXOBOX,KXEBOX,KYOBOX,KYEBOX,HINTER)
         IP = KSEND(IXO:IXE,IYO:IYE,:)
       ELSE
-        CALL MPI_RECV(IP,SIZE(IP),MPI_INTEGER,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
+        CALL MPI_RECV(IP,SIZE(IP),MNHINT_MPI,JI-1,99+KROOT,KCOMM,MPI_STATUS_IGNORE,IERR)
       END IF
     END IF
   END DO
@@ -1120,7 +1120,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
     IP=>KSEND(IXO:IXE,IYO:IYE,:)
-    CALL MPI_BSEND(IP,SIZE(IP),MPI_INTEGER,KROOT-1,99+KROOT,KCOMM,IERR)
+    CALL MPI_BSEND(IP,SIZE(IP),MNHINT_MPI,KROOT-1,99+KROOT,KCOMM,IERR)
   END IF
 END IF
 
diff --git a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90 b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
index 5f97e45f6..0b6889138 100644
--- a/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
+++ b/src/LIB/SURCOUCHE/src/mode_io_field_read.f90
@@ -13,13 +13,14 @@
 !  P. Wautelet 05/03/2019: rename IO subroutines and modules
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 12/04/2019: use MNHTIME for time measurement variables
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-----------------------------------------------------------------
 
 MODULE MODE_IO_FIELD_READ
 !
 USE MODD_IO, ONLY : NVERB_FATAL,NVERB_ERROR,NVERB_WARNING,NVERB_INFO,NVERB_DEBUG,TFILEDATA
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI, MNHTIME
+use modd_precision, only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI, MNHTIME
 !
 USE MODE_FIELD
 USE MODE_IO_READ_LFI
@@ -107,9 +108,9 @@ CALL MPI_BCAST(TPFIELD%CUNITS,   LEN(TPFIELD%CUNITS),   MPI_CHARACTER,TPFILE%NMA
 CALL MPI_BCAST(TPFIELD%CDIR,     LEN(TPFIELD%CDIR),     MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
 CALL MPI_BCAST(TPFIELD%CLBTYPE,  LEN(TPFIELD%CLBTYPE),  MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
 CALL MPI_BCAST(TPFIELD%CCOMMENT, LEN(TPFIELD%CCOMMENT), MPI_CHARACTER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-CALL MPI_BCAST(TPFIELD%NGRID,    1,                     MPI_INTEGER,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-CALL MPI_BCAST(TPFIELD%NTYPE,    1,                     MPI_INTEGER,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-CALL MPI_BCAST(TPFIELD%NDIMS,    1,                     MPI_INTEGER,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+CALL MPI_BCAST(TPFIELD%NGRID,    1,                     MNHINT_MPI,   TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+CALL MPI_BCAST(TPFIELD%NTYPE,    1,                     MNHINT_MPI,   TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+CALL MPI_BCAST(TPFIELD%NDIMS,    1,                     MNHINT_MPI,   TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
 !
 END SUBROUTINE IO_Field_metadata_bcast
 
@@ -172,7 +173,7 @@ IF (IRESP==0) THEN
       END IF
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -270,7 +271,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -405,7 +406,7 @@ IF (IRESP==0) THEN
     CALL SECOND_MNH2(T1)
     TIMEZ%T_READ2D_READ=TIMEZ%T_READ2D_READ + T1 - T0
     !
-    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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -590,7 +591,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -668,7 +669,7 @@ IF (IRESP==0) THEN
     END DO
     CALL GA_SYNC
     !
-    CALL MPI_BCAST(IRESP_TMP,1,MPI_INTEGER,IK_RANK-1,TZFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(IRESP_TMP,1,MNHINT_MPI,IK_RANK-1,TZFILE%NMPICOMM,IERR)
     IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error"
     !
     ! get the columun data in this proc
@@ -741,7 +742,7 @@ IF (IRESP==0) THEN
           TIMEZ%T_READ3D_SEND=TIMEZ%T_READ3D_SEND + T2 - T1
         END IF
         !
-        CALL MPI_BCAST(IRESP_TMP,1,MPI_INTEGER,IK_RANK-1,TZFILE%NMPICOMM,IERR)
+        CALL MPI_BCAST(IRESP_TMP,1,MNHINT_MPI,IK_RANK-1,TZFILE%NMPICOMM,IERR)
         IF (IRESP_TMP/=0) IRESP = IRESP_TMP !Keep last "error"
         TZFILE => NULL()
       END DO
@@ -919,7 +920,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1044,7 +1045,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1157,7 +1158,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1242,13 +1243,13 @@ IF (IRESP==0) THEN
       END IF
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
-    CALL MPI_BCAST(KFIELD,1,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(KFIELD,1,MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
   END IF
 END IF
 !
@@ -1329,7 +1330,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1337,7 +1338,7 @@ IF (IRESP==0) THEN
     !
     IF (TPFIELD%CDIR /= 'XX' .AND. TPFIELD%CDIR /='YY') THEN
       ! Broadcast Field
-      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     ELSE
       !Scatter Field
       CALL SCATTER_XXFIELD(TPFIELD%CDIR,IFIELDP,KFIELD,TPFILE%NMASTER_RANK,TPFILE%NMPICOMM)
@@ -1445,7 +1446,7 @@ IF (IRESP==0) THEN
       GALLOC = .TRUE.
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1467,7 +1468,7 @@ IF (IRESP==0) THEN
       END IF
     ELSE
       IF (ISP == TPFILE%NMASTER_RANK) KFIELD = IFIELDP
-      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+      CALL MPI_BCAST(KFIELD,SIZE(KFIELD),MNHINT_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
     END IF
   END IF
 END IF
@@ -1539,13 +1540,13 @@ IF (IRESP==0) THEN
       END IF
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
-    CALL MPI_BCAST(OFIELD,1,MPI_LOGICAL,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(OFIELD,1,MNHLOG_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
   END IF
 END IF
 !
@@ -1614,13 +1615,13 @@ IF (IRESP==0) THEN
       END IF
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
-    CALL MPI_BCAST(OFIELD,SIZE(OFIELD),MPI_LOGICAL,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST(OFIELD,SIZE(OFIELD),MNHLOG_MPI,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
   END IF
 END IF
 !
@@ -1689,7 +1690,7 @@ IF (IRESP==0) THEN
       END IF
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
@@ -1768,14 +1769,14 @@ IF (IRESP==0) THEN
       ITDATE(3) = TPDATA%TDATE%DAY
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
     IF (IRESP==-111) CALL IO_Field_metadata_bcast(TPFILE,TPFIELD)
     !
-    CALL MPI_BCAST(ITDATE,     3,MPI_INTEGER,TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
-    CALL MPI_BCAST(TPDATA%TIME,1,MNHREAL_MPI,  TPFILE%NMASTER_RANK-1,TPFILE%NMPICOMM,IERR)
+    CALL MPI_BCAST( ITDATE,      3, MNHINT_MPI,  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)
@@ -1935,7 +1936,7 @@ IF (IRESP==0) THEN
       TIMEZ%T_READLB_READ=TIMEZ%T_READLB_READ + T1 - T0
     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)
     !
     !Broadcast header only if IRESP==-111
     !because metadata of field has been modified in IO_Field_read_xxx
diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
index e283130d5..e92317806 100644
--- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90
+++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90
@@ -15,6 +15,7 @@ MODULE MODE_MPPDB
 !  Philippe Wautelet: 22/01/2019: use standard FLUSH statement instead of non standard intrinsics
 !  Philippe Wautelet: 22/01/2019: use sleep_c subroutine instead of non-standard call system
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-----------------------------------------------------------------
 !
   use ISO_FORTRAN_ENV, only: OUTPUT_UNIT
@@ -273,8 +274,8 @@ CONTAINS
   SUBROUTINE MPPDB_CHECK3D(PTAB,MESSAGE,PRECISION)
 
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
-    use modd_precision, only: MNHREAL_MPI
-    USE MODD_MPIF      , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM
+    use modd_precision,     only: MNHINT_MPI, MNHREAL_MPI
+    USE MODD_MPIF      , ONLY : MPI_STATUS_IGNORE, MPI_SUM
     USE MODE_GATHER_ll
 
     IMPLICIT NONE
@@ -314,7 +315,7 @@ CONTAINS
 #else
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
     !get the global size of PTAB
-    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTER_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
     !
     CALL MPPDB_BARRIER()
@@ -342,7 +343,7 @@ CONTAINS
           !
           ! recieve JPHEXT from son if different
           !
-          CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+          CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, &
                ITAG1, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
 
           !IHEXT_SON_ll = JPHEXT
@@ -412,7 +413,7 @@ CONTAINS
           !
           I_FIRST_FATHER = 0
           IHEXT_SON_ll = JPHEXT
-          CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, &
+          CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, &
                ITAG1, MPPDB_INTRA_COMM, IINFO_ll)
 
           CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MNHREAL_MPI,I_FIRST_FATHER, &
@@ -469,8 +470,8 @@ CONTAINS
 
     USE MODD_PARAMETERS_ll, ONLY : JPHEXT
     USE MODE_GATHER_ll
-    USE MODD_MPIF      , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM
-    use modd_precision, only: MNHREAL_MPI
+    USE MODD_MPIF      , ONLY : MPI_STATUS_IGNORE, MPI_SUM
+    use modd_precision,     only: MNHINT_MPI, MNHREAL_MPI
 
     USE  MODD_VAR_ll    , ONLY :  NMNH_COMM_WORLD
 
@@ -507,7 +508,7 @@ CONTAINS
     RETURN           
 #else
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
-    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
 
     CALL MPPDB_BARRIER()
@@ -534,7 +535,7 @@ CONTAINS
           !
           ! recieve JPHEXT from son if different
           !
-          CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+          CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, &
                ITAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
 
           IIU_SON_ll = IIMAX_ll+2*IHEXT_SON_ll
@@ -598,7 +599,7 @@ CONTAINS
           ! first son --> send the good array to the first father
           !
           I_FIRST_FATHER = 0
-          CALL MPI_BSEND(JPHEXT,1,MPI_INTEGER,I_FIRST_FATHER, &
+          CALL MPI_BSEND(JPHEXT,1,MNHINT_MPI,I_FIRST_FATHER, &
                ITAG, MPPDB_INTRA_COMM, IINFO_ll)
           CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MNHREAL_MPI,I_FIRST_FATHER, &
                ITAG, MPPDB_INTRA_COMM, IINFO_ll)
@@ -617,10 +618,10 @@ CONTAINS
   SUBROUTINE MPPDB_CHECKLB(PLB,MESSAGE,PRECISION,HLBTYPE,KRIM)
 
     USE MODD_IO,            ONLY: GSMONOPROC, ISP, ISNPROC, L2D, LPACK
-    USE MODD_MPIF,          ONLY: MPI_INTEGER, MPI_STATUS_IGNORE
+    USE MODD_MPIF,          ONLY: MPI_STATUS_IGNORE
     USE MODD_PARAMETERS_ll, ONLY: JPHEXT
     USE MODD_VAR_ll,        ONLY: NMNH_COMM_WORLD
-    use modd_precision,     only: MNHREAL_MPI
+    use modd_precision,     only: MNHINT_MPI, MNHREAL_MPI
 
     USE MODE_DISTRIB_LB
     USE MODE_TOOLS_ll,      ONLY: GET_GLOBALDIMS_ll
@@ -719,7 +720,7 @@ CONTAINS
           !
           ! recieve JPHEXT from son if different
           !
-          CALL MPI_RECV(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_SON, &
+          CALL MPI_RECV(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_SON, &
                ITAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll)
 
           IIU_SON_ll = IIMAX_ll+2*IHEXT_SON_ll
@@ -786,7 +787,7 @@ CONTAINS
           !
           I_FIRST_FATHER = 0
           IHEXT_SON_ll = JPHEXT
-          CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, &
+          CALL MPI_BSEND(IHEXT_SON_ll,1,MNHINT_MPI,I_FIRST_FATHER, &
                ITAG, MPPDB_INTRA_COMM, IINFO_ll)
           CALL MPI_BSEND(PLB,SIZE(PLB),MNHREAL_MPI,I_FIRST_FATHER, &
                ITAG, MPPDB_INTRA_COMM, IINFO_ll)
@@ -904,8 +905,9 @@ CONTAINS
     USE MODI_GET_SURF_MASK_n
     USE MODD_IO_SURF_MNH, ONLY : NHALO
     USE MODD_CONFZ     , ONLY : MPI_BUFFER_SIZE
-    USE MODD_MPIF      , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM
+    USE MODD_MPIF      , ONLY : MPI_STATUS_IGNORE, MPI_SUM
     USE MODD_MNH_SURFEX_n
+    use modd_precision,   only: MNHINT_MPI
 !
     IMPLICIT NONE
 !
@@ -932,7 +934,7 @@ CONTAINS
     INTEGER                              :: IINFO_ll
     !
     IF ( ( .NOT. MPPDB_INITIALIZED ) ) RETURN
-    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MPI_INTEGER, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll)
+    CALL MPI_ALLREDUCE(SIZE(PTAB), IGLBSIZEPTAB, 1,MNHINT_MPI, MPI_SUM, MPPDB_INTRA_COMM, IINFO_ll)
     IF ( IGLBSIZEPTAB == 0 ) RETURN
     !
     IF ( SIZE(PTAB) == 0 ) THEN   !if the local size of the field is 0, we need to define ZFIELD3D filled with default value 1e20
diff --git a/src/LIB/SURCOUCHE/src/mode_scatter.f90 b/src/LIB/SURCOUCHE/src/mode_scatter.f90
index 12518db8b..f16f8f614 100644
--- a/src/LIB/SURCOUCHE/src/mode_scatter.f90
+++ b/src/LIB/SURCOUCHE/src/mode_scatter.f90
@@ -3,16 +3,15 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
+! Modifications:
+!  J. Escobar  10/02/2012: bug in MPI_RECV: replace MPI_STATUSES_IGNORE with MPI_STATUS_IGNORE
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!-----------------------------------------------------------------
 
 MODULE MODE_SCATTER_ll
 
-!
-!   J.Escobar 10/02/2012 : Bug , in MPI_RECV replace MPI_STATUSES_IGNORE
-!                          with MPI_STATUS_IGNORE
-!
-
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI
+use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
 
 IMPLICIT NONE 
 
@@ -322,14 +321,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       KRECV(:) = TI2DP(:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
   
@@ -359,14 +358,14 @@ IF (ISP == KROOT) THEN
     END IF
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TI2DP,SIZE(TI2DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       KRECV(:,:) = TI2DP(:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
@@ -572,14 +571,14 @@ IF (ISP == KROOT) THEN
     TI3DP=>KSEND(IXO:IXE,IYO:IYE)
     
     IF (ISP /= JI) THEN 
-      CALL MPI_BSEND(TI3DP,SIZE(TI3DP),MPI_INTEGER,JI-1,199+KROOT,KCOMM&
+      CALL MPI_BSEND(TI3DP,SIZE(TI3DP),MNHINT_MPI,JI-1,199+KROOT,KCOMM&
            & ,IERR)
     ELSE 
       KRECV(:,:) = TI3DP(:,:)
     END IF
   END DO
 ELSE
-  CALL MPI_RECV(KRECV,SIZE(KRECV),MPI_INTEGER,KROOT-1,199+KROOT,KCOMM&
+  CALL MPI_RECV(KRECV,SIZE(KRECV),MNHINT_MPI,KROOT-1,199+KROOT,KCOMM&
        & ,MPI_STATUS_IGNORE,IERR)
 END IF
 
diff --git a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
index 23638d194..77d08c686 100644
--- a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90
@@ -3,6 +3,9 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
+! Modifications:
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!-----------------------------------------------------------------
 
 !     ###################
       MODULE MODE_SUM2_ll
@@ -581,7 +584,7 @@ ENDIF
 !
 !*       0.    DECLARATIONS
 !
-  use modd_precision, only: MNH2REAL_MPI
+  use modd_precision, only: MNH2REAL_MPI, MNHINT_MPI
   USE MODD_VAR_ll,    ONLY: IP
 !
   IMPLICIT NONE
@@ -627,7 +630,7 @@ ENDIF
   IPROCMAX = ZBUFOUT(2)
   IMAXLOC = KLOCALMAX
   ISIZE=SIZE(KLOCALMAX)
-  CALL MPI_BCAST(IMAXLOC, ISIZE, MPI_INTEGER, IPROCMAX-1, &
+  CALL MPI_BCAST(IMAXLOC, ISIZE, MNHINT_MPI, IPROCMAX-1, &
                  NMNH_COMM_WORLD, INFO_ll)
 !
   KPROC=IPROCMAX
@@ -680,7 +683,7 @@ ENDIF
 !
 !*       0.    DECLARATIONS
 !
-  use modd_precision,    only: MNH2REAL_MPI
+  use modd_precision,    only: MNH2REAL_MPI, MNHINT_MPI
   USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll
   USE MODD_VAR_ll,       ONLY: IP, TCRRT_PROCONF
 !
@@ -732,7 +735,7 @@ ENDIF
 !
   IPROCMAX = ZBUFOUT(2)
   IMAXLOC = KLOCALMAX
-  CALL MPI_BCAST(IMAXLOC, ISIZE, MPI_INTEGER, IPROCMAX-1, &
+  CALL MPI_BCAST(IMAXLOC, ISIZE, MNHINT_MPI, IPROCMAX-1, &
                  NMNH_COMM_WORLD, INFO_ll)
 !
 !-------------------------------------------------------------------------------
diff --git a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
index 9f588cfa2..b5901a18c 100644
--- a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90
@@ -3,8 +3,9 @@
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
 !-----------------------------------------------------------------
-!Correction :
-!  J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
+! Modifications:
+!  J. Escobar  15/09/2015: WENO5 & JPHEXT <> 1
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-----------------------------------------------------------------
 
 !     ##################
@@ -57,7 +58,7 @@
 !------------------------------------------------------------------------------
 !
    USE MODD_MPIF
-   use modd_precision, only: MNHREAL_MPI
+   use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
    USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
 !
   CONTAINS
@@ -1302,8 +1303,8 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
 !
 !*        1.5  Get global begin and end
 !
-  CALL MPI_ALLREDUCE(IB, IGB, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IERR)
-  CALL MPI_ALLREDUCE(IE, IGE, 1, MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IERR)
+  CALL MPI_ALLREDUCE(IB, IGB, 1, MNHINT_MPI, MPI_MIN, NMNH_COMM_WORLD, IERR)
+  CALL MPI_ALLREDUCE(IE, IGE, 1, MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IERR)
 !
 !-------------------------------------------------------------------------------
 !
@@ -1313,10 +1314,10 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll
 !*        2.1  Have the sizes and global positions known by all procs
 !
   ISIZE = IE - IB + 1
-  CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+  CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      NMNH_COMM_WORLD, IERR)
 !
-  CALL MPI_ALLGATHER( (/ IB-IGB /), 1, MPI_INTEGER, IDISPL, 1, MPI_INTEGER, &
+  CALL MPI_ALLGATHER( (/ IB-IGB /), 1, MNHINT_MPI, IDISPL, 1, MNHINT_MPI, &
                      NMNH_COMM_WORLD, IERR)
 ! 
 !*        2.2  Get the global field
@@ -2820,7 +2821,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll
 !*       1. CALL THE MPI_ALLREDUCE ROUTINE
 !           ------------------------------
 !
-  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MPI_INTEGER, &
+  CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHINT_MPI, &
                      MPI_SUM, NMNH_COMM_WORLD, KINFO)
 !
   PRES = ZRES
@@ -2883,7 +2884,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll
 !*       1. CALL THE MPI_ALLREDUCE ROUTINE
 !           ------------------------------
 !
-  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MPI_INTEGER, &
+  CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHINT_MPI, &
                      MPI_SUM, NMNH_COMM_WORLD, KINFO)
 !
   PRES = ZRES
@@ -2950,7 +2951,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll
 !
   IDIM = SIZE(PRES,1) * SIZE(PRES,2)
 !
-  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MPI_INTEGER, MPI_SUM, &
+  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, &
                      NMNH_COMM_WORLD, KINFO)
 !
   PRES = ZRES
@@ -3018,7 +3019,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll
 !
   IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3)
 !
-  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MPI_INTEGER, MPI_SUM, &
+  CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHINT_MPI, MPI_SUM, &
                      NMNH_COMM_WORLD, KINFO)
 !
   PRES = ZRES
diff --git a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
index 2626c5dc3..8378386e1 100644
--- a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
+++ b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90
@@ -6,6 +6,7 @@
 ! Modifications:
 !  J. Escobar  15/09/2015: WENO5 & JPHEXT <> 1
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-----------------------------------------------------------------
 
 !     ####################
@@ -47,7 +48,7 @@
 !     J. Escobar  27/06/2011  correction for gridnesting with different SHAPE 
 ! 
   USE MODD_MPIF
-  use modd_precision, only: MNHREAL_MPI
+  use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
   USE MODD_STRUCTURE_ll
   !JUANZ
   USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
@@ -1274,8 +1275,8 @@ ENDIF
 !
 !*        2.3    Gather values of INUMPROC 
 !
-  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, IGLOBALSLICEPROC, 1, &
-                     MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, IGLOBALSLICEPROC, 1, &
+                     MNHINT_MPI, NMNH_COMM_WORLD, IERR)
 !
 !*        2.4     Get MPI world group
 !
@@ -1308,7 +1309,7 @@ ENDIF
 !
     ALLOCATE(ISIZES(ICOUNT))
     ISIZES = 0
-    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      ICOMM_GLOBALSLICE, IERR)
 !
 !*        3.2     Compute array of displacements in the slice relative to the 
@@ -1355,7 +1356,7 @@ ENDIF
 !
   IF (ICOMM .NE. MPI_COMM_NULL) THEN
 !
-    CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR)
+    CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR)
     CALL MPI_BCAST(PGLOBALSLICE(IDISPL1+1), IGLOBALSLICELENGTH, MNHREAL_MPI, &
                     IPROCS(1), ICOMM, IERR)
 !
@@ -1601,8 +1602,8 @@ ENDIF
 !
 !*        2.3    Gather values of INUMPROC
 !
-  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, IGLOBALSLICEPROC, 1, &
-                     MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, IGLOBALSLICEPROC, 1, &
+                     MNHINT_MPI, NMNH_COMM_WORLD, IERR)
 !
 !*        2.4     Get MPI world group
 !
@@ -1637,7 +1638,7 @@ ENDIF
 !
     ALLOCATE(ISIZES(ICOUNT))
     ISIZES = 0
-    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      ICOMM_GLOBALSLICE, IERR)
 !
 !*        3.2     Compute array of displacements in the slice relative to the
@@ -1689,7 +1690,7 @@ ENDIF
 !
   IF (ICOMM .NE. MPI_COMM_NULL) THEN
 !
-    CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR)
+    CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR)
     DO JK = 1, IGLOBALSLICEHEIGHT
       CALL MPI_BCAST(PGLOBALSLICE(1,JK), IGLOBALSLICELENGTH, MNHREAL_MPI, &
                     IPROCS(1), ICOMM, IERR)
@@ -1956,7 +1957,7 @@ ENDIF
 !
 !*        2.3    Gather values of INUMPROC 
 !
-  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, ISLICEPROC, 1, MPI_INTEGER, &
+  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, ISLICEPROC, 1, MNHINT_MPI, &
                      NMNH_COMM_WORLD, IERR)
 !
 !*        2.4     Get MPI world group
@@ -1990,7 +1991,7 @@ ENDIF
 !
     ALLOCATE(ISIZES(ICOUNT))
     ISIZES = 0
-    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      ICOMM_SLICE, IERR)
 !
 !*        3.2     Compute array of displacements in the slice relative to the 
@@ -2039,7 +2040,7 @@ ENDIF
 !
   IF (ICOMM .NE. MPI_COMM_NULL) THEN
 !
-    CALL MPI_BCAST(ISLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR)
+    CALL MPI_BCAST(ISLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR)
     CALL MPI_BCAST(ITOTALSLICE, ISLICELENGTH, MNHREAL_MPI, &
                     IPROCS(1), ICOMM, IERR)
     CALL MPI_COMM_FREE(ICOMM, IERR)
@@ -2309,7 +2310,7 @@ ENDIF
 !
 !*        2.3    Gather values of INUMPROC
 !
-  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MPI_INTEGER, ISLICEPROC, 1, MPI_INTEGER, &
+  CALL MPI_ALLGATHER( (/ INUMPROC /) , 1, MNHINT_MPI, ISLICEPROC, 1, MNHINT_MPI, &
                      NMNH_COMM_WORLD, IERR)
 !
 !*        2.4     Get MPI world group
@@ -2343,7 +2344,7 @@ ENDIF
 !
     ALLOCATE(ISIZES(ICOUNT))
     ISIZES = 0
-    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MPI_INTEGER, ISIZES, 1, MPI_INTEGER, &
+    CALL MPI_ALLGATHER( (/ ISIZE /) , 1, MNHINT_MPI, ISIZES, 1, MNHINT_MPI, &
                      ICOMM_SLICE, IERR)
 !
 !*        3.2     Compute array of displacements in the slice relative to the
@@ -2395,7 +2396,7 @@ ENDIF
 !
   IF (ICOMM .NE. MPI_COMM_NULL) THEN
 !
-    CALL MPI_BCAST(ISLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR)
+    CALL MPI_BCAST(ISLICELENGTH, 1, MNHINT_MPI, IPROCS(1), ICOMM, IERR)
     DO JK = 1, ISLICEHEIGHT
       CALL MPI_BCAST(ITOTALSLICE(1,JK), ISLICELENGTH, MNHREAL_MPI, &
                     IPROCS(1), ICOMM, IERR)
diff --git a/src/LIB/SURCOUCHE/src/update_nhalo1d.f90 b/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
index a4ac0bcac..08781bb4b 100644
--- a/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
+++ b/src/LIB/SURCOUCHE/src/update_nhalo1d.f90
@@ -1,4 +1,4 @@
-!SURFEX_LIC Copyright 1994-2014 Meteo-France 
+!SURFEX_LIC Copyright 2015-2019 Meteo-France
 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C  licence
 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !SURFEX_LIC for details. version 1.
@@ -40,6 +40,7 @@
 !!        M.Moge    08/2015 calling ABORT if local subdomain is of size < NHALO
 !!                          (this causes problems on the boundary of the domain)
 !!        M.Moge    08/2015 bug fix : changing the computation of IISIZE
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !-------------------------------------------------------------------------------
 !
@@ -51,6 +52,7 @@ USE YOMHOOK,           ONLY: LHOOK, DR_HOOK
 !
 USE MODD_MPIF
 USE MODD_PARAMETERS,   ONLY: JPHEXT, JPVEXT
+use modd_precision,    only: MNHINT_MPI
 USE MODD_STRUCTURE_ll, ONLY: ZONE_ll, CRSPD_ll
 USE MODD_SURF_PAR,     ONLY: NUNDEF
 USE MODD_VAR_ll,       ONLY: NPROC, IP, YSPLITTING, NMNH_COMM_WORLD
@@ -174,10 +176,10 @@ DO JI = 1, NPROC
   IDISPLS( JI ) = JI-1
 ENDDO
 IRECVCOUNTS(:) = 1
-CALL MPI_ALLGATHERV( KXOR, 1, MPI_INTEGER, IXORARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLGATHERV( KXEND, 1, MPI_INTEGER, IXENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLGATHERV( KYOR, 1, MPI_INTEGER, IYORARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLGATHERV( KYEND, 1, MPI_INTEGER, IYENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MPI_INTEGER, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLGATHERV( KXOR,  1, MNHINT_MPI, IXORARRAY_ALL,  IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll )
+CALL MPI_ALLGATHERV( KXEND, 1, MNHINT_MPI, IXENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll )
+CALL MPI_ALLGATHERV( KYOR,  1, MNHINT_MPI, IYORARRAY_ALL,  IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll )
+CALL MPI_ALLGATHERV( KYEND, 1, MNHINT_MPI, IYENDARRAY_ALL, IRECVCOUNTS, IDISPLS, MNHINT_MPI, NMNH_COMM_WORLD, IINFO_ll )
 !
 DO JI = 1, NPROC
   TZSPLITTING_PHYS(JI)%NUMBER = JI
diff --git a/src/MNH/clustering.f90 b/src/MNH/clustering.f90
index 882de5a75..f1dfe3383 100644
--- a/src/MNH/clustering.f90
+++ b/src/MNH/clustering.f90
@@ -60,15 +60,15 @@ END MODULE MODI_CLUSTERING
 !!      Modified    13/11/14    T. Dauhut   adding property field analyse
 !!      Modified    13/06/17    T. Dauhut   to start volume scan from top
 !!      Modified    04/10/17    T. Dauhut   to be added to next MNH versions
-!!
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!
 !-------------------------------------------------------------------------------
 !
 !*       0.     DECLARATIONS
 !               ------------
 USE MODD_ARGSLIST_ll, ONLY: LIST_ll
 USE MODD_DYN_n,       ONLY: XDXHATM, XDYHATM
-USE MODD_MPIF ,       ONLY: MPI_INTEGER
-use MODD_PRECISION,   only: MNHREAL_MPI
+use MODD_PRECISION,   only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_VAR_ll,      ONLY: NPROC, IP, NMNH_COMM_WORLD
 !
 USE MODE_ll
@@ -643,7 +643,7 @@ DEALLOCATE(ZLOCLISTFLD)
 !PRINT *,IRANK,'concatenate non-redundant 1D table'
 !
 ALLOCATE(ICLUSNBR(NPROC))   ! number of clusters in each proc's local domain
-CALL MPI_ALLGATHER(ICPT, 1, MPI_INTEGER, ICLUSNBR, 1, MPI_INTEGER, NMNH_COMM_WORLD, INFO)
+CALL MPI_ALLGATHER(ICPT, 1, MNHINT_MPI, ICLUSNBR, 1, MNHINT_MPI, NMNH_COMM_WORLD, INFO)
 ! each processor knows now how many clusters appear in all other processor domains
 !
 !PRINT *,IRANK,'build IPROCDPL'
@@ -669,11 +669,11 @@ IGLBLISTSEC=0
 ZGLBLISTFLD=0.
 !
 !PRINT *,IRANK,'call all-gatherv'
-CALL MPI_ALLGATHERV(ILOCLISTIDT2, ICPT, MPI_INTEGER, IGLBLISTIDT, ICLUSNBR, IPROCDPL, MPI_INTEGER, &
+CALL MPI_ALLGATHERV(ILOCLISTIDT2, ICPT, MNHINT_MPI, IGLBLISTIDT, ICLUSNBR, IPROCDPL, MNHINT_MPI, &
                     NMNH_COMM_WORLD, INFO)
-CALL MPI_ALLGATHERV(ILOCLISTLVL2, ICPT, MPI_INTEGER, IGLBLISTLVL, ICLUSNBR, IPROCDPL, MPI_INTEGER, &
+CALL MPI_ALLGATHERV(ILOCLISTLVL2, ICPT, MNHINT_MPI, IGLBLISTLVL, ICLUSNBR, IPROCDPL, MNHINT_MPI, &
                     NMNH_COMM_WORLD, INFO)
-CALL MPI_ALLGATHERV(ILOCLISTSEC2, ICPT, MPI_INTEGER, IGLBLISTSEC, ICLUSNBR, IPROCDPL, MPI_INTEGER, &
+CALL MPI_ALLGATHERV(ILOCLISTSEC2, ICPT, MNHINT_MPI, IGLBLISTSEC, ICLUSNBR, IPROCDPL, MNHINT_MPI, &
                     NMNH_COMM_WORLD, INFO)
 CALL MPI_ALLGATHERV(ZLOCLISTFLD2, ICPT, MNHREAL_MPI, ZGLBLISTFLD, ICLUSNBR, IPROCDPL, MNHREAL_MPI, &
                     NMNH_COMM_WORLD, INFO)
diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90
index b7686962c..fb121f7e0 100644
--- a/src/MNH/flash_geom_elec.f90
+++ b/src/MNH/flash_geom_elec.f90
@@ -97,6 +97,7 @@ END MODULE MODI_FLASH_GEOM_ELEC_n
 !  P. Wautelet 22/02/2019: use MOD intrinsics with same kind for all arguments (to respect Fortran standard)
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
 !  P. Wautelet 19/04/2019: use modd_precision kinds
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-------------------------------------------------------------------------------
 !
 !*      0.      DECLARATIONS
@@ -121,7 +122,7 @@ USE MODD_LMA_SIMULATOR
 USE MODD_METRICS_n,      ONLY: XDXX, XDYY, XDZZ ! in linox_production
 USE MODD_NSV,            ONLY: NSV_ELECBEG, NSV_ELECEND, NSV_ELEC
 USE MODD_PARAMETERS,     ONLY: JPHEXT, JPVEXT
-use MODD_PRECISION,      only: MNHREAL_MPI
+use MODD_PRECISION,      only: MNHINT_MPI, MNHLOG_MPI, MNHREAL_MPI
 USE MODD_RAIN_ICE_DESCR, ONLY: XLBR, XLBEXR, XLBS, XLBEXS, &
                                XLBG, XLBEXG, XLBH, XLBEXH, &
                                XRTMIN
@@ -499,7 +500,7 @@ DO WHILE (.NOT. GEND_DOMAIN .AND. INB_CELL .LT. NMAX_CELL)
     ICELL_LOC(4,INB_CELL) = IPROC_CELL
 ! 
 ! Broadcast the center of the cell to all procs
-    CALL MPI_BCAST (ICELL_LOC(:,INB_CELL), 4, MPI_INTEGER, IPROC_CELL, &
+    CALL MPI_BCAST (ICELL_LOC(:,INB_CELL), 4, MNHINT_MPI, IPROC_CELL, &
                     NMNH_COMM_WORLD, IERR)
 !
 !
@@ -855,11 +856,11 @@ ENDIF
        CALL MPPDB_CHECK3DM("flash:: 5. ZFLASH(IL)",PRECISION,&
              ZFLASH(:,:,:,IL))
 !
-        CALL MPI_BCAST (GNEW_FLASH(IL),1,   MPI_LOGICAL, IPROC_TRIG(IL), &
+        CALL MPI_BCAST (GNEW_FLASH(IL),1,   MNHLOG_MPI, IPROC_TRIG(IL), &
                         NMNH_COMM_WORLD, IERR)
         CALL MPI_BCAST (ZEM_TRIG(IL), 1,    MNHREAL_MPI, IPROC_TRIG(IL), &
                         NMNH_COMM_WORLD, IERR)
-        CALL MPI_BCAST (INB_FL_REAL(IL), 1, MPI_INTEGER, IPROC_TRIG(IL), &
+        CALL MPI_BCAST (INB_FL_REAL(IL), 1, MNHINT_MPI, IPROC_TRIG(IL), &
                         NMNH_COMM_WORLD, IERR)
       END IF
     END DO  ! end loop il
@@ -1148,15 +1149,15 @@ ENDIF
              INB_NEUT_OK = INB_NEUT_OK + INB_NEUT
           END IF
 !
-          CALL MPI_BCAST (INB_NEUT_OK,1, MPI_INTEGER, IPROC_TRIG(IL), &
+          CALL MPI_BCAST (INB_NEUT_OK,1, MNHINT_MPI, IPROC_TRIG(IL), &
                     NMNH_COMM_WORLD, IERR)
 !
 !*      9.5     Gather lightning information from all processes
 !*              Save the particule charge and total pos/neg charge neutralization points.
 !*                   the coordinates of all flash branch points
 !
-          CALL MPI_ALLGATHER(INBSEG(IL), 1, MPI_INTEGER, &
-                             INBSEG_PROC,  1, MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+          CALL MPI_ALLGATHER(INBSEG(IL), 1, MNHINT_MPI, &
+                             INBSEG_PROC,  1, MNHINT_MPI, NMNH_COMM_WORLD, IERR)
 
           INBSEG_ALL(IL) = INBSEG(IL)
           CALL SUM_ELEC_ll(INBSEG_ALL(IL))
@@ -1694,11 +1695,11 @@ DO IL = 1, INB_CELL
     CALL MPI_BCAST (ZEM_TRIG(IL), 1, &
                     MNHREAL_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
     CALL MPI_BCAST (ISEG_LOC(:,IL), 3*SIZE(PRT,3), &
-                    MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                    MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
     CALL MPI_BCAST (ZCOORD_TRIG(:,IL), 3, &
                     MNHREAL_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
     CALL MPI_BCAST (ISIGNE_EZ(IL), 1, &
-                    MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                    MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 !
 !
 !*      5.      CHECK IF THE FLASH CAN DEVELOP
@@ -1711,9 +1712,9 @@ DO IL = 1, INB_CELL
 !
       GNEW_FLASH(IL) = .TRUE.
       GNEW_FLASH_GLOB = .TRUE.
-      CALL MPI_BCAST (GNEW_FLASH(IL),1, MPI_LOGICAL, IPROC_TRIG(IL), &
+      CALL MPI_BCAST (GNEW_FLASH(IL),1, MNHLOG_MPI, IPROC_TRIG(IL), &
                       NMNH_COMM_WORLD, IERR)
-      CALL MPI_BCAST (GNEW_FLASH_GLOB,1, MPI_LOGICAL, IPROC_TRIG(IL), &
+      CALL MPI_BCAST (GNEW_FLASH_GLOB,1, MNHLOG_MPI, IPROC_TRIG(IL), &
                       NMNH_COMM_WORLD, IERR)
     END IF
   END IF 
@@ -1884,18 +1885,18 @@ END IF  ! only iproc_trig was working
 !              ---------------------------------------
 !
 CALL MPI_BCAST (ISEG_LOC(:,IL), 3*SIZE(PRT,3), &  
-                MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 CALL MPI_BCAST (ITYPE(IL), 1, &
-                MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 
 CALL MPI_BCAST (GCG, 1, &
-                MPI_LOGICAL, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHLOG_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 CALL MPI_BCAST (GCG_POS, 1, &
-                MPI_LOGICAL, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHLOG_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 CALL MPI_BCAST (NNB_CG, 1, &
-                MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 CALL MPI_BCAST (NNB_CG_POS, 1, &
-                MPI_INTEGER, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
+                MNHINT_MPI, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR)
 
 !
 CALL MPPDB_CHECK3DM("flash:: one_leader end ZFLASH",PRECISION,ZFLASH(:,:,:,IL))
@@ -2148,8 +2149,8 @@ DO WHILE (IM .LE. IDELTA_IND .AND. ISTOP .NE. 1)
 !
       IF (IMAX_BRANCH(IM) .GT. 0) THEN
         INBPT_PROC(:) = 0
-        CALL MPI_ALLGATHER(IPT_DIST, 1, MPI_INTEGER, &
-                   INBPT_PROC, 1, MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+        CALL MPI_ALLGATHER(IPT_DIST, 1, MNHINT_MPI, &
+                   INBPT_PROC, 1, MNHINT_MPI, NMNH_COMM_WORLD, IERR)
 !
         IDISPL(1) = 0
         DO JI=2, NPROC+1
@@ -2180,8 +2181,8 @@ DO WHILE (IM .LE. IDELTA_IND .AND. ISTOP .NE. 1)
         ALLOCATE(IORDER_LL(IPT_DIST_GLOB))
         CALL MPI_ALLGATHERV(I8VECT,IPT_DIST, MNHINT64_MPI,I8VECT_LL , &
                         INBPT_PROC, IDISPL, MNHINT64_MPI, NMNH_COMM_WORLD, IERR)
-        CALL MPI_ALLGATHERV(IRANK,IPT_DIST, MPI_INTEGER,IRANK_LL , &
-                        INBPT_PROC, IDISPL, MPI_INTEGER, NMNH_COMM_WORLD, IERR)
+        CALL MPI_ALLGATHERV(IRANK,IPT_DIST, MNHINT_MPI,IRANK_LL , &
+                        INBPT_PROC, IDISPL, MNHINT_MPI, NMNH_COMM_WORLD, IERR)
         CALL N8QUICK_SORT(I8VECT_LL, IORDER_LL)
 !
         DO IPOINT = 1, MIN(IMAX_BRANCH(IM), INB_SEG_TO_BRANCH)
@@ -2371,8 +2372,8 @@ IF (LLMA) THEN
 !
   ALLOCATE (IRECV(3*INSEGCELL))
 !
-  CALL MPI_GATHERV (ISEND, 3*INSEGPROC, MPI_INTEGER, IRECV, INBSEG_PROC_X3, &
-                    IDECAL3, MPI_INTEGER, 0, NMNH_COMM_WORLD, IERR)
+  CALL MPI_GATHERV (ISEND, 3*INSEGPROC, MNHINT_MPI, IRECV, INBSEG_PROC_X3, &
+                    IDECAL3, MNHINT_MPI, 0, NMNH_COMM_WORLD, IERR)
 !
   IF (IPROC .EQ. 0) THEN
     ILMA_SEG_ALL(1:3*INSEGCELL,IL) = IRECV(1:3*INSEGCELL)
diff --git a/src/MNH/mode_elec_ll.f90 b/src/MNH/mode_elec_ll.f90
index 0f613fff8..084db39dd 100644
--- a/src/MNH/mode_elec_ll.f90
+++ b/src/MNH/mode_elec_ll.f90
@@ -21,18 +21,16 @@
 !!    Modifications
 !!    -------------
 !!    Original 08/02/2010
-!!
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
+!
 !------------------------------------------------------------------------
 !
 USE MODD_MPIF
-use modd_precision, only: MNHREAL_MPI
+use modd_precision, only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_VAR_ll,    ONLY: NMNH_COMM_WORLD
 !
 IMPLICIT NONE
 !
-!include "mpif.h"
-!
-!
 INTEGER, PARAMETER :: IFIRST_PROC = 0   ! 0/1 to increase numerotation of proc number 
 !
 !
@@ -166,7 +164,7 @@ ENDIF
 !
 !*     1.3    broadcast to all proc 
 !
-CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MPI_INTEGER, &
+CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO) 
 !
 END SUBROUTINE RMIN0_ELEC_ll
@@ -216,7 +214,7 @@ ENDIF
 !
 !*     1.3    broadcast to all proc 
 !
-CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MPI_INTEGER, &
+CALL MPI_ALLREDUCE(KPROC_LOCAL, KPROC,IDIM , MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO) 
 !
 END SUBROUTINE RMAX0_ELEC_ll
@@ -253,7 +251,7 @@ INFO = -1
 !
 !*     1.1    min(Proc)
 !
-CALL MPI_ALLREDUCE(ITAB, KMIN_INOUT, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(ITAB, KMIN_INOUT, IDIM, MNHINT_MPI, &
                    MPI_MIN, NMNH_COMM_WORLD, INFO)
 !
 !*     1.2    find the proc number of the maximum
@@ -266,7 +264,7 @@ ENDIF
 !
 !*     1.3    broadcast to all proc 
 !
-CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC,IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC,IDIM, MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO) 
 !
 END SUBROUTINE IMIN0_ELEC_ll
@@ -303,7 +301,7 @@ INFO = -1
 !
 !*     1.1    min(Proc)
 !
-CALL MPI_ALLREDUCE(ITAB, KMAX_INOUT, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(ITAB, KMAX_INOUT, IDIM, MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO)
 !
 !*     1.2    find the proc number of the maximum
@@ -316,7 +314,7 @@ ENDIF
 !
 !*     1.3    brodcast to all proc 
 !
-CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(IPROC_LOCAL, KPROC, IDIM, MNHINT_MPI, &
                    MPI_MAX, NMNH_COMM_WORLD, INFO) 
 !
 END SUBROUTINE IMAX0_ELEC_ll
@@ -351,7 +349,7 @@ INFO = -1
 !
 !*     1.1    sum(Proc)
 !
-CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MNHINT_MPI, &
                    MPI_SUM, NMNH_COMM_WORLD, INFO)
 !
 END SUBROUTINE ISUM_ELEC_ll
@@ -386,7 +384,7 @@ INFO = -1
 !
 !*     1.1    sum(Proc)
 !
-CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MPI_INTEGER, &
+CALL MPI_ALLREDUCE(ITAB, KSUM_INOUT, IDIM, MNHINT_MPI, &
                    MPI_SUM, NMNH_COMM_WORLD, INFO)
 !
 END SUBROUTINE ISUM0_ELEC_ll
@@ -477,8 +475,8 @@ JCENT_GLOB = IYOR + JCENT_LOC - 1
 !
 ! The proc with the center of the cell broadcast the global coord of the cell
 !
-CALL MPI_BCAST(ICENT_GLOB, 1, MPI_INTEGER, KPROC_COORD, NMNH_COMM_WORLD, IERR)
-CALL MPI_BCAST(JCENT_GLOB, 1, MPI_INTEGER, KPROC_COORD, NMNH_COMM_WORLD, IERR)
+CALL MPI_BCAST(ICENT_GLOB, 1, MNHINT_MPI, KPROC_COORD, NMNH_COMM_WORLD, IERR)
+CALL MPI_BCAST(JCENT_GLOB, 1, MNHINT_MPI, KPROC_COORD, NMNH_COMM_WORLD, IERR)
 !
 IS_GLOB = KIS + IXOR -1
 IE_GLOB = KIE + IXOR -1
diff --git a/src/MNH/retrieve2_nest_infon.f90 b/src/MNH/retrieve2_nest_infon.f90
index b97493253..4a6c1b27e 100644
--- a/src/MNH/retrieve2_nest_infon.f90
+++ b/src/MNH/retrieve2_nest_infon.f90
@@ -90,7 +90,8 @@ END MODULE MODI_RETRIEVE2_NEST_INFO_n
 !!      M.Faivre            2014
 !!      J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 
 !!      J.Escobar : 01/06/2016 : Bug in type of ZBUF INTEGER => REAL & use MNHREAL_MPI for r4/R8 compatibility
-!!  Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 05/2016-04/2018: new data structures and calls for I/O
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -106,7 +107,7 @@ USE MODD_MPIF
 USE MODD_PARAMETERS
 USE MODD_PGDDIM
 USE MODD_PGDGRID
-use modd_precision,    only: MNHREAL_MPI
+use modd_precision,    only: MNHINT_MPI, MNHREAL_MPI
 USE MODD_STRUCTURE_ll, ONLY: ZONE_ll
 USE MODD_VAR_ll,       ONLY: YSPLITTING, NMNH_COMM_WORLD
 !
@@ -345,8 +346,8 @@ ENDIF
     IOR_C(1:1)=0
     IOR_C(2:2)=0
   ENDIF
-  CALL MPI_ALLREDUCE(IOR_C(1:1), KXOR_C_ll, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
-  CALL MPI_ALLREDUCE(IOR_C(2:2), KYOR_C_ll, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
+  CALL MPI_ALLREDUCE(IOR_C(1:1), KXOR_C_ll, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
+  CALL MPI_ALLREDUCE(IOR_C(2:2), KYOR_C_ll, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
 !
 !*      1.4   modify coordinates
 ! so that XXHAT(JPEXT+1) and XYHAT(JPEXT+1) correspond to the coordinates of the closest father grid points east (resp. north) of XXHAT(JPEXT+1) and XYHAT(JPEXT+1)
@@ -640,8 +641,8 @@ ELSE
   IXSUP1(:)=0
   IYSUP1(:)=0
 ENDIF
-CALL MPI_ALLREDUCE(IXSUP1(1), KXSIZE, 1,MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLREDUCE(IYSUP1(1), KYSIZE, 1,MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLREDUCE(IXSUP1(1), KXSIZE, 1,MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLREDUCE(IYSUP1(1), KYSIZE, 1,MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll)
 IXSUP1(1) = KXSIZE
 IYSUP1(1) = KYSIZE
 !
@@ -651,8 +652,8 @@ KYSIZE=IYSUP1(1)-(KYOR_C_ll+JPHEXT)+1
 !
 ! some more tests
 !
-CALL MPI_ALLREDUCE(IIU-2*JPHEXT, IIUGLB, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
-CALL MPI_ALLREDUCE(IJU-2*JPHEXT, IJUGLB, 1,MPI_INTEGER, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLREDUCE(IIU-2*JPHEXT, IIUGLB, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
+CALL MPI_ALLREDUCE(IJU-2*JPHEXT, IJUGLB, 1,MNHINT_MPI, MPI_SUM, NMNH_COMM_WORLD, IINFO_ll)
 IIUGLB = IIUGLB + 2*JPHEXT
 IJUGLB = IJUGLB + 2*JPHEXT
 IF (     KXOR_C_ll<1 .OR. KXOR_C_ll+KXSIZE+2*JPHEXT>IIUGLB      &
diff --git a/src/MNH/zdiffusetup.f90 b/src/MNH/zdiffusetup.f90
index 40f2b1c79..b6751b5ea 100644
--- a/src/MNH/zdiffusetup.f90
+++ b/src/MNH/zdiffusetup.f90
@@ -53,23 +53,24 @@ END MODULE MODI_ZDIFFUSETUP
 ! Modifications:
 !  J. Escobar  07/10/2015: remove print
 !  P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg
+!  P. Wautelet 26/04/2019: use modd_precision parameters for datatypes of MPI communications
 !
 !*       0.    DECLARATIONS
 !              ------------ 
+USE MODD_ARGSLIST_ll, ONLY: LIST_ll, HALO2LIST_ll
+USE MODD_CONF
 USE MODD_CST
 USE MODD_PARAMETERS
-USE MODD_CONF
-USE MODI_RELAX
+use modd_precision,   only: MNHINT_MPI
+USE MODD_VAR_ll,      ONLY: NMNH_COMM_WORLD
+!
 USE MODE_ll
-USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD
-USE MODI_SHUMAN
-USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll
+USE MODE_SUM_LL
+USE MODE_TYPE_ZDIFFU
 !
+USE MODI_RELAX
+USE MODI_SHUMAN
 !
-!JUAN
-USE MODE_TYPE_ZDIFFU
-USE MODE_SUM_LL
-!JUAN 
 IMPLICIT NONE
 !
 !*       0.1   declarations of arguments
@@ -219,7 +220,7 @@ IKMAX_HALO2 = MAX(PZDIFFU_HALO2%NZDI,PZDIFFU_HALO2%NZDJ)
 PZDIFFU_HALO2%NZDLB = MAXVAL(IKMAX_HALO2) ! Model level, above which a truly horizontal computation of diffusion
                               ! is possible at all grid points
 !JUAN
-CALL MPI_ALLREDUCE(PZDIFFU_HALO2%NZDLB ,KZDLB_ll, 1, MPI_INTEGER, MPI_MAX, NMNH_COMM_WORLD, IERR)
+CALL MPI_ALLREDUCE(PZDIFFU_HALO2%NZDLB ,KZDLB_ll, 1, MNHINT_MPI, MPI_MAX, NMNH_COMM_WORLD, IERR)
 
 !print*,"zdiffusetup:: PZDIFFU_HALO2%NZDLB=",PZDIFFU_HALO2%NZDLB,KZDLB_ll
 PZDIFFU_HALO2%NZDLB = KZDLB_ll
-- 
GitLab