From 5de5b524a13289bbbe58da518ae54e068de14782 Mon Sep 17 00:00:00 2001 From: Juan Escobar <escj@aero.obs-mip.fr> Date: Thu, 24 May 2018 15:11:41 +0200 Subject: [PATCH] Juan 24/05/2018: COUPLING , introduce new LMNH_ISINIT variable to initialise correctly MNH with INIT_NMNH_COMM_WORLD in coupled run --- src/LIB/SURCOUCHE/src/modd_var_ll.f90 | 1 + src/LIB/SURCOUCHE/src/mode_init_ll.f90 | 18 +++++++++++------- src/LIB/SURCOUCHE/src/mode_io.f90 | 11 ++++------- src/LIB/SURCOUCHE/src/mode_mnh_world.f90 | 10 ++++++++-- src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 | 8 +------- 5 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/modd_var_ll.f90 b/src/LIB/SURCOUCHE/src/modd_var_ll.f90 index 8ce4b7d18..b0688132f 100644 --- a/src/LIB/SURCOUCHE/src/modd_var_ll.f90 +++ b/src/LIB/SURCOUCHE/src/modd_var_ll.f90 @@ -93,6 +93,7 @@ INTEGER,SAVE :: NZ_PROC_ll = 0 ! Number of proc to use in the Z splitting ! !JUANZ INTEGER :: NMNH_COMM_WORLD + LOGICAL :: LMNH_ISINIT = .FALSE. !JUANZ INTEGER :: NHALO_COM INTEGER :: NTRANS_COM diff --git a/src/LIB/SURCOUCHE/src/mode_init_ll.f90 b/src/LIB/SURCOUCHE/src/mode_init_ll.f90 index 97faecbb0..6cd17f9c6 100644 --- a/src/LIB/SURCOUCHE/src/mode_init_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_init_ll.f90 @@ -532,7 +532,6 @@ TYPE(PROCONF_ll), POINTER :: TZPROCONF INTEGER :: JMODEL - LOGICAL :: GISINIT !JUANZ INTEGER :: myrank_key,new_rank,new_size INTEGER :: COLOR = 1 @@ -544,12 +543,7 @@ ! -------------- ! KINFO_ll = 0 - CALL MPI_INITIALIZED(GISINIT, KINFO_ll) - IF (.NOT. GISINIT) THEN - !CALL MPI_INIT(KINFO_ll) - !JUANZ create new/remapped communicator if need - CALL INIT_NMNH_COMM_WORLD(KINFO_ll) - END IF + CALL INIT_NMNH_COMM_WORLD(KINFO_ll) ! CALL MPI_COMM_DUP(NMNH_COMM_WORLD, NHALO_COM, KINFO_ll) ! @@ -751,6 +745,7 @@ !! ------------- ! Original 01/06/98 ! R. Guivarch 15/09/99 deallocation of grid-nesting arrays +! J. Pianezze 11/2016 - add LOASIS flag ! !------------------------------------------------------------------------------- ! @@ -760,6 +755,9 @@ ! USE MODD_STRUCTURE_ll ! USE MODD_VAR_ll, ONLY : NIOUNIT, YOUTPUTFILE USE MODD_IO_ll, ONLY : ISP +#ifdef CPLOASIS + USE MODD_SFX_OASIS, ONLY : LOASIS +#endif ! #ifdef MNH_GA USE MODE_GA @@ -792,7 +790,13 @@ USE MODE_GA CALL ga_terminate() endif #endif +#ifdef CPLOASIS +IF (.NOT. LOASIS) THEN + CALL MPI_FINALIZE(KINFO_ll) +END IF +#else CALL MPI_FINALIZE(KINFO_ll) +#endif ! !------------------------------------------------------------------------------- ! diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index 741cccab1..079ac5d30 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -16,6 +16,7 @@ ! P. Wautelet : may 2016: use NetCDF Fortran module ! P. Wautelet : July 2016: added type OUTBAK ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O +! J. Pianezze 01/08/2016 add LOASIS flag ! MODULE MODE_IO_ll @@ -143,18 +144,14 @@ CONTAINS IMPLICIT NONE INTEGER :: IERR, IOS - LOGICAL :: GISINIT CALL PRINT_MSG(NVERB_DEBUG,'IO','INITIO_ll','called') ISTDERR = 0 - CALL MPI_INITIALIZED(GISINIT, IERR) - IF (.NOT. GISINIT) THEN - !CALL MPI_INIT(IERR) - CALL INIT_NMNH_COMM_WORLD(IERR) - if (IERR .NE.0) CALL PRINT_MSG(NVERB_FATAL,'IO','SET_CONFIO_ll','problem with remapping of NMNH_COMM_WORLD') - END IF + CALL INIT_NMNH_COMM_WORLD(IERR) + IF (IERR .NE.0) CALL PRINT_MSG(NVERB_FATAL,'IO','SET_CONFIO_ll','problem with remapping of NMNH_COMM_WORLD') + !! Now MPI is initialized for sure !! Default number for Processor I/O diff --git a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 index e6da700c2..7873bdb8c 100644 --- a/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 +++ b/src/LIB/SURCOUCHE/src/mode_mnh_world.f90 @@ -24,7 +24,7 @@ CONTAINS #ifdef MNH_GA USE MODD_MPIF , ONLY : MPI_THREAD_MULTIPLE #endif - USE MODD_VAR_ll, ONLY : IP, NPROC, NMNH_COMM_WORLD + USE MODD_VAR_ll, ONLY : IP, NPROC, NMNH_COMM_WORLD , LMNH_ISINIT !JUANZ IMPLICIT NONE @@ -62,7 +62,6 @@ CONTAINS ! Read namelist config file ! IF ( irank .EQ. 0 ) THEN - PRINT*,"hello world from rank=",irank," nproc=",IPROC OPEN(unit=10,form="formatted",file=conf_mnh_world,STATUS='OLD',iostat=IERR) ! Read IO parameter IF (IERR.EQ.0) THEN @@ -109,11 +108,18 @@ CONTAINS ! !JUANZ create new/remapped communicator ! + END IF + IF (.NOT. LMNH_ISINIT ) THEN + LMNH_ISINIT = .TRUE. + ! CALL MPI_COMM_RANK(NMNH_COMM_WORLD, IP, KINFO_ll) IP = IP + 1 ! CALL MPI_COMM_SIZE(NMNH_COMM_WORLD, NPROC, KINFO_ll) ! + IF ( IP .EQ. 1 ) THEN + PRINT*,"hello MNH world from IP=",IP," nproc=",NPROC + END IF END IF END SUBROUTINE INIT_NMNH_COMM_WORLD diff --git a/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 b/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 index dcfd6cf08..754a30d12 100644 --- a/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 +++ b/src/LIB/SURCOUCHE/src/mode_splittingz_ll.f90 @@ -170,13 +170,7 @@ CONTAINS ! -------------- ! KINFO_ll = 0 - CALL MPI_INITIALIZED(GISINIT, KINFO_ll) - IF (.NOT. GISINIT) THEN - !CALL MPI_INIT(KINFO_ll) - !STOP "mode_splittinz_ll.f90::INI_PARAZ_ll MPI_INIT not initialized ---> PROBLEME WITH REMAPPING NMNH_COMM_WORLD " - CALL INIT_NMNH_COMM_WORLD(KINFO_ll) - END IF - ! + CALL INIT_NMNH_COMM_WORLD(KINFO_ll) ! CALL MPI_COMM_DUP(NMNH_COMM_WORLD, NHALO_COM, KINFO_ll) ! -- GitLab