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