From 6175af5e9d3a029e977cb2fb185245a873577d15 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Fri, 22 Mar 2019 15:08:58 +0100 Subject: [PATCH] Philippe 22/03/2019: replace MPI_PRECISION and MPI_2PRECISION by MNHREAL_MPI and MNH2REAL_MPI --- src/LIB/SURCOUCHE/src/modd_var_ll.f90 | 17 +- src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 | 27 ++- src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 | 75 +++++---- src/LIB/SURCOUCHE/src/mode_init_ll.f90 | 6 - src/LIB/SURCOUCHE/src/mode_mppdb.f90 | 25 ++- src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 | 22 +-- src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 | 27 +-- src/LIB/SURCOUCHE/src/mode_sum_ll.f90 | 163 +++++++------------ src/LIB/SURCOUCHE/src/mode_tools_ll.f90 | 86 ++++------ src/MNH/clustering.f90 | 19 ++- src/MNH/extend_grid_parameter_mnh.f90 | 18 +- src/MNH/flash_geom_elec.f90 | 96 +++++------ src/MNH/modd_precision.f90 | 29 +++- src/MNH/mode_elec_ll.f90 | 15 +- src/MNH/prep_ideal_case.f90 | 8 +- src/MNH/pressurez.f90 | 5 +- src/MNH/retrieve2_nest_infon.f90 | 55 ++++--- src/MNH/spawn_model2.f90 | 3 +- src/MNH/spawn_zs.f90 | 11 +- src/MNH/write_lfifm1_for_diag.f90 | 3 +- src/SURFEX/mode_gridtype_conf_proj.F90 | 7 +- 21 files changed, 312 insertions(+), 405 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/modd_var_ll.f90 b/src/LIB/SURCOUCHE/src/modd_var_ll.f90 index b0688132f..cffb275aa 100644 --- a/src/LIB/SURCOUCHE/src/modd_var_ll.f90 +++ b/src/LIB/SURCOUCHE/src/modd_var_ll.f90 @@ -1,17 +1,8 @@ - -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1999-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- ! ################## MODULE MODD_VAR_ll @@ -46,6 +37,7 @@ ! Original 04/05/99 ! Modifications ! J.Escobar 5/06/2018 : add cpp key MNH_USE_MPI_STATUSES_IGNORE for use of true MPI_STATUSES_IGNORE +! P. Wautelet 22/03/2019: remove MPI_PRECISION and MPI_2PRECISION (replaced by MNHREAL_MPI and MNH2REAL_MPI in modd_precision) !------------------------------------------------------------------------------- ! USE MODD_STRUCTURE_ll @@ -118,11 +110,6 @@ INTEGER,SAVE :: NZ_PROC_ll = 0 ! Number of proc to use in the Z splitting ! DIMX = NIMAX + 2*JPHEXT ... ! INTEGER :: DIMX,DIMY,DIMZ -! -! MPI_PRECISION, MPI_2PRECISION -! - INTEGER :: MPI_PRECISION - INTEGER :: MPI_2PRECISION ! INTEGER, PARAMETER :: NTMAX = 100 ! diff --git a/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 index 767482a5c..dec89ca37 100644 --- a/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_exchange2_ll.f90 @@ -1,14 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ !----------------------------------------------------------------- !Correction : ! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 @@ -61,14 +55,14 @@ ! and local processor ! NHALO2_COM - MPI communicator for halo 2 ! NCOMBUFFSIZE2 - buffer size -! MPI_PRECISION - mpi precision +! MNHREAL_MPI - mpi precision ! NNEXTTAG, NMAXTAG - variable to define message tag ! !! Modifications !! ------------- ! Original May 19, 1998 ! R. Guivarch June 24, 1998 _ll -! R. Guivarch June 29, 1998 MPI_PRECISION +! R. Guivarch June 29, 1998 MNHREAL_MPI ! N. Gicquel October 30, 1998 COPY_CRSPD2 ! J.Escobar 10/02/2012 : Bug , in MPI_RECV replace ! MPI_STATUSES_IGNORE with MPI_STATUS_IGNORE @@ -691,7 +685,6 @@ ! Module MODD_VAR_ll ! IP - Number of local processor=subdomain ! NCOMBUFFSIZE2 - buffer size -! MPI_PRECISION - mpi precision ! NNEXTTAG, NMAXTAG - variable to define message tag ! !! Reference @@ -707,8 +700,8 @@ ! USE MODD_STRUCTURE_ll, ONLY : CRSPD_ll, ZONE_ll USE MODD_ARGSLIST_ll, ONLY : LIST_ll, HALO2LIST_ll -! - USE MODD_VAR_ll, ONLY : NCOMBUFFSIZE2, IP, MPI_PRECISION, NNEXTTAG, NMAXTAG + use modd_precision, only: MNHREAL_MPI + USE MODD_VAR_ll, ONLY : NCOMBUFFSIZE2, IP, NNEXTTAG, NMAXTAG USE MODE_EXCHANGE_ll, ONLY : FILLIN_BUFFERS USE MODD_MPIF !JUANZ @@ -829,13 +822,13 @@ INTEGER :: NB_REQ,NFIRST_REQ_RECV !JUAN !if defined(MNH_MPI_BSEND) IF (LMNH_MPI_BSEND) THEN - CALL MPI_BSEND(TZBUFFER, JINC, MPI_PRECISION, & + CALL MPI_BSEND(TZBUFFER, JINC, MNHREAL_MPI, & TZZONESEND%NUMBER - 1, TZZONESEND%MSSGTAG + ITAGOFFSET, & KMPI_COMM, KERROR) else !JUAN !if defined(MNH_MPI_ISEND) - CALL MPI_ISEND(TZBUFFER(1,NB_REQ), JINC, MPI_PRECISION, & + CALL MPI_ISEND(TZBUFFER(1,NB_REQ), JINC, MNHREAL_MPI, & TZZONESEND%NUMBER - 1, TZZONESEND%MSSGTAG + ITAGOFFSET, & KMPI_COMM, REQ_TAB(NB_REQ), KERROR) @@ -864,12 +857,12 @@ else !if defined (MNH_MPI_ISEND) IF ( .NOT. LMNH_MPI_BSEND) THEN NB_REQ = NB_REQ + 1 - CALL MPI_IRECV(TZBUFFER(1,NB_REQ), NCOMBUFFSIZE2, MPI_PRECISION, & + CALL MPI_IRECV(TZBUFFER(1,NB_REQ), NCOMBUFFSIZE2, MNHREAL_MPI, & TPMAILRECV%TELT%NUMBER-1, & TPMAILRECV%TELT%MSSGTAG + ITAGOFFSET, & KMPI_COMM, REQ_TAB(NB_REQ), KERROR) else - CALL MPI_RECV(TZBUFFER, NCOMBUFFSIZE2, MPI_PRECISION, & + CALL MPI_RECV(TZBUFFER, NCOMBUFFSIZE2, MNHREAL_MPI, & TPMAILRECV%TELT%NUMBER-1, & TPMAILRECV%TELT%MSSGTAG + ITAGOFFSET, & KMPI_COMM, MPI_STATUS_IGNORE, KERROR) diff --git a/src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 b/src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 index 0dff8c59c..6e85037bd 100644 --- a/src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_exchange_ll.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1998-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! Modifications: @@ -37,7 +37,6 @@ ! IP - Number of local processor=subdomain ! TCRRT_COMDATA - Current communication data structure for current model ! and local processor -! MPI_PRECISION - mpi precision ! JPHALO - size of the halo ! NCOMBUFFSIZE1 - buffer sizs ! NHALO_COM - mpi communicator @@ -68,7 +67,7 @@ !! Modifications !! ------------- ! Original May 19, 1998 -! R. Guivarch June 29, 1998 MPI_PRECISION +! R. Guivarch June 29, 1998 MNHREAL_MPI ! N. Gicquel, P. Kloos - October 01, 1998 - COPY_CRSPD, ! COPY_ZONE, COPY_CRSPD_TRANS, COPY_ZONE_TRANS ! M. Moge 01/12/14 UPDATE_HALO_EXTENDED @@ -398,7 +397,6 @@ ! Module MODD_VAR_ll ! TCRRT_COMDATA - Current communication data structure for current model ! and local processor -! MPI_PRECISION - mpi precision ! JPHALO - size of the halo ! ! Module MODD_DIM_ll @@ -418,7 +416,8 @@ !* 0. DECLARATIONS ! USE MODD_DIM_ll, ONLY : CLBCX, CLBCY - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, MPI_PRECISION, JPHALO + use modd_precision, only: MNHREAL_MPI + USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, JPHALO ! USE MODE_TOOLS_ll, ONLY : GET_INDICE_ll, LEAST_ll, LWEST_ll !JUANZ @@ -475,12 +474,12 @@ INTEGER :: NB_REQ ! !if defined(MNH_MPI_BSEND) IF (LMNH_MPI_BSEND) THEN - CALL MPI_BSEND(PFIELD(IXOR), JPHALO, MPI_PRECISION, & + CALL MPI_BSEND(PFIELD(IXOR), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DX%NSEND_WEST(J)-1, & 1, NMNH_COMM_WORLD, KINFO) else NB_REQ = NB_REQ + 1 - CALL MPI_ISEND(PFIELD(IXOR), JPHALO, MPI_PRECISION, & + CALL MPI_ISEND(PFIELD(IXOR), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DX%NSEND_WEST(J)-1, & 1, NMNH_COMM_WORLD, REQ_TAB(NB_REQ), KINFO) @@ -492,14 +491,14 @@ INTEGER :: NB_REQ ! !if defined(MNH_MPI_BSEND) IF (LMNH_MPI_BSEND) THEN - CALL MPI_BSEND(PFIELD(IXEND-JPHALO+1), JPHALO, MPI_PRECISION, & + CALL MPI_BSEND(PFIELD(IXEND-JPHALO+1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DX%NSEND_EAST(J)-1, & 2, NMNH_COMM_WORLD, KINFO) else !JUAN !if defined(MNH_MPI_ISEND) NB_REQ = NB_REQ + 1 - CALL MPI_ISEND(PFIELD(IXEND-JPHALO+1), JPHALO, MPI_PRECISION, & + CALL MPI_ISEND(PFIELD(IXEND-JPHALO+1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DX%NSEND_EAST(J)-1, & 2, NMNH_COMM_WORLD, REQ_TAB(NB_REQ), KINFO) @@ -519,11 +518,11 @@ INTEGER :: NB_REQ !if defined(MNH_MPI_ISEND) IF ( .NOT. LMNH_MPI_BSEND) THEN NB_REQ = NB_REQ + 1 - CALL MPI_IRECV(PFIELD(IXEND+1), JPHALO, MPI_PRECISION, & + CALL MPI_IRECV(PFIELD(IXEND+1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DX%NRECV_EAST-1, 1, & NMNH_COMM_WORLD, REQ_TAB(NB_REQ), KINFO) else - CALL MPI_RECV(PFIELD(IXEND+1), JPHALO, MPI_PRECISION, & + CALL MPI_RECV(PFIELD(IXEND+1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DX%NRECV_EAST-1, 1, & NMNH_COMM_WORLD, ISTATUS, KINFO) endif @@ -537,11 +536,11 @@ INTEGER :: NB_REQ !if defined(MNH_MPI_ISEND) IF ( .NOT. LMNH_MPI_BSEND) THEN NB_REQ = NB_REQ + 1 - CALL MPI_IRECV(PFIELD(1), JPHALO, MPI_PRECISION, & + CALL MPI_IRECV(PFIELD(1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DX%NRECV_WEST-1, 2, & NMNH_COMM_WORLD, REQ_TAB(NB_REQ), KINFO) else - CALL MPI_RECV(PFIELD(1), JPHALO, MPI_PRECISION, & + CALL MPI_RECV(PFIELD(1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DX%NRECV_WEST-1, 2, & NMNH_COMM_WORLD, ISTATUS, KINFO) endif @@ -586,7 +585,6 @@ INTEGER :: NB_REQ ! Module MODD_VAR_ll ! TCRRT_COMDATA - Current communication data structure for current model ! and local processor -! MPI_PRECISION - mpi precision ! JPHALO - size of the halo ! ! Module MODD_DIM_ll @@ -598,7 +596,8 @@ INTEGER :: NB_REQ !* 0. DECLARATIONS ! USE MODD_DIM_ll, ONLY : CLBCX, CLBCY - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, JPHALO, MPI_PRECISION + use modd_precision, only: MNHREAL_MPI + USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, JPHALO ! USE MODE_TOOLS_ll, ONLY : GET_INDICE_ll, LNORTH_ll, LSOUTH_ll ! @@ -654,13 +653,13 @@ INTEGER :: NB_REQ ! !if defined(MNH_MPI_BSEND) IF (LMNH_MPI_BSEND) THEN - CALL MPI_BSEND(PFIELD(IYOR), JPHALO, MPI_PRECISION, & + CALL MPI_BSEND(PFIELD(IYOR), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DY%NSEND_SOUTH(J)-1, & 1, NMNH_COMM_WORLD, KINFO) else NB_REQ = NB_REQ + 1 - CALL MPI_ISEND(PFIELD(IYOR), JPHALO, MPI_PRECISION, & + CALL MPI_ISEND(PFIELD(IYOR), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DY%NSEND_SOUTH(J)-1, & 1, NMNH_COMM_WORLD, REQ_TAB(NB_REQ), KINFO) @@ -672,14 +671,14 @@ INTEGER :: NB_REQ ! !if defined(MNH_MPI_BSEND) IF (LMNH_MPI_BSEND) THEN - CALL MPI_BSEND(PFIELD(IYEND-JPHALO+1), JPHALO, MPI_PRECISION, & + CALL MPI_BSEND(PFIELD(IYEND-JPHALO+1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DY%NSEND_NORTH(J)-1, & 2, NMNH_COMM_WORLD, KINFO) else !JUAN !if defined(MNH_MPI_ISEND) NB_REQ = NB_REQ + 1 - CALL MPI_ISEND(PFIELD(IYEND-JPHALO+1), JPHALO, MPI_PRECISION, & + CALL MPI_ISEND(PFIELD(IYEND-JPHALO+1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DY%NSEND_NORTH(J)-1, & 2, NMNH_COMM_WORLD, REQ_TAB(NB_REQ), KINFO) @@ -698,11 +697,11 @@ INTEGER :: NB_REQ !if defined(MNH_MPI_ISEND) IF ( .NOT. LMNH_MPI_BSEND) THEN NB_REQ = NB_REQ + 1 - CALL MPI_IRECV(PFIELD(IYEND+1), JPHALO, MPI_PRECISION, & + CALL MPI_IRECV(PFIELD(IYEND+1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DY%NRECV_NORTH-1, 1, & NMNH_COMM_WORLD, REQ_TAB(NB_REQ), KINFO) else - CALL MPI_RECV(PFIELD(IYEND+1), JPHALO, MPI_PRECISION, & + CALL MPI_RECV(PFIELD(IYEND+1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DY%NRECV_NORTH-1, 1, & NMNH_COMM_WORLD, ISTATUS, KINFO) endif @@ -716,11 +715,11 @@ INTEGER :: NB_REQ !if defined(MNH_MPI_ISEND) IF ( .NOT. LMNH_MPI_BSEND) THEN NB_REQ = NB_REQ + 1 - CALL MPI_IRECV(PFIELD(1), JPHALO, MPI_PRECISION, & + CALL MPI_IRECV(PFIELD(1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DY%NRECV_SOUTH-1, 2, & NMNH_COMM_WORLD, REQ_TAB(NB_REQ), KINFO) else - CALL MPI_RECV(PFIELD(1), JPHALO, MPI_PRECISION, & + CALL MPI_RECV(PFIELD(1), JPHALO, MNHREAL_MPI, & TCRRT_COMDATA%HALO1DY%NRECV_SOUTH-1, 2, & NMNH_COMM_WORLD, ISTATUS, KINFO) endif @@ -1898,7 +1897,6 @@ INTEGER :: NB_REQ ! IP - Number of local processor=subdomain ! NCOMBUFFSIZE1 - buffer size ! NTRANS_COM - mpi communicator -! MPI_PRECISION - mpi precision ! NNEXTTAG, NMAXTAG - variable to define message tag ! ! Module MODD_PARAMETERS_ll @@ -1921,8 +1919,9 @@ INTEGER :: NB_REQ ! ------------ ! USE MODD_ARGSLIST_ll, ONLY : LIST_ll + use modd_precision, only: MNHREAL_MPI USE MODD_STRUCTURE_ll, ONLY : CRSPD_ll, ZONE_ll - USE MODD_VAR_ll, ONLY : NCOMBUFFSIZE1, IP, NTRANS_COM, MPI_PRECISION, & + USE MODD_VAR_ll, ONLY : NCOMBUFFSIZE1, IP, NTRANS_COM, & NNEXTTAG, NMAXTAG USE MODD_PARAMETERS_ll, ONLY : JPVEXT USE MODD_DIM_ll, ONLY : NKMAX_TMP_ll @@ -2095,11 +2094,11 @@ INTEGER :: NB_REQ,NFIRST_REQ_RECV ! !if defined(MNH_MPI_BSEND) IF (LMNH_MPI_BSEND) THEN - CALL MPI_BSEND(TZBUFFER, JINC, MPI_PRECISION, TZZONESEND%NUMBER - 1, & + CALL MPI_BSEND(TZBUFFER, JINC, MNHREAL_MPI, TZZONESEND%NUMBER - 1, & TZZONESEND%MSSGTAG + ITAGOFFSET, NTRANS_COM, KERROR) else - CALL MPI_ISEND(TZBUFFER(1,NB_REQ), JINC, MPI_PRECISION, TZZONESEND%NUMBER - 1, & + CALL MPI_ISEND(TZBUFFER(1,NB_REQ), JINC, MNHREAL_MPI, TZZONESEND%NUMBER - 1, & TZZONESEND%MSSGTAG + ITAGOFFSET, NTRANS_COM, REQ_TAB(NB_REQ), KERROR) endif @@ -2127,13 +2126,13 @@ INTEGER :: NB_REQ,NFIRST_REQ_RECV !if defined (MNH_MPI_ISEND) IF ( .NOT. LMNH_MPI_BSEND) THEN NB_REQ = NB_REQ + 1 - !JUAN NZ CALL MPI_IRECV(TZBUFFER(1,NB_REQ), NCOMBUFFSIZE1, MPI_PRECISION, & - CALL MPI_IRECV(TZBUFFER(1,NB_REQ), IBUFFSIZE, MPI_PRECISION, & + !JUAN NZ CALL MPI_IRECV(TZBUFFER(1,NB_REQ), NCOMBUFFSIZE1, MNHREAL_MPI, & + CALL MPI_IRECV(TZBUFFER(1,NB_REQ), IBUFFSIZE, MNHREAL_MPI, & TZZONERECV%NUMBER-1, TZZONERECV%MSSGTAG + ITAGOFFSET, & NTRANS_COM, REQ_TAB(NB_REQ), KERROR) else - !JUAN NZ CALL MPI_RECV(TZBUFFER, NCOMBUFFSIZE1, MPI_PRECISION, TZZONERECV%NUMBER-1, & - CALL MPI_RECV(TZBUFFER, IBUFFSIZE, MPI_PRECISION, TZZONERECV%NUMBER-1, & + !JUAN NZ CALL MPI_RECV(TZBUFFER, NCOMBUFFSIZE1, MNHREAL_MPI, TZZONERECV%NUMBER-1, & + CALL MPI_RECV(TZBUFFER, IBUFFSIZE, MNHREAL_MPI, TZZONERECV%NUMBER-1, & TZZONERECV%MSSGTAG + ITAGOFFSET, NTRANS_COM, IRECVSTATUS, KERROR) !JUAN ! Z axe @@ -2291,7 +2290,6 @@ INTEGER :: NB_REQ,NFIRST_REQ_RECV ! IP - Number of local processor=subdomain ! NCOMBUFFSIZE1 - buffer size ! NTRANS_COM - mpi communicator -! MPI_PRECISION - mpi precision ! NNEXTTAG, NMAXTAG - variable to define message tag ! ! Module MODD_PARAMETERS_ll @@ -2310,8 +2308,9 @@ INTEGER :: NB_REQ,NFIRST_REQ_RECV !------------------------------------------------------------------------------- ! USE MODD_ARGSLIST_ll, ONLY : LIST_ll + use modd_precision, only: MNHREAL_MPI USE MODD_STRUCTURE_ll, ONLY : CRSPD_ll, ZONE_ll - USE MODD_VAR_ll, ONLY : NCOMBUFFSIZE1, IP, MPI_PRECISION, NNEXTTAG, NMAXTAG + USE MODD_VAR_ll, ONLY : NCOMBUFFSIZE1, IP, NNEXTTAG, NMAXTAG USE MODD_DIM_ll, ONLY : NKMAX_TMP_ll USE MODD_PARAMETERS_ll, ONLY : JPVEXT ! @@ -2454,12 +2453,12 @@ endif ! JUAN !if defined(MNH_MPI_BSEND) IF (LMNH_MPI_BSEND) THEN - CALL MPI_BSEND(TZBUFFER, JINC, MPI_PRECISION, TZZONESEND%NUMBER - 1, & + CALL MPI_BSEND(TZBUFFER, JINC, MNHREAL_MPI, TZZONESEND%NUMBER - 1, & TZZONESEND%MSSGTAG + ITAGOFFSET, KMPI_COMM, KERROR) else ! JUAN !if defined (MNH_MPI_ISEND) - CALL MPI_ISEND(TZBUFFER(1,NB_REQ), JINC, MPI_PRECISION, TZZONESEND%NUMBER - 1, & + CALL MPI_ISEND(TZBUFFER(1,NB_REQ), JINC, MNHREAL_MPI, TZZONESEND%NUMBER - 1, & TZZONESEND%MSSGTAG + ITAGOFFSET, KMPI_COMM, REQ_TAB(NB_REQ), KERROR) endif @@ -2485,12 +2484,12 @@ endif !if defined (MNH_MPI_ISEND) IF ( .NOT. LMNH_MPI_BSEND) THEN NB_REQ = NB_REQ + 1 - CALL MPI_IRECV(TZBUFFER(1,NB_REQ), IBUFFSIZE, MPI_PRECISION, & + CALL MPI_IRECV(TZBUFFER(1,NB_REQ), IBUFFSIZE, MNHREAL_MPI, & TPMAILRECV%TELT%NUMBER -1 , & TPMAILRECV%TELT%MSSGTAG + ITAGOFFSET, & KMPI_COMM, REQ_TAB(NB_REQ), KERROR) else - CALL MPI_RECV(TZBUFFER, IBUFFSIZE, MPI_PRECISION, & + CALL MPI_RECV(TZBUFFER, IBUFFSIZE, MNHREAL_MPI, & TPMAILRECV%TELT%NUMBER -1 , & TPMAILRECV%TELT%MSSGTAG + ITAGOFFSET, & KMPI_COMM, IRECVSTATUS, KERROR) diff --git a/src/LIB/SURCOUCHE/src/mode_init_ll.f90 b/src/LIB/SURCOUCHE/src/mode_init_ll.f90 index 58bd9cb4c..e76b19ed7 100644 --- a/src/LIB/SURCOUCHE/src/mode_init_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_init_ll.f90 @@ -50,11 +50,8 @@ !------------------------------------------------------------------------------- ! USE MODD_MPIF - use modd_precision, only: MNHREAL_MPI, MNH2REAL_MPI ! IMPLICIT NONE -! -! INCLUDE 'mpif.h' ! CONTAINS ! @@ -547,9 +544,6 @@ ! IP = IP + 1 ! - MPI_PRECISION = MNHREAL_MPI - MPI_2PRECISION = MNH2REAL_MPI - ! !------------------------------------------------------------------------------- ! !* 2. SET OUTPUT FILE : diff --git a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 b/src/LIB/SURCOUCHE/src/mode_mppdb.f90 index 575fb7b8e..12fab3263 100644 --- a/src/LIB/SURCOUCHE/src/mode_mppdb.f90 +++ b/src/LIB/SURCOUCHE/src/mode_mppdb.f90 @@ -267,7 +267,7 @@ CONTAINS SUBROUTINE MPPDB_CHECK3D(PTAB,MESSAGE,PRECISION) USE MODD_PARAMETERS_ll, ONLY : JPHEXT - USE MODD_VAR_ll , ONLY : MPI_PRECISION + use modd_precision, only: MNHREAL_MPI USE MODD_MPIF , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM USE MODE_GATHER_ll @@ -347,7 +347,7 @@ CONTAINS ALLOCATE(TAB_SON_ll(IIU_SON_ll,IJU_SON_ll,IKU_SON_ll)) ! - CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_PRECISION,I_FIRST_SON, & + CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MNHREAL_MPI,I_FIRST_SON, & ITAG2, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll) ! @@ -409,7 +409,7 @@ CONTAINS CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, & ITAG1, MPPDB_INTRA_COMM, IINFO_ll) - CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MPI_PRECISION,I_FIRST_FATHER, & + CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MNHREAL_MPI,I_FIRST_FATHER, & ITAG2, MPPDB_INTRA_COMM, IINFO_ll) END IF @@ -463,8 +463,8 @@ CONTAINS USE MODD_PARAMETERS_ll, ONLY : JPHEXT USE MODE_GATHER_ll - USE MODD_VAR_ll , ONLY : MPI_PRECISION USE MODD_MPIF , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE, MPI_SUM + use modd_precision, only: MNHREAL_MPI USE MODD_VAR_ll , ONLY : NMNH_COMM_WORLD @@ -537,7 +537,7 @@ CONTAINS ALLOCATE(TAB_SON_ll(IIU_SON_ll,IJU_SON_ll)) ! - CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_PRECISION,I_FIRST_SON, & + CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MNHREAL_MPI,I_FIRST_SON, & ITAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll) ! @@ -594,7 +594,7 @@ CONTAINS I_FIRST_FATHER = 0 CALL MPI_BSEND(JPHEXT,1,MPI_INTEGER,I_FIRST_FATHER, & ITAG, MPPDB_INTRA_COMM, IINFO_ll) - CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MPI_PRECISION,I_FIRST_FATHER, & + CALL MPI_BSEND(TAB_ll,SIZE(TAB_ll),MNHREAL_MPI,I_FIRST_FATHER, & ITAG, MPPDB_INTRA_COMM, IINFO_ll) END IF END IF @@ -611,9 +611,10 @@ CONTAINS SUBROUTINE MPPDB_CHECKLB(PLB,MESSAGE,PRECISION,HLBTYPE,KRIM) USE MODD_PARAMETERS_ll, ONLY : JPHEXT - USE MODD_VAR_ll , ONLY : MPI_PRECISION , NMNH_COMM_WORLD + USE MODD_VAR_ll , ONLY : NMNH_COMM_WORLD USE MODD_IO_ll, ONLY : ISP,ISNPROC,GSMONOPROC,LPACK,L2D USE MODD_MPIF , ONLY : MPI_INTEGER, MPI_STATUS_IGNORE + use modd_precision, only: MNHREAL_MPI USE MODE_DISTRIB_LB USE MODE_TOOLS_ll, ONLY : GET_GLOBALDIMS_ll @@ -680,7 +681,7 @@ CONTAINS IF (IIB /= 0) THEN TX3DP=>Z3D(IIB:IIE,IJB:IJE,:) IF (ISP /= JI) THEN - CALL MPI_RECV(TX3DP,SIZE(TX3DP),MPI_PRECISION,JI-1 & + CALL MPI_RECV(TX3DP,SIZE(TX3DP),MNHREAL_MPI,JI-1 & ,99,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll) ELSE CALL GET_DISTRIB_LB(HLBTYPE,JI,'LOC','WRITE',KRIM,IIB,IIE,IJB,IJE) @@ -696,7 +697,7 @@ CONTAINS CALL GET_DISTRIB_LB(HLBTYPE,ISP,'LOC','WRITE',KRIM,IIB,IIE,IJB,IJE) IF (IIB /= 0) THEN TX3DP=>PLB(IIB:IIE,IJB:IJE,:) - CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MPI_PRECISION,0,99,NMNH_COMM_WORLD,IINFO_ll) + CALL MPI_BSEND(TX3DP,SIZE(TX3DP),MNHREAL_MPI,0,99,NMNH_COMM_WORLD,IINFO_ll) END IF END IF @@ -727,7 +728,7 @@ CONTAINS ! ALLOCATE(TAB_SON_ll(IIU_SON_ll,IJU_SON_ll,IKU_SON_ll)) ! - CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MPI_PRECISION,I_FIRST_SON, & + CALL MPI_RECV(TAB_SON_ll,SIZE(TAB_SON_ll),MNHREAL_MPI,I_FIRST_SON, & ITAG, MPPDB_INTRA_COMM,MPI_STATUS_IGNORE, IINFO_ll) ! IDIFF_HEXT = MIN(JPHEXT,IHEXT_SON_ll) @@ -780,7 +781,7 @@ CONTAINS IHEXT_SON_ll = JPHEXT CALL MPI_BSEND(IHEXT_SON_ll,1,MPI_INTEGER,I_FIRST_FATHER, & ITAG, MPPDB_INTRA_COMM, IINFO_ll) - CALL MPI_BSEND(PLB,SIZE(PLB),MPI_PRECISION,I_FIRST_FATHER, & + CALL MPI_BSEND(PLB,SIZE(PLB),MNHREAL_MPI,I_FIRST_FATHER, & ITAG, MPPDB_INTRA_COMM, IINFO_ll) END IF END IF @@ -794,7 +795,6 @@ CONTAINS SUBROUTINE MPPDB_CHECK_SURFEX2D(PTAB,MESSAGE,PRECISION,KLUOUT,HTYPE,KIU,KJU) USE MODD_PARAMETERS, ONLY : JPHEXT - USE MODD_VAR_ll , ONLY : MPI_PRECISION USE MODI_GET_1D_MASK USE MODI_UNPACK_SAME_RANK USE MODI_GET_SURF_MASK_n @@ -892,7 +892,6 @@ CONTAINS SUBROUTINE MPPDB_CHECK_SURFEX3D(PTAB,MESSAGE,PRECISION,KLUOUT,HTYPE,KZSIZE) USE MODD_PARAMETERS, ONLY : JPHEXT - USE MODD_VAR_ll , ONLY : MPI_PRECISION USE MODI_GET_1D_MASK USE MODI_UNPACK_SAME_RANK USE MODI_GET_SURF_MASK_n diff --git a/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 b/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 index f16a0b180..5461edc4c 100644 --- a/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ######################## @@ -31,7 +31,6 @@ MODULE MODE_SPLITTINGZ_ll ! Modifications: ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O USE MODD_MPIF - use modd_precision, only: MNHREAL_MPI, MNH2REAL_MPI ! USE MODE_SPLITTING_ll ! @@ -172,9 +171,6 @@ CONTAINS ! CALL MPI_COMM_DUP(NMNH_COMM_WORLD, NGRID_COM, KINFO_ll) ! - MPI_PRECISION = MNHREAL_MPI - MPI_2PRECISION = MNH2REAL_MPI - ! ! For bug with intelmpi+ilp64+i8 declare MNH_STATUSES_IGNORE ! #ifndef MNH_USE_MPI_STATUSES_IGNORE @@ -1821,12 +1817,10 @@ END FUNCTION LSOUTHZ_ll SUBROUTINE ALL_SEND_RECV(TSEND_BOX_FROM,TRECV_BOX_TO, & PFIELDIN, PFIELDOUT, KINFO) ! - USE MODD_STRUCTURE_ll , ONLY : BOX_ll - USE MODD_VAR_ll , ONLY : MPI_PRECISION - !JUANZ - !USE MODD_MPIF , ONLY : MPI_COMM_WORLD - USE MODD_VAR_ll , ONLY : NMNH_COMM_WORLD - !JUANZ + use modd_precision, only: MNHREAL_MPI + USE MODD_STRUCTURE_ll, ONLY: BOX_ll + USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD + ! IMPLICIT NONE ! ! Argument @@ -1859,8 +1853,8 @@ END FUNCTION LSOUTHZ_ll END IF END DO ! - CALL mpi_alltoallv(ZSEND,TSEND_BOX_FROM%NCNT,TSEND_BOX_FROM%NSTRT,MPI_PRECISION,& - ZRECV,TRECV_BOX_TO%NCNT ,TRECV_BOX_TO%NSTRT ,MPI_PRECISION,& + CALL mpi_alltoallv(ZSEND,TSEND_BOX_FROM%NCNT,TSEND_BOX_FROM%NSTRT,MNHREAL_MPI,& + ZRECV,TRECV_BOX_TO%NCNT ,TRECV_BOX_TO%NSTRT ,MNHREAL_MPI,& TSEND_BOX_FROM%NCOM,KINFO) ! JCNT = 0 diff --git a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 index 1580724bd..23638d194 100644 --- a/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_sum2_ll.f90 @@ -1,16 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- -!----------------------------------------------------------------- ! ################### MODULE MODE_SUM2_ll @@ -576,7 +568,6 @@ ENDIF ! ! Module MODD_VAR_ll ! IP - -! MPI_2PRECISION ! !! Author !! ------ @@ -590,7 +581,8 @@ ENDIF ! !* 0. DECLARATIONS ! - USE MODD_VAR_ll, ONLY : IP, MPI_2PRECISION + use modd_precision, only: MNH2REAL_MPI + USE MODD_VAR_ll, ONLY: IP ! IMPLICIT NONE ! @@ -623,7 +615,7 @@ ENDIF ! ZBUFIN (1) = PVALUE ZBUFIN (2) = IP - CALL MPI_ALLREDUCE(ZBUFIN, ZBUFOUT, 1, MPI_2PRECISION, MPI_MAXLOC, & + CALL MPI_ALLREDUCE(ZBUFIN, ZBUFOUT, 1, MNH2REAL_MPI, MPI_MAXLOC, & NMNH_COMM_WORLD, IERR) ! ! @@ -675,7 +667,6 @@ ENDIF ! Module MODD_VAR_ll ! TCRRT_PROCONF - Current configuration for current model ! IP - -! MPI_2PRECISION ! !! Author !! ------ @@ -689,9 +680,9 @@ ENDIF ! !* 0. DECLARATIONS ! - USE MODD_VAR_ll, ONLY : IP, MPI_2PRECISION, TCRRT_PROCONF -! - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll + use modd_precision, only: MNH2REAL_MPI + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: IP, TCRRT_PROCONF ! IMPLICIT NONE ! @@ -731,7 +722,7 @@ ENDIF ZBUFIN (1) = PVALUE ZBUFIN (2) = IP ! - CALL MPI_ALLREDUCE(ZBUFIN, ZBUFOUT, 1, MPI_2PRECISION, MPI_MAXLOC, & + CALL MPI_ALLREDUCE(ZBUFIN, ZBUFOUT, 1, MNH2REAL_MPI, MPI_MAXLOC, & 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 0fb298150..9f588cfa2 100644 --- a/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_sum_ll.f90 @@ -1,15 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- !Correction : ! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !----------------------------------------------------------------- @@ -57,7 +50,6 @@ ! NPROC - ! IP - ! JPHALO - -! MPI_PRECISION - ! ! Module MODD_STRUCTURE_ll ! type MODELSPLITTING_ll @@ -65,11 +57,8 @@ !------------------------------------------------------------------------------ ! USE MODD_MPIF - !JUANZ - USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD - !JUANZ -! -! INCLUDE 'mpif.h' + use modd_precision, only: MNHREAL_MPI + USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD ! CONTAINS ! @@ -110,7 +99,6 @@ ! Module MODD_VAR_ll ! TCRRT_COMDATA - Current communication data structure for current model ! and local processor -! MPI_PRECISION - ! !! Reference !! --------- @@ -127,9 +115,9 @@ ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT, JPVEXT - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, MPI_PRECISION - USE MODE_TOOLS_ll, ONLY : LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT + USE MODD_VAR_ll, ONLY: TCRRT_COMDATA + USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -299,7 +287,7 @@ ! !* 3.4 Summation with all the processors ! - CALL MPI_ALLREDUCE(ZBUF, ZBUFD, IDIM, MPI_PRECISION, & + CALL MPI_ALLREDUCE(ZBUF, ZBUFD, IDIM, MNHREAL_MPI, & MPI_SUM, NMNH_COMM_WORLD, KINFO) ! !* 3.5 Return the result @@ -357,7 +345,6 @@ ! Module MODD_VAR_ll ! TCRRT_COMDATA - Current communication data structure for current model ! and local processor -! MPI_PRECISION - ! !! Implicit Arguments !! ------------------ @@ -377,10 +364,10 @@ ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT, JPVEXT - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, MPI_PRECISION + USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT + USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY : LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -601,7 +588,7 @@ ! !* 3.4 Summation with all the processors ! - CALL MPI_ALLREDUCE(ZBUF, ZBUFD, IDIM, MPI_PRECISION, & + CALL MPI_ALLREDUCE(ZBUF, ZBUFD, IDIM, MNHREAL_MPI, & MPI_SUM, NMNH_COMM_WORLD, KINFO) ! !* 3.5 Return the result @@ -659,7 +646,6 @@ ! Module MODD_VAR_ll ! TCRRT_COMDATA - Current communication data structure for current model ! and local processor -! MPI_PRECISION - ! !! Implicit Arguments !! ------------------ @@ -680,10 +666,10 @@ ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT, JPVEXT - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, MPI_PRECISION + USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT + USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY : LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -903,7 +889,7 @@ ! !* 3.4 Summation with all the processors ! - CALL MPI_ALLREDUCE(ZBUF, ZBUFD, IDIM, MPI_PRECISION, & + CALL MPI_ALLREDUCE(ZBUF, ZBUFD, IDIM, MNHREAL_MPI, & MPI_SUM, NMNH_COMM_WORLD, KINFO) ! !* 3.5 Return the result @@ -961,7 +947,6 @@ ! Module MODD_VAR_ll ! TCRRT_COMDATA - Current communication data structure for current model ! and local processor -! MPI_PRECISION - ! !! Implicit Arguments !! ------------------ @@ -982,10 +967,10 @@ ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT, JPVEXT - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, MPI_PRECISION + USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT + USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY : LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! USE MODE_TOOLS_ll ! @@ -1136,7 +1121,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 3.4 Summation with all the processors ! -!!$ CALL MPI_ALLREDUCE(ZSUM3D, SUM3D_ll, 1, MPI_PRECISION, & +!!$ CALL MPI_ALLREDUCE(ZSUM3D, SUM3D_ll, 1, MNHREAL_MPI, & !!$ MPI_SUM, NMNH_COMM_WORLD, KINFO) !!$! !!$! gathers the total 2D field @@ -1197,7 +1182,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! and local processor ! TCRRT_PROCONF - Current configuration for current model ! NPROC - -! MPI_PRECISION - ! !! Reference !! --------- @@ -1216,11 +1200,11 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll - USE MODD_VAR_ll, ONLY : IP, TCRRT_COMDATA, TCRRT_PROCONF, NPROC, MPI_PRECISION + USE MODD_PARAMETERS_ll, ONLY: JPHEXT + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: IP, TCRRT_COMDATA, TCRRT_PROCONF, NPROC ! - USE MODE_TOOLS_ll, ONLY : LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -1339,8 +1323,8 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! ALLOCATE(ZGLOBFIELD(IGE-IGB+1)) CALL MPI_ALLGATHERV(PFIELD(IB-IORE(IDIR)+1:), ISIZE, & - MPI_PRECISION, ZGLOBFIELD, ISIZES, IDISPL, & - MPI_PRECISION, NMNH_COMM_WORLD, IERR) + MNHREAL_MPI, ZGLOBFIELD, ISIZES, IDISPL, & + MNHREAL_MPI, NMNH_COMM_WORLD, IERR) ! !------------------------------------------------------------------------------- ! @@ -1399,7 +1383,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! and local processor ! TCRRT_PROCONF - Current configuration for current model ! NPROC - -! MPI_PRECISION - ! !! Reference !! --------- @@ -1418,10 +1401,10 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT, JPVEXT - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, MPI_PRECISION + USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT + USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY : LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -1560,7 +1543,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 3.4 Reduction with all the processors ! - CALL MPI_ALLREDUCE(ZMAX, MAX_ll, 1, MPI_PRECISION, & + CALL MPI_ALLREDUCE(ZMAX, MAX_ll, 1, MNHREAL_MPI, & MPI_MAX, NMNH_COMM_WORLD, KINFO) ! ENDIF @@ -1612,7 +1595,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! and local processor ! TCRRT_PROCONF - Current configuration for current model ! NPROC - -! MPI_PRECISION - ! !! Reference !! --------- @@ -1631,10 +1613,10 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT, JPVEXT - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, MPI_PRECISION + USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT + USE MODD_VAR_ll, ONLY: TCRRT_COMDATA ! - USE MODE_TOOLS_ll, ONLY : LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll + USE MODE_TOOLS_ll, ONLY: LNORTH_ll, LSOUTH_ll, LEAST_ll, LWEST_ll ! IMPLICIT NONE ! @@ -1773,7 +1755,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! ! 3.4 Reduction with all the processors ! - CALL MPI_ALLREDUCE(ZMIN, MIN_ll, 1, MPI_PRECISION, & + CALL MPI_ALLREDUCE(ZMIN, MIN_ll, 1, MNHREAL_MPI, & MPI_MIN, NMNH_COMM_WORLD, KINFO) ! ENDIF @@ -1809,7 +1791,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! Module MODD_VAR_ll ! TCRRT_COMDATA - Current communication data structure for current model ! and local processor -! MPI_PRECISION - ! !! Reference !! --------- @@ -1826,7 +1807,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 0. DECLARATIONS ! - USE MODD_VAR_ll, ONLY : TCRRT_COMDATA, MPI_PRECISION + USE MODD_VAR_ll, ONLY : TCRRT_COMDATA ! ! IMPLICIT NONE @@ -1862,7 +1843,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! --------------------------------- ! CALL MPI_ALLREDUCE(ZBUF, ZBUFD, SIZE(PFIELD,3), & - MPI_PRECISION, MPI_SUM, NMNH_COMM_WORLD, KINFO) + MNHREAL_MPI, MPI_SUM, NMNH_COMM_WORLD, KINFO) ! !------------------------------------------------------------------------------- ! @@ -1899,8 +1880,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll !! Implicit Arguments !! ------------------ ! -! Module MODD_VAR_ll -! MPI_PRECISION - ! !! Reference !! --------- @@ -1916,8 +1895,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS -! - USE MODD_VAR_ll, ONLY : MPI_PRECISION ! IMPLICIT NONE ! @@ -1953,7 +1930,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll !* 2. REDUCTION WITH ALL THE PROCESSORS : ! --------------------------------- ! - CALL MPI_ALLREDUCE(ZSUM, SUMMASKCOMP_ll, 1, MPI_PRECISION, & + CALL MPI_ALLREDUCE(ZSUM, SUMMASKCOMP_ll, 1, MNHREAL_MPI, & MPI_SUM, NMNH_COMM_WORLD, KINFO) ! !------------------------------------------------------------------------------- @@ -1995,7 +1972,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! and local processor ! TCRRT_PROCONF - Current configuration for current model ! IP - -! MPI_PRECISION - ! JPHALO - ! !! Author @@ -2010,12 +1986,10 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 0. DECLARATIONS ! - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: IP, TCRRT_COMDATA, TCRRT_PROCONF, JPHALO ! - USE MODD_VAR_ll, ONLY : IP, TCRRT_COMDATA, TCRRT_PROCONF, JPHALO, & - MPI_PRECISION -! - USE MODE_TOOLS_ll, ONLY : LWEST_ll, LEAST_ll + USE MODE_TOOLS_ll, ONLY: LWEST_ll, LEAST_ll ! IMPLICIT NONE ! @@ -2071,7 +2045,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll !* 3. MERGE LOCAL SUMS ! ---------------- ! - CALL MPI_ALLREDUCE(ZBUF, PRES, SIZE(PRES), MPI_PRECISION, MPI_SUM, & + CALL MPI_ALLREDUCE(ZBUF, PRES, SIZE(PRES), MNHREAL_MPI, MPI_SUM, & NMNH_COMM_WORLD,KINFO) ! !----------------------------------------------------------------- @@ -2113,7 +2087,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! and local processor ! TCRRT_PROCONF - Current configuration for current model ! IP - -! MPI_PRECISION - ! JPHALO - ! !! Author @@ -2129,14 +2102,11 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 0. DECLARATIONS ! - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll -! - USE MODD_VAR_ll, ONLY : IP, TCRRT_COMDATA, TCRRT_PROCONF, JPHALO, & - MPI_PRECISION -! - USE MODE_TOOLS_ll, ONLY : LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: IP, TCRRT_COMDATA, TCRRT_PROCONF, JPHALO ! - USE MODE_REPRO_SUM + USE MODE_REPRO_SUM + USE MODE_TOOLS_ll, ONLY: LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll ! !* 0. DECLARATIONS ! ------------ @@ -2282,7 +2252,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! and local processor ! TCRRT_PROCONF - Current configuration for current model ! IP - -! MPI_PRECISION - ! JPHALO - ! !! Author @@ -2298,12 +2267,10 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 0. DECLARATIONS ! - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: IP, TCRRT_COMDATA, TCRRT_PROCONF, JPHALO ! - USE MODD_VAR_ll, ONLY : IP, TCRRT_COMDATA, TCRRT_PROCONF, JPHALO, & - MPI_PRECISION -! - USE MODE_TOOLS_ll, ONLY : LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll + USE MODE_TOOLS_ll, ONLY: LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll ! !* 0. DECLARATIONS ! ------------ @@ -2364,7 +2331,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 2. Merge local sums ! - CALL MPI_ALLREDUCE(ZBUF, PRES, SIZE(PRES, 1) * SIZE(PRES, 2), MPI_PRECISION, MPI_SUM, NMNH_COMM_WORLD,KINFO) + CALL MPI_ALLREDUCE(ZBUF, PRES, SIZE(PRES, 1) * SIZE(PRES, 2), MNHREAL_MPI, MPI_SUM, NMNH_COMM_WORLD,KINFO) ! !----------------------------------------------------------------- ELSE @@ -2396,7 +2363,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 2. Merge local sums ! - CALL MPI_ALLREDUCE(ZBUF, PRES, SIZE(PRES, 1) * SIZE(PRES,2), MPI_PRECISION, MPI_SUM, NMNH_COMM_WORLD,KINFO) + CALL MPI_ALLREDUCE(ZBUF, PRES, SIZE(PRES, 1) * SIZE(PRES,2), MNHREAL_MPI, MPI_SUM, NMNH_COMM_WORLD,KINFO) ENDIF ENDIF @@ -2429,8 +2396,6 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll !! Implicit Arguments !! ------------------ ! -! Module MODD_VAR_ll -! MPI_PRECISION - ! !! Author !! ------ @@ -2445,7 +2410,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSUM_ll ! !* 0. DECLARATIONS ! - USE MODE_REPRO_SUM + USE MODE_REPRO_SUM ! IMPLICIT NONE ! @@ -2502,8 +2467,6 @@ END SUBROUTINE REDUCE_SUM_0DD_ll !! Implicit Arguments !! ------------------ ! -! Module MODD_VAR_ll -! MPI_PRECISION - ! !! Author !! ------ @@ -2517,8 +2480,6 @@ END SUBROUTINE REDUCE_SUM_0DD_ll !----------------------------------------------------------------- ! !* 0. DECLARATIONS -! - USE MODD_VAR_ll, ONLY : MPI_PRECISION ! IMPLICIT NONE ! @@ -2537,7 +2498,7 @@ END SUBROUTINE REDUCE_SUM_0DD_ll !* 1. CALL THE MPI_ALLREDUCE ROUTINE ! ------------------------------ ! - CALL MPI_ALLREDUCE(PRES, ZRES, 1, MPI_PRECISION, & + CALL MPI_ALLREDUCE(PRES, ZRES, 1, MNHREAL_MPI, & MPI_SUM, NMNH_COMM_WORLD, KINFO) ! PRES = ZRES @@ -2620,8 +2581,6 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !! Implicit Arguments !! ------------------ ! -! Module MODD_VAR_ll -! MPI_PRECISION - ! !! Author !! ------ @@ -2635,8 +2594,6 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS -! - USE MODD_VAR_ll, ONLY : MPI_PRECISION ! IMPLICIT NONE ! @@ -2655,7 +2612,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !* 1. CALL THE MPI_ALLREDUCE ROUTINE ! ------------------------------ ! - CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MPI_PRECISION, & + CALL MPI_ALLREDUCE(PRES, ZRES, SIZE(PRES,1), MNHREAL_MPI, & MPI_SUM, NMNH_COMM_WORLD, KINFO) ! PRES = ZRES @@ -2692,8 +2649,6 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !! Implicit Arguments !! ------------------ ! -! Module MODD_VAR_ll -! MPI_PRECISION - ! !! Author !! ------ @@ -2707,8 +2662,6 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS -! - USE MODD_VAR_ll, ONLY : MPI_PRECISION ! IMPLICIT NONE ! @@ -2731,7 +2684,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll ! IDIM = SIZE(PRES,1) * SIZE(PRES,2) ! - CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MPI_PRECISION, MPI_SUM, & + CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, & NMNH_COMM_WORLD, KINFO) ! PRES = ZRES @@ -2768,8 +2721,6 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !! Implicit Arguments !! ------------------ ! -! Module MODD_VAR_ll -! MPI_PRECISION - ! !! Author !! ------ @@ -2783,8 +2734,6 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS -! - USE MODD_VAR_ll, ONLY : MPI_PRECISION ! IMPLICIT NONE ! @@ -2808,7 +2757,7 @@ END SUBROUTINE REDUCE_SUM_1DD_ll ! IDIM = SIZE(PRES,1) * SIZE(PRES,2) * SIZE(PRES,3) ! - CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MPI_PRECISION, MPI_SUM, & + CALL MPI_ALLREDUCE(PRES, ZRES, IDIM, MNHREAL_MPI, MPI_SUM, & NMNH_COMM_WORLD, KINFO) ! PRES = ZRES @@ -3046,8 +2995,6 @@ END SUBROUTINE REDUCE_SUM_1DD_ll !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS -! - USE MODD_VAR_ll, ONLY : MPI_PRECISION ! IMPLICIT NONE ! diff --git a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 index 158d53136..ba2dc9c36 100644 --- a/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_tools_ll.f90 @@ -1,15 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- -!--------------- special set of characters for CVS information -!----------------------------------------------------------------- -! $Source$ -! $Name$ -! $Revision$ -! $Date$ -!----------------------------------------------------------------- !Correction : ! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 !----------------------------------------------------------------- @@ -52,8 +45,9 @@ ! Juan/Didier 12/03/2009: array bound bug correction with 1proc/MPIVIDE ! J. Escobar 27/06/2011 correction for gridnesting with different SHAPE ! - USE MODD_STRUCTURE_ll USE MODD_MPIF + use modd_precision, only: MNHREAL_MPI + USE MODD_STRUCTURE_ll !JUANZ USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD !JUANZ @@ -1098,7 +1092,6 @@ ENDIF ! NPROC - Number of processors ! TCRRT_PROCONF - Current configuration for current model ! IP - Number of the local processor -! MPI_PRECISION - mpi precision ! ! Module MODD_PARAMETERS_ll ! JPHEXT - halo size @@ -1120,16 +1113,12 @@ ENDIF ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll - USE MODD_VAR_ll, ONLY : NPROC, TCRRT_PROCONF, IP, MPI_PRECISION + USE MODD_PARAMETERS_ll, ONLY: JPHEXT + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: NPROC, TCRRT_PROCONF, IP ! IMPLICIT NONE ! -!* 0.099 Include MPI parameters -! -! INCLUDE 'mpif.h' -! !* 0.1 declarations of arguments ! REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY ! horizontal field @@ -1332,8 +1321,8 @@ ENDIF !* 3.3 Have the values of the local slice on each proc known ! by all procs on the global slice ! - CALL MPI_ALLGATHERV(ZPTR, ISIZE, MPI_PRECISION, PGLOBALSLICE, & - ISIZES, IDISPL, MPI_PRECISION, ICOMM_GLOBALSLICE, IERR) + CALL MPI_ALLGATHERV(ZPTR, ISIZE, MNHREAL_MPI, PGLOBALSLICE, & + ISIZES, IDISPL, MNHREAL_MPI, ICOMM_GLOBALSLICE, IERR) ! !* 3.4 Delete slice communicator ! @@ -1364,7 +1353,7 @@ ENDIF IF (ICOMM .NE. MPI_COMM_NULL) THEN ! CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR) - CALL MPI_BCAST(PGLOBALSLICE(IDISPL1+1), IGLOBALSLICELENGTH, MPI_PRECISION, & + CALL MPI_BCAST(PGLOBALSLICE(IDISPL1+1), IGLOBALSLICELENGTH, MNHREAL_MPI, & IPROCS(1), ICOMM, IERR) ! CALL MPI_COMM_FREE(ICOMM, IERR) @@ -1416,7 +1405,6 @@ ENDIF ! NPROC - Number of processors ! TCRRT_PROCONF - Current configuration for current model ! IP - Number of the local processor -! MPI_PRECISION - mpi precision ! ! Module MODD_PARAMETERS_ll ! JPHEXT, JPVEXT - halo size @@ -1438,16 +1426,12 @@ ENDIF ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT, JPVEXT - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll - USE MODD_VAR_ll, ONLY : NPROC, TCRRT_PROCONF, IP, MPI_PRECISION + USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: NPROC, TCRRT_PROCONF, IP ! IMPLICIT NONE ! -!* 0.099 Include MPI parameters -! -! INCLUDE 'mpif.h' -! !* 0.1 declarations of arguments ! REAL, DIMENSION(:,:,:), TARGET, INTENT(IN) :: PARRAY ! horizontal field @@ -1668,9 +1652,9 @@ ENDIF ! by all procs on the global slice ! DO JK = 1, IGLOBALSLICEHEIGHT - CALL MPI_ALLGATHERV(ZPTR(1,JK), ISIZE, MPI_PRECISION, & + CALL MPI_ALLGATHERV(ZPTR(1,JK), ISIZE, MNHREAL_MPI, & PGLOBALSLICE(1,JK), ISIZES, IDISPL, & - MPI_PRECISION, ICOMM_GLOBALSLICE, IERR) + MNHREAL_MPI, ICOMM_GLOBALSLICE, IERR) ENDDO ! !* 3.4 Delete slice communicator @@ -1704,7 +1688,7 @@ ENDIF ! CALL MPI_BCAST(IGLOBALSLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR) DO JK = 1, IGLOBALSLICEHEIGHT - CALL MPI_BCAST(PGLOBALSLICE(1,JK), IGLOBALSLICELENGTH, MPI_PRECISION, & + CALL MPI_BCAST(PGLOBALSLICE(1,JK), IGLOBALSLICELENGTH, MNHREAL_MPI, & IPROCS(1), ICOMM, IERR) ENDDO ! @@ -1764,7 +1748,6 @@ ENDIF ! NPROC - Number of processors ! TCRRT_PROCONF - Current configuration for current model ! IP - Number of the local processor -! MPI_PRECISION - mpi precision ! ! Module MODD_PARAMETERS_ll ! JPHEXT, JPVEXT - halo size @@ -1785,16 +1768,12 @@ ENDIF ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT - USE MODD_VAR_ll, ONLY : NPROC,TCRRT_PROCONF,IP,MPI_PRECISION - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll + USE MODD_PARAMETERS_ll, ONLY: JPHEXT + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: NPROC, TCRRT_PROCONF, IP ! IMPLICIT NONE ! -!* 0.099 Include MPI parameters -! -! INCLUDE 'mpif.h' -! !* 0.1 declarations of arguments ! REAL, DIMENSION(:,:), TARGET, INTENT(IN) :: PARRAY ! horizontal field @@ -2024,8 +2003,8 @@ ENDIF !* 3.3 Have the values of the local slice on each proc known ! by all procs on the global slice ! - CALL MPI_ALLGATHERV(ZPTR, ISIZE, MPI_PRECISION, ITOTALSLICE, ISIZES, & - IDISPL, MPI_PRECISION, ICOMM_SLICE, IERR) + CALL MPI_ALLGATHERV(ZPTR, ISIZE, MNHREAL_MPI, ITOTALSLICE, ISIZES, & + IDISPL, MNHREAL_MPI, ICOMM_SLICE, IERR) ! DEALLOCATE(ISIZES, IDISPL) ! @@ -2058,7 +2037,7 @@ ENDIF IF (ICOMM .NE. MPI_COMM_NULL) THEN ! CALL MPI_BCAST(ISLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR) - CALL MPI_BCAST(ITOTALSLICE, ISLICELENGTH, MPI_PRECISION, & + CALL MPI_BCAST(ITOTALSLICE, ISLICELENGTH, MNHREAL_MPI, & IPROCS(1), ICOMM, IERR) CALL MPI_COMM_FREE(ICOMM, IERR) ENDIF @@ -2112,7 +2091,6 @@ ENDIF ! NPROC - Number of processors ! TCRRT_PROCONF - Current configuration for current model ! IP - Number of the local processor -! MPI_PRECISION - mpi precision ! ! Module MODD_PARAMETERS_ll ! JPHEXT, JPVEXT - halo size @@ -2133,16 +2111,12 @@ ENDIF ! !* 0. DECLARATIONS ! - USE MODD_PARAMETERS_ll, ONLY : JPHEXT, JPVEXT - USE MODD_VAR_ll, ONLY : NPROC,TCRRT_PROCONF,IP,MPI_PRECISION - USE MODD_STRUCTURE_ll, ONLY : MODELSPLITTING_ll + USE MODD_PARAMETERS_ll, ONLY: JPHEXT, JPVEXT + USE MODD_STRUCTURE_ll, ONLY: MODELSPLITTING_ll + USE MODD_VAR_ll, ONLY: NPROC, TCRRT_PROCONF, IP ! IMPLICIT NONE ! -!* 0.099 Include MPI parameters -! -! INCLUDE 'mpif.h' -! !* 0.1 declarations of arguments ! REAL, DIMENSION(:,:,:), TARGET, INTENT(IN) :: PARRAY ! horizontal field @@ -2384,9 +2358,9 @@ ENDIF ! by all procs on the global slice ! DO JK = 1, ISLICEHEIGHT - CALL MPI_ALLGATHERV(ZPTR(1,JK), ISIZE, MPI_PRECISION, & + CALL MPI_ALLGATHERV(ZPTR(1,JK), ISIZE, MNHREAL_MPI, & ITOTALSLICE(1,JK), & - ISIZES, IDISPL, MPI_PRECISION, ICOMM_SLICE, IERR) + ISIZES, IDISPL, MNHREAL_MPI, ICOMM_SLICE, IERR) ENDDO ! !* 3.4 Delete slice communicator @@ -2420,7 +2394,7 @@ ENDIF ! CALL MPI_BCAST(ISLICELENGTH, 1, MPI_INTEGER, IPROCS(1), ICOMM, IERR) DO JK = 1, ISLICEHEIGHT - CALL MPI_BCAST(ITOTALSLICE(1,JK), ISLICELENGTH, MPI_PRECISION, & + CALL MPI_BCAST(ITOTALSLICE(1,JK), ISLICELENGTH, MNHREAL_MPI, & IPROCS(1), ICOMM, IERR) ENDDO ! @@ -3298,8 +3272,6 @@ ENDIF !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS -! - USE MODD_VAR_ll, ONLY : MPI_PRECISION ! IMPLICIT NONE ! @@ -3319,7 +3291,7 @@ ENDIF !------------------------------------------------------------------------------- ! IMEANSQRTLOC = SUM(SQRT(PARRAY)) -CALL MPI_ALLREDUCE(IMEANSQRTLOC, PMEANSQRT, 1, MPI_PRECISION, MPI_SUM, NMNH_COMM_WORLD,IINFO) +CALL MPI_ALLREDUCE(IMEANSQRTLOC, PMEANSQRT, 1, MNHREAL_MPI, MPI_SUM, NMNH_COMM_WORLD,IINFO) PMEANSQRT = PMEANSQRT / KSIZEGLB ! !----------------------------------------------------------------------- diff --git a/src/MNH/clustering.f90 b/src/MNH/clustering.f90 index a42562bbb..882de5a75 100644 --- a/src/MNH/clustering.f90 +++ b/src/MNH/clustering.f90 @@ -1,3 +1,8 @@ +!MNH_LIC Copyright 2013-2019 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC for details. version 1. +!----------------------------------------------------------------- ! ################ MODULE MODI_CLUSTERING ! ################ @@ -60,13 +65,13 @@ END MODULE MODI_CLUSTERING ! !* 0. DECLARATIONS ! ------------ - USE MODD_MPIF , ONLY : MPI_INTEGER +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_VAR_ll, ONLY: NPROC, IP, NMNH_COMM_WORLD +! USE MODE_ll -USE MODD_ARGSLIST_ll, ONLY : LIST_ll -USE MODD_VAR_ll, ONLY : MPI_PRECISION, NPROC, IP, NMNH_COMM_WORLD -USE MODD_DYN_n, ONLY : XDXHATM, XDYHATM -!USE& -! MPI ! IMPLICIT NONE ! @@ -670,7 +675,7 @@ CALL MPI_ALLGATHERV(ILOCLISTLVL2, ICPT, MPI_INTEGER, IGLBLISTLVL, ICLUSNBR, IPRO NMNH_COMM_WORLD, INFO) CALL MPI_ALLGATHERV(ILOCLISTSEC2, ICPT, MPI_INTEGER, IGLBLISTSEC, ICLUSNBR, IPROCDPL, MPI_INTEGER, & NMNH_COMM_WORLD, INFO) -CALL MPI_ALLGATHERV(ZLOCLISTFLD2, ICPT, MPI_PRECISION, ZGLBLISTFLD, ICLUSNBR, IPROCDPL, MPI_PRECISION, & +CALL MPI_ALLGATHERV(ZLOCLISTFLD2, ICPT, MNHREAL_MPI, ZGLBLISTFLD, ICLUSNBR, IPROCDPL, MNHREAL_MPI, & NMNH_COMM_WORLD, INFO) ! !* 6.3 EACH PROC COMPUTES GLOBAL SECTIONS AND FIELD AVERAGE OF ITS CLUSTERS diff --git a/src/MNH/extend_grid_parameter_mnh.f90 b/src/MNH/extend_grid_parameter_mnh.f90 index 09d062990..3d5fc09a1 100644 --- a/src/MNH/extend_grid_parameter_mnh.f90 +++ b/src/MNH/extend_grid_parameter_mnh.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2015-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. +!----------------------------------------------------------------- ! ############################################################# SUBROUTINE EXTEND_GRID_PARAMETERX1_MNH(HGRID,HREC,KDIM,KSIZE,KIMAX,KJMAX,PFIELD,PFIELD_EXTEND) ! ############################################################# @@ -16,10 +17,13 @@ ! 07/2015 (M.Moge) initializing ZY and ZY to zero ! 08/2015 (M.Moge) bug fix in the call to UPDATE_NHALO1D : IIMAX_ll instead of IJMAX_ll ! -USE MODD_IO_SURF_MNH, ONLY : NHALO -USE MODD_VAR_ll, ONLY : NPROC, IP, MPI_PRECISION, NMNH_COMM_WORLD +USE MODD_IO_SURF_MNH, ONLY: NHALO USE MODD_MPIF -USE MODE_TOOLS_ll, ONLY : INTERSECTION, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll +use MODD_PRECISION, only: MNHREAL_MPI +USE MODD_VAR_ll, ONLY: NPROC, IP, NMNH_COMM_WORLD +! +USE MODE_TOOLS_ll, ONLY: INTERSECTION, LWEST_ll, LEAST_ll, LNORTH_ll, LSOUTH_ll +! USE MODI_UPDATE_NHALO1D ! IMPLICIT NONE @@ -76,7 +80,7 @@ IF (HREC=='XX' .OR. HREC=='DX') THEN IF (NIMAX>1) ZDX = PFIELD(2) - PFIELD(1) IF (NIMAX==1) ZDX = PFIELD(1) ! in 1D conf, one assumes that grid ! is located between X=DX/2 and X=3DX/2 - CALL MPI_BCAST(ZDX, 1, MPI_PRECISION, 0, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_BCAST(ZDX, 1, MNHREAL_MPI, 0, NMNH_COMM_WORLD, IINFO_ll) IF( LWEST_ll() ) THEN DO JI=NHALO,1,-1 ZX(JI) = ZX(JI+1) - ZDX @@ -119,7 +123,7 @@ ELSEIF (HREC=='YY' .OR. HREC=='DY') THEN IF (NJMAX>1) ZDY = PFIELD(1+KIMAX) - PFIELD(1) IF (NJMAX==1) ZDY = PFIELD(1) ! in 1D or 2D conf, one assumes that grid ! is located between Y=DY/2 and Y=3DY/2 - CALL MPI_BCAST(ZDY, 1, MPI_PRECISION, 0, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_BCAST(ZDY, 1, MNHREAL_MPI, 0, NMNH_COMM_WORLD, IINFO_ll) IF( LSOUTH_ll() ) THEN DO JJ=NHALO,1,-1 ZY(JJ) = ZY(JJ+1) - ZDY diff --git a/src/MNH/flash_geom_elec.f90 b/src/MNH/flash_geom_elec.f90 index cc467d1dd..2c7e576aa 100644 --- a/src/MNH/flash_geom_elec.f90 +++ b/src/MNH/flash_geom_elec.f90 @@ -100,44 +100,44 @@ END MODULE MODI_FLASH_GEOM_ELEC_n !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST, ONLY : XAVOGADRO, XMD -USE MODD_CONF, ONLY : CEXP, LCARTESIAN -USE MODD_IO_ll, ONLY: TFILEDATA -USE MODD_PARAMETERS, ONLY : JPHEXT, JPVEXT -USE MODD_GRID, ONLY : XLATORI,XLONORI -USE MODD_GRID_n, ONLY : XXHAT, XYHAT, XZHAT -USE MODD_DYN_n, ONLY : XDXHATM, XDYHATM, NSTOP -USE MODD_METRICS_n, ONLY : XDXX, XDYY, XDZZ ! in linox_production +USE MODD_ARGSLIST_ll, ONLY: LIST_ll +USE MODD_CONF, ONLY: CEXP, LCARTESIAN +USE MODD_CST, ONLY: XAVOGADRO, XMD +USE MODD_DYN_n, ONLY: XDXHATM, XDYHATM, NSTOP USE MODD_ELEC_DESCR -USE MODD_ELEC_PARAM, ONLY : XFQLIGHTR, XEXQLIGHTR, & - XFQLIGHTI, XEXQLIGHTI, & - XFQLIGHTS, XEXQLIGHTS, & - XFQLIGHTG, XEXQLIGHTG, & - XFQLIGHTH, XEXQLIGHTH, & - XFQLIGHTC -USE MODD_RAIN_ICE_DESCR, ONLY : XLBR, XLBEXR, XLBS, XLBEXS, & - XLBG, XLBEXG, XLBH, XLBEXH, & - XRTMIN -USE MODD_NSV, ONLY : NSV_ELECBEG, NSV_ELECEND, NSV_ELEC -USE MODD_VAR_ll, ONLY : NPROC,NMNH_COMM_WORLD -USE MODD_ARGSLIST_ll, ONLY : LIST_ll +USE MODD_ELEC_PARAM, ONLY: XFQLIGHTR, XEXQLIGHTR, & + XFQLIGHTI, XEXQLIGHTI, & + XFQLIGHTS, XEXQLIGHTS, & + XFQLIGHTG, XEXQLIGHTG, & + XFQLIGHTH, XEXQLIGHTH, & + XFQLIGHTC +USE MODD_ELEC_FLASH +USE MODD_GRID, ONLY: XLATORI,XLONORI +USE MODD_GRID_n, ONLY: XXHAT, XYHAT, XZHAT +USE MODD_IO_ll, ONLY: TFILEDATA +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_RAIN_ICE_DESCR, ONLY: XLBR, XLBEXR, XLBS, XLBEXS, & + XLBG, XLBEXG, XLBH, XLBEXH, & + XRTMIN USE MODD_SUB_ELEC_n USE MODD_TIME_n -USE MODD_LMA_SIMULATOR -USE MODD_ELEC_FLASH -! -USE MODI_SHUMAN -USE MODI_TO_ELEC_FIELD_n -USE MODI_ION_ATTACH_ELEC +USE MODD_VAR_ll, ONLY: NPROC,NMNH_COMM_WORLD ! +USE MODE_ELEC_ll +USE MODE_GRIDPROJ +USE MODE_ll +USE MODE_MPPDB #ifdef MNH_PGI USE MODE_PACK_PGI #endif ! -USE MODE_ll -USE MODE_ELEC_ll -USE MODE_GRIDPROJ -USE MODE_MPPDB +USE MODI_ION_ATTACH_ELEC +USE MODI_SHUMAN +USE MODI_TO_ELEC_FIELD_n ! IMPLICIT NONE ! @@ -853,9 +853,9 @@ 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, MPI_LOGICAL, IPROC_TRIG(IL), & NMNH_COMM_WORLD, IERR) - CALL MPI_BCAST (ZEM_TRIG(IL), 1, MPI_PRECISION, IPROC_TRIG(IL), & + 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), & NMNH_COMM_WORLD, IERR) @@ -1690,11 +1690,11 @@ DO IL = 1, INB_CELL ! ---------------------------- ! CALL MPI_BCAST (ZEM_TRIG(IL), 1, & - MPI_PRECISION, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) - CALL MPI_BCAST (ISEG_LOC(:,IL), 3*SIZE(PRT,3), & + 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) CALL MPI_BCAST (ZCOORD_TRIG(:,IL), 3, & - MPI_PRECISION, IPROC_TRIG(IL), NMNH_COMM_WORLD, IERR) + 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) ! @@ -1960,7 +1960,7 @@ DO IL = 1, INB_CELL END DO END IF ! - CALL MPI_BCAST (ZSIGN(IL), 1, MPI_PRECISION, IPROC_TRIG(IL), & + CALL MPI_BCAST (ZSIGN(IL), 1, MNHREAL_MPI, IPROC_TRIG(IL), & NMNH_COMM_WORLD, IERR) END DO ! @@ -2308,8 +2308,8 @@ IF (IPROC .EQ. 0) THEN INBSEG_PROC_X3(:) = 3 * INBSEG_PROC(:) END IF ! -CALL MPI_GATHERV (ZSEND, 3*INSEGPROC, MPI_PRECISION, ZRECV, INBSEG_PROC_X3, & - IDECAL3, MPI_PRECISION, 0, NMNH_COMM_WORLD, IERR) +CALL MPI_GATHERV (ZSEND, 3*INSEGPROC, MNHREAL_MPI, ZRECV, INBSEG_PROC_X3, & + IDECAL3, MNHREAL_MPI, 0, NMNH_COMM_WORLD, IERR) ! IF (IPROC .EQ. 0) THEN ZCOORD_SEG_ALL(1:3*INSEGCELL,IL) = ZRECV(1:3*INSEGCELL) @@ -2381,15 +2381,15 @@ IF (LLMA) THEN ! ALLOCATE (ZRECV(INSEGCELL)) ! - CALL MPI_GATHERV (ZLMAPOS, INSEGPROC, MPI_PRECISION, ZRECV, INBSEG_PROC, & - IDECAL, MPI_PRECISION, 0, NMNH_COMM_WORLD, IERR) + CALL MPI_GATHERV (ZLMAPOS, INSEGPROC, MNHREAL_MPI, ZRECV, INBSEG_PROC, & + IDECAL, MNHREAL_MPI, 0, NMNH_COMM_WORLD, IERR) ! IF (IPROC .EQ. 0) THEN ZLMA_NEUT_POS(1:INSEGCELL,IL) = ZRECV(1:INSEGCELL) END IF ! - CALL MPI_GATHERV (ZLMANEG, INSEGPROC, MPI_PRECISION, ZRECV, INBSEG_PROC, & - IDECAL, MPI_PRECISION, 0, NMNH_COMM_WORLD, IERR) + CALL MPI_GATHERV (ZLMANEG, INSEGPROC, MNHREAL_MPI, ZRECV, INBSEG_PROC, & + IDECAL, MNHREAL_MPI, 0, NMNH_COMM_WORLD, IERR) ! IF (IPROC .EQ. 0) THEN ZLMA_NEUT_NEG(1:INSEGCELL,IL) = ZRECV(1:INSEGCELL) @@ -2409,17 +2409,17 @@ IF (LLMA) THEN INBSEG_PROC_XNSV(:) = NSV_ELEC * INBSEG_PROC(:) END IF ! - CALL MPI_GATHERV (ZLMAQMT, NSV_ELEC*INSEGPROC, MPI_PRECISION, ZRECV, & - INBSEG_PROC_XNSV, & - IDECALN, MPI_PRECISION, 0, NMNH_COMM_WORLD, IERR ) + CALL MPI_GATHERV (ZLMAQMT, NSV_ELEC*INSEGPROC, MNHREAL_MPI, ZRECV, & + INBSEG_PROC_XNSV, & + IDECALN, MNHREAL_MPI, 0, NMNH_COMM_WORLD, IERR ) ! IF (IPROC .EQ. 0) THEN ZLMA_QMT(1:NSV_ELEC*INSEGCELL,IL) = ZRECV(1:NSV_ELEC*INSEGCELL) END IF ! - CALL MPI_GATHERV (ZLMAPRT, NSV_ELEC*INSEGPROC, MPI_PRECISION, ZRECV, & - INBSEG_PROC_XNSV, & - IDECALN, MPI_PRECISION, 0, NMNH_COMM_WORLD, IERR) + CALL MPI_GATHERV (ZLMAPRT, NSV_ELEC*INSEGPROC, MNHREAL_MPI, ZRECV, & + INBSEG_PROC_XNSV, & + IDECALN, MNHREAL_MPI, 0, NMNH_COMM_WORLD, IERR ) ! IF (IPROC .EQ. 0) THEN ZLMA_PRT(1:NSV_ELEC*INSEGCELL,IL) = ZRECV(1:NSV_ELEC*INSEGCELL) diff --git a/src/MNH/modd_precision.f90 b/src/MNH/modd_precision.f90 index afd0a3a21..421eec5f6 100644 --- a/src/MNH/modd_precision.f90 +++ b/src/MNH/modd_precision.f90 @@ -6,7 +6,7 @@ ! Author: ! P. Wautelet 08/03/2019 ! Modifications: -! +! P. Wautelet 22/03/2019: add MNHINT/REAL32/64_MPI, MNH2REAL32/64_MPI + more public parameters !----------------------------------------------------------------- module modd_precision @@ -20,6 +20,12 @@ implicit none private +public :: MNHINT32, MNHINT64, MNHREAL32, MNHREAL64, MNHREAL128 + +public :: MNHINT32_MPI, MNHINT64_MPI +public :: MNHREAL32_MPI, MNHREAL64_MPI +public :: MNH2REAL32_MPI, MNH2REAL64_MPI + public :: MNHINT, MNHREAL public :: MNHINT_MPI, MNHREAL_MPI, MNH2REAL_MPI @@ -37,26 +43,35 @@ integer, parameter :: MNHREAL32 = selected_real_kind( p = 6, r = 37 ) integer, parameter :: MNHREAL64 = selected_real_kind( p = 15, r = 307 ) integer, parameter :: MNHREAL128 = selected_real_kind( p = 33, r = 4931 ) +integer, parameter :: MNHINT32_MPI = MPI_INTEGER4 +integer, parameter :: MNHINT64_MPI = MPI_INTEGER8 + +integer, parameter :: MNHREAL32_MPI = MPI_REAL4 +integer, parameter :: MNHREAL64_MPI = MPI_REAL8 + +integer, parameter :: MNH2REAL32_MPI = MPI_2REAL +integer, parameter :: MNH2REAL64_MPI = MPI_2DOUBLE_PRECISION + ! Kinds for MesoNH #if ( MNH_INT == 4 ) integer, parameter :: MNHINT = MNHINT32 -integer, parameter :: MNHINT_MPI = MPI_INTEGER4 +integer, parameter :: MNHINT_MPI = MNHINT32_MPI #elif ( MNH_INT == 8 ) integer, parameter :: MNHINT = MNHINT64 -integer, parameter :: MNHINT_MPI = MPI_INTEGER8 +integer, parameter :: MNHINT_MPI = MNHINT64_MPI #else #error "Invalid MNH_INT" #endif #if ( MNH_REAL == 4 ) integer, parameter :: MNHREAL = MNHREAL32 -integer, parameter :: MNHREAL_MPI = MPI_REAL4 -integer, parameter :: MNH2REAL_MPI = MPI_2REAL +integer, parameter :: MNHREAL_MPI = MNHREAL32_MPI +integer, parameter :: MNH2REAL_MPI = MNH2REAL32_MPI #elif ( MNH_REAL == 8 ) integer, parameter :: MNHREAL = MNHREAL64 -integer, parameter :: MNHREAL_MPI = MPI_REAL8 -integer, parameter :: MNH2REAL_MPI = MPI_2DOUBLE_PRECISION +integer, parameter :: MNHREAL_MPI = MNHREAL64_MPI +integer, parameter :: MNH2REAL_MPI = MNH2REAL64_MPI #elif ( MNH_REAL == 16 ) integer, parameter :: MNHREAL = MNHREAL128 integer, parameter :: MNHREAL_MPI = MPI_REAL16 diff --git a/src/MNH/mode_elec_ll.f90 b/src/MNH/mode_elec_ll.f90 index dc4f100ef..0f613fff8 100644 --- a/src/MNH/mode_elec_ll.f90 +++ b/src/MNH/mode_elec_ll.f90 @@ -1,7 +1,8 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2010-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. +!------------------------------------------------------------------------ ! ################### MODULE MODE_ELEC_ll ! ################### @@ -24,7 +25,8 @@ !------------------------------------------------------------------------ ! USE MODD_MPIF -USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD +use modd_precision, only: MNHREAL_MPI +USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD ! IMPLICIT NONE ! @@ -32,7 +34,6 @@ IMPLICIT NONE ! ! INTEGER, PARAMETER :: IFIRST_PROC = 0 ! 0/1 to increase numerotation of proc number -INTEGER, PARAMETER :: MPI_PRECISION = MPI_DOUBLE_PRECISION ! ! INTERFACE SUM_ELEC_ll @@ -115,7 +116,7 @@ ZTAB = PSUM_INOUT INFO = -1 ! ! Sum(Proc) -CALL MPI_ALLREDUCE(ZTAB, PSUM_INOUT, IDIM, MPI_PRECISION, & +CALL MPI_ALLREDUCE(ZTAB, PSUM_INOUT, IDIM, MNHREAL_MPI, & MPI_SUM, NMNH_COMM_WORLD, INFO) ! END SUBROUTINE RSUM_ELEC_ll @@ -152,7 +153,7 @@ INFO = -1 ! !* 1.1 max(Proc) ! -CALL MPI_ALLREDUCE(ZTAB, PMIN_INOUT, IDIM, MPI_PRECISION, & +CALL MPI_ALLREDUCE(ZTAB, PMIN_INOUT, IDIM, MNHREAL_MPI, & MPI_MIN, NMNH_COMM_WORLD, INFO) ! !* 1.2 find the proc number of the maximum @@ -202,7 +203,7 @@ INFO = -1 ! !* 1.1 max(Proc) ! -CALL MPI_ALLREDUCE(ZTAB, PMAX_INOUT, IDIM, MPI_PRECISION, & +CALL MPI_ALLREDUCE(ZTAB, PMAX_INOUT, IDIM, MNHREAL_MPI, & MPI_MAX, NMNH_COMM_WORLD, INFO) ! !* 1.2 find the proc number of the maximum @@ -420,7 +421,7 @@ INFO = -1 ! !* 1.1 sum(Proc) ! -CALL MPI_ALLREDUCE(ZTAB, PSUM_INOUT, IDIM, MPI_PRECISION, & +CALL MPI_ALLREDUCE(ZTAB, PSUM_INOUT, IDIM, MNHREAL_MPI, & MPI_SUM, NMNH_COMM_WORLD, INFO) ! END SUBROUTINE RSUM0_ELEC_ll diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90 index 3faed5ea6..e1581455a 100644 --- a/src/MNH/prep_ideal_case.f90 +++ b/src/MNH/prep_ideal_case.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence -!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. !----------------------------------------------------------------- ! ####################### @@ -349,7 +349,7 @@ USE MODD_IO_ll, ONLY: NIO_VERB,NVERB_DEBUG,TFILE_DUMMY,TFILE_OUTPUTLISTING USE MODD_CONF_n USE MODD_NSV, ONLY : NSV,NSV_CHEM, & NSV_DSTEND, NSV_DSTBEG -use modd_precision, only: LFIINT +use modd_precision, only: LFIINT, MNHREAL_MPI ! USE MODN_BLANK ! @@ -1212,7 +1212,7 @@ IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN ! determine whether the model is flat or no ! ZZS_MAX = ABS( MAXVAL(XZS(NIB:NIU-JPHEXT,NJB:NJU-JPHEXT))) - CALL MPI_ALLREDUCE(ZZS_MAX, ZZS_MAX_ll, 1, MPI_PRECISION, MPI_MAX, & + CALL MPI_ALLREDUCE(ZZS_MAX, ZZS_MAX_ll, 1, MNHREAL_MPI, MPI_MAX, & NMNH_COMM_WORLD,IINFO_ll) IF( ABS(ZZS_MAX_ll) < 1.E-10 ) THEN LFLAT=.TRUE. diff --git a/src/MNH/pressurez.f90 b/src/MNH/pressurez.f90 index ae75dc536..16fe93871 100644 --- a/src/MNH/pressurez.f90 +++ b/src/MNH/pressurez.f90 @@ -230,8 +230,9 @@ USE MODD_DYN_n, ONLY: LRES, XRES USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_MPIF USE MODD_PARAMETERS +use modd_precision, only: MNHREAL_MPI USE MODD_REF, ONLY: LBOUSS -USE MODD_VAR_ll, ONLY: MPI_PRECISION, NMNH_COMM_WORLD , NPROC +USE MODD_VAR_ll, ONLY: NMNH_COMM_WORLD , NPROC ! USE MODE_IO_ll, ONLY: CLOSE_ll USE MODE_ll @@ -687,7 +688,7 @@ IF (LBUDGET_W) CALL BUDGET (PRWS,3,'PRES_BU_RW') ! ----------------------------- ! ZMAX = MAXVAL(ABS ( PRHODREF(:,:,IKB)-PRHODREF(:,:,IKE)) ) -CALL MPI_ALLREDUCE(ZMAX, ZMAX_ll, 1, MPI_PRECISION, MPI_MAX, & +CALL MPI_ALLREDUCE(ZMAX, ZMAX_ll, 1, MNHREAL_MPI, MPI_MAX, & NMNH_COMM_WORLD, KINFO) !IF ( ABS(PRHODREF(IIB,IJB,IKB)-PRHODREF(IIB,IJB,IKE)) > 1.E-12 & ! .AND. KTCOUNT >0 ) THEN diff --git a/src/MNH/retrieve2_nest_infon.f90 b/src/MNH/retrieve2_nest_infon.f90 index 9464e0431..5a12a1f46 100644 --- a/src/MNH/retrieve2_nest_infon.f90 +++ b/src/MNH/retrieve2_nest_infon.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1996-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1996-2019 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -89,7 +89,7 @@ END MODULE MODI_RETRIEVE2_NEST_INFO_n !! J Stein 04/07/01 add cartesian case !! M.Faivre 2014 !! J.Escobar : 15/09/2015 : WENO5 & JPHEXT <> 1 -!! J.Escobar : 01/06/2016 : Bug in type of ZBUF INTEGER => REAL & use MPI_PRECISION for r4/R8 compatibility +!! 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 !------------------------------------------------------------------------------- ! @@ -106,8 +106,9 @@ USE MODD_MPIF USE MODD_PARAMETERS USE MODD_PGDDIM USE MODD_PGDGRID +use modd_precision, only: MNHREAL_MPI USE MODD_STRUCTURE_ll, ONLY: ZONE_ll -USE MODD_VAR_ll, ONLY: YSPLITTING, NMNH_COMM_WORLD, MPI_PRECISION +USE MODD_VAR_ll, ONLY: YSPLITTING, NMNH_COMM_WORLD ! USE MODE_GRIDPROJ USE MODE_MODELN_HANDLER @@ -302,13 +303,13 @@ ENDIF ! get the value of XXHAT and XYHAT at the origin of global son model ZXHATFIRSTENTRY_C = XXHAT(JPHEXT+1) ZYHATFIRSTENTRY_C = XYHAT(JPHEXT+1) - CALL MPI_ALLREDUCE(XXHAT(JPHEXT+1), ZXHATFIRSTENTRY_C, 1,MPI_PRECISION, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) - CALL MPI_ALLREDUCE(XYHAT(JPHEXT+1), ZYHATFIRSTENTRY_C, 1,MPI_PRECISION, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(XXHAT(JPHEXT+1), ZXHATFIRSTENTRY_C, 1,MNHREAL_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(XYHAT(JPHEXT+1), ZYHATFIRSTENTRY_C, 1,MNHREAL_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) ! get the latitude and longitude ZLAT2 and ZLON2 at the origin of global son model ZLAT2GLB = ZLAT2 ZLON2GLB = ZLON2 - CALL MPI_ALLREDUCE(ZLAT2, ZLAT2GLB, 1,MPI_PRECISION, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) - CALL MPI_ALLREDUCE(ZLON2, ZLON2GLB, 1,MPI_PRECISION, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(ZLAT2, ZLAT2GLB, 1,MNHREAL_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_ALLREDUCE(ZLON2, ZLON2GLB, 1,MNHREAL_MPI, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) ! identify the process that own the origin of global son model, and communicate the global indices of the origin to all processes IF ( ZXHATFIRSTENTRY_C > XPGDXHAT(JPHEXT+1) .AND. ZXHATFIRSTENTRY_C <= XPGDXHAT(SIZE(XPGDXHAT)-JPHEXT) .AND. & @@ -365,8 +366,8 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ZXHATFIRSTENTRY_C = XXHAT(JPHEXT+1) ZYHATFIRSTENTRY_C = XYHAT(JPHEXT+1) ! broadcast XXHAT(JPHEXT+1) and find which process' father subdomain contains the coords of the first physical entry of local son subdomain - CALL MPI_BCAST( ZXHATFIRSTENTRY_C, 1, MPI_PRECISION, IPROC, NMNH_COMM_WORLD, IINFO_ll ) - CALL MPI_BCAST( ZYHATFIRSTENTRY_C, 1, MPI_PRECISION, IPROC, NMNH_COMM_WORLD, IINFO_ll ) + CALL MPI_BCAST( ZXHATFIRSTENTRY_C, 1, MNHREAL_MPI, IPROC, NMNH_COMM_WORLD, IINFO_ll ) + CALL MPI_BCAST( ZYHATFIRSTENTRY_C, 1, MNHREAL_MPI, IPROC, NMNH_COMM_WORLD, IINFO_ll ) ! ! communicating the value of XPGDXHAT (X direction) at the origin of local son subdomain IF ( IPROC == ISP-1 .AND. ZXHATFIRSTENTRY_C >= XPGDXHAT(JPHEXT+1) & @@ -389,9 +390,9 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ! the index of the first physical point of the local son subdomain of IPROC is II on the current process ! send XPGDXHAT(II) to process IPROC ZSENDBUF = XPGDXHAT(II) - CALL MPI_SEND( ZSENDBUF,1,MPI_PRECISION,IPROC,ISP+II,NMNH_COMM_WORLD,IINFO_ll ) + CALL MPI_SEND( ZSENDBUF,1,MNHREAL_MPI,IPROC,ISP+II,NMNH_COMM_WORLD,IINFO_ll ) ELSE IF ( IPROC == ISP-1 ) THEN - CALL MPI_RECV( ZRECVBUF,1,MPI_PRECISION,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) + CALL MPI_RECV( ZRECVBUF,1,MNHREAL_MPI,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) ZPGDXHATIXY1 = ZRECVBUF ELSE ! the other processes do nothing... @@ -418,9 +419,9 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ! the index of the first physical point of the local son subdomain is II on the current process ! send XPGDYHAT(II) to process IPROC ZSENDBUF = XPGDYHAT(II) - CALL MPI_SEND( ZSENDBUF,1,MPI_PRECISION,IPROC,ISP+II,NMNH_COMM_WORLD,IINFO_ll ) + CALL MPI_SEND( ZSENDBUF,1,MNHREAL_MPI,IPROC,ISP+II,NMNH_COMM_WORLD,IINFO_ll ) ELSE IF ( IPROC == ISP-1 ) THEN - CALL MPI_RECV( ZRECVBUF,1,MPI_PRECISION,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) + CALL MPI_RECV( ZRECVBUF,1,MNHREAL_MPI,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) ZPGDYHATIXY1 = ZRECVBUF ELSE ! the other processes do nothing... @@ -437,8 +438,8 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ZXHATFIRSTENTRY_C = XXHAT(JPHEXT+1) ZYHATFIRSTENTRY_C = XYHAT(JPHEXT+1) ! broadcast XXHAT(JPHEXT+1) and find which process' father subdomain contains the coords of the first physical entry of local son subdomain - CALL MPI_BCAST( ZXHATFIRSTENTRY_C, 1, MPI_PRECISION, IPROC, NMNH_COMM_WORLD, IINFO_ll ) - CALL MPI_BCAST( ZYHATFIRSTENTRY_C, 1, MPI_PRECISION, IPROC, NMNH_COMM_WORLD, IINFO_ll ) + CALL MPI_BCAST( ZXHATFIRSTENTRY_C, 1, MNHREAL_MPI, IPROC, NMNH_COMM_WORLD, IINFO_ll ) + CALL MPI_BCAST( ZYHATFIRSTENTRY_C, 1, MNHREAL_MPI, IPROC, NMNH_COMM_WORLD, IINFO_ll ) ! ! communicating the value of XPGDXHAT (X direction) at the origin of local son subdomain IF ( IPROC == ISP-1 .AND. ZXHATFIRSTENTRY_C >= XPGDXHAT(JPHEXT+1) & @@ -462,9 +463,9 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ! XPGDXHAT(II+1) is also defined on current process since HALO is at least 1 ! send XPGDXHAT(II+1) to process IPROC ZSENDBUF = XPGDXHAT(II+1) - CALL MPI_SEND( ZSENDBUF,1,MPI_PRECISION,IPROC,ISP+II+1,NMNH_COMM_WORLD,IINFO_ll ) + CALL MPI_SEND( ZSENDBUF,1,MNHREAL_MPI,IPROC,ISP+II+1,NMNH_COMM_WORLD,IINFO_ll ) ELSE IF ( IPROC == ISP-1 ) THEN - CALL MPI_RECV( ZRECVBUF,1,MPI_PRECISION,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) + CALL MPI_RECV( ZRECVBUF,1,MNHREAL_MPI,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) ZPGDXHATIXY1_1 = ZRECVBUF ELSE ! the other processes do nothing... @@ -492,9 +493,9 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ! XPGDYHAT(II+1) is also defined on current process since HALO is at least 1 ! send XPGDYHAT(II+1) to process IPROC ZSENDBUF = XPGDYHAT(II+1) - CALL MPI_SEND( ZSENDBUF,1,MPI_PRECISION,IPROC,ISP+II+1,NMNH_COMM_WORLD,IINFO_ll ) + CALL MPI_SEND( ZSENDBUF,1,MNHREAL_MPI,IPROC,ISP+II+1,NMNH_COMM_WORLD,IINFO_ll ) ELSE IF ( IPROC == ISP-1 ) THEN - CALL MPI_RECV( ZRECVBUF,1,MPI_PRECISION,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) + CALL MPI_RECV( ZRECVBUF,1,MNHREAL_MPI,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) ZPGDYHATIXY1_1 = ZRECVBUF ELSE ! the other processes do nothing... @@ -534,8 +535,8 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ZXHATLASTENTRY_C = XXHAT(SIZE(XXHAT)-JPHEXT) ZYHATLASTENTRY_C = XYHAT(SIZE(XYHAT)-JPHEXT) ! broadcast XXHAT(SIZE(XXHAT)-JPHEXT) and find which process' father subdomain contains the coords of the last physical entry of local son subdomain - CALL MPI_BCAST( ZXHATLASTENTRY_C, 1, MPI_PRECISION, IPROC, NMNH_COMM_WORLD, IINFO_ll ) - CALL MPI_BCAST( ZYHATLASTENTRY_C, 1, MPI_PRECISION, IPROC, NMNH_COMM_WORLD, IINFO_ll ) + CALL MPI_BCAST( ZXHATLASTENTRY_C, 1, MNHREAL_MPI, IPROC, NMNH_COMM_WORLD, IINFO_ll ) + CALL MPI_BCAST( ZYHATLASTENTRY_C, 1, MNHREAL_MPI, IPROC, NMNH_COMM_WORLD, IINFO_ll ) ! ! communicating the value of XPGDXHAT (X direction) at the origin of local son subdomain IF ( IPROC == ISP-1 .AND. ZXHATLASTENTRY_C >= XPGDXHAT(JPHEXT+1) & @@ -565,9 +566,9 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ! send XPGDXHAT(II) to process IPROC ! XPGDYHAT(II+1) is also defined on current process since HALO is at least 1 ZSENDBUF = XPGDXHAT(II) - CALL MPI_SEND( ZSENDBUF,1,MPI_PRECISION,IPROC,ISP+II,NMNH_COMM_WORLD,IINFO_ll ) + CALL MPI_SEND( ZSENDBUF,1,MNHREAL_MPI,IPROC,ISP+II,NMNH_COMM_WORLD,IINFO_ll ) ELSE IF ( IPROC == ISP-1 ) THEN - CALL MPI_RECV( ZRECVBUF,1,MPI_PRECISION,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) + CALL MPI_RECV( ZRECVBUF,1,MNHREAL_MPI,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) ZPGDXHATIXY2_1 = ZRECVBUF ELSE ! the other processes do nothing... @@ -600,9 +601,9 @@ DO IPROC = 0,ISNPROC-1 !loop on all processes ! the index of the last physical point of the local son subdomain is II on the current process ! send XPGDYHAT(II) to process IPROC ZSENDBUF = XPGDYHAT(II) - CALL MPI_SEND( ZSENDBUF,1,MPI_PRECISION,IPROC,ISP+II,NMNH_COMM_WORLD,IINFO_ll ) + CALL MPI_SEND( ZSENDBUF,1,MNHREAL_MPI,IPROC,ISP+II,NMNH_COMM_WORLD,IINFO_ll ) ELSE IF ( IPROC == ISP-1 ) THEN - CALL MPI_RECV( ZRECVBUF,1,MPI_PRECISION,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) + CALL MPI_RECV( ZRECVBUF,1,MNHREAL_MPI,MPI_ANY_SOURCE,MPI_ANY_TAG,NMNH_COMM_WORLD,MPI_STATUS_IGNORE,IINFO_ll ) ZPGDYHATIXY2_1 = ZRECVBUF ELSE ! the other processes do nothing... @@ -616,8 +617,8 @@ ENDDO ! 3.3 - now we have the coordinates (ZPGDXHATIXY2_1, ZPGDYHATIXY2_1) of the point in father grid just right+north of the LOCAL son subdomain ! We compute the coordinates of the last point in father grid of the GLOBAL son subdomain -CALL MPI_ALLREDUCE(ZPGDXHATIXY2_1, IXSUPCOORD1, 1,MPI_PRECISION, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll) -CALL MPI_ALLREDUCE(ZPGDYHATIXY2_1, IYSUPCOORD1, 1,MPI_PRECISION, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll) +CALL MPI_ALLREDUCE(ZPGDXHATIXY2_1, IXSUPCOORD1, 1,MNHREAL_MPI, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll) +CALL MPI_ALLREDUCE(ZPGDYHATIXY2_1, IYSUPCOORD1, 1,MNHREAL_MPI, MPI_MAX, NMNH_COMM_WORLD, IINFO_ll) ! we compute the index of this point in local father grid IF ( IXSUPCOORD1 >= XPGDXHAT(1+JPHEXT) .AND. IXSUPCOORD1 <= XPGDXHAT(SIZE(XPGDXHAT)-JPHEXT) .AND. & diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90 index 02a6f8a47..90c8a7e35 100644 --- a/src/MNH/spawn_model2.f90 +++ b/src/MNH/spawn_model2.f90 @@ -230,6 +230,7 @@ USE MODD_PASPOL_n !$20140515 USE MODD_VAR_ll, ONLY : NPROC USE MODD_IO_ll, ONLY: TFILEDATA,TFILE_DUMMY,TFILE_SURFEX +use modd_precision, only: MNHREAL_MPI ! USE MODE_GRIDCART ! Executive modules USE MODE_GRIDPROJ @@ -1158,7 +1159,7 @@ ZTIME1 = ZTIME2 !* vertical interpolation ! ZZS_MAX = ABS( MAXVAL(XZS(:,:))) -CALL MPI_ALLREDUCE(ZZS_MAX, ZZS_MAX_ll, 1, MPI_PRECISION, MPI_MAX, & +CALL MPI_ALLREDUCE(ZZS_MAX, ZZS_MAX_ll, 1, MNHREAL_MPI, MPI_MAX, & NMNH_COMM_WORLD,IINFO_ll) IF ( (ZZS_MAX_ll>0.) .AND. (NDXRATIO/=1 .OR. NDYRATIO/=1) ) THEN CALL MPPDB_CHECK3D(XUT,"SPAWN_M2 before VER_INTERP_FIELD:XUT",PRECISION) diff --git a/src/MNH/spawn_zs.f90 b/src/MNH/spawn_zs.f90 index 63bd460af..b351b8d84 100644 --- a/src/MNH/spawn_zs.f90 +++ b/src/MNH/spawn_zs.f90 @@ -103,9 +103,10 @@ END MODULE MODI_SPAWN_ZS !* 0. DECLARATIONS ! ------------ ! -USE MODD_PARAMETERS, ONLY : JPHEXT ! Declarative modules -USE MODD_CONF, ONLY : NVERB +USE MODD_PARAMETERS, ONLY: JPHEXT ! Declarative modules +USE MODD_CONF, ONLY: NVERB USE MODD_LUNIT_n, ONLY: TLUOUT +use modd_precision, only: MNHREAL_MPI ! USE MODD_BIKHARDT_n ! @@ -192,7 +193,7 @@ INTEGER :: KDXRATIO_C, KDYRATIO_C !$20140704 !$20140711 not INT, REAL !! REAL :: ZMAXVAL -REAL :: LOCMAXVAL +REAL :: ZLOCMAXVAL !$20140801 INTEGER :: IORX, IORY, IIBINT,IJBINT,IIEINT,IJEINT INTEGER :: IXOR_C_ll, IXEND_C_ll ! origin and end of the local subdomain of the child model 2 @@ -414,8 +415,8 @@ IF (KDXRATIO/=1 .OR. KDYRATIO/=1) THEN ! ALLOCATE(ZDZS_3D(SIZE(ZDZS_C,1),SIZE(ZDZS_C,2),1)) ! WARNING : this is highly inefficient, this copy is unecessary ZDZS_3D(:,:,1)=ZDZS_C(:,:) ! We could write a function MAX2D_ll or use a POINTER for ZDZS_3D - LOCMAXVAL=MAXVAL(ABS(ZDZS_C)) - CALL MPI_ALLREDUCE(LOCMAXVAL,ZMAXVAL,1,MPI_PRECISION,MPI_MAX,NMNH_COMM_WORLD,IINFO_ll) + ZLOCMAXVAL=MAXVAL(ABS(ZDZS_C)) + CALL MPI_ALLREDUCE(ZLOCMAXVAL,ZMAXVAL,1,MNHREAL_MPI,MPI_MAX,NMNH_COMM_WORLD,IINFO_ll) IF (ZMAXVAL<1.E-3) THEN EXIT ENDIF diff --git a/src/MNH/write_lfifm1_for_diag.f90 b/src/MNH/write_lfifm1_for_diag.f90 index 188a9f0c6..dd015ccae 100644 --- a/src/MNH/write_lfifm1_for_diag.f90 +++ b/src/MNH/write_lfifm1_for_diag.f90 @@ -203,6 +203,7 @@ USE MODD_RADAR, ONLY: XLAT_RAD,XELEV,& NCURV_INTERPOL,LATT,LCART_RAD,NPTS_H,NPTS_V,XGRID,& LREFR,LDNDZ,NMAX,CNAME_RAD,NDIFF,& XLON_RAD,XALT_RAD,XLAM_RAD,XDT_RAD,LWBSCS,LWREFL +use modd_precision, only: MNHREAL_MPI ! USE MODI_RADAR_SIMULATOR ! @@ -3854,7 +3855,7 @@ IF(LRADAR .AND. LUSERR) THEN DEALLOCATE(CLATLON) END DO ELSE ! polar output - CALL MPI_ALLREDUCE(ZWORK42, ZWORK42_BIS, SIZE(ZWORK42), MPI_PRECISION, MPI_MAX, NMNH_COMM_WORLD, IERR) + CALL MPI_ALLREDUCE(ZWORK42, ZWORK42_BIS, SIZE(ZWORK42), MNHREAL_MPI, MPI_MAX, NMNH_COMM_WORLD, IERR) DO JI=1,NBRAD IEL=NBELEV(JI) DO JEL=1,IEL diff --git a/src/SURFEX/mode_gridtype_conf_proj.F90 b/src/SURFEX/mode_gridtype_conf_proj.F90 index ef3407628..4e8893414 100644 --- a/src/SURFEX/mode_gridtype_conf_proj.F90 +++ b/src/SURFEX/mode_gridtype_conf_proj.F90 @@ -41,10 +41,11 @@ CONTAINS ! USE MODD_SURF_PAR, ONLY : XUNDEF, NUNDEF #ifdef MNH_PARALLEL -USE MODD_VAR_ll, ONLY : NPROC, IP, MPI_PRECISION, NMNH_COMM_WORLD, YSPLITTING USE MODD_MPIF +use modd_precision, only: MNHREAL_MPI USE MODE_SPLITTINGZ_ll, ONLY : LINI_PARAZ USE MODE_TOOLS_ll, ONLY : GET_OR_ll +USE MODD_VAR_ll, ONLY : NPROC, IP, NMNH_COMM_WORLD, YSPLITTING #endif ! IMPLICIT NONE @@ -136,7 +137,7 @@ IF ( NPROC > 1 .AND. LINI_PARAZ) THEN ENDIF CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) ! Then this process broadcasts the space steps in X direction in order to have the same space steps on all processes - CALL MPI_BCAST(PGRID_PAR(9), 1, MPI_PRECISION, IROOTPROC, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_BCAST(PGRID_PAR(9), 1, MNHREAL_MPI, IROOTPROC, NMNH_COMM_WORLD, IINFO_ll) ! ! get the processes with IL>0 with the southmost points CALL MPI_ALLREDUCE(IYOR, IYORMIN, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) @@ -147,7 +148,7 @@ IF ( NPROC > 1 .AND. LINI_PARAZ) THEN ENDIF CALL MPI_ALLREDUCE(IROOT, IROOTPROC, 1, MPI_INTEGER, MPI_MIN, NMNH_COMM_WORLD, IINFO_ll) ! Then this process broadcasts the space steps in Y direction in order to have the same space steps on all processes - CALL MPI_BCAST(PGRID_PAR(10), 1, MPI_PRECISION, IROOTPROC, NMNH_COMM_WORLD, IINFO_ll) + CALL MPI_BCAST(PGRID_PAR(10), 1, MNHREAL_MPI, IROOTPROC, NMNH_COMM_WORLD, IINFO_ll) ENDIF #endif ! -- GitLab