Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ASM/asminc.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ASM/asminc.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ASM/asminc.F90	(revision 9814)
@@ -421,5 +421,5 @@
                   END DO
                END DO
-               CALL lbc_lnk( zhdiv, 'T', 1. )   ! lateral boundary cond. (no sign change)
+               CALL lbc_lnk("asminc",zhdiv, 'T', 1. )   ! lateral boundary cond. (no sign change)
                !
                DO jj = 2, jpjm1
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/BDY/bdydyn3d.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/BDY/bdydyn3d.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/BDY/bdydyn3d.F90	(revision 9814)
@@ -319,5 +319,5 @@
       END DO
       !
-      CALL lbc_lnk_multi( ua, 'U', -1.,  va, 'V', -1. )   ! Boundary points should be updated
+      CALL lbc_lnk_multi("bdydyn3d",ua, 'U', -1.,  va, 'V', -1. )   ! Boundary points should be updated
       !
       IF( ln_timing )   CALL timing_stop('bdy_dyn3d_dmp')
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/BDY/bdyini.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/BDY/bdyini.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/BDY/bdyini.F90	(revision 9814)
@@ -1133,5 +1133,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( bdyumask, 'U', 1. , bdyvmask, 'V', 1. )   ! Lateral boundary cond. 
+      CALL lbc_lnk_multi("bdyini",bdyumask, 'U', 1. , bdyvmask, 'V', 1. )   ! Lateral boundary cond. 
 
       ! bdy masks are now set to zero on boundary points:
@@ -1168,6 +1168,6 @@
 
       ! Lateral boundary conditions
-      CALL lbc_lnk( zfmask, 'F', 1. ) 
-      CALL lbc_lnk_multi( bdyumask, 'U', 1. , bdyvmask, 'V', 1., bdytmask, 'T', 1. )
+      CALL lbc_lnk("bdyini",zfmask, 'F', 1. ) 
+      CALL lbc_lnk_multi("bdyini",bdyumask, 'U', 1. , bdyvmask, 'V', 1., bdytmask, 'T', 1. )
       DO ib_bdy = 1, nb_bdy       ! Indices and directions of rim velocity components
 
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/CRS/crsfld.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/CRS/crsfld.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/CRS/crsfld.F90	(revision 9814)
@@ -164,5 +164,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z3d, 'T', 1. )
+         CALL lbc_lnk("crsfld",z3d, 'T', 1. )
          !
          CALL crs_dom_ope( z3d, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 )
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/CRS/crslbclnk.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/CRS/crslbclnk.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/CRS/crslbclnk.F90	(revision 9814)
@@ -55,6 +55,6 @@
       IF( .NOT.ll_grid_crs )   CALL dom_grid_crs   ! Save the parent grid information  & Switch to coarse grid domain
       !
-      IF( PRESENT( cd_mpp ) ) THEN   ;   CALL lbc_lnk( pt3d1, cd_type1, psgn, cd_mpp, pval=zval  )
-      ELSE                           ;   CALL lbc_lnk( pt3d1, cd_type1, psgn        , pval=zval  )
+      IF( PRESENT( cd_mpp ) ) THEN   ;   CALL lbc_lnk("crslbclnk",pt3d1, cd_type1, psgn, cd_mpp, pval=zval  )
+      ELSE                           ;   CALL lbc_lnk("crslbclnk",pt3d1, cd_type1, psgn        , pval=zval  )
       ENDIF
       !
@@ -92,6 +92,6 @@
       IF( .NOT.ll_grid_crs )   CALL dom_grid_crs   ! Save the parent grid information  & Switch to coarse grid domain
       !
-      IF( PRESENT( cd_mpp ) ) THEN   ;   CALL lbc_lnk( pt2d, cd_type, psgn, cd_mpp, pval=zval  )
-      ELSE                           ;   CALL lbc_lnk( pt2d, cd_type, psgn        , pval=zval  )
+      IF( PRESENT( cd_mpp ) ) THEN   ;   CALL lbc_lnk("crslbclnk",pt2d, cd_type, psgn, cd_mpp, pval=zval  )
+      ELSE                           ;   CALL lbc_lnk("crslbclnk",pt2d, cd_type, psgn        , pval=zval  )
       ENDIF
       !
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DIA/diaar5.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DIA/diaar5.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DIA/diaar5.F90	(revision 9814)
@@ -245,5 +245,5 @@
          ENDIF
 !!gm useless lbc_lnk since the computation above is performed over 1:jpi & 1:jpj
-!!gm           CALL lbc_lnk( zpe, 'T', 1._wp)         
+!!gm           CALL lbc_lnk("diaar5",zpe, 'T', 1._wp)         
           CALL iom_put( 'tnpeo', zpe )
           DEALLOCATE( zpe )
@@ -285,5 +285,5 @@
          END DO
        END DO
-       CALL lbc_lnk( z2d, 'U', -1. )
+       CALL lbc_lnk("diaar5",z2d, 'U', -1. )
        IF( cptr == 'adv' ) THEN
           IF( ktra == jp_tem ) CALL iom_put( "uadv_heattr" , rau0_rcp * z2d )  ! advective heat transport in i-direction
@@ -303,5 +303,5 @@
           END DO
        END DO
-       CALL lbc_lnk( z2d, 'V', -1. )
+       CALL lbc_lnk("diaar5",z2d, 'V', -1. )
        IF( cptr == 'adv' ) THEN
           IF( ktra == jp_tem ) CALL iom_put( "vadv_heattr" , rau0_rcp * z2d )  ! advective heat transport in j-direction
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DIA/diawri.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DIA/diawri.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DIA/diawri.F90	(revision 9814)
@@ -181,5 +181,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'T', 1. )
+         CALL lbc_lnk( "diawri",z2d, 'T', 1. )
          CALL iom_put( "taubot", z2d )           
       ENDIF
@@ -237,5 +237,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'T', 1. )
+         CALL lbc_lnk( "diawri",z2d, 'T', 1. )
          CALL iom_put( "sstgrad2",  z2d )          ! square of module of sst gradient
          z2d(:,:) = SQRT( z2d(:,:) )
@@ -281,5 +281,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z3d, 'T', 1. )
+         CALL lbc_lnk( "diawri",z3d, 'T', 1. )
          CALL iom_put( "eken", z3d )                 ! kinetic energy
       ENDIF
@@ -307,5 +307,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'U', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'U', -1. )
          CALL iom_put( "u_heattr", 0.5*rcp * z2d )    ! heat transport in i-direction
       ENDIF
@@ -320,5 +320,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'U', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'U', -1. )
          CALL iom_put( "u_salttr", 0.5 * z2d )        ! heat transport in i-direction
       ENDIF
@@ -342,5 +342,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'V', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'V', -1. )
          CALL iom_put( "v_heattr", 0.5*rcp * z2d )    !  heat transport in j-direction
       ENDIF
@@ -355,5 +355,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'V', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'V', -1. )
          CALL iom_put( "v_salttr", 0.5 * z2d )        !  heat transport in j-direction
       ENDIF
@@ -368,5 +368,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'T', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'T', -1. )
          CALL iom_put( "tosmint", rau0 * z2d )        ! Vertical integral of temperature
       ENDIF
@@ -380,5 +380,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'T', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'T', -1. )
          CALL iom_put( "somint", rau0 * z2d )         ! Vertical integral of salinity
       ENDIF
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/closea.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/closea.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/closea.F90	(revision 9814)
@@ -396,5 +396,5 @@
       emp (:,:) = emp (:,:) * tmask(:,:,1)
       !
-      CALL lbc_lnk( emp , 'T', 1._wp )
+      CALL lbc_lnk("closea",emp , 'T', 1._wp )
       !
    END SUBROUTINE sbc_clo
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/dommsk.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/dommsk.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/dommsk.F90	(revision 9814)
@@ -145,5 +145,5 @@
 !SF  add here lbc_lnk: bug not still understood : cause now domain configuration is read !
 !!gm I don't understand why...  
-      CALL lbc_lnk( tmask  , 'T', 1._wp )      ! Lateral boundary conditions
+      CALL lbc_lnk("dommsk",tmask  , 'T', 1._wp )      ! Lateral boundary conditions
 
      ! Mask corrections for bdy (read in mppini2)
@@ -183,5 +183,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. )      ! Lateral boundary conditions
+      CALL lbc_lnk_multi("dommsk",umask, 'U', 1., vmask, 'V', 1., fmask, 'F', 1. )      ! Lateral boundary conditions
  
       ! Ocean/land mask at wu-, wv- and w points    (computed from tmask)
@@ -283,5 +283,5 @@
          DEALLOCATE( zwf )
          !
-         CALL lbc_lnk( fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask
+         CALL lbc_lnk("dommsk",fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask
          !
          ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) depending on ln_vorlat
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domvvl.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domvvl.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domvvl.F90	(revision 9814)
@@ -408,5 +408,5 @@
          !                       ! d - thickness diffusion transport: boundary conditions
          !                             (stored for tracer advction and continuity equation)
-         CALL lbc_lnk_multi( un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp)
+         CALL lbc_lnk_multi("domvvl",un_td , 'U' , -1._wp, vn_td , 'V' , -1._wp)
 
          ! 4 - Time stepping of baroclinic scale factors
@@ -419,5 +419,5 @@
             z2dt = 2.0_wp * rdt
          ENDIF
-         CALL lbc_lnk( tilde_e3t_a(:,:,:), 'T', 1._wp )
+         CALL lbc_lnk("domvvl",tilde_e3t_a(:,:,:), 'T', 1._wp )
          tilde_e3t_a(:,:,:) = tilde_e3t_b(:,:,:) + z2dt * tmask(:,:,:) * tilde_e3t_a(:,:,:)
 
@@ -711,5 +711,5 @@
             END DO
          END DO
-         CALL lbc_lnk( pe3_out(:,:,:), 'U', 1._wp )
+         CALL lbc_lnk("domvvl",pe3_out(:,:,:), 'U', 1._wp )
          pe3_out(:,:,:) = pe3_out(:,:,:) + e3u_0(:,:,:)
          !
@@ -724,5 +724,5 @@
             END DO
          END DO
-         CALL lbc_lnk( pe3_out(:,:,:), 'V', 1._wp )
+         CALL lbc_lnk("domvvl",pe3_out(:,:,:), 'V', 1._wp )
          pe3_out(:,:,:) = pe3_out(:,:,:) + e3v_0(:,:,:)
          !
@@ -738,5 +738,5 @@
             END DO
          END DO
-         CALL lbc_lnk( pe3_out(:,:,:), 'F', 1._wp )
+         CALL lbc_lnk("domvvl",pe3_out(:,:,:), 'F', 1._wp )
          pe3_out(:,:,:) = pe3_out(:,:,:) + e3f_0(:,:,:)
          !
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domwri.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domwri.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domwri.F90	(revision 9814)
@@ -210,5 +210,5 @@
       !
       puniq(:,:) = ztstref(:,:)                   ! default definition
-      CALL lbc_lnk( puniq, cdgrd, 1. )            ! apply boundary conditions
+      CALL lbc_lnk("domwri",puniq, cdgrd, 1. )            ! apply boundary conditions
       lldbl(:,:,1) = puniq(:,:) == ztstref(:,:)   ! check which values have been changed 
       !
@@ -271,5 +271,5 @@
          END DO
       END DO
-      CALL lbc_lnk( zx1, 'T', 1. )
+      CALL lbc_lnk("domwri",zx1, 'T', 1. )
       !
       IF( PRESENT( px1 ) )    px1 = zx1
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domzgr.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domzgr.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/domzgr.F90	(revision 9814)
@@ -307,10 +307,10 @@
       END DO
       ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk 
-      zk(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk( zk, 'U', 1. )   ;   miku(:,:) = MAX( INT( zk(:,:) ), 1 )
-      zk(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk( zk, 'V', 1. )   ;   mikv(:,:) = MAX( INT( zk(:,:) ), 1 )
-      zk(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk( zk, 'F', 1. )   ;   mikf(:,:) = MAX( INT( zk(:,:) ), 1 )
-      !
-      zk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk( zk, 'U', 1. )   ;   mbku(:,:) = MAX( INT( zk(:,:) ), 1 )
-      zk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk( zk, 'V', 1. )   ;   mbkv(:,:) = MAX( INT( zk(:,:) ), 1 )
+      zk(:,:) = REAL( miku(:,:), wp )   ;   CALL lbc_lnk("domzgr",zk, 'U', 1. )   ;   miku(:,:) = MAX( INT( zk(:,:) ), 1 )
+      zk(:,:) = REAL( mikv(:,:), wp )   ;   CALL lbc_lnk("domzgr",zk, 'V', 1. )   ;   mikv(:,:) = MAX( INT( zk(:,:) ), 1 )
+      zk(:,:) = REAL( mikf(:,:), wp )   ;   CALL lbc_lnk("domzgr",zk, 'F', 1. )   ;   mikf(:,:) = MAX( INT( zk(:,:) ), 1 )
+      !
+      zk(:,:) = REAL( mbku(:,:), wp )   ;   CALL lbc_lnk("domzgr",zk, 'U', 1. )   ;   mbku(:,:) = MAX( INT( zk(:,:) ), 1 )
+      zk(:,:) = REAL( mbkv(:,:), wp )   ;   CALL lbc_lnk("domzgr",zk, 'V', 1. )   ;   mbkv(:,:) = MAX( INT( zk(:,:) ), 1 )
       !
    END SUBROUTINE zgr_top_bot
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/iscplrst.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/iscplrst.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DOM/iscplrst.F90	(revision 9814)
@@ -175,5 +175,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( sshn, 'T', 1., zsmask1, 'T', 1. )
+         CALL lbc_lnk_multi("iscplrst",sshn, 'T', 1., zsmask1, 'T', 1. )
          zssh0   = sshn
          zsmask0 = zsmask1
@@ -344,5 +344,5 @@
           END DO
           
-          CALL lbc_lnk_multi( tsn(:,:,:,jp_tem), 'T', 1., tsn(:,:,:,jp_sal), 'T', 1., ztmask1, 'T', 1.)
+          CALL lbc_lnk_multi("iscplrst",tsn(:,:,:,jp_tem), 'T', 1., tsn(:,:,:,jp_sal), 'T', 1., ztmask1, 'T', 1.)
 
           ! update
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/divhor.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/divhor.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/divhor.F90	(revision 9814)
@@ -104,5 +104,5 @@
       IF( ln_iscpl .AND. ln_hsb )   CALL iscpl_div( hdivn ) !==  ice sheet  ==!   (update hdivn field)
       !
-      CALL lbc_lnk( hdivn, 'T', 1. )   !   (no sign change)
+      CALL lbc_lnk("divhor",hdivn, 'T', 1. )   !   (no sign change)
       !
       IF( ln_timing )   CALL timing_stop('div_hor')
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynadv_ubs.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynadv_ubs.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynadv_ubs.F90	(revision 9814)
@@ -123,5 +123,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( zlu_uu(:,:,:,1), 'U', 1. , zlu_uv(:,:,:,1), 'U', 1.,  &
+      CALL lbc_lnk_multi("dynadv_ubs",zlu_uu(:,:,:,1), 'U', 1. , zlu_uv(:,:,:,1), 'U', 1.,  &
                       &   zlu_uu(:,:,:,2), 'U', 1. , zlu_uv(:,:,:,2), 'U', 1.,  & 
                       &   zlv_vv(:,:,:,1), 'V', 1. , zlv_vu(:,:,:,1), 'V', 1.,  &
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynhpg.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynhpg.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynhpg.F90	(revision 9814)
@@ -490,5 +490,5 @@
            END DO
         END DO
-        CALL lbc_lnk_multi( zcpx, 'U', 1., zcpy, 'V', 1. )
+        CALL lbc_lnk_multi("dynhpg",zcpx, 'U', 1., zcpy, 'V', 1. )
       END IF
 
@@ -723,5 +723,5 @@
            END DO
         END DO
-        CALL lbc_lnk_multi( zcpx, 'U', 1., zcpy, 'V', 1. )
+        CALL lbc_lnk_multi("dynhpg",zcpx, 'U', 1., zcpy, 'V', 1. )
       END IF
 
@@ -883,5 +883,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( rho_k, 'W', 1., rho_i, 'U', 1., rho_j, 'V', 1. )
+      CALL lbc_lnk_multi("dynhpg",rho_k, 'W', 1., rho_i, 'U', 1., rho_j, 'V', 1. )
 
       ! ---------------
@@ -1016,5 +1016,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( zcpx, 'U', 1., zcpy, 'V', 1. )
+         CALL lbc_lnk_multi("dynhpg",zcpx, 'U', 1., zcpy, 'V', 1. )
       ENDIF
 
@@ -1102,5 +1102,5 @@
       END DO
 
-      CALL lbc_lnk_multi (zsshu_n, 'U', 1., zsshv_n, 'V', 1. )
+      CALL lbc_lnk_multi("dynhpg",zsshu_n, 'U', 1., zsshv_n, 'V', 1. )
 
       DO jj = 2, jpjm1
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynkeg.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynkeg.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynkeg.F90	(revision 9814)
@@ -158,5 +158,5 @@
             END DO
          END DO
-         CALL lbc_lnk( zhke, 'T', 1. )
+         CALL lbc_lnk("dynkeg",zhke, 'T', 1. )
          !
       END SELECT
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynldf_iso.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynldf_iso.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynldf_iso.F90	(revision 9814)
@@ -136,5 +136,5 @@
          END DO
          ! Lateral boundary conditions on the slopes
-         CALL lbc_lnk_multi( uslp , 'U', -1., vslp , 'V', -1., wslpi, 'W', -1., wslpj, 'W', -1. )
+         CALL lbc_lnk_multi("dynldf_iso",uslp , 'U', -1., vslp , 'V', -1., wslpi, 'W', -1., wslpj, 'W', -1. )
          !
        ENDIF
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynldf_lap_blp.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynldf_lap_blp.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynldf_lap_blp.F90	(revision 9814)
@@ -136,5 +136,5 @@
       CALL dyn_ldf_lap( kt, pub, pvb, zulap, zvlap, 1 )   ! rotated laplacian applied to ptb (output in zlap)
       !
-      CALL lbc_lnk_multi( zulap, 'U', -1., zvlap, 'V', -1. )             ! Lateral boundary conditions
+      CALL lbc_lnk_multi("dynldf_lap_blp",zulap, 'U', -1., zvlap, 'V', -1. )             ! Lateral boundary conditions
       !
       CALL dyn_ldf_lap( kt, zulap, zvlap, pua, pva, 2 )   ! rotated laplacian applied to zlap (output in pta)
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynnxt.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynnxt.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynnxt.F90	(revision 9814)
@@ -144,5 +144,5 @@
 # endif
       !
-      CALL lbc_lnk_multi( ua, 'U', -1., va, 'V', -1. )     !* local domain boundaries
+      CALL lbc_lnk_multi("dynnxt",ua, 'U', -1., va, 'V', -1. )     !* local domain boundaries
       !
       !                                !* BDY open boundaries
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynspg_ts.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynspg_ts.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynspg_ts.F90	(revision 9814)
@@ -262,5 +262,5 @@
                END DO
             END SELECT
-            CALL lbc_lnk( zwz, 'F', 1._wp )
+            CALL lbc_lnk("dynspg_ts",zwz, 'F', 1._wp )
             !
             ftne(1,:) = 0._wp ; ftnw(1,:) = 0._wp ; ftse(1,:) = 0._wp ; ftsw(1,:) = 0._wp
@@ -330,5 +330,5 @@
                END DO
             END DO
-            CALL lbc_lnk( zhf, 'F', 1._wp )
+            CALL lbc_lnk("dynspg_ts",zhf, 'F', 1._wp )
             ! JC: TBC. hf should be greater than 0 
             DO jj = 1, jpj
@@ -777,5 +777,5 @@
                END DO
             END DO
-            CALL lbc_lnk_multi( zwx, 'U', 1._wp, zwy, 'V', 1._wp )
+            CALL lbc_lnk_multi("dynspg_ts",zwx, 'U', 1._wp, zwy, 'V', 1._wp )
             !
             zhup2_e(:,:) = hu_0(:,:) + zwx(:,:)                ! Ocean depth at U- and V-points
@@ -868,5 +868,5 @@
          ssha_e(:,:) = (  sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) )  ) * ssmask(:,:)
          
-         CALL lbc_lnk( ssha_e, 'T',  1._wp )
+         CALL lbc_lnk("dynspg_ts",ssha_e, 'T',  1._wp )
 
          ! Duplicate sea level across open boundaries (this is only cosmetic if linssh=T)
@@ -888,5 +888,5 @@
                END DO
             END DO
-            CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp )
+            CALL lbc_lnk_multi("dynspg_ts",zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp )
          ENDIF   
          !                                 
@@ -1153,5 +1153,5 @@
          ENDIF
          !                                             !* domain lateral boundary
-         CALL lbc_lnk_multi( ua_e, 'U', -1._wp, va_e , 'V', -1._wp )
+         CALL lbc_lnk_multi("dynspg_ts",ua_e, 'U', -1._wp, va_e , 'V', -1._wp )
          !
          !                                                 ! open boundaries
@@ -1239,5 +1239,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions
+         CALL lbc_lnk_multi("dynspg_ts",zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions
          !
          DO jk=1,jpkm1
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynvor.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynvor.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/dynvor.F90	(revision 9814)
@@ -242,5 +242,5 @@
                END DO
             ENDIF
-            CALL lbc_lnk( zwz, 'F', 1. )
+            CALL lbc_lnk("dynvor",zwz, 'F', 1. )
             DO jj = 2, jpj
                DO ji = 2, jpi   ! vector opt.
@@ -270,5 +270,5 @@
                END DO
             ENDIF
-            CALL lbc_lnk( zwz, 'F', 1. )
+            CALL lbc_lnk("dynvor",zwz, 'F', 1. )
             DO jj = 2, jpj
                DO ji = 2, jpi   ! vector opt.
@@ -635,5 +635,5 @@
          ENDIF
          !
-         CALL lbc_lnk( zwz, 'F', 1. )
+         CALL lbc_lnk("dynvor",zwz, 'F', 1. )
          !
          !                                   !==  horizontal fluxes  ==!
@@ -765,5 +765,5 @@
          ENDIF
          !
-         CALL lbc_lnk( zwz, 'F', 1. )
+         CALL lbc_lnk("dynvor",zwz, 'F', 1. )
          !
          !                                   !==  horizontal fluxes  ==!
@@ -863,5 +863,5 @@
          END DO
          !
-         CALL lbc_lnk( fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask
+         CALL lbc_lnk("dynvor",fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask
          !
       ENDIF
@@ -903,5 +903,5 @@
                END DO
             END DO
-            CALL lbc_lnk_multi( di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. )   ! Lateral boundary conditions
+            CALL lbc_lnk_multi("dynvor",di_e2u_2, 'T', -1. , dj_e1v_2, 'T', -1. )   ! Lateral boundary conditions
             !
          CASE DEFAULT                        !* F-point metric term :   pre-compute di(e2u)/(2*e1e2f) and dj(e1v)/(2*e1e2f)
@@ -913,5 +913,5 @@
                END DO
             END DO
-            CALL lbc_lnk_multi( di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. )   ! Lateral boundary conditions
+            CALL lbc_lnk_multi("dynvor",di_e2v_2e1e2f, 'F', -1. , dj_e1u_2e1e2f, 'F', -1. )   ! Lateral boundary conditions
          END SELECT
          !
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/sshwzv.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/sshwzv.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/sshwzv.F90	(revision 9814)
@@ -110,5 +110,5 @@
       IF ( .NOT.ln_dynspg_ts ) THEN
          IF( ln_bdy ) THEN
-            CALL lbc_lnk( ssha, 'T', 1. )    ! Not sure that's necessary
+            CALL lbc_lnk("sshwzv",ssha, 'T', 1. )    ! Not sure that's necessary
             CALL bdy_ssh( ssha )             ! Duplicate sea level across open boundaries
          ENDIF
@@ -174,5 +174,5 @@
             END DO
          END DO
-         CALL lbc_lnk(zhdiv, 'T', 1.)  ! - ML - Perhaps not necessary: not used for horizontal "connexions"
+         CALL lbc_lnk("sshwzv",zhdiv, 'T', 1.)  ! - ML - Perhaps not necessary: not used for horizontal "connexions"
          !                             ! Is it problematic to have a wrong vertical velocity in boundary cells?
          !                             ! Same question holds for hdivn. Perhaps just for security
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/wet_dry.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/wet_dry.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/DYN/wet_dry.F90	(revision 9814)
@@ -241,5 +241,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( zwdlmtu, 'U', 1., zwdlmtv, 'V', 1. )
+         CALL lbc_lnk_multi("wet_dry",zwdlmtu, 'U', 1., zwdlmtv, 'V', 1. )
          !
          IF( lk_mpp )   CALL mpp_max(jflag)   !max over the global domain
@@ -257,6 +257,6 @@
       !
 !!gm TO BE SUPPRESSED ?  these lbc_lnk are useless since zwdlmtu and zwdlmtv are defined everywhere !
-      CALL lbc_lnk_multi( un  , 'U', -1., vn  , 'V', -1. )
-      CALL lbc_lnk_multi( un_b, 'U', -1., vn_b, 'V', -1. )
+      CALL lbc_lnk_multi("wet_dry",un  , 'U', -1., vn  , 'V', -1. )
+      CALL lbc_lnk_multi("wet_dry",un_b, 'U', -1., vn_b, 'V', -1. )
 !!gm
       !
@@ -370,5 +370,5 @@
          END DO  ! jj loop
          !
-         CALL lbc_lnk_multi( zwdlmtu, 'U', 1., zwdlmtv, 'V', 1. )
+         CALL lbc_lnk_multi("wet_dry",zwdlmtu, 'U', 1., zwdlmtv, 'V', 1. )
          !
          IF(lk_mpp) CALL mpp_max(jflag)   !max over the global domain
@@ -382,5 +382,5 @@
       !
 !!gm THIS lbc_lnk is useless since it is already done at the end of the jk1-loop
-      CALL lbc_lnk_multi( zflxu, 'U', -1., zflxv, 'V', -1. )
+      CALL lbc_lnk_multi("wet_dry",zflxu, 'U', -1., zflxv, 'V', -1. )
 !!gm end
       !
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ICB/icbclv.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ICB/icbclv.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ICB/icbclv.F90	(revision 9814)
@@ -173,7 +173,7 @@
       !
       DO jn = 1, nclasses
-         CALL lbc_lnk( berg_grid%stored_ice(:,:,jn), 'T', 1._wp )
+         CALL lbc_lnk("icbclv",berg_grid%stored_ice(:,:,jn), 'T', 1._wp )
       END DO
-      CALL lbc_lnk( berg_grid%stored_heat, 'T', 1._wp )
+      CALL lbc_lnk("icbclv",berg_grid%stored_heat, 'T', 1._wp )
       !
       IF( nn_verbose_level > 0 .AND. icntmax > 1 )   WRITE(numicb,*) 'icb_clv: icnt=', icnt,' on', narea
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ICB/icbini.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ICB/icbini.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ICB/icbini.F90	(revision 9814)
@@ -114,6 +114,6 @@
          END DO
       END DO
-      CALL lbc_lnk( src_calving_hflx, 'T', 1._wp )
-      CALL lbc_lnk( src_calving     , 'T', 1._wp )
+      CALL lbc_lnk("icbini",src_calving_hflx, 'T', 1._wp )
+      CALL lbc_lnk("icbini",src_calving     , 'T', 1._wp )
 
       ! work out interior of processor from exchange array
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/IOM/iom.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/IOM/iom.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/IOM/iom.F90	(revision 9814)
@@ -1285,9 +1285,9 @@
                !--- overlap areas and extra hallows (mpp)
                IF(     PRESENT(pv_r2d) .AND. idom /= jpdom_unknown ) THEN
-                  CALL lbc_lnk( pv_r2d,'Z',-999.,'no0' )
+                  CALL lbc_lnk("iom",pv_r2d,'Z',-999.,'no0' )
                ELSEIF( PRESENT(pv_r3d) .AND. idom /= jpdom_unknown ) THEN
                   ! this if could be simplified with the new lbc_lnk that works with any size of the 3rd dimension
                   IF( icnt(3) == inlev ) THEN
-                     CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' )
+                     CALL lbc_lnk("iom",pv_r3d,'Z',-999.,'no0' )
                   ELSE   ! put some arbitrary value (a call to lbc_lnk will be done later...)
                      DO jj = nlcj+1, jpj   ;   pv_r3d(1:nlci, jj, :) = pv_r3d(1:nlci, nlej, :)   ;   END DO
@@ -1314,5 +1314,5 @@
             CALL xios_recv_field( trim(cdvar), pv_r3d)
             IF(idom /= jpdom_unknown ) then
-                CALL lbc_lnk( pv_r3d,'Z',-999.,'no0' )
+                CALL lbc_lnk("iom",pv_r3d,'Z',-999.,'no0' )
             ENDIF
          ELSEIF( PRESENT(pv_r2d) ) THEN
@@ -1321,5 +1321,5 @@
             CALL xios_recv_field( trim(cdvar), pv_r2d)
             IF(idom /= jpdom_unknown ) THEN
-                CALL lbc_lnk(pv_r2d,'Z',-999.,'no0')
+                CALL lbc_lnk("iom",pv_r2d,'Z',-999.,'no0')
             ENDIF
          ELSEIF( PRESENT(pv_r1d) ) THEN
@@ -1336,6 +1336,6 @@
 !some final adjustments
       ! C1D case : always call lbc_lnk to replicate the central value over the whole 3X3 domain
-      IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk( pv_r2d,'Z',1. )
-      IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk( pv_r3d,'Z',1. )
+      IF( lk_c1d .AND. PRESENT(pv_r2d) )   CALL lbc_lnk("iom",pv_r2d,'Z',1. )
+      IF( lk_c1d .AND. PRESENT(pv_r3d) )   CALL lbc_lnk("iom",pv_r3d,'Z',1. )
 
       !--- Apply scale_factor and offset
@@ -1918,6 +1918,6 @@
          SELECT CASE ( cdgrd )
          CASE('T')   ;   zmask(:,:,:)       = tmask(:,:,:)
-         CASE('U')   ;   zmask(2:jpim1,:,:) = tmask(2:jpim1,:,:) + tmask(3:jpi,:,:)   ;   CALL lbc_lnk( zmask, 'U', 1. )
-         CASE('V')   ;   zmask(:,2:jpjm1,:) = tmask(:,2:jpjm1,:) + tmask(:,3:jpj,:)   ;   CALL lbc_lnk( zmask, 'V', 1. )
+         CASE('U')   ;   zmask(2:jpim1,:,:) = tmask(2:jpim1,:,:) + tmask(3:jpi,:,:)   ;   CALL lbc_lnk("iom",zmask, 'U', 1. )
+         CASE('V')   ;   zmask(:,2:jpjm1,:) = tmask(:,2:jpjm1,:) + tmask(:,3:jpj,:)   ;   CALL lbc_lnk("iom",zmask, 'V', 1. )
          CASE('W')   ;   zmask(:,:,2:jpk  ) = tmask(:,:,1:jpkm1) + tmask(:,:,2:jpk)   ;   zmask(:,:,1) = tmask(:,:,1)
          END SELECT
@@ -1962,5 +1962,5 @@
       !
       z_fld(:,:) = 1._wp
-      CALL lbc_lnk( z_fld, cdgrd, -1. )    ! Working array for location of northfold
+      CALL lbc_lnk("iom",z_fld, cdgrd, -1. )    ! Working array for location of northfold
       !
       ! Cell vertices that can be defined
@@ -1980,6 +1980,6 @@
       ! Cell vertices on boundries
       DO jn = 1, 4
-         CALL lbc_lnk( z_bnds(jn,:,:,1), cdgrd, 1., pval=999._wp )
-         CALL lbc_lnk( z_bnds(jn,:,:,2), cdgrd, 1., pval=999._wp )
+         CALL lbc_lnk("iom",z_bnds(jn,:,:,1), cdgrd, 1., pval=999._wp )
+         CALL lbc_lnk("iom",z_bnds(jn,:,:,2), cdgrd, 1., pval=999._wp )
       END DO
       !
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lbc_lnk_multi_generic.h90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lbc_lnk_multi_generic.h90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lbc_lnk_multi_generic.h90	(revision 9814)
@@ -14,5 +14,5 @@
 #   define PTR_ptab              pt4d
 #endif
-   SUBROUTINE ROUTINE_MULTI( pt1, cdna1, psgn1, pt2, cdna2, psgn2, pt3, cdna3, psgn3   &
+   SUBROUTINE ROUTINE_MULTI( rname, pt1, cdna1, psgn1, pt2, cdna2, psgn2, pt3, cdna3, psgn3   &
       &                    , pt4, cdna4, psgn4, pt5, cdna5, psgn5, pt6, cdna6, psgn6   &
       &                    , pt7, cdna7, psgn7, pt8, cdna8, psgn8, pt9, cdna9, psgn9, cd_mpp, pval)
@@ -31,4 +31,5 @@
       CHARACTER(len=1) , DIMENSION(9) ::   cdna_ptr    ! nature of ptab_ptr grid-points
       REAL(wp)         , DIMENSION(9) ::   psgn_ptr    ! sign used across the north fold boundary
+      CHARACTER(len=*),             INTENT(in   ) ::   rname       ! name of the calling subroutine
       !!---------------------------------------------------------------------
       !
@@ -48,5 +49,5 @@
       IF( PRESENT(psgn9) )   CALL ROUTINE_LOAD( pt9, cdna9, psgn9, ptab_ptr, cdna_ptr, psgn_ptr, kfld )
       !
-      CALL lbc_lnk_ptr( ptab_ptr, cdna_ptr, psgn_ptr, kfld, cd_mpp, pval )
+      CALL lbc_lnk_ptr( rname, ptab_ptr, cdna_ptr, psgn_ptr, kfld, cd_mpp, pval )
       !
    END SUBROUTINE ROUTINE_MULTI
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lbclnk.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lbclnk.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lbclnk.F90	(revision 9814)
@@ -50,4 +50,7 @@
    PUBLIC   lbc_lnk_icb   ! iceberg lateral boundary conditions
 
+   PUBLIC   simulated_lbc_lnk
+
+   REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE, SAVE ::   zdummy_halo
    !!----------------------------------------------------------------------
    !! NEMO/OCE 4.0 , NEMO Consortium (2018)
@@ -325,4 +328,87 @@
 #  undef DIM_4d
 
+   SUBROUTINE simulated_lbc_lnk ()
+
+    INTEGER :: i
+
+     IF (.NOT. ALLOCATED(zdummy_halo) ) THEN
+        i = MAXVAL(icomm_sequence(:,2))
+        ALLOCATE( zdummy_halo(jpi,jpj,jpk,i))
+        zdummy_halo(:,:,:,:) = 0._wp
+     ENDIF
+
+     DO i = 1, n_sequence
+        ! unbufferize data
+     !   zdummy_halo(:,:,:,:) = zdummy_halo(:,:,:,:) + 1.
+        IF ( icomm_sequence(i,1) == 1 ) THEN
+           SELECT CASE ( icomm_sequence(i,2) )
+           CASE (1)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1)  , 'U', -1. )
+           CASE (2)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2)  , 'U', -1. )
+           CASE (3)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2)  , 'U', -1. ,zdummy_halo(:,:,1,3) , 'U', -1.)
+           CASE (4)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2)  , 'U', -1. ,zdummy_halo(:,:,1,3) , 'U', -1.,zdummy_halo(:,:,1,4) , 'U', -1.)
+           CASE (5)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2)  , 'U', -1. ,zdummy_halo(:,:,1,3) , 'U', -1.,zdummy_halo(:,:,1,4) , 'U', -1.,zdummy_halo(:,:,1,5) , 'U', -1.)
+           CASE (6)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1) , 'U', -1. , zdummy_halo(:,:,1,2)  , 'U', -1. ,zdummy_halo(:,:,1,3) , 'U', -1.,zdummy_halo(:,:,1,4) , 'U', -1.,zdummy_halo(:,:,1,5) , 'U', -1.,zdummy_halo(:,:,1,6) , 'U', -1.)
+           CASE (7)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1), 'U', -1., zdummy_halo(:,:,1,2), 'U', -1., & 
+                                 zdummy_halo(:,:,1,3), 'U', -1., zdummy_halo(:,:,1,4), 'U', -1., &
+                                 zdummy_halo(:,:,1,5), 'U', -1., zdummy_halo(:,:,1,6), 'U', -1., &
+                                 zdummy_halo(:,:,1,7), 'U', -1.)
+           CASE (8)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1), 'U', -1., zdummy_halo(:,:,1,2), 'U', -1., & 
+                                 zdummy_halo(:,:,1,3), 'U', -1., zdummy_halo(:,:,1,4), 'U', -1., &
+                                 zdummy_halo(:,:,1,5), 'U', -1., zdummy_halo(:,:,1,6), 'U', -1., &
+                                 zdummy_halo(:,:,1,7), 'U', -1., zdummy_halo(:,:,1,8), 'U', -1.)
+           CASE (9)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,1,1), 'U', -1., zdummy_halo(:,:,1,2), 'U', -1., & 
+                                 zdummy_halo(:,:,1,3), 'U', -1., zdummy_halo(:,:,1,4), 'U', -1., &
+                                 zdummy_halo(:,:,1,5), 'U', -1., zdummy_halo(:,:,1,6), 'U', -1., &
+                                 zdummy_halo(:,:,1,7), 'U', -1., zdummy_halo(:,:,1,8), 'U', -1., &
+                                 zdummy_halo(:,:,1,9), 'U', -1.)
+           CASE DEFAULT
+              WRITE(6,*) ' Warning (simulated_lbc_lnk): multi array dimension > 9, not transmitted '
+           END SELECT
+        ELSE
+           SELECT CASE ( icomm_sequence(i,2) )
+           CASE (1)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1.)
+           CASE (2)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2)  , 'U', -1.)
+           CASE (3)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2)  , 'U', -1. ,zdummy_halo(:,:,:,3) , 'U', -1.)
+           CASE (4)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2)  , 'U', -1. ,zdummy_halo(:,:,:,3) , 'U', -1.,zdummy_halo(:,:,:,4) , 'U', -1.)
+           CASE (5)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2)  , 'U', -1. ,zdummy_halo(:,:,:,3) , 'U', -1.,zdummy_halo(:,:,:,4) , 'U', -1.,zdummy_halo(:,:,:,5) , 'U', -1.)
+           CASE (6)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1) , 'U', -1. , zdummy_halo(:,:,:,2)  , 'U', -1. ,zdummy_halo(:,:,:,3) , 'U', -1.,zdummy_halo(:,:,:,4) , 'U', -1.,zdummy_halo(:,:,:,5) , 'U', -1.,zdummy_halo(:,:,:,6) , 'U', -1.)
+           CASE (7)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1), 'U', -1., zdummy_halo(:,:,:,2), 'U', -1., & 
+                                 zdummy_halo(:,:,:,3), 'U', -1., zdummy_halo(:,:,:,4), 'U', -1., &
+                                 zdummy_halo(:,:,:,5), 'U', -1., zdummy_halo(:,:,:,6), 'U', -1., &
+                                 zdummy_halo(:,:,:,7), 'U', -1.)
+           CASE (8)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1), 'U', -1., zdummy_halo(:,:,:,2), 'U', -1., & 
+                                 zdummy_halo(:,:,:,3), 'U', -1., zdummy_halo(:,:,:,4), 'U', -1., &
+                                 zdummy_halo(:,:,:,5), 'U', -1., zdummy_halo(:,:,:,6), 'U', -1., &
+                                 zdummy_halo(:,:,:,7), 'U', -1., zdummy_halo(:,:,:,8), 'U', -1.)
+           CASE (9)
+              CALL lbc_lnk_multi("simulated_lbc_lnk",zdummy_halo(:,:,:,1), 'U', -1., zdummy_halo(:,:,:,2), 'U', -1., & 
+                                 zdummy_halo(:,:,:,3), 'U', -1., zdummy_halo(:,:,:,4), 'U', -1., &
+                                 zdummy_halo(:,:,:,5), 'U', -1., zdummy_halo(:,:,:,6), 'U', -1., &
+                                 zdummy_halo(:,:,:,7), 'U', -1., zdummy_halo(:,:,:,8), 'U', -1., &
+                                 zdummy_halo(:,:,:,9), 'U', -1.)
+           CASE DEFAULT
+              WRITE(6,*) ' Warning (simulated_lbc_lnk): multi 3D array dimension > 9, not transmitted '
+           END SELECT
+        ENDIF
+     ENDDO
+
+   END SUBROUTINE simulated_lbc_lnk
    !!======================================================================
 END MODULE lbclnk
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lib_mpp.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lib_mpp.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/lib_mpp.F90	(revision 9814)
@@ -1625,5 +1625,5 @@
     ELSE
        IF ( ncom_stp > nit000 ) tac_wt = tac_wt + MPI_Wtime() - tic_wt
-       IF ( ( ncom_stp == ( nitend - 1 ) ) .AND. l_write_wt ) then
+       IF ( ( ncom_stp == ( nitend - nn_comm_mod ) ) .AND. l_write_wt ) then
           WRITE(6,'(A20,F11.6,A15,I8)') 'Computing time : ',tac_ct,' on MPI rank : ', narea
           WRITE(6,'(A20,F11.6,A15,I8)') 'Waiting time : ',tac_wt,' on MPI rank : ', narea
@@ -1838,4 +1838,7 @@
    END SUBROUTINE mppmax_real_multiple
 
+   SUBROUTINE simulated_lbc_lnk ()
+      WRITE(*,*) 'simulated_lbc_lnk: You should not have seen this print! error?'
+   END SUBROUTINE simulated_lbc_lnk ()
 #endif
 
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_lnk_generic.h90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_lnk_generic.h90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_lnk_generic.h90	(revision 9814)
@@ -46,8 +46,8 @@
 
 #if defined MULTI
-   SUBROUTINE ROUTINE_LNK( ptab, cd_nat, psgn, kfld, cd_mpp, pval )
+   SUBROUTINE ROUTINE_LNK( rname, ptab, cd_nat, psgn, kfld, cd_mpp, pval )
       INTEGER                     , INTENT(in   ) ::   kfld        ! number of pt3d arrays
 #else
-   SUBROUTINE ROUTINE_LNK( ptab, cd_nat, psgn      , cd_mpp, pval )
+   SUBROUTINE ROUTINE_LNK( rname, ptab, cd_nat, psgn      , cd_mpp, pval )
 #endif
       ARRAY_TYPE(:,:,:,:,:)                                        ! array or pointer of arrays on which the boundary condition is applied
@@ -56,4 +56,5 @@
       CHARACTER(len=3), OPTIONAL  , INTENT(in   ) ::   cd_mpp      ! fill the overlap area only
       REAL(wp)        , OPTIONAL  , INTENT(in   ) ::   pval        ! background value (used at closed boundaries)
+      CHARACTER(len=*),             INTENT(in   ) ::   rname       ! name of the calling subroutine
       !
       INTEGER  ::    ji,  jj,  jk,  jl, jh, jf   ! dummy loop indices
@@ -155,20 +156,24 @@
          icomm_sequence(n_sequence,2) = ipf
          ! write(6,'(A,6I4)') 'size comm ', nn_hls, jpi, jpj, ipk, ipl, ipf
-      ELSE IF ( mpprank == 0 .AND. ncom_stp == (nit000+1) .AND. l_print_comm_report ) THEN
-         write(6,*) 'Communication pattern report : '
-         write(6,*) ' '
-         write(6,'(A,I3)') ' Exchanged halos : ', n_sequence
-         jj = 0; jk = 0; jf = 0; jh = 0
-         DO ji = 1, n_sequence
-           IF ( icomm_sequence(ji,1) .gt. 1 ) jk = jk + 1
-           IF ( icomm_sequence(ji,2) .gt. 1 ) jf = jf + 1
-           IF ( icomm_sequence(ji,1) .gt. 1 .AND. icomm_sequence(ji,2) .gt. 1 ) jj = jj + 1
-           jh = MAX (jh, icomm_sequence(ji,1)*icomm_sequence(ji,2))
-         END DO
-         write(6,'(A,I3)') ' 3D Exchanged halos : ', jk
-         write(6,'(A,I3)') ' Multi arrays exchanged halos : ', jf
-         write(6,'(A,I3)') '   from which 3D : ', jj
-         write(6,'(A,I10)') ' array max size : ', jh*jpi*jpj
-         l_print_comm_report = .FALSE.
+      ELSE IF ( mpprank == 0 .AND. ncom_stp == (nit000+1) ) THEN
+         IF ( l_print_comm_report ) THEN
+            write(6,*) 'Communication pattern report : '
+            write(6,*) ' '
+            write(6,'(A,I3)') ' Exchanged halos : ', n_sequence
+            jj = 0; jk = 0; jf = 0; jh = 0
+            DO ji = 1, n_sequence
+              IF ( icomm_sequence(ji,1) .gt. 1 ) jk = jk + 1
+              IF ( icomm_sequence(ji,2) .gt. 1 ) jf = jf + 1
+              IF ( icomm_sequence(ji,1) .gt. 1 .AND. icomm_sequence(ji,2) .gt. 1 ) jj = jj + 1
+              jh = MAX (jh, icomm_sequence(ji,1)*icomm_sequence(ji,2))
+            END DO
+            write(6,'(A,I3)') ' 3D Exchanged halos : ', jk
+            write(6,'(A,I3)') ' Multi arrays exchanged halos : ', jf
+            write(6,'(A,I3)') '   from which 3D : ', jj
+            write(6,'(A,I10)') ' array max size : ', jh*jpi*jpj
+            write(6,*) ' '
+            l_print_comm_report = .FALSE.
+         END IF
+         write(6,'(A19,A)') 'calling subroutine ', TRIM(rname)
       END IF
       !
@@ -177,4 +182,7 @@
          CALL tic_tac(.TRUE.)
          !
+         IF ( TRIM(rname) == "simulated_lbc_lnk" ) THEN
+            zt3we = zt3we + 1. ; zt3ew = zt3ew + 1.
+         ENDIF
          SELECT CASE ( nbondi )
          CASE ( -1 )
@@ -255,4 +263,7 @@
       !
       IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN
+         IF ( TRIM(rname) == "simulated_lbc_lnk" ) THEN
+            zt3sn = zt3sn + 1. ; zt3ns = zt3ns + 1.
+         ENDIF
  
          SELECT CASE ( nbondj )
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_nfd_generic.h90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_nfd_generic.h90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mpp_nfd_generic.h90	(revision 9814)
@@ -110,4 +110,8 @@
             END DO
          END DO
+         !
+         IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN
+         ! start waiting time measurement
+         CALL tic_tac(.TRUE.)
          !
          DO jr = 1, nsndto
@@ -157,4 +161,8 @@
             END DO
          ENDIF
+         ! stop waiting time measurement
+         CALL tic_tac(.FALSE.)
+         ENDIF
+         !
          DO jf = 1, ipf
             CALL lbc_nfd_nogather( ztabl(:,:,:,:,jf), ztabr(:,:,:,:,jf), cd_nat LBC_ARG, psgn LBC_ARG )   ! North fold boundary condition
@@ -179,6 +187,15 @@
          ALLOCATE( znorthgloio(jpimax,4,ipk,ipl,ipf,jpni) )
          !
-         CALL MPI_ALLGATHER( znorthloc  , itaille, MPI_DOUBLE_PRECISION,                &
-            &                znorthgloio, itaille, MPI_DOUBLE_PRECISION, ncomm_north, ierr )
+         IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN
+         ! start waiting time measurement
+         CALL tic_tac(.TRUE.)
+         IF (ncom_stp <= ( nit000 + 1 ) .or. mod(ncom_stp,nn_comm_mod) == 0 ) THEN
+            CALL MPI_ALLGATHER( znorthloc  , itaille, MPI_DOUBLE_PRECISION,                &
+               &                znorthgloio, itaille, MPI_DOUBLE_PRECISION, ncomm_north, ierr )
+         ENDIF
+         !
+         ! stop waiting time measurement
+         CALL tic_tac(.FALSE.)
+         ENDIF
          !
          ztab(:,:,:,:,:) = 0._wp
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mppini.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mppini.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LBC/mppini.F90	(revision 9814)
@@ -62,5 +62,5 @@
       jpi    = jpiglo
       jpj    = jpjglo
-      jpk    = jpjglo
+      jpk    = jpkglo
       jpim1  = jpi-1                                            ! inner domain indices
       jpjm1  = jpj-1                                            !   "           "
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfc1d_c2d.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfc1d_c2d.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfc1d_c2d.F90	(revision 9814)
@@ -87,5 +87,5 @@
             END DO
          END DO
-         CALL lbc_lnk( pah2, 'F', 1. )   ! Lateral boundary conditions
+         CALL lbc_lnk("ldfc1d_c2d",pah2, 'F', 1. )   ! Lateral boundary conditions
          !
       CASE( 'TRA' )                     ! U- and V-points (zdep1 & 2 are an approximation in zps-coord.)
@@ -101,5 +101,5 @@
          END DO
          ! Lateral boundary conditions
-         CALL lbc_lnk_multi( pah1, 'U', 1. , pah2, 'V', 1. )   
+         CALL lbc_lnk_multi("ldfc1d_c2d",pah1, 'U', 1. , pah2, 'V', 1. )   
          !
       CASE DEFAULT                        ! error
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfdyn.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfdyn.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfdyn.F90	(revision 9814)
@@ -399,5 +399,5 @@
          ENDIF
          !
-         CALL lbc_lnk_multi( ahmt, 'T', 1.,  ahmf, 'F', 1. )
+         CALL lbc_lnk_multi("ldfdyn",ahmt, 'T', 1.,  ahmf, 'F', 1. )
          !
          !
@@ -477,5 +477,5 @@
          ENDIF
          !
-         CALL lbc_lnk_multi( ahmt, 'T', 1. , ahmf, 'F', 1. )
+         CALL lbc_lnk_multi("ldfdyn",ahmt, 'T', 1. , ahmf, 'F', 1. )
          !
       END SELECT
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfslp.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfslp.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldfslp.F90	(revision 9814)
@@ -232,5 +232,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( zwz, 'U', -1.,  zww, 'V', -1. )      ! lateral boundary conditions
+      CALL lbc_lnk_multi("ldfslp",zwz, 'U', -1.,  zww, 'V', -1. )      ! lateral boundary conditions
       !
       !                                            !* horizontal Shapiro filter
@@ -314,5 +314,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( zwz, 'T', -1.,  zww, 'T', -1. )      ! lateral boundary conditions
+      CALL lbc_lnk_multi("ldfslp",zwz, 'T', -1.,  zww, 'T', -1. )      ! lateral boundary conditions
       !
       !                                           !* horizontal Shapiro filter
@@ -363,5 +363,5 @@
       ! IV. Lateral boundary conditions
       ! ===============================
-      CALL lbc_lnk_multi( uslp , 'U', -1. , vslp , 'V', -1. , wslpi, 'W', -1., wslpj, 'W', -1. )
+      CALL lbc_lnk_multi("ldfslp",uslp , 'U', -1. , vslp , 'V', -1. , wslpi, 'W', -1., wslpj, 'W', -1. )
 
       IF(ln_ctl) THEN
@@ -611,5 +611,5 @@
       wslp2(:,:,1) = 0._wp                ! force the surface wslp to zero
 
-      CALL lbc_lnk( wslp2, 'W', 1. )      ! lateral boundary confition on wslp2 only   ==>>> gm : necessary ? to be checked
+      CALL lbc_lnk("ldfslp",wslp2, 'W', 1. )      ! lateral boundary confition on wslp2 only   ==>>> gm : necessary ? to be checked
       !
       IF( ln_timing )   CALL timing_stop('ldf_slp_triad')
@@ -725,5 +725,5 @@
       END DO
       !!gm this lbc_lnk should be useless....
-      CALL lbc_lnk_multi( uslpml , 'U', -1. , vslpml , 'V', -1. , wslpiml, 'W', -1. , wslpjml, 'W', -1. ) 
+      CALL lbc_lnk_multi("ldfslp",uslpml , 'U', -1. , vslpml , 'V', -1. , wslpiml, 'W', -1. , wslpjml, 'W', -1. ) 
       !
    END SUBROUTINE ldf_slp_mxl
@@ -793,5 +793,5 @@
 !               END DO
 !            END DO
-!            CALL lbc_lnk_multi( uslp , 'U', -1. ; CALL lbc_lnk( vslp , 'V', -1.,  wslpi, 'W', -1.,  wslpj, 'W', -1. )
+!            CALL lbc_lnk_multi("ldfslp",uslp , 'U', -1. ; CALL lbc_lnk("ldfslp",vslp , 'V', -1.,  wslpi, 'W', -1.,  wslpj, 'W', -1. )
 !!gm         ENDIF
       ENDIF
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldftra.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldftra.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/LDF/ldftra.F90	(revision 9814)
@@ -707,5 +707,5 @@
          END DO
       END DO
-      CALL lbc_lnk( zaeiw(:,:), 'W', 1. )       ! lateral boundary condition
+      CALL lbc_lnk("ldftra",zaeiw(:,:), 'W', 1. )       ! lateral boundary condition
       !               
       DO jj = 2, jpjm1                          !== aei at u- and v-points  ==!
@@ -715,5 +715,5 @@
          END DO 
       END DO 
-      CALL lbc_lnk_multi( paeiu(:,:,1), 'U', 1. , paeiv(:,:,1), 'V', 1. )      ! lateral boundary condition
+      CALL lbc_lnk_multi("ldftra",paeiu(:,:,1), 'U', 1. , paeiv(:,:,1), 'V', 1. )      ! lateral boundary condition
 
       DO jk = 2, jpkm1                          !==  deeper values equal the surface one  ==!
@@ -821,5 +821,5 @@
 !!gm     to be redesigned....   
       !                                                  !==  eiv stream function: output  ==!
-      CALL lbc_lnk_multi( psi_uw, 'U', -1. , psi_vw, 'V', -1. )
+      CALL lbc_lnk_multi("ldftra",psi_uw, 'U', -1. , psi_vw, 'V', -1. )
       !
 !!gm      CALL iom_put( "psi_eiv_uw", psi_uw )                 ! output
@@ -848,5 +848,5 @@
          END DO
       END DO
-      CALL lbc_lnk( zw3d, 'T', 1. )      ! lateral boundary condition
+      CALL lbc_lnk("ldftra",zw3d, 'T', 1. )      ! lateral boundary condition
       CALL iom_put( "woce_eiv", zw3d )
       !
@@ -865,6 +865,6 @@
            END DO
         END DO
-        CALL lbc_lnk( zw2d, 'U', -1. )
-        CALL lbc_lnk( zw3d, 'U', -1. )
+        CALL lbc_lnk("ldftra",zw2d, 'U', -1. )
+        CALL lbc_lnk("ldftra",zw3d, 'U', -1. )
         CALL iom_put( "ueiv_heattr"  , zztmp * zw2d )                  ! heat transport in i-direction
         CALL iom_put( "ueiv_heattr3d", zztmp * zw3d )                  ! heat transport in i-direction
@@ -881,5 +881,5 @@
          END DO
       END DO
-      CALL lbc_lnk( zw2d, 'V', -1. )
+      CALL lbc_lnk("ldftra",zw2d, 'V', -1. )
       CALL iom_put( "veiv_heattr", zztmp * zw2d )                  !  heat transport in j-direction
       CALL iom_put( "veiv_heattr", zztmp * zw3d )                  !  heat transport in j-direction
@@ -900,6 +900,6 @@
            END DO
         END DO
-        CALL lbc_lnk( zw2d, 'U', -1. )
-        CALL lbc_lnk( zw3d, 'U', -1. )
+        CALL lbc_lnk("ldftra",zw2d, 'U', -1. )
+        CALL lbc_lnk("ldftra",zw3d, 'U', -1. )
         CALL iom_put( "ueiv_salttr", zztmp * zw2d )                  ! salt transport in i-direction
         CALL iom_put( "ueiv_salttr3d", zztmp * zw3d )                  ! salt transport in i-direction
@@ -916,5 +916,5 @@
          END DO
       END DO
-      CALL lbc_lnk( zw2d, 'V', -1. )
+      CALL lbc_lnk("ldftra",zw2d, 'V', -1. )
       CALL iom_put( "veiv_salttr", zztmp * zw2d )                  !  salt transport in j-direction
       CALL iom_put( "veiv_salttr", zztmp * zw3d )                  !  salt transport in j-direction
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/cpl_oasis3.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/cpl_oasis3.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/cpl_oasis3.F90	(revision 9814)
@@ -410,5 +410,5 @@
          !--- Fill the overlap areas and extra hallows (mpp)
          !--- check periodicity conditions (all cases)
-         IF( .not. llfisrt )   CALL lbc_lnk( pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn )   
+         IF( .not. llfisrt )   CALL lbc_lnk("cpl_oasis3",pdata(:,:,jc), srcv(kid)%clgrid, srcv(kid)%nsgn )   
  
       ENDDO
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/fldread.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/fldread.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/fldread.F90	(revision 9814)
@@ -669,8 +669,8 @@
                IF( sdjf%ln_tint ) THEN
                   CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fdta(2,2,1,2), sdjf%nrec_a(1) )
-                  CALL lbc_lnk( sdjf%fdta(:,:,1,2),'Z',1. )
+                  CALL lbc_lnk("fldread",sdjf%fdta(:,:,1,2),'Z',1. )
                ELSE
                   CALL iom_get( sdjf%num, sdjf%clvar, sdjf%fnow(2,2,1  ), sdjf%nrec_a(1) )
-                  CALL lbc_lnk( sdjf%fnow(:,:,1  ),'Z',1. )
+                  CALL lbc_lnk("fldread",sdjf%fnow(:,:,1  ),'Z',1. )
                ENDIF
             ELSE
@@ -683,8 +683,8 @@
                IF( sdjf%ln_tint ) THEN
                   CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fdta(2,2,:,2), sdjf%nrec_a(1) )
-                  CALL lbc_lnk( sdjf%fdta(:,:,:,2),'Z',1. )
+                  CALL lbc_lnk("fldread",sdjf%fdta(:,:,:,2),'Z',1. )
                ELSE
                   CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fnow(2,2,:  ), sdjf%nrec_a(1) )
-                  CALL lbc_lnk( sdjf%fnow(:,:,:  ),'Z',1. )
+                  CALL lbc_lnk("fldread",sdjf%fnow(:,:,:  ),'Z',1. )
                ENDIF
             ELSE
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/geo2ocean.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/geo2ocean.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/geo2ocean.F90	(revision 9814)
@@ -280,5 +280,5 @@
       ! =========================== !
       !           ! lateral boundary cond.: T-, U-, V-, F-pts, sgn
-      CALL lbc_lnk_multi( gcost, 'T', -1., gsint, 'T', -1., gcosu, 'U', -1., gsinu, 'U', -1., & 
+      CALL lbc_lnk_multi("geo2ocean",gcost, 'T', -1., gsint, 'T', -1., gcosu, 'U', -1., gsinu, 'U', -1., & 
                       &   gcosv, 'V', -1., gsinv, 'V', -1., gcosf, 'F', -1., gsinf, 'F', -1.  )
       !
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbc_oce.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbc_oce.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbc_oce.F90	(revision 9814)
@@ -216,5 +216,5 @@
          END DO
       END DO
-      CALL lbc_lnk( wndm(:,:) , 'T', 1. )
+      CALL lbc_lnk("sbc_oce",wndm(:,:) , 'T', 1. )
       !
    END SUBROUTINE sbc_tau2wnd
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcblk.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcblk.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcblk.F90	(revision 9814)
@@ -407,5 +407,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( zwnd_i, 'T', -1., zwnd_j, 'T', -1. )
+      CALL lbc_lnk_multi("sbcblk",zwnd_i, 'T', -1., zwnd_j, 'T', -1. )
       ! ... scalar wind ( = | U10m - U_oce | ) at T-point (masked)
       wndm(:,:) = SQRT(  zwnd_i(:,:) * zwnd_i(:,:)   &
@@ -485,5 +485,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( utau, 'U', -1., vtau, 'V', -1. )
+      CALL lbc_lnk_multi("sbcblk",utau, 'U', -1., vtau, 'V', -1. )
 
       !  Turbulent fluxes over ocean
@@ -732,5 +732,5 @@
             END DO
          END DO
-         CALL lbc_lnk( wndm_ice, 'T',  1. )
+         CALL lbc_lnk("sbcblk",wndm_ice, 'T',  1. )
          !
       CASE( 'C' )                  ! C-grid ice dynamics :   U & V-points (same as ocean)
@@ -742,5 +742,5 @@
             END DO
          END DO
-         CALL lbc_lnk( wndm_ice, 'T',  1. )
+         CALL lbc_lnk("sbcblk",wndm_ice, 'T',  1. )
          !
       END SELECT
@@ -784,5 +784,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( utau_ice, 'I', -1., vtau_ice, 'I', -1. )
+         CALL lbc_lnk_multi("sbcblk",utau_ice, 'I', -1., vtau_ice, 'I', -1. )
          !
       CASE( 'C' )                  ! C-grid ice dynamics :   U & V-points (same as ocean)
@@ -795,5 +795,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( utau_ice, 'U', -1., vtau_ice, 'V', -1. )
+         CALL lbc_lnk_multi("sbcblk",utau_ice, 'U', -1., vtau_ice, 'V', -1. )
          !
       END SELECT
@@ -1218,5 +1218,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( Cd, 'T',  1., Ch, 'T', 1. )
+      CALL lbc_lnk_multi("sbcblk",Cd, 'T',  1., Ch, 'T', 1. )
       !
    END SUBROUTINE Cdn10_Lupkes2015
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbccpl.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbccpl.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbccpl.F90	(revision 9814)
@@ -1162,5 +1162,5 @@
                   END DO
                END DO
-               CALL lbc_lnk_multi( frcv(jpr_otx1)%z3(:,:,1), 'U',  -1., frcv(jpr_oty1)%z3(:,:,1), 'V',  -1. )
+               CALL lbc_lnk_multi("sbccpl",frcv(jpr_otx1)%z3(:,:,1), 'U',  -1., frcv(jpr_oty1)%z3(:,:,1), 'V',  -1. )
             ENDIF
             llnewtx = .TRUE.
@@ -1189,5 +1189,5 @@
                END DO
             END DO
-            CALL lbc_lnk( frcv(jpr_taum)%z3(:,:,1), 'T', 1. )
+            CALL lbc_lnk("sbccpl",frcv(jpr_taum)%z3(:,:,1), 'T', 1. )
             llnewtau = .TRUE.
          ELSE
@@ -1577,5 +1577,5 @@
             END SELECT
             IF( srcv(jpr_itx1)%clgrid /= 'I' ) THEN 
-               CALL lbc_lnk_multi( p_taui, 'I',  -1., p_tauj, 'I',  -1. )
+               CALL lbc_lnk_multi("sbccpl",p_taui, 'I',  -1., p_tauj, 'I',  -1. )
             ENDIF
             !
@@ -1610,5 +1610,5 @@
             END SELECT
             IF( srcv(jpr_itx1)%clgrid /= 'F' ) THEN 
-               CALL lbc_lnk_multi( p_taui, 'F',  -1., p_tauj, 'F',  -1. )
+               CALL lbc_lnk_multi("sbccpl",p_taui, 'F',  -1., p_tauj, 'F',  -1. )
             ENDIF
             !
@@ -1641,5 +1641,5 @@
             END SELECT
             IF( srcv(jpr_itx1)%clgrid /= 'U' ) THEN 
-               CALL lbc_lnk_multi( p_taui, 'U',  -1., p_tauj, 'V',  -1. )
+               CALL lbc_lnk_multi("sbccpl",p_taui, 'U',  -1., p_tauj, 'V',  -1. )
             ENDIF
          END SELECT
@@ -2426,5 +2426,5 @@
                   END DO
                END SELECT
-               CALL lbc_lnk_multi( zitx1, 'T', -1., zity1, 'T', -1. )
+               CALL lbc_lnk_multi("sbccpl",zitx1, 'T', -1., zity1, 'T', -1. )
             CASE( 'mixed oce-ice'        )
                SELECT CASE ( cp_ice_msh )
@@ -2462,5 +2462,5 @@
                END SELECT
             END SELECT
-            CALL lbc_lnk_multi( zotx1, ssnd(jps_ocx1)%clgrid, -1.,  zoty1, ssnd(jps_ocy1)%clgrid, -1. )
+            CALL lbc_lnk_multi("sbccpl",zotx1, ssnd(jps_ocx1)%clgrid, -1.,  zoty1, ssnd(jps_ocy1)%clgrid, -1. )
             !
          ENDIF
@@ -2559,5 +2559,5 @@
                 END DO 
              END SELECT 
-             CALL lbc_lnk_multi( zitx1, 'T', -1.,  zity1, 'T', -1. ) 
+             CALL lbc_lnk_multi("sbccpl",zitx1, 'T', -1.,  zity1, 'T', -1. ) 
           CASE( 'mixed oce-ice'        ) 
              SELECT CASE ( cp_ice_msh ) 
@@ -2595,5 +2595,5 @@
              END SELECT 
           END SELECT 
-         CALL lbc_lnk_multi( zotx1, ssnd(jps_ocxw)%clgrid, -1., zoty1, ssnd(jps_ocyw)%clgrid, -1. ) 
+         CALL lbc_lnk_multi("sbccpl",zotx1, ssnd(jps_ocxw)%clgrid, -1., zoty1, ssnd(jps_ocyw)%clgrid, -1. ) 
          ! 
          ! 
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcflx.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcflx.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcflx.F90	(revision 9814)
@@ -157,5 +157,5 @@
          END DO
          taum(:,:) = taum(:,:) * tmask(:,:,1) ; wndm(:,:) = wndm(:,:) * tmask(:,:,1)
-         CALL lbc_lnk( taum(:,:), 'T', 1. )   ;   CALL lbc_lnk( wndm(:,:), 'T', 1. )
+         CALL lbc_lnk("sbcflx",taum(:,:), 'T', 1. )   ;   CALL lbc_lnk("sbcflx",wndm(:,:), 'T', 1. )
 
          IF( nitend-nit000 <= 100 .AND. lwp ) THEN                ! control print (if less than 100 time-step asked)
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcfwb.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcfwb.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcfwb.F90	(revision 9814)
@@ -178,5 +178,5 @@
             !
 !!gm   ===>>>>  lbc_lnk should be useless as all the computation is done over the whole domain !
-            CALL lbc_lnk( zerp_cor, 'T', 1. )
+            CALL lbc_lnk("sbcfwb",zerp_cor, 'T', 1. )
             !
             emp(:,:) = emp(:,:) + zerp_cor(:,:)
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcice_cice.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcice_cice.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcice_cice.F90	(revision 9814)
@@ -217,5 +217,5 @@
       ENDDO
 
-      CALL lbc_lnk_multi( fr_iu , 'U', 1.,  fr_iv , 'V', 1. )
+      CALL lbc_lnk_multi("sbcice_cice",fr_iu , 'U', 1.,  fr_iv , 'V', 1. )
 
       ! set the snow+ice mass
@@ -513,5 +513,5 @@
          ENDDO
       ENDDO
-      CALL lbc_lnk( ss_iou , 'U', -1. )
+      CALL lbc_lnk("sbcice_cice",ss_iou , 'U', -1. )
 
 ! y comp of ocean-ice stress 
@@ -525,5 +525,5 @@
          ENDDO
       ENDDO
-      CALL lbc_lnk( ss_iov , 'V', -1. )
+      CALL lbc_lnk("sbcice_cice",ss_iov , 'V', -1. )
 
 ! x and y comps of surface stress
@@ -578,5 +578,5 @@
       fmmflx(:,:) = ztmp1(:,:) !!Joakim edit
       
-      CALL lbc_lnk_multi( emp , 'T', 1., sfx , 'T', 1. )
+      CALL lbc_lnk_multi("sbcice_cice",emp , 'T', 1., sfx , 'T', 1. )
 
 ! Solar penetrative radiation and non solar surface heat flux
@@ -604,5 +604,5 @@
 #endif
       qsr(:,:)=qsr(:,:)+ztmp1(:,:)
-      CALL lbc_lnk( qsr , 'T', 1. )
+      CALL lbc_lnk("sbcice_cice",qsr , 'T', 1. )
 
       DO jj=1,jpj
@@ -619,5 +619,5 @@
       qns(:,:)=qns(:,:)+nfrzmlt(:,:)+ztmp1(:,:)
 
-      CALL lbc_lnk( qns , 'T', 1. )
+      CALL lbc_lnk("sbcice_cice",qns , 'T', 1. )
 
 ! Prepare for the following CICE time-step
@@ -639,5 +639,5 @@
       ENDDO
 
-      CALL lbc_lnk_multi( fr_iu , 'U', 1., fr_iv , 'V', 1. )
+      CALL lbc_lnk_multi("sbcice_cice",fr_iu , 'U', 1., fr_iv , 'V', 1. )
 
       ! set the snow+ice mass
@@ -863,5 +863,5 @@
 !     A. Ensure all haloes are filled in NEMO field (pn)
 
-      CALL lbc_lnk( pn , cd_type, psgn )
+      CALL lbc_lnk("sbcice_cice",pn , cd_type, psgn )
 
 #if defined key_nemocice_decomp
@@ -1040,5 +1040,5 @@
 !     D. Ensure all haloes are filled in pn
 
-      CALL lbc_lnk( pn , cd_type, psgn )
+      CALL lbc_lnk("sbcice_cice",pn , cd_type, psgn )
 
    END SUBROUTINE cice2nemo
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcisf.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcisf.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcisf.F90	(revision 9814)
@@ -157,5 +157,5 @@
 
          ! lbclnk
-         CALL lbc_lnk_multi( risf_tsc(:,:,jp_tem), 'T', 1., risf_tsc(:,:,jp_sal), 'T', 1., fwfisf,'T', 1., qisf, 'T', 1.)
+         CALL lbc_lnk_multi("sbcisf",risf_tsc(:,:,jp_tem), 'T', 1., risf_tsc(:,:,jp_sal), 'T', 1., fwfisf,'T', 1., qisf, 'T', 1.)
          ! output
          IF( iom_use('iceshelf_cea') )   CALL iom_put( 'iceshelf_cea', -fwfisf(:,:)                      )   ! isf mass flux
@@ -722,5 +722,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( pgt, 'T', 1., pgs, 'T', 1.)
+         CALL lbc_lnk_multi("sbcisf",pgt, 'T', 1., pgs, 'T', 1.)
       END SELECT
       !
@@ -779,5 +779,5 @@
             END DO
          END DO
-         CALL lbc_lnk(pvarout,'T',-1.)
+         CALL lbc_lnk("sbcisf",pvarout,'T',-1.)
       
       CASE ( 'V' ) ! compute V in the top boundary layer at T- point 
@@ -811,5 +811,5 @@
             END DO
          END DO
-         CALL lbc_lnk(pvarout,'T',-1.)
+         CALL lbc_lnk("sbcisf",pvarout,'T',-1.)
 
       CASE ( 'T' ) ! compute T in the top boundary layer at T- point 
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcmod.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcmod.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcmod.F90	(revision 9814)
@@ -448,5 +448,5 @@
 !!$!RBbug do not understand why see ticket 667
 !!$!clem: it looks like it is necessary for the north fold (in certain circumstances). Don't know why.
-!!$      CALL lbc_lnk( emp, 'T', 1. )
+!!$      CALL lbc_lnk("sbcmod",emp, 'T', 1. )
       !
       IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    !
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcwave.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcwave.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/SBC/sbcwave.F90	(revision 9814)
@@ -210,5 +210,5 @@
       ENDIF
 
-      CALL lbc_lnk_multi( usd, 'U', -1., vsd, 'V', -1. )
+      CALL lbc_lnk_multi("sbcwave",usd, 'U', -1., vsd, 'V', -1. )
 
       !
@@ -235,5 +235,5 @@
 #endif
       !
-      CALL lbc_lnk( ze3divh, 'T', 1. )
+      CALL lbc_lnk("sbcwave",ze3divh, 'T', 1. )
       !
       IF( ln_linssh ) THEN   ;   ik = 1   ! none zero velocity through the sea surface
@@ -296,5 +296,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( utau(:,:), 'U', -1. , vtau(:,:), 'V', -1. , taum(:,:) , 'T', -1. )
+         CALL lbc_lnk_multi("sbcwave",utau(:,:), 'U', -1. , vtau(:,:), 'V', -1. , taum(:,:) , 'T', -1. )
       ENDIF
       !
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/STO/stopar.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/STO/stopar.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/STO/stopar.F90	(revision 9814)
@@ -172,5 +172,5 @@
           ! Apply horizontal Laplacian filter to w
           DO jflt = 1, sto2d_flt(jsto)
-            CALL lbc_lnk( sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )
+            CALL lbc_lnk("stopar",sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )
             CALL sto_par_flt( sto2d(:,:,jsto) )
           END DO
@@ -195,5 +195,5 @@
 
         ! Lateral boundary conditions on sto2d
-        CALL lbc_lnk( sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )
+        CALL lbc_lnk("stopar",sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )
       END DO
       !
@@ -210,5 +210,5 @@
              ! Apply horizontal Laplacian filter to w
              DO jflt = 1, sto3d_flt(jsto)
-               CALL lbc_lnk( sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )
+               CALL lbc_lnk("stopar",sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )
                CALL sto_par_flt( sto3d(:,:,jk,jsto) )
              END DO
@@ -233,5 +233,5 @@
          END DO
          ! Lateral boundary conditions on sto3d
-         CALL lbc_lnk( sto3d(:,:,:,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )
+         CALL lbc_lnk("stopar",sto3d(:,:,:,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )
       END DO
       !
@@ -642,5 +642,5 @@
          ! Apply horizontal Laplacian filter to w
          DO jflt = 1, sto2d_flt(jsto)
-            CALL lbc_lnk( sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )
+            CALL lbc_lnk("stopar",sto2d(:,:,jsto), sto2d_typ(jsto), sto2d_sgn(jsto) )
             CALL sto_par_flt( sto2d(:,:,jsto) )
          END DO
@@ -659,5 +659,5 @@
             ! Apply horizontal Laplacian filter to w
             DO jflt = 1, sto3d_flt(jsto)
-               CALL lbc_lnk( sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )
+               CALL lbc_lnk("stopar",sto3d(:,:,jk,jsto), sto3d_typ(jsto), sto3d_sgn(jsto) )
                CALL sto_par_flt( sto3d(:,:,jk,jsto) )
             END DO
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/STO/stopts.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/STO/stopts.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/STO/stopts.F90	(revision 9814)
@@ -54,5 +54,5 @@
 
       DO jts = 1, jpts
-        CALL lbc_lnk( pts(:,:,:,jts), 'T' , 1._wp )
+        CALL lbc_lnk("stopts",pts(:,:,:,jts), 'T' , 1._wp )
       ENDDO
 
@@ -123,5 +123,5 @@
       DO jdof = 1, nn_sto_eos
          DO jts = 1, jpts
-            CALL lbc_lnk( pts_ran(:,:,:,jts,jdof), 'T' , 1._wp )
+            CALL lbc_lnk("stopts",pts_ran(:,:,:,jts,jdof), 'T' , 1._wp )
          END DO
       END DO
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/eosbn2.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/eosbn2.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/eosbn2.F90	(revision 9814)
@@ -533,5 +533,5 @@
          END DO
          !
-         CALL lbc_lnk( prd, 'T', 1. )                    ! Lateral boundary conditions
+         CALL lbc_lnk("eosbn2",prd, 'T', 1. )                    ! Lateral boundary conditions
          !
       CASE( np_seos )                !==  simplified EOS  ==!
@@ -553,5 +553,5 @@
          END DO
          !
-         CALL lbc_lnk( prd, 'T', 1. )                    ! Lateral boundary conditions
+         CALL lbc_lnk("eosbn2",prd, 'T', 1. )                    ! Lateral boundary conditions
          !
       END SELECT
@@ -756,5 +756,5 @@
          END DO
          !                            ! Lateral boundary conditions
-         CALL lbc_lnk_multi( pab(:,:,jp_tem), 'T', 1. , pab(:,:,jp_sal), 'T', 1. )                    
+         CALL lbc_lnk_multi("eosbn2",pab(:,:,jp_tem), 'T', 1. , pab(:,:,jp_sal), 'T', 1. )                    
          !
       CASE( np_seos )                  !==  simplified EOS  ==!
@@ -776,5 +776,5 @@
          END DO
          !                            ! Lateral boundary conditions
-         CALL lbc_lnk_multi( pab(:,:,jp_tem), 'T', 1. , pab(:,:,jp_sal), 'T', 1. )                    
+         CALL lbc_lnk_multi("eosbn2",pab(:,:,jp_tem), 'T', 1. , pab(:,:,jp_sal), 'T', 1. )                    
          !
       CASE DEFAULT
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_cen.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_cen.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_cen.F90	(revision 9814)
@@ -123,5 +123,5 @@
                END DO
             END DO
-            CALL lbc_lnk_multi( ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond.
+            CALL lbc_lnk_multi("traadv_cen",ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond.
             !
             DO jk = 1, jpkm1                       ! Horizontal advective fluxes
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_fct.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_fct.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_fct.F90	(revision 9814)
@@ -169,5 +169,5 @@
             END DO
          END DO
-         CALL lbc_lnk( zwi, 'T', 1. )  ! Lateral boundary conditions on zwi  (unchanged sign)
+         CALL lbc_lnk("traadv_fct",zwi, 'T', 1. )  ! Lateral boundary conditions on zwi  (unchanged sign)
          !                
          IF( l_trd .OR. l_hst )  THEN             ! trend diagnostics (contribution of upstream fluxes)
@@ -208,5 +208,5 @@
                END DO
             END DO
-            CALL lbc_lnk_multi( zltu, 'T', 1. , zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn)
+            CALL lbc_lnk_multi("traadv_fct",zltu, 'T', 1. , zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn)
             !
             DO jk = 1, jpkm1                 ! Horizontal advective fluxes
@@ -233,5 +233,5 @@
                END DO
             END DO
-            CALL lbc_lnk_multi( ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond. (unchanged sgn)
+            CALL lbc_lnk_multi("traadv_fct",ztu, 'U', -1. , ztv, 'V', -1. )   ! Lateral boundary cond. (unchanged sgn)
             !
             DO jk = 1, jpkm1                 ! Horizontal advective fluxes
@@ -279,5 +279,5 @@
          ENDIF
          !
-         CALL lbc_lnk_multi( zwx, 'U', -1. , zwy, 'V', -1.,  zwz, 'W',  1. )
+         CALL lbc_lnk_multi("traadv_fct",zwx, 'U', -1. , zwy, 'V', -1.,  zwz, 'W',  1. )
          !
          !        !==  monotonicity algorithm  ==!
@@ -394,5 +394,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( zbetup, 'T', 1. , zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign)
+      CALL lbc_lnk_multi("traadv_fct",zbetup, 'T', 1. , zbetdo, 'T', 1. )   ! lateral boundary cond. (unchanged sign)
 
       ! 3. monotonic flux in the i & j direction (paa & pbb)
@@ -420,5 +420,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( paa, 'U', -1. , pbb, 'V', -1. )   ! lateral boundary condition (changed sign)
+      CALL lbc_lnk_multi("traadv_fct",paa, 'U', -1. , pbb, 'V', -1. )   ! lateral boundary condition (changed sign)
       !
    END SUBROUTINE nonosc
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_mus.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_mus.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_mus.F90	(revision 9814)
@@ -140,5 +140,5 @@
          END DO
          ! lateral boundary conditions   (changed sign)
-         CALL lbc_lnk_multi( zwx, 'U', -1. , zwy, 'V', -1. )
+         CALL lbc_lnk_multi("traadv_mus",zwx, 'U', -1. , zwy, 'V', -1. )
          !                                !-- Slopes of tracer
          zslpx(:,:,jpk) = 0._wp                 ! bottom values
@@ -188,5 +188,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( zwx, 'U', -1. , zwy, 'V', -1. )   ! lateral boundary conditions   (changed sign)
+         CALL lbc_lnk_multi("traadv_mus",zwx, 'U', -1. , zwy, 'V', -1. )   ! lateral boundary conditions   (changed sign)
          !
          DO jk = 1, jpkm1                 !-- Tracer advective trend
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_qck.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_qck.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_qck.F90	(revision 9814)
@@ -150,5 +150,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1. )   ! Lateral boundary conditions 
+         CALL lbc_lnk_multi("traadv_qck",zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1. )   ! Lateral boundary conditions 
          
          !
@@ -176,5 +176,5 @@
          END DO 
          !--- Lateral boundary conditions 
-         CALL lbc_lnk_multi( zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1.,  zwx(:,:,:), 'T', 1. )
+         CALL lbc_lnk_multi("traadv_qck",zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1.,  zwx(:,:,:), 'T', 1. )
 
          !--- QUICKEST scheme
@@ -189,5 +189,5 @@
             END DO
          END DO
-         CALL lbc_lnk( zfu(:,:,:), 'T', 1. )      ! Lateral boundary conditions 
+         CALL lbc_lnk("traadv_qck",zfu(:,:,:), 'T', 1. )      ! Lateral boundary conditions 
 
          !
@@ -207,5 +207,5 @@
          END DO
          !
-         CALL lbc_lnk( zwx(:,:,:), 'T', 1. ) ! Lateral boundary conditions
+         CALL lbc_lnk("traadv_qck",zwx(:,:,:), 'T', 1. ) ! Lateral boundary conditions
          !
          ! Computation of the trend
@@ -265,5 +265,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1. )   ! Lateral boundary conditions 
+         CALL lbc_lnk_multi("traadv_qck",zfc(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1. )   ! Lateral boundary conditions 
 
          
@@ -294,5 +294,5 @@
 
          !--- Lateral boundary conditions 
-         CALL lbc_lnk_multi( zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1., zwy(:,:,:), 'T', 1. )
+         CALL lbc_lnk_multi("traadv_qck",zfu(:,:,:), 'T', 1. , zfd(:,:,:), 'T', 1., zfc(:,:,:), 'T', 1., zwy(:,:,:), 'T', 1. )
 
          !--- QUICKEST scheme
@@ -307,5 +307,5 @@
             END DO
          END DO
-         CALL lbc_lnk( zfu(:,:,:), 'T', 1. )    !--- Lateral boundary conditions 
+         CALL lbc_lnk("traadv_qck",zfu(:,:,:), 'T', 1. )    !--- Lateral boundary conditions 
          !
          ! Tracer flux on the x-direction
@@ -324,5 +324,5 @@
          END DO
          !
-         CALL lbc_lnk( zwy(:,:,:), 'T', 1. ) ! Lateral boundary conditions
+         CALL lbc_lnk("traadv_qck",zwy(:,:,:), 'T', 1. ) ! Lateral boundary conditions
          !
          ! Computation of the trend
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_ubs.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_ubs.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traadv_ubs.F90	(revision 9814)
@@ -141,5 +141,5 @@
             !                                    
          END DO         
-         CALL lbc_lnk( zltu, 'T', 1. )   ;    CALL lbc_lnk( zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn)
+         CALL lbc_lnk("traadv_ubs",zltu, 'T', 1. )   ;    CALL lbc_lnk("traadv_ubs",zltv, 'T', 1. )   ! Lateral boundary cond. (unchanged sgn)
          !    
          DO jk = 1, jpkm1        !==  Horizontal advective fluxes  ==!     (UBS)
@@ -226,5 +226,5 @@
                END DO
             END DO
-            CALL lbc_lnk( zti, 'T', 1. )      ! Lateral boundary conditions on zti, zsi   (unchanged sign)
+            CALL lbc_lnk("traadv_ubs",zti, 'T', 1. )      ! Lateral boundary conditions on zti, zsi   (unchanged sign)
             !
             !                          !*  anti-diffusive flux : high order minus low order
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trabbc.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trabbc.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trabbc.F90	(revision 9814)
@@ -92,5 +92,5 @@
       END DO
       !
-      CALL lbc_lnk( tsa(:,:,:,jp_tem) , 'T', 1. )
+      CALL lbc_lnk("trabbc",tsa(:,:,:,jp_tem) , 'T', 1. )
       !
       IF( l_trdtra ) THEN        ! Send the trend for diagnostics
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trabbl.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trabbl.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trabbl.F90	(revision 9814)
@@ -123,5 +123,5 @@
             &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' )
          ! lateral boundary conditions ; just need for outputs
-         CALL lbc_lnk_multi( ahu_bbl, 'U', 1. , ahv_bbl, 'V', 1. )
+         CALL lbc_lnk_multi("trabbl",ahu_bbl, 'U', 1. , ahv_bbl, 'V', 1. )
          CALL iom_put( "ahu_bbl", ahu_bbl )   ! bbl diffusive flux i-coef
          CALL iom_put( "ahv_bbl", ahv_bbl )   ! bbl diffusive flux j-coef
@@ -136,5 +136,5 @@
             &          tab3d_2=tsa(:,:,:,jp_sal), clinfo2=           ' Sa: ', mask2=tmask, clinfo3='tra' )
          ! lateral boundary conditions ; just need for outputs
-         CALL lbc_lnk_multi( utr_bbl, 'U', 1. , vtr_bbl, 'V', 1. )
+         CALL lbc_lnk_multi("trabbl",utr_bbl, 'U', 1. , vtr_bbl, 'V', 1. )
          CALL iom_put( "uoce_bbl", utr_bbl )  ! bbl i-transport
          CALL iom_put( "voce_bbl", vtr_bbl )  ! bbl j-transport
@@ -525,5 +525,5 @@
       ! converte into REAL to use lbc_lnk ; impose a min value of 1 as a zero can be set in lbclnk
       zmbku(:,:) = REAL( mbku_d(:,:), wp )   ;     zmbkv(:,:) = REAL( mbkv_d(:,:), wp )  
-      CALL lbc_lnk_multi( zmbku,'U',1., zmbkv,'V',1.) 
+      CALL lbc_lnk_multi("trabbl",zmbku,'U',1., zmbkv,'V',1.) 
       mbku_d(:,:) = MAX( INT( zmbku(:,:) ), 1 ) ;  mbkv_d(:,:) = MAX( INT( zmbkv(:,:) ), 1 )
       !
@@ -548,5 +548,5 @@
          END DO
       END DO
-      CALL lbc_lnk_multi( e3u_bbl_0, 'U', 1. , e3v_bbl_0, 'V', 1. )      ! lateral boundary conditions
+      CALL lbc_lnk_multi("trabbl",e3u_bbl_0, 'U', 1. , e3v_bbl_0, 'V', 1. )      ! lateral boundary conditions
       !
       !                             !* masked diffusive flux coefficients
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traldf_lap_blp.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traldf_lap_blp.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traldf_lap_blp.F90	(revision 9814)
@@ -213,5 +213,5 @@
       END SELECT
       !
-      CALL lbc_lnk( zlap(:,:,:,:) , 'T', 1. )     ! Lateral boundary conditions (unchanged sign)
+      CALL lbc_lnk("traldf_lap_blp",zlap(:,:,:,:) , 'T', 1. )     ! Lateral boundary conditions (unchanged sign)
       !                                               ! Partial top/bottom cell: GRADh( zlap )  
       IF( ln_isfcav .AND. ln_zps ) THEN   ;   CALL zps_hde_isf( kt, kjpt, zlap, zglu, zglv, zgui, zgvi )  ! both top & bottom
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tramle.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tramle.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tramle.F90	(revision 9814)
@@ -319,5 +319,5 @@
                END DO
             END DO
-            CALL lbc_lnk_multi( rfu, 'U', 1. , rfv, 'V', 1. )
+            CALL lbc_lnk_multi("tramle",rfu, 'U', 1. , rfv, 'V', 1. )
             !
          ELSEIF( nn_mle == 1 ) THEN           ! MLE array allocation & initialisation
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tranpc.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tranpc.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tranpc.F90	(revision 9814)
@@ -309,5 +309,5 @@
          ENDIF
          !
-         CALL lbc_lnk_multi( tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. )
+         CALL lbc_lnk_multi("tranpc",tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. )
          !
          IF( lwp .AND. l_LB_debug ) THEN
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tranxt.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tranxt.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/tranxt.F90	(revision 9814)
@@ -107,5 +107,5 @@
 #endif
       !                                              ! local domain boundaries  (T-point, unchanged sign)
-      CALL lbc_lnk_multi( tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. )
+      CALL lbc_lnk_multi("tranxt",tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1. )
       !
       IF( ln_bdy )   CALL bdy_tra( kt )  ! BDY open boundaries
@@ -163,5 +163,5 @@
          ENDIF
          !
-         CALL lbc_lnk_multi( tsb(:,:,:,jp_tem), 'T', 1., tsb(:,:,:,jp_sal), 'T', 1., &
+         CALL lbc_lnk_multi("tranxt",tsb(:,:,:,jp_tem), 'T', 1., tsb(:,:,:,jp_sal), 'T', 1., &
                   &          tsn(:,:,:,jp_tem), 'T', 1., tsn(:,:,:,jp_sal), 'T', 1., &
                   &          tsa(:,:,:,jp_tem), 'T', 1., tsa(:,:,:,jp_sal), 'T', 1.  )
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traqsr.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traqsr.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/traqsr.F90	(revision 9814)
@@ -275,5 +275,5 @@
          END DO
       END DO
-      CALL lbc_lnk( fraqsr_1lev(:,:), 'T', 1._wp )
+      CALL lbc_lnk("traqsr",fraqsr_1lev(:,:), 'T', 1._wp )
       !
       IF( iom_use('qsr3d') ) THEN      ! output the shortwave Radiation distribution
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trazdf.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trazdf.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/trazdf.F90	(revision 9814)
@@ -92,5 +92,5 @@
          END DO
 !!gm this should be moved in trdtra.F90 and done on all trends
-         CALL lbc_lnk_multi( ztrdt, 'T', 1. , ztrds, 'T', 1. )
+         CALL lbc_lnk_multi("trazdf",ztrdt, 'T', 1. , ztrds, 'T', 1. )
 !!gm
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_zdf, ztrdt )
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/zpshde.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/zpshde.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRA/zpshde.F90	(revision 9814)
@@ -144,5 +144,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( pgtu(:,:,jn), 'U', -1. , pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
+         CALL lbc_lnk_multi("zpshde",pgtu(:,:,jn), 'U', -1. , pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
          !
       END DO
@@ -183,5 +183,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( pgru , 'U', -1. , pgrv , 'V', -1. )   ! Lateral boundary conditions
+         CALL lbc_lnk_multi("zpshde",pgru , 'U', -1. , pgrv , 'V', -1. )   ! Lateral boundary conditions
          !
       END IF
@@ -305,5 +305,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( pgtu(:,:,jn), 'U', -1. , pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
+         CALL lbc_lnk_multi("zpshde",pgtu(:,:,jn), 'U', -1. , pgtv(:,:,jn), 'V', -1. )   ! Lateral boundary cond.
          !
       END DO
@@ -353,5 +353,5 @@
          END DO
 
-         CALL lbc_lnk_multi( pgru , 'U', -1. , pgrv , 'V', -1. )   ! Lateral boundary conditions
+         CALL lbc_lnk_multi("zpshde",pgru , 'U', -1. , pgrv , 'V', -1. )   ! Lateral boundary conditions
          !
       END IF
@@ -406,5 +406,5 @@
          !
       END DO
-      CALL lbc_lnk_multi( pgtui(:,:,:), 'U', -1. , pgtvi(:,:,:), 'V', -1. )   ! Lateral boundary cond.
+      CALL lbc_lnk_multi("zpshde",pgtui(:,:,:), 'U', -1. , pgtvi(:,:,:), 'V', -1. )   ! Lateral boundary cond.
 
       IF( PRESENT( prd ) ) THEN    !==  horizontal derivative of density anomalies (rd)  ==!    (optional part)
@@ -449,5 +449,5 @@
             END DO
          END DO
-         CALL lbc_lnk_multi( pgrui, 'U', -1. , pgrvi, 'V', -1. )   ! Lateral boundary conditions
+         CALL lbc_lnk_multi("zpshde",pgrui, 'U', -1. , pgrvi, 'V', -1. )   ! Lateral boundary conditions
          !
       END IF  
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trddyn.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trddyn.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trddyn.F90	(revision 9814)
@@ -129,5 +129,5 @@
                                  END DO
                               END DO
-                              CALL lbc_lnk_multi( z3dx, 'U', -1., z3dy, 'V', -1. )
+                              CALL lbc_lnk_multi("trddyn",z3dx, 'U', -1., z3dy, 'V', -1. )
                               CALL iom_put( "utrd_udx", z3dx  )
                               CALL iom_put( "vtrd_vdy", z3dy  )
@@ -165,5 +165,5 @@
 !                                 END DO
 !                              END DO
-!                              CALL lbc_lnk_multi( z3dx, 'U', -1., z3dy, 'V', -1. )
+!                              CALL lbc_lnk_multi("trddyn",z3dx, 'U', -1., z3dy, 'V', -1. )
 !                              CALL iom_put( "utrd_bfr", z3dx )
 !                              CALL iom_put( "vtrd_bfr", z3dy )
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdken.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdken.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdken.F90	(revision 9814)
@@ -88,5 +88,5 @@
       !!----------------------------------------------------------------------
       !
-      CALL lbc_lnk_multi( putrd, 'U', -1. , pvtrd, 'V', -1. )      ! lateral boundary conditions
+      CALL lbc_lnk_multi("trdken",putrd, 'U', -1. , pvtrd, 'V', -1. )      ! lateral boundary conditions
       !
       nkstp = kt
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdmxl.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdmxl.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdmxl.F90	(revision 9814)
@@ -152,5 +152,5 @@
 !!gm to be put juste before the output !
 !      ! Lateral boundary conditions
-!      CALL lbc_lnk_multi( tmltrd(:,:,jl), 'T', 1. , smltrd(:,:,jl), 'T', 1. )
+!      CALL lbc_lnk_multi("trdmxl",tmltrd(:,:,jl), 'T', 1. , smltrd(:,:,jl), 'T', 1. )
 !!gm end
 
@@ -470,5 +470,5 @@
          !-- Lateral boundary conditions
          !         ... temperature ...                    ... salinity ...
-         CALL lbc_lnk_multi( ztmltot , 'T', 1., zsmltot , 'T', 1., &
+         CALL lbc_lnk_multi("trdmxl",ztmltot , 'T', 1., zsmltot , 'T', 1., &
                   &          ztmlres , 'T', 1., zsmlres , 'T', 1., &
                   &          ztmlatf , 'T', 1., zsmlatf , 'T', 1. )
@@ -521,8 +521,8 @@
          !-- Lateral boundary conditions
          !         ... temperature ...                    ... salinity ...
-         CALL lbc_lnk_multi( ztmltot2, 'T', 1., zsmltot2, 'T', 1., &
+         CALL lbc_lnk_multi("trdmxl",ztmltot2, 'T', 1., zsmltot2, 'T', 1., &
                   &          ztmlres2, 'T', 1., zsmlres2, 'T', 1. )
          !
-         CALL lbc_lnk_multi( ztmltrd2(:,:,:), 'T', 1., zsmltrd2(:,:,:), 'T', 1. ) ! /  in the NetCDF trends file
+         CALL lbc_lnk_multi("trdmxl",ztmltrd2(:,:,:), 'T', 1., zsmltrd2(:,:,:), 'T', 1. ) ! /  in the NetCDF trends file
          
          ! III.3 Time evolution array swap
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdvor.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdvor.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/TRD/trdvor.F90	(revision 9814)
@@ -161,5 +161,5 @@
 
       zudpvor(:,:) = 0._wp                 ;   zvdpvor(:,:) = 0._wp                    ! Initialisation
-      CALL lbc_lnk_multi( putrdvor, 'U', -1. , pvtrdvor, 'V', -1. )      ! lateral boundary condition
+      CALL lbc_lnk_multi("trdvor",putrdvor, 'U', -1. , pvtrdvor, 'V', -1. )      ! lateral boundary condition
       
 
@@ -250,5 +250,5 @@
       zvdpvor(:,:) = 0._wp
       !                            ! lateral boundary condition on input momentum trends
-      CALL lbc_lnk_multi( putrdvor, 'U', -1. , pvtrdvor, 'V', -1. )
+      CALL lbc_lnk_multi("trdvor",putrdvor, 'U', -1. , pvtrdvor, 'V', -1. )
 
       !  =====================================
@@ -395,5 +395,5 @@
 
          ! Boundary conditions
-         CALL lbc_lnk_multi( vor_avrtot, 'F', 1. , vor_avrres, 'F', 1. )
+         CALL lbc_lnk_multi("trdvor",vor_avrtot, 'F', 1. , vor_avrres, 'F', 1. )
 
 
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/USR/usrdef_fmask.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/USR/usrdef_fmask.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/USR/usrdef_fmask.F90	(revision 9814)
@@ -143,5 +143,5 @@
       ENDIF
       !
-      CALL lbc_lnk( pfmsk, 'F', 1._wp )      ! Lateral boundary conditions on fmask
+      CALL lbc_lnk("usrdef_fmask",pfmsk, 'F', 1._wp )      ! Lateral boundary conditions on fmask
       !
    END SUBROUTINE usr_def_fmask
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/USR/usrdef_zgr.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/USR/usrdef_zgr.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/USR/usrdef_zgr.F90	(revision 9814)
@@ -3,9 +3,9 @@
    !!                       ***  MODULE  usrdef_zgr  ***
    !!
-   !!                       ===  GYRE configuration  ===
+   !!                      ===  BENCH configuration  ===
    !!
    !! User defined : vertical coordinate system of a user configuration
    !!======================================================================
-   !! History :  4.0  ! 2016-06  (G. Madec)  Original code
+   !! History :  4.0  ! 
    !!----------------------------------------------------------------------
 
@@ -18,4 +18,5 @@
    USE oce            ! ocean variables
    USE dom_oce        ! ocean domain
+   USE phycst         ! physical constants
    USE depth_e3       ! depth <=> e3
    !
@@ -29,10 +30,10 @@
    PUBLIC   usr_def_zgr        ! called by domzgr.F90
 
-   !! * Substitutions
+  !! * Substitutions
 #  include "vectopt_loop_substitute.h90"
    !!----------------------------------------------------------------------
-   !! NEMO/OCE 4.0 , NEMO Consortium (2018)
-   !! $Id:$
-   !! Software governed by the CeCILL licence     (./LICENSE)
+   !! NEMO/OPA 4.0 , NEMO Consortium (2016)
+   !! $Id$
+   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
    !!----------------------------------------------------------------------
 CONTAINS             
@@ -65,5 +66,5 @@
       !
       IF(lwp) WRITE(numout,*)
-      IF(lwp) WRITE(numout,*) 'usr_def_zgr : GYRE configuration (z-coordinate closed flat box ocean without cavities)'
+      IF(lwp) WRITE(numout,*) 'usr_def_zgr : BENCH configuration (z-coordinate closed flat box ocean)'
       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~'
       !
@@ -71,5 +72,5 @@
       ! type of vertical coordinate
       ! ---------------------------
-      ld_zco    = .TRUE.         ! GYRE case:  z-coordinate without ocean cavities
+      ld_zco    = .TRUE.         ! BENCH case:  z-coordinate without ocean cavities
       ld_zps    = .FALSE.
       ld_sco    = .FALSE.
@@ -126,15 +127,8 @@
       !
       INTEGER  ::   jk       ! dummy loop indices
-      REAL(wp) ::   zt, zw   ! local scalars
-      REAL(wp) ::   zsur, za0, za1, zkth, zacr   ! Values for the Madec & Imbard (1996) function  
-      !!----------------------------------------------------------------------
-      !
-      ! Set parameters of z(k) function
-      ! -------------------------------
-      zsur = -2033.194295283385_wp       
-      za0  =   155.8325369664153_wp 
-      za1  =   146.3615918601890_wp
-      zkth =    17.28520372419791_wp   
-      zacr =     5.0_wp       
+      REAL(wp) ::   zd       ! local scalar
+      !!----------------------------------------------------------------------
+      !
+      zd = 5000./FLOAT(jpkm1)
       !
       IF(lwp) THEN            ! Parameter print
@@ -142,10 +136,6 @@
          WRITE(numout,*) '    zgr_z   : Reference vertical z-coordinates '
          WRITE(numout,*) '    ~~~~~~~'
-         WRITE(numout,*) '       GYRE case : MI96 function with the following coefficients :'
-         WRITE(numout,*) '                 zsur = ', zsur
-         WRITE(numout,*) '                 za0  = ', za0
-         WRITE(numout,*) '                 za1  = ', za1
-         WRITE(numout,*) '                 zkth = ', zkth
-         WRITE(numout,*) '                 zacr = ', zacr
+         WRITE(numout,*) '       BENCH case : uniform vertical grid :'
+         WRITE(numout,*) '                     with thickness = ', zd
       ENDIF
 
@@ -154,9 +144,10 @@
       ! -------------------------
       !
-      DO jk = 1, jpk          ! depth at T and W-points
-         zw = REAL( jk , wp )
-         zt = REAL( jk , wp ) + 0.5_wp
-         pdepw_1d(jk) = ( zsur + za0 * zw + za1 * zacr *  LOG( COSH( (zw-zkth) / zacr ) )  )
-         pdept_1d(jk) = ( zsur + za0 * zt + za1 * zacr *  LOG( COSH( (zt-zkth) / zacr ) )  )
+      pdepw_1d(1) = 0._wp
+      pdept_1d(1) = 0.5_wp * zd
+      ! 
+      DO jk = 2, jpk          ! depth at T and W-points
+         pdepw_1d(jk) = pdepw_1d(jk-1) + zd 
+         pdept_1d(jk) = pdept_1d(jk-1) + zd 
       END DO
       !
@@ -183,5 +174,5 @@
       !! ** Purpose :   set the masked top and bottom ocean t-levels
       !!
-      !! ** Method  :   GYRE case = closed flat box ocean without ocean cavities
+      !! ** Method  :   BENCH case = closed flat box ocean without ocean cavities
       !!                   k_top = 1     except along north, south, east and west boundaries
       !!                   k_bot = jpk-1 except along north, south, east and west boundaries
@@ -193,4 +184,5 @@
       !
       REAL(wp), DIMENSION(jpi,jpj) ::   z2d   ! 2D local workspace
+      REAL(wp)                     ::   zmaxlam, zscl
       !!----------------------------------------------------------------------
       !
@@ -198,9 +190,9 @@
       IF(lwp) WRITE(numout,*) '    zgr_top_bot : defines the top and bottom wet ocean levels.'
       IF(lwp) WRITE(numout,*) '    ~~~~~~~~~~~'
-      IF(lwp) WRITE(numout,*) '       GYRE case : closed flat box ocean without ocean cavities'
+      IF(lwp) WRITE(numout,*) '       BENCH case : closed flat box ocean without ocean cavities'
       !
       z2d(:,:) = REAL( jpkm1 , wp )          ! flat bottom
       !
-      CALL lbc_lnk( z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed)
+      CALL lbc_lnk("usrdef_zgr",z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed)
       !
       k_bot(:,:) = INT( z2d(:,:) )           ! =jpkm1 over the ocean point, =0 elsewhere
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ZDF/zdfosm.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ZDF/zdfosm.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ZDF/zdfosm.F90	(revision 9814)
@@ -1287,5 +1287,5 @@
 
        ! Lateral boundary conditions on zvicos (sign unchanged), needed to caclulate viscosities on u and v grids
-       CALL lbc_lnk( zviscos(:,:,:), 'W', 1. )
+       CALL lbc_lnk("zdfosm",zviscos(:,:,:), 'W', 1. )
 
        ! GN 25/8: need to change tmask --> wmask
@@ -1300,5 +1300,5 @@
      END DO
       ! Lateral boundary conditions on ghamu and ghamv, currently on W-grid  (sign unchanged), needed to caclulate gham[uv] on u and v grids
-     CALL lbc_lnk_multi( p_avt, 'W', 1. , p_avm, 'W', 1.,   &
+     CALL lbc_lnk_multi("zdfosm",p_avt, 'W', 1. , p_avm, 'W', 1.,   &
       &                  ghamu, 'W', 1. , ghamv, 'W', 1. )
        DO jk = 2, jpkm1
@@ -1318,5 +1318,5 @@
         ! Lateral boundary conditions on final outputs for gham[ts],  on W-grid  (sign unchanged)
         ! Lateral boundary conditions on final outputs for gham[uv],  on [UV]-grid  (sign unchanged)
-        CALL lbc_lnk_multi( ghamt, 'W', 1. , ghams, 'W', 1.,   &
+        CALL lbc_lnk_multi("zdfosm",ghamt, 'W', 1. , ghams, 'W', 1.,   &
          &                  ghamu, 'U', 1. , ghamv, 'V', 1. )
 
@@ -1359,5 +1359,5 @@
       END IF
       ! Lateral boundary conditions on p_avt  (sign unchanged)
-      CALL lbc_lnk( p_avt(:,:,:), 'W', 1. )
+      CALL lbc_lnk("zdfosm",p_avt(:,:,:), 'W', 1. )
       !
    END SUBROUTINE zdf_osm
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ZDF/zdfphy.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ZDF/zdfphy.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/ZDF/zdfphy.F90	(revision 9814)
@@ -292,13 +292,13 @@
       !                                         !* Lateral boundary conditions (sign unchanged)
       IF( l_zdfsh2 ) THEN
-         CALL lbc_lnk_multi( avm_k, 'W', 1. , avt_k, 'W', 1.,   &
+         CALL lbc_lnk_multi("zdfphy",avm_k, 'W', 1. , avt_k, 'W', 1.,   &
             &                avm  , 'W', 1. , avt  , 'W', 1. , avs , 'W', 1. )
       ELSE
-         CALL lbc_lnk_multi( avm  , 'W', 1. , avt  , 'W', 1. , avs , 'W', 1. )
+         CALL lbc_lnk_multi("zdfphy",avm  , 'W', 1. , avt  , 'W', 1. , avs , 'W', 1. )
       ENDIF
       !
       IF( l_zdfdrg ) THEN     ! drag  have been updated (non-linear cases)
-         IF( ln_isfcav ) THEN   ;  CALL lbc_lnk_multi( rCdU_top, 'T', 1. , rCdU_bot, 'T', 1. )   ! top & bot drag
-         ELSE                   ;  CALL lbc_lnk      ( rCdU_bot, 'T', 1. )                       ! bottom drag only
+         IF( ln_isfcav ) THEN   ;  CALL lbc_lnk_multi("zdfphy",rCdU_top, 'T', 1. , rCdU_bot, 'T', 1. )   ! top & bot drag
+         ELSE                   ;  CALL lbc_lnk("zdfphy",rCdU_bot, 'T', 1. )                       ! bottom drag only
          ENDIF
       ENDIF
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/nemogcm.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/nemogcm.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/nemogcm.F90	(revision 9814)
@@ -84,4 +84,5 @@
    USE lib_mpp        ! distributed memory computing
    USE mppini         ! shared/distributed memory setting (mpp_init routine)
+   USE lbclnk 
    USE lbcnfd  , ONLY : isendto, nsndto, nfsloop, nfeloop   ! Setup of north fold exchanges 
    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)
@@ -190,37 +191,5 @@
             IF ( istp == ( nit000 + 1 ) ) tic = MPI_Wtime()
             IF ( ln_comm_only .AND. istp >= ( nit000  + 1 )) THEN
-               DO i = 1, n_sequence
-                 IF ( icomm_sequence(i,1) == 1 ) THEN
-                    SELECT CASE ( icomm_sequence(i,2) )
-                      CASE (1)
-                      CALL lbc_lnk_multi( un(:,:,1)  , 'U', -1. )
-                      CASE (2)
-                      CALL lbc_lnk_multi( un(:,:,1)  , 'U', -1., vn(:,:,1)  , 'V', -1.)
-                      CASE (3)
-                      CALL lbc_lnk_multi( un(:,:,1)  , 'U', -1., vn(:,:,1)  , 'V', -1., ua(:,:,1), 'U', -1.)
-                      CASE (4)
-                      CALL lbc_lnk_multi( un(:,:,1)  , 'U', -1., vn(:,:,1)  , 'V', -1., ua(:,:,1), 'U', -1., va(:,:,1)  , 'V', -1.)
-                      CASE (5)
-                      CALL lbc_lnk_multi( un(:,:,1)  , 'U', -1., vn(:,:,1)  , 'V', -1., ua(:,:,1), 'U', -1., va(:,:,1)  , 'V', -1., ub(:,:,1)  , 'U', -1.)
-                      CASE (6)
-                      CALL lbc_lnk_multi( un(:,:,1)  , 'U', -1., vn(:,:,1)  , 'V', -1., ua(:,:,1), 'U', -1., va(:,:,1)  , 'V', -1., ub(:,:,1)  , 'U', -1., vb(:,:,1)  , 'V', -1. )
-                    END SELECT
-                 ELSE
-                    SELECT CASE ( icomm_sequence(i,2) )
-                      CASE (1)
-                      CALL lbc_lnk_multi( un  , 'U', -1. )
-                      CASE (2)
-                      CALL lbc_lnk_multi( un  , 'U', -1., vn  , 'V', -1.)
-                      CASE (3)
-                      CALL lbc_lnk_multi( un  , 'U', -1., vn  , 'V', -1., ua, 'U', -1.)
-                      CASE (4)
-                      CALL lbc_lnk_multi( un  , 'U', -1., vn  , 'V', -1., ua, 'U', -1., va  , 'V', -1.)
-                      CASE (5)
-                      CALL lbc_lnk_multi( un  , 'U', -1., vn  , 'V', -1., ua, 'U', -1., va  , 'V', -1., ub  , 'U', -1.)
-                      CASE (6)
-                      CALL lbc_lnk_multi( un  , 'U', -1., vn  , 'V', -1., ua, 'U', -1., va  , 'V', -1., ub  , 'U', -1., vb  , 'V', -1. )
-                    END SELECT
-                 ENDIF
-               ENDDO
+              CALL simulated_lbc_lnk
             ELSE
               CALL stp        ( istp ) 
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/step.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/step.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/src/OCE/step.F90	(revision 9814)
@@ -313,5 +313,6 @@
       ! Control
       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
-                         CALL stp_ctl      ( kstp, indic )
+                  !EM remove time stepping writing imbalance
+                  !       CALL stp_ctl      ( kstp, indic )
                          
       IF( kstp == nit000 ) THEN                          ! 1st time step only
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/diawri.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/diawri.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/diawri.F90	(revision 9814)
@@ -181,5 +181,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'T', 1. )
+         CALL lbc_lnk( "diawri",z2d, 'T', 1. )
          CALL iom_put( "taubot", z2d )           
       ENDIF
@@ -237,5 +237,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'T', 1. )
+         CALL lbc_lnk( "diawri",z2d, 'T', 1. )
          CALL iom_put( "sstgrad2",  z2d )          ! square of module of sst gradient
          z2d(:,:) = SQRT( z2d(:,:) )
@@ -281,5 +281,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z3d, 'T', 1. )
+         CALL lbc_lnk( "diawri",z3d, 'T', 1. )
          CALL iom_put( "eken", z3d )                 ! kinetic energy
       ENDIF
@@ -307,5 +307,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'U', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'U', -1. )
          CALL iom_put( "u_heattr", 0.5*rcp * z2d )    ! heat transport in i-direction
       ENDIF
@@ -320,5 +320,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'U', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'U', -1. )
          CALL iom_put( "u_salttr", 0.5 * z2d )        ! heat transport in i-direction
       ENDIF
@@ -342,5 +342,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'V', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'V', -1. )
          CALL iom_put( "v_heattr", 0.5*rcp * z2d )    !  heat transport in j-direction
       ENDIF
@@ -355,5 +355,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'V', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'V', -1. )
          CALL iom_put( "v_salttr", 0.5 * z2d )        !  heat transport in j-direction
       ENDIF
@@ -368,5 +368,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'T', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'T', -1. )
          CALL iom_put( "tosmint", rau0 * z2d )        ! Vertical integral of temperature
       ENDIF
@@ -380,5 +380,5 @@
             END DO
          END DO
-         CALL lbc_lnk( z2d, 'T', -1. )
+         CALL lbc_lnk( "diawri",z2d, 'T', -1. )
          CALL iom_put( "somint", rau0 * z2d )         ! Vertical integral of salinity
       ENDIF
Index: MO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/stpctl.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/stpctl.F90	(revision 9813)
+++ 	(revision )
@@ -1,170 +1,0 @@
-MODULE stpctl
-   !!======================================================================
-   !!                       ***  MODULE  stpctl  ***
-   !! Ocean run control :  gross check of the ocean time stepping
-   !!======================================================================
-   !! History :  OPA  ! 1991-03  (G. Madec) Original code
-   !!            6.0  ! 1992-06  (M. Imbard)
-   !!            8.0  ! 1997-06  (A.M. Treguier)
-   !!   NEMO     1.0  ! 2002-06  (G. Madec)  F90: Free form and module
-   !!            2.0  ! 2009-07  (G. Madec)  Add statistic for time-spliting
-   !!            3.7  ! 2016-09  (G. Madec)  Remove solver
-   !!            4.0  ! 2017-04  (G. Madec)  regroup global communications
-   !!----------------------------------------------------------------------
-
-   !!----------------------------------------------------------------------
-   !!   stp_ctl      : Control the run
-   !!----------------------------------------------------------------------
-   USE oce             ! ocean dynamics and tracers variables
-   USE dom_oce         ! ocean space and time domain variables 
-   USE c1d             ! 1D vertical configuration
-   USE diawri          ! Standard run outputs       (dia_wri_state routine)
-   !
-   USE in_out_manager  ! I/O manager
-   USE lbclnk          ! ocean lateral boundary conditions (or mpp link)
-   USE lib_mpp         ! distributed memory computing
-   USE wet_dry,   ONLY : ll_wd, ssh_ref    ! reference depth for negative bathy
-
-   USE netcdf          ! NetCDF library
-   IMPLICIT NONE
-   PRIVATE
-
-   PUBLIC stp_ctl           ! routine called by step.F90
-
-   INTEGER  ::   idrun, idtime, idssh, idu, ids, istatus
-   !!----------------------------------------------------------------------
-   !! NEMO/OPA 4.0 , NEMO Consortium (2017)
-   !! $Id: stpctl.F90 9210 2018-01-11 15:41:21Z gm $
-   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
-   !!----------------------------------------------------------------------
-CONTAINS
-
-   SUBROUTINE stp_ctl( kt, kindic )
-      !!----------------------------------------------------------------------
-      !!                    ***  ROUTINE stp_ctl  ***
-      !!                     
-      !! ** Purpose :   Control the run
-      !!
-      !! ** Method  : - Save the time step in numstp
-      !!              - Print it each 50 time steps
-      !!              - Stop the run IF problem encountered by setting indic=-3
-      !!                Problems checked: |ssh| maximum larger than 10 m
-      !!                                  |U|   maximum larger than 10 m/s 
-      !!                                  negative sea surface salinity
-      !!
-      !! ** Actions :   "time.step" file = last ocean time-step
-      !!                "run.stat"  file = run statistics
-      !!                nstop indicator sheared among all local domain (lk_mpp=T)
-      !!----------------------------------------------------------------------
-      INTEGER, INTENT(in   ) ::   kt       ! ocean time-step index
-      INTEGER, INTENT(inout) ::   kindic   ! error indicator
-      !!
-      INTEGER  ::   ji, jj, jk             ! dummy loop indices
-      INTEGER  ::   iih, ijh               ! local integers
-      INTEGER  ::   iiu, iju, iku          !   -       -
-      INTEGER  ::   iis, ijs, iks          !   -       -
-      REAL(wp) ::   zzz                    ! local real 
-      INTEGER , DIMENSION(3) ::   ilocu, ilocs
-      INTEGER , DIMENSION(2) ::   iloch
-      REAL(wp), DIMENSION(4) ::   zmax
-      !!----------------------------------------------------------------------
-      !
-      IF( kt == nit000 .AND. lwp ) THEN
-         WRITE(numout,*)
-         WRITE(numout,*) 'stp_ctl : time-stepping control'
-         WRITE(numout,*) '~~~~~~~'
-         !                                ! open time.step file
-         CALL ctl_opn( numstp, 'time.step', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )
-         !                                ! open run.stat file
-         CALL ctl_opn( numrun, 'run.stat', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp, narea )
-
-         IF( lwm ) THEN
-            istatus = NF90_CREATE( 'run.stat.nc', NF90_CLOBBER, idrun )
-            istatus = NF90_DEF_DIM( idrun, 'time', NF90_UNLIMITED, idtime )
-            istatus = NF90_DEF_VAR( idrun, 'abs_ssh_max', NF90_DOUBLE, (/ idtime /), idssh )
-            istatus = NF90_DEF_VAR( idrun,   'abs_u_max', NF90_DOUBLE, (/ idtime /), idu )
-            istatus = NF90_ENDDEF(idrun)
-         ENDIF
-         
-      ENDIF
-      !
-      IF(lwp) THEN                        !==  current time step  ==!   ("time.step" file)
-         WRITE ( numstp, '(1x, i8)' )   kt
-         REWIND( numstp )
-      ENDIF
-      !
-      !                                   !==  test of extrema  ==!
-      IF( ll_wd ) THEN
-         zmax(1) = MAXVAL(  ABS( sshn(:,:) + ssh_ref*tmask(:,:,1) )  )        ! ssh max 
-      ELSE
-         zmax(1) = MAXVAL(  ABS( sshn(:,:) )  )                               ! ssh max
-      ENDIF
-      zmax(2) = MAXVAL(  ABS( un(:,:,:) )  )                                  ! velocity max (zonal only)
-!     zmax(3) = MAXVAL( -tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp )   ! minus salinity max
-      zmax(3) = 0.0_wp
-      zmax(4) = REAL( nstop , wp )                                            ! stop indicator
-      !
-      IF( lk_mpp ) THEN
-         CALL mpp_max_multiple( zmax(:), 4 )    ! max over the global domain
-         !
-         nstop = INT( zmax(4) )                 ! nstop indicator sheared among all local domains
-      ENDIF
-      !
-      IF( MOD( kt, nwrite ) == 1 .AND. lwp ) THEN
-         WRITE(numout,*) ' ==>> time-step= ', kt, ' |ssh| max: ',   zmax(1), ' |U| max: ', zmax(2)
-      ENDIF
-      !
-      IF (  zmax(1) >  50._wp .OR.   &                     ! too large sea surface height ( > 10 m)
-         &  zmax(2) >  20._wp .OR.   &                     ! too large velocity ( > 10 m/s)
-!!$         &  zmax(3) >=  0._wp .OR.   &                     ! negative or zero sea surface salinity
-         &  ISNAN( zmax(1) + zmax(2) + zmax(3) )  ) THEN   ! NaN encounter in the tests
-         IF( lk_mpp ) THEN
-            CALL mpp_maxloc( ABS(sshn)        , ssmask(:,:)  , zzz, iih, ijh )
-            CALL mpp_maxloc( ABS(un)          , umask (:,:,:), zzz, iiu, iju, iku )
-!           CALL mpp_minloc( tsn(:,:,:,jp_sal), tmask (:,:,:), zzz, iis, ijs, iks )
-         ELSE
-            iloch = MINLOC( ABS( sshn(:,:)   )                               )
-            ilocu = MAXLOC( ABS( un  (:,:,:) )                               )
-!           ilocs = MINLOC( tsn(:,:,:,jp_sal) , mask = tmask(:,:,:) == 1._wp )
-            iih = iloch(1) + nimpp - 1   ;   ijh = iloch(2) + njmpp - 1
-            iiu = ilocu(1) + nimpp - 1   ;   iju = ilocu(2) + njmpp - 1   ;   iku = ilocu(3)
-!           iis = ilocs(1) + nimpp - 1   ;   ijs = ilocs(2) + njmpp - 1   ;   iks = ilocu(3)
-         ENDIF
-         IF(lwp) THEN
-            WRITE(numout,cform_err)
-            WRITE(numout,*) ' stp_ctl: |ssh| > 50 m   or   |U| > 20 m/s   or   NaN encounter in the tests'
-            WRITE(numout,*) ' ======= '
-            WRITE(numout,9100) kt,   zmax(1), iih, ijh
-            WRITE(numout,9200) kt,   zmax(2), iiu, iju, iku
-!!$            WRITE(numout,9300) kt, - zmax(3), iis, ijs, iks
-            WRITE(numout,*)
-            WRITE(numout,*) '          output of last computed fields in output.abort.nc file'
-         ENDIF
-         kindic = -3
-         !
-         nstop = nstop + 1                            ! increase nstop by 1 (on all local domains)
-         CALL dia_wri_state( 'output.abort', kt )     ! create an output.abort file
-         !
-      ENDIF
-9100  FORMAT (' kt=',i8,'   |ssh| max: ',1pg11.4,', at  i j  : ',2i5)
-9200  FORMAT (' kt=',i8,'   |U|   max: ',1pg11.4,', at  i j k: ',3i5)
-9300  FORMAT (' kt=',i8,'   S     min: ',1pg11.4,', at  i j  : ',2i5)
-      !
-      !                                            !==  run statistics  ==!   ("run.stat" file)
-!     IF(lwp) WRITE(numrun,9400) kt, zmax(1), zmax(2), - zmax(3)
-      IF(lwp) WRITE(numrun,9400) kt, zmax(1), zmax(2)
-      IF( lwm ) THEN
-         istatus = NF90_PUT_VAR( idrun, idssh, (/ zmax(1)/), (/kt/), (/1/) )
-         istatus = NF90_PUT_VAR( idrun,   idu, (/ zmax(2)/), (/kt/), (/1/) )
-!        istatus = NF90_PUT_VAR( idrun,   ids, (/-zmax(3)/), (/kt/), (/1/) )
-         IF( MOD( kt , 100 ) == 0 ) istatus = NF90_SYNC(idrun)
-         IF( kt == nitend         ) istatus = NF90_CLOSE(idrun)
-      END IF
-      !
-!9400  FORMAT(' it :', i8, '    |ssh|_max: ', D23.16, ' |U|_max: ', D23.16,' S_min: ', D23.16)
-9400  FORMAT(' it :', i8, '    |ssh|_max: ', D23.16, ' |U|_max: ', D23.16)
-      !
-   END SUBROUTINE stp_ctl
-
-   !!======================================================================
-END MODULE stpctl
Index: /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/usrdef_zgr.F90
===================================================================
--- /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/usrdef_zgr.F90	(revision 9813)
+++ /NEMO/branches/2018/dev_r9759_HPC09_ESIWACE/tests/BENCH/MY_SRC/usrdef_zgr.F90	(revision 9814)
@@ -194,5 +194,5 @@
       z2d(:,:) = REAL( jpkm1 , wp )          ! flat bottom
       !
-      CALL lbc_lnk( z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed)
+      CALL lbc_lnk( "usrdef_zgr", z2d, 'T', 1. )           ! set surrounding land to zero (here jperio=0 ==>> closed)
       !
       k_bot(:,:) = INT( z2d(:,:) )           ! =jpkm1 over the ocean point, =0 elsewhere
