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