From d72187561e814d80e1f9abdc884b0e421644b8ef Mon Sep 17 00:00:00 2001
From: Clement Rousset <clement.rousset@locean.ipsl.fr>
Date: Tue, 20 Dec 2022 14:42:26 +0100
Subject: [PATCH] clean option nn_hls=1 from the code

---
 src/ICE/icedyn_adv_umx.F90   |  7 ------
 src/ICE/icedyn_rhg_eap.F90   | 12 ++++------
 src/ICE/icedyn_rhg_evp.F90   | 10 ++------
 src/ICE/icedyn_rhg_vp.F90    |  2 --
 src/ICE/iceupdate.F90        |  1 -
 src/OCE/BDY/bdydyn2d.F90     |  9 ++------
 src/OCE/BDY/bdydyn3d.F90     |  6 +----
 src/OCE/BDY/bdyice.F90       |  9 +++-----
 src/OCE/BDY/bdytra.F90       |  3 +--
 src/OCE/DOM/domqco.F90       | 14 ++++--------
 src/OCE/DOM/domtile.F90      |  2 --
 src/OCE/DYN/dynatf_qco.F90   |  2 +-
 src/OCE/DYN/dynhpg.F90       |  3 ---
 src/OCE/DYN/dynldf_iso.F90   |  2 --
 src/OCE/DYN/sshwzv.F90       |  3 +--
 src/OCE/LBC/mppini.F90       |  2 +-
 src/OCE/LDF/ldftra.F90       |  1 -
 src/OCE/SBC/sbcmod.F90       |  1 -
 src/OCE/TRA/traadv_fct.F90   | 10 ++------
 src/OCE/TRA/traadv_qck.F90   | 19 ----------------
 src/OCE/TRA/traadv_ubs.F90   |  1 -
 src/OCE/TRA/traldf_lev.F90   |  1 -
 src/OCE/TRA/traldf_triad.F90 |  2 --
 src/OCE/ZDF/zdfosm.F90       |  2 --
 src/OCE/ZDF/zdfphy.F90       |  4 ----
 src/OCE/lib_fortran.F90      | 44 ------------------------------------
 src/OCE/stpmlf.F90           |  2 +-
 src/OCE/stprk3_stg.F90       |  2 +-
 src/SWE/nemogcm.F90          |  4 ----
 src/SWE/stpmlf.F90           |  6 ++---
 src/SWE/stprk3.F90           | 12 +++++-----
 src/TOP/trcbdy.F90           |  3 +--
 32 files changed, 34 insertions(+), 167 deletions(-)

diff --git a/src/ICE/icedyn_adv_umx.F90 b/src/ICE/icedyn_adv_umx.F90
index 00f4d58e..2aa6a5eb 100644
--- a/src/ICE/icedyn_adv_umx.F90
+++ b/src/ICE/icedyn_adv_umx.F90
@@ -664,7 +664,6 @@ CONTAINS
             pt_ups(ji,jj,jl) = ( pt(ji,jj,jl) + ztra * pdt * r1_e1e2t(ji,jj) ) * tmask(ji,jj,1)
          END_2D
       END DO
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_adv_umx', pt_ups, 'T', 1.0_wp )
 
    END SUBROUTINE upstream
 
@@ -895,7 +894,6 @@ CONTAINS
 !!$            END DO
 !!$         END DO
       END DO
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_adv_umx', ztu2, 'T', 1.0_wp )
       !
       !                                                     !--  BiLaplacian in i-direction  --!
       DO jl = 1, jpl
@@ -1043,7 +1041,6 @@ CONTAINS
             ztv2(ji,jj,jl) = ( ztv1(ji,jj,jl) - ztv1(ji,jj-1,jl) ) * r1_e2t(ji,jj)
          END_2D
       END DO
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_adv_umx', ztv2, 'T', 1.0_wp )
       !
       !                                                     !--  BiLaplacian in j-direction  --!
       DO jl = 1, jpl
@@ -1331,7 +1328,6 @@ CONTAINS
             zslpx(ji,jj,jl) = ( pt(ji+1,jj,jl) - pt(ji,jj,jl) ) * umask(ji,jj,1)
          END_2D
       END DO
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_adv_umx', zslpx, 'U', -1.0_wp)   ! lateral boundary cond.
 
       DO jl = 1, jpl
          DO_2D( nn_hls-1, 0, 0, 0 )
@@ -1395,7 +1391,6 @@ CONTAINS
             ENDIF
          END_2D
       END DO
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_adv_umx', pfu_ho, 'U', -1.0_wp)   ! lateral boundary cond.
       !
    END SUBROUTINE limiter_x
 
@@ -1422,7 +1417,6 @@ CONTAINS
             zslpy(ji,jj,jl) = ( pt(ji,jj+1,jl) - pt(ji,jj,jl) ) * vmask(ji,jj,1)
          END_2D
       END DO
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_adv_umx', zslpy, 'V', -1.0_wp)   ! lateral boundary cond.
 
       DO jl = 1, jpl
          DO_2D( 0, 0, nn_hls-1, 0 )
@@ -1487,7 +1481,6 @@ CONTAINS
             ENDIF
          END_2D
       END DO
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_adv_umx', pfv_ho, 'V', -1.0_wp)   ! lateral boundary cond.
       !
    END SUBROUTINE limiter_y
 
diff --git a/src/ICE/icedyn_rhg_eap.F90 b/src/ICE/icedyn_rhg_eap.F90
index 7ab1d2cc..18f923ee 100644
--- a/src/ICE/icedyn_rhg_eap.F90
+++ b/src/ICE/icedyn_rhg_eap.F90
@@ -574,7 +574,6 @@ CONTAINS
                      &            )   * zmsk00y(ji,jj)
                ENDIF
             END_2D
-            IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_rhg_eap', v_ice, 'V', -1.0_wp )
             !
             DO_2D( 0, 0, 0, 0 )
                !                 !--- tau_io/(u_oce - u_ice)
@@ -620,9 +619,8 @@ CONTAINS
                      &            )   * zmsk00x(ji,jj)
                ENDIF
             END_2D
-            IF( nn_hls == 1 ) THEN   ;   CALL lbc_lnk( 'icedyn_rhg_eap', u_ice, 'U', -1.0_wp )
-            ELSE                     ;   CALL lbc_lnk( 'icedyn_rhg_eap', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp )
-            ENDIF
+
+            CALL lbc_lnk( 'icedyn_rhg_eap', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp )
             !
          ELSE ! odd iterations
             !
@@ -670,7 +668,6 @@ CONTAINS
                      &            )   * zmsk00x(ji,jj)
                ENDIF
             END_2D
-            IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_rhg_eap', u_ice, 'U', -1.0_wp )
             !
             DO_2D( 0, 0, 0, 0 )
                !                 !--- tau_io/(v_oce - v_ice)
@@ -716,9 +713,8 @@ CONTAINS
                      &            )   * zmsk00y(ji,jj)
                ENDIF
             END_2D
-            IF( nn_hls == 1 ) THEN   ;   CALL lbc_lnk( 'icedyn_rhg_eap', v_ice, 'V', -1.0_wp )
-            ELSE                     ;   CALL lbc_lnk( 'icedyn_rhg_eap', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp )
-            ENDIF
+            !
+            CALL lbc_lnk( 'icedyn_rhg_eap', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp )
             !
          ENDIF
 #if defined key_agrif
diff --git a/src/ICE/icedyn_rhg_evp.F90 b/src/ICE/icedyn_rhg_evp.F90
index 46898cf6..200e2b2e 100644
--- a/src/ICE/icedyn_rhg_evp.F90
+++ b/src/ICE/icedyn_rhg_evp.F90
@@ -557,7 +557,6 @@ CONTAINS
                !
             END_2D
             !
-            IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp )
             !
             DO_2D( 0, 0, 0, 0 )
                !                 !--- tau_io/(u_oce - u_ice)
@@ -606,9 +605,7 @@ CONTAINS
                !
             END_2D
             !
-            IF( nn_hls == 1 ) THEN   ;   CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp )
-            ELSE                     ;   CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp )
-            ENDIF
+            CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp )
             !
          ELSE ! odd iterations
             !
@@ -659,7 +656,6 @@ CONTAINS
                !
             END_2D
             !
-            IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp )
             !
             DO_2D( 0, 0, 0, 0 )
                !                 !--- tau_io/(v_oce - v_ice)
@@ -708,9 +704,7 @@ CONTAINS
                !
             END_2D
             !
-            IF( nn_hls == 1 ) THEN   ;   CALL lbc_lnk( 'icedyn_rhg_evp', v_ice, 'V', -1.0_wp )
-            ELSE                     ;   CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp )
-            ENDIF
+            CALL lbc_lnk( 'icedyn_rhg_evp', u_ice, 'U', -1.0_wp, v_ice, 'V', -1.0_wp )
             !
          ENDIF
          !
diff --git a/src/ICE/icedyn_rhg_vp.F90 b/src/ICE/icedyn_rhg_vp.F90
index 53073a42..3486e77c 100644
--- a/src/ICE/icedyn_rhg_vp.F90
+++ b/src/ICE/icedyn_rhg_vp.F90
@@ -1623,8 +1623,6 @@ CONTAINS
             
          END_2D
          
-         IF( nn_hls == 1 )   CALL lbc_lnk( 'icedyn_rhg_cvg_vp', zu_res,  'U',  1., zv_res , 'V',  1. )
-
          DO_2D( 0, 0, 0, 0 ) !clem check bounds
         
                pvel_res(ji,jj) = 0.25_wp * ( ( zu_res(ji-1,jj) + zu_res(ji,jj) ) + ( zv_res(ji,jj-1) + zv_res(ji,jj) ) )
diff --git a/src/ICE/iceupdate.F90 b/src/ICE/iceupdate.F90
index 3e6a29c0..397c7f4a 100644
--- a/src/ICE/iceupdate.F90
+++ b/src/ICE/iceupdate.F90
@@ -372,7 +372,6 @@ CONTAINS
             !
             tmod_io(ji,jj) = zrhoco * SQRT( zmodt )
          END_2D
-         IF( nn_hls == 1 )   CALL lbc_lnk( 'iceupdate', tmod_io, 'T', 1._wp )
          !
          DO_2D( 0, 0, 0, 0 )                                !* save the air-ocean stresses at ice time-step
             !                                               ! 2*(U_ice-U_oce) at T-point
diff --git a/src/OCE/BDY/bdydyn2d.F90 b/src/OCE/BDY/bdydyn2d.F90
index f3971aea..a40d2897 100644
--- a/src/OCE/BDY/bdydyn2d.F90
+++ b/src/OCE/BDY/bdydyn2d.F90
@@ -80,11 +80,7 @@ CONTAINS
             END SELECT
          ENDDO
          !
-         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
-         IF( nn_hls == 1 ) THEN
-            llsend2(:) = .false.   ;   llrecv2(:) = .false.
-            llsend3(:) = .false.   ;   llrecv3(:) = .false.
-         END IF
+         IF( ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
          DO ib_bdy=1, nb_bdy
             SELECT CASE( cn_dyn2d(ib_bdy) )
             CASE('flather')
@@ -321,7 +317,6 @@ CONTAINS
       !!----------------------------------------------------------------------
       llsend1(:) = .false.   ;   llrecv1(:) = .false.
       DO ir = 1, 0, -1   ! treat rim 1 before rim 0
-         IF( nn_hls == 1 ) THEN   ;   llsend1(:) = .false.   ;   llrecv1(:) = .false.   ;   END IF
          IF( ir == 0 ) THEN   ;   llrim0 = .TRUE.
          ELSE                 ;   llrim0 = .FALSE.
          END IF
@@ -330,7 +325,7 @@ CONTAINS
             llsend1(:) = llsend1(:) .OR. lsend_bdyint(ib_bdy,1,:,ir)   ! possibly every direction, T points
             llrecv1(:) = llrecv1(:) .OR. lrecv_bdyint(ib_bdy,1,:,ir)   ! possibly every direction, T points
          END DO
-         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
+         IF( ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
          IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN   ! if need to send/recv in at least one direction
             CALL lbc_lnk( 'bdydyn2d', zssh(:,:,1), 'T',  1.0_wp, kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 )
          END IF
diff --git a/src/OCE/BDY/bdydyn3d.F90 b/src/OCE/BDY/bdydyn3d.F90
index 8b4bd77d..5011da6e 100644
--- a/src/OCE/BDY/bdydyn3d.F90
+++ b/src/OCE/BDY/bdydyn3d.F90
@@ -73,11 +73,7 @@ CONTAINS
             END SELECT
          END DO
          !
-         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
-         IF( nn_hls == 1 ) THEN
-            llsend2(:) = .false.   ;   llrecv2(:) = .false.
-            llsend3(:) = .false.   ;   llrecv3(:) = .false.
-         END IF
+         IF( ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
          DO ib_bdy=1, nb_bdy
             SELECT CASE( cn_dyn3d(ib_bdy) )
             CASE('orlanski', 'orlanski_npo')
diff --git a/src/OCE/BDY/bdyice.F90 b/src/OCE/BDY/bdyice.F90
index 409e0cad..c5357c3b 100644
--- a/src/OCE/BDY/bdyice.F90
+++ b/src/OCE/BDY/bdyice.F90
@@ -81,8 +81,7 @@ CONTAINS
          END DO
          !
          ! Update bdy points        
-         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
-         IF( nn_hls == 1 ) THEN   ;   llsend1(:) = .false.   ;   llrecv1(:) = .false.   ;   END IF
+         IF( ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
          DO jbdy = 1, nb_bdy
             IF( cn_ice(jbdy) == 'frs' ) THEN
                llsend1(:) = llsend1(:) .OR. lsend_bdyint(jbdy,1,:,ir)   ! possibly every direction, T points
@@ -431,8 +430,7 @@ CONTAINS
          !
          SELECT CASE ( cd_type )        
          CASE ( 'U' ) 
-         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
-         IF( nn_hls == 1 ) THEN   ;   llsend2(:) = .false.   ;   llrecv2(:) = .false.   ;   END IF
+         IF( ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
             DO jbdy = 1, nb_bdy
                IF( cn_ice(jbdy) == 'frs' .AND. nn_ice_dta(jbdy) /= 0 ) THEN
                   llsend2(  :  ) = llsend2(  :  ) .OR. lsend_bdyint(jbdy,2,  :  ,ir)   ! possibly every direction, U points
@@ -447,8 +445,7 @@ CONTAINS
                CALL lbc_lnk( 'bdyice', u_ice, 'U', -1.0_wp, kfillmode=jpfillnothing ,lsend=llsend2, lrecv=llrecv2 )
             END IF
          CASE ( 'V' )
-         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
-         IF( nn_hls == 1 ) THEN   ;   llsend3(:) = .false.   ;   llrecv3(:) = .false.   ;   END IF
+         IF( ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
             DO jbdy = 1, nb_bdy
                IF( cn_ice(jbdy) == 'frs' .AND. nn_ice_dta(jbdy) /= 0 ) THEN
                   llsend3(  :  ) = llsend3(  :  ) .OR. lsend_bdyint(jbdy,3,  :  ,ir)   ! possibly every direction, V points
diff --git a/src/OCE/BDY/bdytra.F90 b/src/OCE/BDY/bdytra.F90
index 333fdf7f..db4cfcf2 100644
--- a/src/OCE/BDY/bdytra.F90
+++ b/src/OCE/BDY/bdytra.F90
@@ -87,8 +87,7 @@ CONTAINS
             END DO
          END DO
          !
-         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
-         IF( nn_hls == 1 ) THEN   ;   llsend1(:) = .false.   ;   llrecv1(:) = .false.   ;   ENDIF
+         IF( ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
          DO ib_bdy=1, nb_bdy
             SELECT CASE( cn_tra(ib_bdy) )
             CASE('neumann','runoff')
diff --git a/src/OCE/DOM/domqco.F90 b/src/OCE/DOM/domqco.F90
index 678fd864..f5a27e9e 100644
--- a/src/OCE/DOM/domqco.F90
+++ b/src/OCE/DOM/domqco.F90
@@ -132,9 +132,9 @@ CONTAINS
       CALL dom_qco_r3c( ssh(:,:,Kmm), r3t(:,:,Kmm), r3u(:,:,Kmm), r3v(:,:,Kmm), r3f(:,:) )
 #endif
       ! dom_qco_r3c defines over [nn_hls, nn_hls-1, nn_hls, nn_hls-1]
-      IF( nn_hls == 2 ) CALL lbc_lnk( 'dom_qco_zgr', r3u(:,:,Kbb), 'U', 1._wp, r3v(:,:,Kbb), 'V', 1._wp, &
-         &                                           r3u(:,:,Kmm), 'U', 1._wp, r3v(:,:,Kmm), 'V', 1._wp, r3f(:,:), 'F', 1._wp )
-      !                                                                                                ! r3f is needed for agrif
+      CALL lbc_lnk( 'dom_qco_zgr', r3u(:,:,Kbb), 'U', 1._wp, r3v(:,:,Kbb), 'V', 1._wp, &
+         &                         r3u(:,:,Kmm), 'U', 1._wp, r3v(:,:,Kmm), 'V', 1._wp, r3f(:,:), 'F', 1._wp )
+      !                                                                              ! r3f is needed for agrif
    END SUBROUTINE dom_qco_zgr
 
 
@@ -170,11 +170,7 @@ CONTAINS
             &                    + e1e2t(ji,jj+1) * pssh(ji,jj+1)  ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj)
       END_2D        
       !
-      IF( .NOT.PRESENT( pr3f ) ) THEN              !- lbc on ratio at u-, v-points only
-         IF (nn_hls==1) CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp )
-         !
-         !
-      ELSE                                   !==  ratio at f-point  ==!
+      IF( PRESENT( pr3f ) ) THEN             !==  ratio at f-point  ==!
          !
          DO_2D_OVR( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )
             ! round brackets added to fix the order of floating point operations
@@ -185,8 +181,6 @@ CONTAINS
                &                         + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1)  )   & ! add () for NP reproducibility
                &                    ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj)
          END_2D
-         !                                                 ! lbc on ratio at u-,v-,f-points
-         IF (nn_hls==1) CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp )
          !
       ENDIF
       !
diff --git a/src/OCE/DOM/domtile.F90 b/src/OCE/DOM/domtile.F90
index dd391b70..5b493ca9 100644
--- a/src/OCE/DOM/domtile.F90
+++ b/src/OCE/DOM/domtile.F90
@@ -50,8 +50,6 @@ CONTAINS
       INTEGER ::   jt                                     ! dummy loop argument
       INTEGER ::   iitile, ijtile                         ! Local integers
       !!----------------------------------------------------------------------
-      IF( ln_tile .AND. nn_hls /= 2 ) CALL ctl_stop('dom_tile_init: Tiling is only supported for nn_hls = 2')
-
       ntile = 0                     ! Initialise to full domain
       nijtile = 1
       ntsi = Nis0
diff --git a/src/OCE/DYN/dynatf_qco.F90 b/src/OCE/DYN/dynatf_qco.F90
index f8a64ee9..c3a5899e 100644
--- a/src/OCE/DYN/dynatf_qco.F90
+++ b/src/OCE/DYN/dynatf_qco.F90
@@ -188,7 +188,7 @@ CONTAINS
       ENDIF ! .NOT. l_1st_euler
       !
       ! This is needed for dyn_ldf_blp to be restartable
-      IF( nn_hls == 2 ) CALL lbc_lnk( 'dynatfqco', puu(:,:,:,Kmm), 'U', -1.0_wp, pvv(:,:,:,Kmm), 'V', -1.0_wp )
+      CALL lbc_lnk( 'dynatfqco', puu(:,:,:,Kmm), 'U', -1.0_wp, pvv(:,:,:,Kmm), 'V', -1.0_wp )
 
       ! Set "now" and "before" barotropic velocities for next time step:
       ! JC: Would be more clever to swap variables than to make a full vertical
diff --git a/src/OCE/DYN/dynhpg.F90 b/src/OCE/DYN/dynhpg.F90
index ffc642b7..e66ab1f2 100644
--- a/src/OCE/DYN/dynhpg.F90
+++ b/src/OCE/DYN/dynhpg.F90
@@ -41,7 +41,6 @@ MODULE dynhpg
    !
    USE in_out_manager  ! I/O manager
    USE prtctl          ! Print control
-   USE lbclnk          ! lateral boundary condition 
    USE lib_mpp         ! MPP library
    USE eosbn2          ! compute density
    USE timing          ! Timing
@@ -715,8 +714,6 @@ CONTAINS
          zdzy  (ji,jj,jk) = gdept_z0(ji  ,jj  ,jk,Kmm) - gdept_z0(ji  ,jj+1,jk,Kmm)
       END_3D
 
-      IF( nn_hls == 1 ) CALL lbc_lnk( 'dynhpg', zdrhox, 'U', -1._wp, zdzx, 'U', -1._wp, zdrhoy, 'V', -1._wp, zdzy, 'V', -1._wp )
-
       !-------------------------------------------------------------------------
       ! 6. compute harmonic averages using eq. 5.18
       !-------------------------------------------------------------------------
diff --git a/src/OCE/DYN/dynldf_iso.F90 b/src/OCE/DYN/dynldf_iso.F90
index 9c8d84f1..39701682 100644
--- a/src/OCE/DYN/dynldf_iso.F90
+++ b/src/OCE/DYN/dynldf_iso.F90
@@ -144,8 +144,6 @@ CONTAINS
             wslpi(ji,jj,jk) = - ( gdepw(ji+1,jj,jk,Kbb) - gdepw(ji-1,jj,jk,Kbb) ) * r1_e1t(ji,jj) * tmask(ji,jj,jk) * 0.5
             wslpj(ji,jj,jk) = - ( gdepw(ji,jj+1,jk,Kbb) - gdepw(ji,jj-1,jk,Kbb) ) * r1_e2t(ji,jj) * tmask(ji,jj,jk) * 0.5
          END_3D
-         ! Lateral boundary conditions on the slopes
-         IF (nn_hls == 1) CALL lbc_lnk( 'dynldf_iso', uslp , 'U', -1.0_wp, vslp , 'V', -1.0_wp, wslpi, 'W', -1.0_wp, wslpj, 'W', -1.0_wp )
          !
       ENDIF
          
diff --git a/src/OCE/DYN/sshwzv.F90 b/src/OCE/DYN/sshwzv.F90
index f4c74fb5..2517dd15 100644
--- a/src/OCE/DYN/sshwzv.F90
+++ b/src/OCE/DYN/sshwzv.F90
@@ -121,7 +121,7 @@ CONTAINS
 #endif
       END_2D
       ! pssh must be defined everywhere (true for dyn_spg_ts, not for dyn_spg_exp)
-      IF ( .NOT. ln_dynspg_ts .AND. nn_hls == 2 ) CALL lbc_lnk( 'sshwzv', pssh(:,:,Kaa), 'T', 1.0_wp )
+      IF ( .NOT. ln_dynspg_ts ) CALL lbc_lnk( 'sshwzv', pssh(:,:,Kaa), 'T', 1.0_wp )
       !
 #if defined key_agrif
       Kbb_a = Kbb   ;   Kmm_a = Kmm   ;   Krhs_a = Kaa
@@ -130,7 +130,6 @@ CONTAINS
       !
       IF ( .NOT.ln_dynspg_ts ) THEN
          IF( ln_bdy ) THEN
-            IF (nn_hls==1) CALL lbc_lnk( 'sshwzv', pssh(:,:,Kaa), 'T', 1.0_wp )    ! Not sure that's necessary
             CALL bdy_ssh( pssh(:,:,Kaa) )              ! Duplicate sea level across open boundaries
          ENDIF
       ENDIF
diff --git a/src/OCE/LBC/mppini.F90 b/src/OCE/LBC/mppini.F90
index 3e335b8f..5c25eca9 100644
--- a/src/OCE/LBC/mppini.F90
+++ b/src/OCE/LBC/mppini.F90
@@ -1406,7 +1406,7 @@ ENDIF
                IF( l_Iperio ) THEN   ! in case the ew-periodicity was done before calling the NP folding
                   lnfd_same(mi0(nn_hls,nn_hls):mi1(nn_hls  ,nn_hls),1) = .FALSE.
                   lnfd_same(mi0(     1,nn_hls):mi1(nn_hls  ,nn_hls),3) = .FALSE.
-                  IF( nn_hls > 1 ) lnfd_same(mi0(     1,nn_hls):mi1(nn_hls-1,nn_hls),4) = .FALSE.
+                  lnfd_same(mi0(     1,nn_hls):mi1(nn_hls-1,nn_hls),4) = .FALSE.
                ENDIF
             ENDIF
             WHERE( lnfd_same )   nfd_jisnd(:,1,:) = HUGE(0)   ! make sure we dont use it
diff --git a/src/OCE/LDF/ldftra.F90 b/src/OCE/LDF/ldftra.F90
index 7304aabd..74c0c67c 100644
--- a/src/OCE/LDF/ldftra.F90
+++ b/src/OCE/LDF/ldftra.F90
@@ -680,7 +680,6 @@ CONTAINS
          zzaei = MIN( 1._wp, ABS( ff_t(ji,jj) * z1_f20 ) ) * zaeiw(ji,jj)     ! tropical decrease
          zaeiw(ji,jj) = MIN( zzaei , paei0 )                                  ! Max value = paei0
       END_2D
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp )   ! lateral boundary condition
       !
       DO_2D( 0, 0, 0, 0 )
          paeiu(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji+1,jj  ) ) * umask(ji,jj,1)
diff --git a/src/OCE/SBC/sbcmod.F90 b/src/OCE/SBC/sbcmod.F90
index cb1c832f..cc4b11f4 100644
--- a/src/OCE/SBC/sbcmod.F90
+++ b/src/OCE/SBC/sbcmod.F90
@@ -557,7 +557,6 @@ CONTAINS
          vtauV  (ji,jj) = 0.5_wp * ( vtau(ji,jj) + vtau(ji,jj+1) ) * &
             &                      ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1), tmask(ji,jj+1,1) )
       END_2D
-      IF( nn_hls == 1 )   CALL lbc_lnk( 'sbcmod', utauU, 'U', -1.0_wp, vtauV, 'V', -1.0_wp )
       !
       IF( kt == nit000 ) THEN                          !   set the forcing field at nit000 - 1    !
          !                                             ! ---------------------------------------- !
diff --git a/src/OCE/TRA/traadv_fct.F90 b/src/OCE/TRA/traadv_fct.F90
index 95b3255d..ce6121a6 100644
--- a/src/OCE/TRA/traadv_fct.F90
+++ b/src/OCE/TRA/traadv_fct.F90
@@ -254,7 +254,6 @@ CONTAINS
                ztu(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * umask(ji,jj,jk)
                ztv(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk)
             END_3D
-            IF (nn_hls==1) CALL lbc_lnk( 'traadv_fct', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp, ld4only= .TRUE. )   ! Lateral boundary cond. (unchanged sgn)
             !
             DO_3D( 0, 0, 0, 0, 1, jpkm1 )    ! Horizontal advective fluxes
                zC2t_u = pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm)   ! 2 x C2 interpolation of T at u- & v-points (x2)
@@ -266,7 +265,7 @@ CONTAINS
                zwx(ji,jj,jk) =  0.5_wp * pU(ji,jj,jk) * zC4t_u - zwx(ji,jj,jk)
                zwy(ji,jj,jk) =  0.5_wp * pV(ji,jj,jk) * zC4t_v - zwy(ji,jj,jk)
             END_3D
-            IF (nn_hls==2) CALL lbc_lnk( 'traadv_fct', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp )   ! Lateral boundary cond. (unchanged sgn)
+            CALL lbc_lnk( 'traadv_fct', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp )   ! Lateral boundary cond. (unchanged sgn)
             !
          END SELECT
          !
@@ -289,11 +288,7 @@ CONTAINS
             zwz(:,:,1) = 0._wp   ! only ocean surface as interior zwz values have been w-masked
          ENDIF
          !
-         IF (nn_hls==1) THEN
-            CALL lbc_lnk( 'traadv_fct', zwi, 'T', 1.0_wp, zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp, zwz, 'T', 1.0_wp )
-         ELSE
-            CALL lbc_lnk( 'traadv_fct', zwi, 'T', 1.0_wp)
-         END IF
+         CALL lbc_lnk( 'traadv_fct', zwi, 'T', 1.0_wp)
          !
          IF ( ll_zAimp ) THEN
             DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )    !* trend and after field with monotonic scheme
@@ -447,7 +442,6 @@ CONTAINS
             zbetdo(ji,jj,jk) = ( paft(ji,jj,jk) - zdo            ) / ( zneg + zrtrn ) * zbt
          END_2D
       END DO
-      IF (nn_hls==1) CALL lbc_lnk( 'traadv_fct', zbetup, 'T', 1.0_wp , zbetdo, 'T', 1.0_wp, ld4only= .TRUE. )   ! lateral boundary cond. (unchanged sign)
 
       ! 3. monotonic flux in the i & j direction (paa & pbb)
       ! ----------------------------------------
diff --git a/src/OCE/TRA/traadv_qck.F90 b/src/OCE/TRA/traadv_qck.F90
index a12d3994..3200d173 100644
--- a/src/OCE/TRA/traadv_qck.F90
+++ b/src/OCE/TRA/traadv_qck.F90
@@ -146,8 +146,6 @@ CONTAINS
             zfc(ji,jj,jk) = pt(ji-1,jj,jk,jn,Kbb)        ! Upstream   in the x-direction for the tracer
             zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb)        ! Downstream in the x-direction for the tracer
          END_3D
-         IF (nn_hls==1) CALL lbc_lnk( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, ld4only= .TRUE. )   ! Lateral boundary conditions
-
          !
          ! Horizontal advective fluxes
          ! ---------------------------
@@ -163,8 +161,6 @@ CONTAINS
             zfc(ji,jj,jk)  = zdir * pt(ji  ,jj,jk,jn,Kbb) + ( 1. - zdir ) * pt(ji+1,jj,jk,jn,Kbb)  ! FC in the x-direction for T
             zfd(ji,jj,jk)  = zdir * pt(ji+1,jj,jk,jn,Kbb) + ( 1. - zdir ) * pt(ji  ,jj,jk,jn,Kbb)  ! FD in the x-direction for T
          END_3D
-         !--- Lateral boundary conditions
-         IF (nn_hls==1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp,  zwx(:,:,:), 'T', 1.0_wp )
 
          !--- QUICKEST scheme
          CALL quickest( zfu, zfd, zfc, zwx )
@@ -173,8 +169,6 @@ CONTAINS
          DO_3D( nn_hls-1, nn_hls-1, 0, 0, 1, jpkm1 )
             zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2.
          END_3D
-         IF (nn_hls==1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp, ld4only= .TRUE. )      ! Lateral boundary conditions
-
          !
          ! Tracer flux on the x-direction
          DO_3D( 1, 0, 0, 0, 1, jpkm1 )
@@ -232,15 +226,6 @@ CONTAINS
             ! Downstream in the x-direction for the tracer
             zfd(ji,jj,jk) = pt(ji,jj+1,jk,jn,Kbb)
          END_3D
-
-         IF (nn_hls==1) CALL lbc_lnk( 'traadv_qck', zfc(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, ld4only= .TRUE. )   ! Lateral boundary conditions
-
-         ! Correct zfd on northfold after lbc_lnk; see #2640
-         IF( nn_hls == 1 .AND. l_IdoNFold .AND. ntej == Nje0 ) THEN
-            DO jk = 1, jpkm1
-               WHERE( tmask_i(ntsi:ntei,ntej:jpj) == 0._wp ) zfd(ntsi:ntei,ntej:jpj,jk) = zfc(ntsi:ntei,ntej:jpj,jk)
-            END DO
-         ENDIF
          !
          ! Horizontal advective fluxes
          ! ---------------------------
@@ -258,9 +243,6 @@ CONTAINS
             zfd(ji,jj,jk)  = zdir * pt(ji,jj+1,jk,jn,Kbb) + ( 1. - zdir ) * pt(ji,jj  ,jk,jn,Kbb)  ! FD in the x-direction for T
          END_3D
 
-         !--- Lateral boundary conditions
-         IF (nn_hls==1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp , zfd(:,:,:), 'T', 1.0_wp, zfc(:,:,:), 'T', 1.0_wp, zwy(:,:,:), 'T', 1.0_wp )
-
          !--- QUICKEST scheme
          CALL quickest( zfu, zfd, zfc, zwy )
          !
@@ -268,7 +250,6 @@ CONTAINS
          DO_3D( 0, 0, nn_hls-1, nn_hls-1, 1, jpkm1 )
             zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2.
          END_3D
-         IF (nn_hls==1) CALL lbc_lnk( 'traadv_qck', zfu(:,:,:), 'T', 1.0_wp, ld4only= .TRUE. )    !--- Lateral boundary conditions
          !
          ! Tracer flux on the x-direction
          DO_3D( 0, 0, 1, 0, 1, jpkm1 )
diff --git a/src/OCE/TRA/traadv_ubs.F90 b/src/OCE/TRA/traadv_ubs.F90
index 3c83aa9c..02d4d064 100644
--- a/src/OCE/TRA/traadv_ubs.F90
+++ b/src/OCE/TRA/traadv_ubs.F90
@@ -138,7 +138,6 @@ CONTAINS
             END_2D
             !
          END DO
-         IF (nn_hls==1) CALL lbc_lnk( 'traadv_ubs', zltu, 'T', 1.0_wp, zltv, 'T', 1.0_wp, ld4only= .TRUE. )   ! Lateral boundary cond. (unchanged sgn)
          !
          DO_3D( 1, 0, 1, 0, 1, jpkm1 )   !==  Horizontal advective fluxes  ==!     (UBS)
             zfp_ui = pU(ji,jj,jk) + ABS( pU(ji,jj,jk) )        ! upstream transport (x2)
diff --git a/src/OCE/TRA/traldf_lev.F90 b/src/OCE/TRA/traldf_lev.F90
index 3d554e33..3bbfa019 100644
--- a/src/OCE/TRA/traldf_lev.F90
+++ b/src/OCE/TRA/traldf_lev.F90
@@ -144,7 +144,6 @@ CONTAINS
       !!----------------------------------------------------------------------
       !!                 ***  ROUTINE tra_ldf_blp  ***
       !!
-      !!                          nn_hls >= 2
       !!
       !!           NO use of zps_hde ==>>  New HPG calculation
       !!           **        *******
diff --git a/src/OCE/TRA/traldf_triad.F90 b/src/OCE/TRA/traldf_triad.F90
index 09a1e346..df6a9194 100644
--- a/src/OCE/TRA/traldf_triad.F90
+++ b/src/OCE/TRA/traldf_triad.F90
@@ -518,8 +518,6 @@ CONTAINS
       !                          !==  1st laplacian applied to pt (output in zlap)  ==!
       CALL traldf_triad_lap( kt, Kmm, kit000, cdtype, pahu, pahv, pt, pt, zlap, kjpt, 1 )
       !
-      IF (nn_hls==1) CALL lbc_lnk( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp )     ! Lateral boundary conditions (unchanged sign)
-      !
       !                          !==  2nd laplacian applied to zlap (output in pt_rhs)  ==!
       CALL traldf_triad_lap( kt, Kmm, kit000, cdtype, pahu, pahv, zlap, pt    , pt_rhs, kjpt, 2 )
       !
diff --git a/src/OCE/ZDF/zdfosm.F90 b/src/OCE/ZDF/zdfosm.F90
index cc76f85f..dc4436d1 100644
--- a/src/OCE/ZDF/zdfosm.F90
+++ b/src/OCE/ZDF/zdfosm.F90
@@ -997,8 +997,6 @@ CONTAINS
       !    v grids
       IF ( .NOT. l_istiled .OR. ntile == nijtile ) THEN   ! Finalise ghamu, ghamv, hbl, and hmle only after full domain has been
          !                                                !    processed
-         IF ( nn_hls == 1 ) CALL lbc_lnk( 'zdfosm', ghamu, 'W', 1.0_wp,   &
-            &                                       ghamv, 'W', 1.0_wp )
          DO jk = 2, jpkm1
             DO jj = Njs0, Nje0
                DO ji = Nis0, Nie0
diff --git a/src/OCE/ZDF/zdfphy.F90 b/src/OCE/ZDF/zdfphy.F90
index aa83add7..39d2bfa6 100644
--- a/src/OCE/ZDF/zdfphy.F90
+++ b/src/OCE/ZDF/zdfphy.F90
@@ -355,10 +355,6 @@ CONTAINS
       IF( .NOT. l_istiled .OR. ntile == nijtile ) THEN
          CALL lbc_lnk( 'zdfphy', avm, 'W', 1.0_wp ) ! lbc_lnk for avm_k is in stp
 
-         ! TEMP: [zdfosm_avt_diag] Needed only to preserve diagnostics along the eastern half of the north fold (T-pivot)
-         IF( nn_hls == 1 .AND. ln_zdfosm .AND. ln_osm_mle ) &
-            & CALL lbc_lnk( 'zdfphy', avt, 'W', 1.0_wp, avs, 'W', 1.0_wp )
-
          IF( l_zdfdrg ) THEN     ! drag  have been updated (non-linear cases)
             IF( ln_isfcav ) THEN   ;  CALL lbc_lnk( 'zdfphy', rCdU_top, 'T', 1.0_wp , rCdU_bot, 'T', 1.0_wp )   ! top & bot drag
             ELSE                   ;  CALL lbc_lnk( 'zdfphy', rCdU_bot, 'T', 1.0_wp )                           ! bottom drag only
diff --git a/src/OCE/lib_fortran.F90 b/src/OCE/lib_fortran.F90
index ded29e25..e7538e7c 100644
--- a/src/OCE/lib_fortran.F90
+++ b/src/OCE/lib_fortran.F90
@@ -172,28 +172,6 @@ CONTAINS
          ENDIF
       END_2D
       CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp )
-      ! no need for 2nd exchange when nn_hls > 1
-      IF( nn_hls == 1 ) THEN
-         IF( mpiRnei(nn_hls,jpwe) > -1 ) THEN          ! 1st column was changed during the previous call to lbc_lnk
-            IF( MOD(mig(    1,nn_hls), 3) == 1 )   &   ! 1st box start at i=1 -> column 1 to 3 correctly computed locally
-               p2d(    1,:) = p2d(    2,:)             ! previous lbc_lnk corrupted column 1 -> put it back using column 2 
-            IF( MOD(mig(    1,nn_hls), 3) == 2 )   &   ! 1st box start at i=3 -> column 1 and 2 correctly computed on w-neighbourh
-               p2d(    2,:) = p2d(    1,:)             !  previous lbc_lnk fix column 1 -> copy it to column 2 
-         ENDIF
-         IF( mpiRnei(nn_hls,jpea) > -1 ) THEN
-            IF( MOD(mig(jpi-2,nn_hls), 3) == 1 )   p2d(  jpi,:) = p2d(jpi-1,:)
-            IF( MOD(mig(jpi-2,nn_hls), 3) == 0 )   p2d(jpi-1,:) = p2d(  jpi,:)
-         ENDIF
-         IF( mpiRnei(nn_hls,jpso) > -1 ) THEN
-            IF( MOD(mjg(    1,nn_hls), 3) == 1 )   p2d(:,    1) = p2d(:,    2)
-            IF( MOD(mjg(    1,nn_hls), 3) == 2 )   p2d(:,    2) = p2d(:,    1)
-         ENDIF
-         IF( mpiRnei(nn_hls,jpno) > -1 ) THEN
-            IF( MOD(mjg(jpj-2,nn_hls), 3) == 1 )   p2d(:,  jpj) = p2d(:,jpj-1)
-            IF( MOD(mjg(jpj-2,nn_hls), 3) == 0 )   p2d(:,jpj-1) = p2d(:,  jpj)
-         ENDIF
-         CALL lbc_lnk( 'lib_fortran', p2d, 'T', 1.0_wp )
-      ENDIF
 
    END SUBROUTINE sum3x3_2d
 
@@ -229,28 +207,6 @@ CONTAINS
          END_2D
       END DO
       CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp )
-      ! no need for 2nd exchange when nn_hls > 1
-      IF( nn_hls == 1 ) THEN
-         IF( mpiRnei(nn_hls,jpwe) > -1 ) THEN           ! 1st column was changed during the previous call to lbc_lnk
-            IF( MOD(mig(    1,nn_hls), 3) == 1 )   &    ! 1st box start at i=1 -> column 1 to 3 correctly computed locally
-               p3d(    1,:,:) = p3d(    2,:,:)          ! previous lbc_lnk corrupted column 1 -> put it back using column 2 
-            IF( MOD(mig(    1,nn_hls), 3) == 2 )   &    ! 1st box start at i=3 -> column 1 and 2 correctly computed on w-neighbourh
-               p3d(    2,:,:) = p3d(    1,:,:)          !  previous lbc_lnk fix column 1 -> copy it to column 2 
-         ENDIF
-         IF( mpiRnei(nn_hls,jpea) > -1 ) THEN
-            IF( MOD(mig(jpi-2,nn_hls), 3) == 1 )   p3d(  jpi,:,:) = p3d(jpi-1,:,:)
-            IF( MOD(mig(jpi-2,nn_hls), 3) == 0 )   p3d(jpi-1,:,:) = p3d(  jpi,:,:)
-         ENDIF
-         IF( mpiRnei(nn_hls,jpso) > -1 ) THEN
-            IF( MOD(mjg(    1,nn_hls), 3) == 1 )   p3d(:,    1,:) = p3d(:,    2,:)
-            IF( MOD(mjg(    1,nn_hls), 3) == 2 )   p3d(:,    2,:) = p3d(:,    1,:)
-         ENDIF
-         IF( mpiRnei(nn_hls,jpno) > -1 ) THEN
-            IF( MOD(mjg(jpj-2,nn_hls), 3) == 1 )   p3d(:,  jpj,:) = p3d(:,jpj-1,:)
-            IF( MOD(mjg(jpj-2,nn_hls), 3) == 0 )   p3d(:,jpj-1,:) = p3d(:,  jpj,:)
-         ENDIF
-         CALL lbc_lnk( 'lib_fortran', p3d, 'T', 1.0_wp )
-      ENDIF
 
    END SUBROUTINE sum3x3_3d
 
diff --git a/src/OCE/stpmlf.F90 b/src/OCE/stpmlf.F90
index 04667fa6..6a49213c 100644
--- a/src/OCE/stpmlf.F90
+++ b/src/OCE/stpmlf.F90
@@ -545,7 +545,7 @@ CONTAINS
       IF( l_zdfsh2 ) CALL lbc_lnk( 'stp', avm_k, 'W', 1.0_wp )
 
       ! dom_qco_r3c defines over [nn_hls, nn_hls-1, nn_hls, nn_hls-1]
-      IF( nn_hls == 2 .AND. .NOT. lk_linssh ) THEN
+      IF( .NOT. lk_linssh ) THEN
          CALL lbc_lnk( 'finalize_lbc', r3u(:,:,Kaa), 'U', 1._wp, r3v(:,:,Kaa), 'V', 1._wp, &
             &                          r3u_f(:,:),   'U', 1._wp, r3v_f(:,:),   'V', 1._wp )
       ENDIF
diff --git a/src/OCE/stprk3_stg.F90 b/src/OCE/stprk3_stg.F90
index 63395d5c..d1c35aa9 100644
--- a/src/OCE/stprk3_stg.F90
+++ b/src/OCE/stprk3_stg.F90
@@ -450,7 +450,7 @@ CONTAINS
       CALL lbc_lnk( 'stp_RK3_stg', uu(:,:,:,       Kaa), 'U', -1., vv(:,:,:       ,Kaa), 'V', -1.   &
          &                       , ts(:,:,:,jp_tem,Kaa), 'T',  1., ts(:,:,:,jp_sal,Kaa), 'T',  1. )
       !
-      IF( nn_hls == 2 .AND. l_zdfsh2 ) CALL lbc_lnk( 'stp_RK3_stg', avm_k, 'W', 1.0_wp )   !  lbc_lnk needed for zdf_sh2 when using nn_hls = 2, moved here to allow tiling in zdf_phy
+      IF( l_zdfsh2 ) CALL lbc_lnk( 'stp_RK3_stg', avm_k, 'W', 1.0_wp )   !  lbc_lnk needed for zdf_sh2, moved here to allow tiling in zdf_phy
       !
       !                                              !* BDY open boundaries
       IF( ln_bdy )   THEN
diff --git a/src/SWE/nemogcm.F90 b/src/SWE/nemogcm.F90
index e943cc2f..531eab02 100644
--- a/src/SWE/nemogcm.F90
+++ b/src/SWE/nemogcm.F90
@@ -274,10 +274,6 @@ CONTAINS
       !                             !-----------------------------------------!
       CALL mpp_init
 
-      IF( nn_hls == 1 ) THEN
-         CALL ctl_stop( 'STOP', 'nemogcm : Loop fusion can be used only with extra-halo' )
-      ENDIF
-
       CALL halo_mng_init()
       ! Now we know the dimensions of the grid and numout has been set: we can allocate arrays
       CALL nemo_alloc()
diff --git a/src/SWE/stpmlf.F90 b/src/SWE/stpmlf.F90
index 4c49e55a..4c542fb1 100644
--- a/src/SWE/stpmlf.F90
+++ b/src/SWE/stpmlf.F90
@@ -196,9 +196,9 @@ CONTAINS
          ENDIF
       ENDIF
 
-      CALL lbc_lnk( 'stp_MLF', uu(:,:,:,Nnn), 'U', -1., vv(:,:,:,Nnn), 'V', -1.,   &   !* local domain boundaries
-         &                     uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1.    )     
-      IF (nn_hls==2) CALL lbc_lnk( 'stp_MLF', r3u(:,:,Naa), 'U', 1., r3v(:,:,Naa), 'V', 1.)
+      CALL lbc_lnk( 'stp_MLF', uu (:,:,:,Nnn), 'U', -1., vv (:,:,:,Nnn), 'V', -1., &   !* local domain boundaries
+         &                     uu (:,:,:,Naa), 'U', -1., vv (:,:,:,Naa), 'V', -1.  )     
+      CALL lbc_lnk( 'stp_MLF', r3u(:,:,  Naa), 'U',  1., r3v(:,:,  Naa), 'V',  1.  )
 
       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
       ! Set boundary conditions, time filter and swap time levels
diff --git a/src/SWE/stprk3.F90 b/src/SWE/stprk3.F90
index 2fded6ae..0aa6cd2f 100644
--- a/src/SWE/stprk3.F90
+++ b/src/SWE/stprk3.F90
@@ -170,8 +170,8 @@ CONTAINS
          END_3D
       ENDIF
       !
-      CALL lbc_lnk( 'stp_RK3', uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. )
-      IF (nn_hls==2) CALL lbc_lnk( 'stp_RK3', r3u(:,:,Naa), 'U', 1., r3v(:,:,Naa), 'V', 1.)
+      CALL lbc_lnk( 'stp_RK3', uu (:,:,:,Naa), 'U', -1., vv (:,:,:,Naa), 'V', -1. )
+      CALL lbc_lnk( 'stp_RK3', r3u(:,:,  Naa), 'U',  1., r3v(:,:,  Naa), 'V',  1. )
       !
       !                                 !==  Swap time levels  ==!
       Nrhs= Nnn
@@ -236,8 +236,8 @@ CONTAINS
          END_3D
       ENDIF
       !
-      CALL lbc_lnk( 'stp_RK3', uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. )
-      IF (nn_hls==2) CALL lbc_lnk( 'stp_RK3', r3u(:,:,Naa), 'U', 1., r3v(:,:,Naa), 'V', 1.)
+      CALL lbc_lnk( 'stp_RK3', uu (:,:,:,Naa), 'U', -1., vv (:,:,:,Naa), 'V', -1. )
+      CALL lbc_lnk( 'stp_RK3', r3u(:,:,  Naa), 'U',  1., r3v(:,:,  Naa), 'V',  1. )
       !
       !                                 !==  Swap time levels  ==!
       Nrhs= Nnn
@@ -300,8 +300,8 @@ CONTAINS
          END_3D
       ENDIF
       !
-      CALL lbc_lnk( 'stp_RK3', uu(:,:,:,Naa), 'U', -1., vv(:,:,:,Naa), 'V', -1. )
-      IF (nn_hls==2) CALL lbc_lnk( 'stp_RK3', r3u(:,:,Naa), 'U', 1., r3v(:,:,Naa), 'V', 1.)
+      CALL lbc_lnk( 'stp_RK3', uu (:,:,:,Naa), 'U', -1., vv (:,:,:,Naa), 'V', -1. )
+      CALL lbc_lnk( 'stp_RK3', r3u(:,:,  Naa), 'U',  1., r3v(:,:,  Naa), 'V',  1. )
       !
       !                                 !==  Swap time levels  ==!
       !
diff --git a/src/TOP/trcbdy.F90 b/src/TOP/trcbdy.F90
index 90b52848..062ad24f 100644
--- a/src/TOP/trcbdy.F90
+++ b/src/TOP/trcbdy.F90
@@ -89,8 +89,7 @@ CONTAINS
             !
          END DO
          !
-         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
-         IF( nn_hls == 1 ) THEN   ;   llsend1(:) = .false.   ;   llrecv1(:) = .false.   ;   ENDIF
+         IF( ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0
          DO ib_bdy=1, nb_bdy
             SELECT CASE( cn_tra(ib_bdy) )
             CASE('neumann')
-- 
GitLab