From bf380c37834b8cc50a9dfad3011be0bdde351ab1 Mon Sep 17 00:00:00 2001
From: Sebastien Masson <sebastien.masson@locean.ipsl.fr>
Date: Tue, 20 Dec 2022 18:27:45 +0100
Subject: [PATCH] fix mpp_start with AGRIF in main

---
 src/OCE/LBC/lib_mpp.F90 | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/src/OCE/LBC/lib_mpp.F90 b/src/OCE/LBC/lib_mpp.F90
index eeec1305..35d87d40 100644
--- a/src/OCE/LBC/lib_mpp.F90
+++ b/src/OCE/LBC/lib_mpp.F90
@@ -253,22 +253,13 @@ CONTAINS
          IF( ierr /= MPI_SUCCESS ) CALL ctl_stop( 'STOP', ' lib_mpp: Error in routine mpi_init' )
       ENDIF
 
-      IF( PRESENT(localComm) ) THEN
-         IF( Agrif_Root() ) THEN
-            mpi_comm_oce = localComm
-         ENDIF
-      ELSE
-# if defined key_agrif
-          IF( Agrif_Root() ) THEN
-# endif
-              CALL mpi_comm_dup( mpi_comm_world, mpi_comm_oce, ierr)
-              IF( ierr /= MPI_SUCCESS ) CALL ctl_stop( 'STOP', ' lib_mpp: Error in routine mpi_comm_dup' )
 # if defined key_agrif
-          ELSE
-              mpi_comm_oce = Agrif_MPI_get_grid_comm()
-          ENDIF
+      IF( Agrif_Root() )   CALL Agrif_MPI_Init(localComm)
+      mpi_comm_oce = Agrif_MPI_get_grid_comm()   ! works for parent and children
+# else
+      mpi_comm_oce = mpi_comm_world   ! default
+      IF( PRESENT(localComm) )   mpi_comm_oce = localComm
 # endif
-      ENDIF
 
       CALL mpi_comm_rank( mpi_comm_oce, mpprank, ierr )
       CALL mpi_comm_size( mpi_comm_oce, mppsize, ierr )
-- 
GitLab