Index: NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/lib_mpp.F90
===================================================================
--- NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/lib_mpp.F90	(revision 10170)
+++ NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/lib_mpp.F90	(revision 10172)
@@ -170,5 +170,8 @@
    INTEGER, PUBLIC                               ::   n_sequence = 0               !: # of communicated arrays
    LOGICAL                                       ::   l_comm_report_done = .false. !: print report only once
-
+   
+   ! timing summary report
+   REAL(wp), PUBLIC ::  waiting_time = 0._wp, compute_time = 0._wp, elapsed_time = 0._wp
+   
    REAL(wp), DIMENSION(:), ALLOCATABLE, SAVE ::   tampon   ! buffer in case of bsend
 
@@ -1609,4 +1612,26 @@
       !
    END SUBROUTINE mpp_lnk_2d_icb
+
+   
+   SUBROUTINE tic_tac (l_tic)
+
+    LOGICAL, INTENT(IN) :: l_tic
+    REAL(wp), SAVE :: tic_wt, tic_ct = 0._wp
+
+    IF( ncom_stp <= nit000 ) RETURN
+    IF( ncom_stp == nitend ) RETURN
+    
+#if defined key_mpp_mpi
+    IF ( l_tic ) THEN
+       tic_wt = MPI_Wtime()                                                        ! start count tic->tac (waiting time)
+       IF ( tic_ct > 0.0_wp ) compute_time = compute_time + MPI_Wtime() - tic_ct   ! cumulate count tac->tic
+    ELSE
+       waiting_time = waiting_time + MPI_Wtime() - tic_wt                          ! cumulate count tic->tac
+       tic_ct = MPI_Wtime()                                                        ! start count tac->tic (waiting time)
+    ENDIF
+#endif
+    
+   END SUBROUTINE tic_tac
+
    
 #else
Index: NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/mpp_lnk_generic.h90
===================================================================
--- NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/mpp_lnk_generic.h90	(revision 10170)
+++ NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/mpp_lnk_generic.h90	(revision 10172)
@@ -205,4 +205,6 @@
       ENDIF
       !
+      IF( ln_timing ) CALL tic_tac(.TRUE.)
+      !
       SELECT CASE ( nbondi )
       CASE ( -1 )
@@ -223,4 +225,7 @@
       END SELECT
       !
+      IF( ln_timing ) CALL tic_tac(.FALSE.)
+      !
+      !
       !                           ! Write Dirichlet lateral conditions
       iihom = nlci-nn_hls
@@ -281,4 +286,6 @@
       imigr = nn_hls * jpi * ipk * ipl * ipf
       !
+      IF( ln_timing ) CALL tic_tac(.TRUE.)
+      ! 
       SELECT CASE ( nbondj )
       CASE ( -1 )
@@ -299,4 +306,5 @@
       END SELECT
       !
+      IF( ln_timing ) CALL tic_tac(.FALSE.)
       !                           ! Write Dirichlet lateral conditions
       ijhom = nlcj-nn_hls
Index: NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/mpp_nfd_generic.h90
===================================================================
--- NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/mpp_nfd_generic.h90	(revision 10170)
+++ NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/mpp_nfd_generic.h90	(revision 10172)
@@ -116,4 +116,6 @@
             END DO
          END DO
+         !
+         IF( ln_timing ) CALL tic_tac(.TRUE.)
          !
          DO jr = 1, nsndto
@@ -167,4 +169,7 @@
             END DO
          ENDIF
+         !
+         IF( ln_timing ) CALL tic_tac(.FALSE.)
+         !
          DO jf = 1, ipf
             CALL lbc_nfd_nogather( ztabl(:,:,:,:,jf), ztabr(:,:,:,:,jf), cd_nat LBC_ARG, psgn LBC_ARG )   ! North fold boundary condition
@@ -195,6 +200,10 @@
          IF ( jpni*jpnj /= jpnij ) ztab(:,:,:,:,:)=0._wp
          !
+         IF( ln_timing ) CALL tic_tac(.TRUE.)
+         !
          CALL MPI_ALLGATHER( znorthloc  , itaille, MPI_DOUBLE_PRECISION,                &
             &                znorthgloio, itaille, MPI_DOUBLE_PRECISION, ncomm_north, ierr )
+         !
+         IF( ln_timing ) CALL tic_tac(.FALSE.)
          !
          DO jr = 1, ndim_rank_north         ! recover the global north array
