New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 14636 – NEMO

Changeset 14636


Ignore:
Timestamp:
2021-03-25T12:51:33+01:00 (3 years ago)
Author:
hadcv
Message:

#2600: Merge in dev_r14393_HPC-03_Mele_Comm_Cleanup [14538:14609]

Location:
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traatf_qco.F90

    r14574 r14636  
    146146         ENDIF 
    147147         ! 
    148          CALL lbc_lnk( 'traatfqco', pts(:,:,:,jp_tem,Kmm) , 'T', 1._wp, pts(:,:,:,jp_sal,Kmm) , 'T', 1._wp ) 
     148         ! [ comm_cleanup ]   
     149         IF (nn_hls.eq.1) CALL lbc_lnk( 'traatfqco', pts(:,:,:,jp_tem,Kmm) , 'T', 1._wp, pts(:,:,:,jp_sal,Kmm) , 'T', 1._wp ) 
    149150         ! 
    150151      ENDIF 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/trabbl.F90

    r14607 r14636  
    139139         IF( .NOT. l_istiled .OR. ntile == nijtile ) THEN                       ! Do only on the last tile 
    140140            ! lateral boundary conditions ; just need for outputs 
    141             CALL lbc_lnk( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp ) 
     141            ! [ comm_cleanup ] ! no need lbc_lnk for outputs 
     142            ! CALL lbc_lnk( 'trabbl', utr_bbl, 'U', 1.0_wp , vtr_bbl, 'V', 1.0_wp ) 
    142143         ENDIF 
    143144         CALL iom_put( "uoce_bbl", utr_bbl )  ! bbl i-transport 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_lap_blp.F90

    r14632 r14636  
    240240      IF (nn_hls.EQ.1) CALL lbc_lnk( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp )     ! Lateral boundary conditions (unchanged sign) 
    241241      !                                               ! Partial top/bottom cell: GRADh( zlap ) 
    242       IF( ln_isfcav .AND. ln_zps ) THEN   ;   CALL zps_hde_isf( kt, Kmm, kjpt, zlap, zglu, zglv, zgui, zgvi )  ! both top & bottom 
    243       ELSEIF(             ln_zps ) THEN   ;   CALL zps_hde    ( kt, Kmm, kjpt, zlap, zglu, zglv )              ! only bottom 
     242      IF( ln_zps ) THEN 
     243         ! [comm_cleanup] ! halo > 2 needed to delete this comm 
     244         IF (nn_hls.EQ.2) CALL lbc_lnk( 'traldf_lap_blp', zlap(:,:,:,:) , 'T', 1.0_wp )     ! Lateral boundary conditions (unchanged sign) 
     245         IF( ln_isfcav ) THEN   ;   CALL zps_hde_isf( kt, Kmm, kjpt, zlap, zglu, zglv, zgui, zgvi )  ! both top & bottom 
     246         ELSE   ;   CALL zps_hde    ( kt, Kmm, kjpt, zlap, zglu, zglv )              ! only bottom 
     247         ENDIF 
    244248      ENDIF 
    245249      ! 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/zpshde.F90

    r14631 r14636  
    4747      INTEGER                     , INTENT(in   )           ::  Kmm         ! ocean time level index 
    4848      INTEGER                     , INTENT(in   )           ::  kjpt        ! number of tracers 
    49       REAL(wp), DIMENSION(:,:,:,:), INTENT(inout)           ::  pta         ! 4D tracers fields 
     49      REAL(wp), DIMENSION(:,:,:,:), INTENT(in   )           ::  pta         ! 4D tracers fields 
    5050      REAL(wp), DIMENSION(:,:,:)  , INTENT(  out)           ::  pgtu, pgtv  ! hor. grad. of ptra at u- & v-pts 
    51       REAL(wp), DIMENSION(:,:,:)  , INTENT(inout), OPTIONAL ::  prd         ! 3D density anomaly fields 
     51      REAL(wp), DIMENSION(:,:,:)  , INTENT(in   ), OPTIONAL ::  prd         ! 3D density anomaly fields 
    5252      REAL(wp), DIMENSION(:,:)    , INTENT(  out), OPTIONAL ::  pgru, pgrv  ! hor. grad of prd at u- & v-pts (bottom) 
    5353      ! 
     
    111111      INTEGER                                , INTENT(in   )           ::  kjpt        ! number of tracers 
    112112      INTEGER                                , INTENT(in   )           ::  ktta, ktgt, ktrd, ktgr 
    113       REAL(wp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(inout)           ::  pta         ! 4D tracers fields 
     113      REAL(wp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(in   )           ::  pta         ! 4D tracers fields 
    114114      REAL(wp), DIMENSION(A2D_T(ktgt)    ,KJPT), INTENT(  out)           ::  pgtu, pgtv  ! hor. grad. of ptra at u- & v-pts 
    115       REAL(wp), DIMENSION(A2D_T(ktrd),JPK     ), INTENT(inout), OPTIONAL ::  prd         ! 3D density anomaly fields 
     115      REAL(wp), DIMENSION(A2D_T(ktrd),JPK     ), INTENT(in   ), OPTIONAL ::  prd         ! 3D density anomaly fields 
    116116      REAL(wp), DIMENSION(A2D_T(ktgr)         ), INTENT(  out), OPTIONAL ::  pgru, pgrv  ! hor. grad of prd at u- & v-pts (bottom) 
    117117      ! 
     
    218218      INTEGER                     , INTENT(in   )           ::  Kmm          ! ocean time level index 
    219219      INTEGER                     , INTENT(in   )           ::  kjpt         ! number of tracers 
    220       REAL(wp), DIMENSION(:,:,:,:), INTENT(inout)           ::  pta          ! 4D tracers fields 
     220      REAL(wp), DIMENSION(:,:,:,:), INTENT(in   )           ::  pta          ! 4D tracers fields 
    221221      REAL(wp), DIMENSION(:,:,:)  , INTENT(  out)           ::  pgtu, pgtv   ! hor. grad. of ptra at u- & v-pts 
    222222      REAL(wp), DIMENSION(:,:,:)  , INTENT(  out)           ::  pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 
    223       REAL(wp), DIMENSION(:,:,:)  , INTENT(inout), OPTIONAL ::  prd          ! 3D density anomaly fields 
     223      REAL(wp), DIMENSION(:,:,:)  , INTENT(in   ), OPTIONAL ::  prd          ! 3D density anomaly fields 
    224224      REAL(wp), DIMENSION(:,:)    , INTENT(  out), OPTIONAL ::  pgru, pgrv   ! hor. grad of prd at u- & v-pts (bottom) 
    225225      REAL(wp), DIMENSION(:,:)    , INTENT(  out), OPTIONAL ::  pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) 
     
    288288      INTEGER                                , INTENT(in   )           ::  kjpt         ! number of tracers 
    289289      INTEGER                                , INTENT(in   )           ::  ktta, ktgt, ktgti, ktrd, ktgr, ktgri 
    290       REAL(wp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(inout)           ::  pta          ! 4D tracers fields 
     290      REAL(wp), DIMENSION(A2D_T(ktta),JPK,KJPT), INTENT(in   )           ::  pta          ! 4D tracers fields 
    291291      REAL(wp), DIMENSION(A2D_T(ktgt)    ,KJPT), INTENT(  out)           ::  pgtu, pgtv   ! hor. grad. of ptra at u- & v-pts 
    292292      REAL(wp), DIMENSION(A2D_T(ktgti)   ,KJPT), INTENT(  out)           ::  pgtui, pgtvi ! hor. grad. of stra at u- & v-pts (ISF) 
    293       REAL(wp), DIMENSION(A2D_T(ktrd),JPK     ), INTENT(inout), OPTIONAL ::  prd          ! 3D density anomaly fields 
     293      REAL(wp), DIMENSION(A2D_T(ktrd),JPK     ), INTENT(in   ), OPTIONAL ::  prd          ! 3D density anomaly fields 
    294294      REAL(wp), DIMENSION(A2D_T(ktgr)         ), INTENT(  out), OPTIONAL ::  pgru, pgrv   ! hor. grad of prd at u- & v-pts (bottom) 
    295295      REAL(wp), DIMENSION(A2D_T(ktgri)        ), INTENT(  out), OPTIONAL ::  pgrui, pgrvi ! hor. grad of prd at u- & v-pts (top) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfddm.F90

    r14053 r14636  
    9595!!gm                            and many acces in memory 
    9696          
    97          DO_2D( 1, 1, 1, 1 )           !==  R=zrau = (alpha / beta) (dk[t] / dk[s])  ==! 
     97         ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 )           !==  R=zrau = (alpha / beta) (dk[t] / dk[s])  ==! 
     98         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )           !==  R=zrau = (alpha / beta) (dk[t] / dk[s])  ==! 
    9899            zrw =   ( gdepw(ji,jj,jk  ,Kmm) - gdept(ji,jj,jk,Kmm) )   & 
    99100!!gm please, use e3w at Kmm below  
     
    111112         END_2D 
    112113 
    113          DO_2D( 1, 1, 1, 1 )           !==  indicators  ==! 
     114         ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 )           !==  indicators  ==! 
     115         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )           !==  indicators  ==! 
    114116            ! stability indicator: msks=1 if rn2>0; 0 elsewhere 
    115117            IF( rn2(ji,jj,jk) + 1.e-12  <= 0. ) THEN   ;   zmsks(ji,jj) = 0._wp 
     
    141143         ! ------------------ 
    142144         ! Constant eddy coefficient: reset to the background value 
    143          DO_2D( 1, 1, 1, 1 ) 
     145         ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     146         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    144147            zinr = 1._wp / zrau(ji,jj) 
    145148            ! salt fingering 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfdrg.F90

    r13558 r14636  
    117117      ! 
    118118      IF( l_log_not_linssh ) THEN     !==  "log layer"  ==!   compute Cd and -Cd*|U| 
    119          DO_2D( 0, 0, 0, 0 ) 
     119         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     120         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    120121            imk = k_mk(ji,jj)          ! ocean bottom level at t-points 
    121122            zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm)     ! 2 x velocity at t-point 
     
    129130         END_2D 
    130131      ELSE                                            !==  standard Cd  ==! 
    131          DO_2D( 0, 0, 0, 0 ) 
     132         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     133         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    132134            imk = k_mk(ji,jj)    ! ocean bottom level at t-points 
    133135            zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm)     ! 2 x velocity at t-point 
     
    176178      ENDIF 
    177179 
    178       DO_2D( 0, 0, 0, 0 ) 
     180      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     181      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    179182         ikbu = mbku(ji,jj)          ! deepest wet ocean u- & v-levels 
    180183         ikbv = mbkv(ji,jj) 
     
    189192      ! 
    190193      IF( ln_isfcav ) THEN        ! ocean cavities 
    191          DO_2D( 0, 0, 0, 0 ) 
     194         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     195         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    192196            ikbu = miku(ji,jj)          ! first wet ocean u- & v-levels 
    193197            ikbv = mikv(ji,jj) 
     
    432436            l_log_not_linssh = .FALSE.    !- don't update Cd at each time step 
    433437            ! 
    434             DO_2D( 1, 1, 1, 1 )              ! pCd0 = mask (and boosted) logarithmic drag coef. 
     438            ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 )              ! pCd0 = mask (and boosted) logarithmic drag coef. 
     439            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )              ! pCd0 = mask (and boosted) logarithmic drag coef. 
    435440               zzz =  0.5_wp * e3t_0(ji,jj,k_mk(ji,jj)) 
    436441               zcd = (  vkarmn / LOG( zzz / rn_z0 )  )**2 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfevd.F90

    r13295 r14636  
    8787!         END WHERE 
    8888         ! 
    89          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     89         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     90         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    9091            IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 
    9192               p_avt(ji,jj,jk) = rn_evd * wmask(ji,jj,jk) 
     
    103104!         END WHERE 
    104105 
    105          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     106         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     107         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    106108            IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 )   & 
    107109               p_avt(ji,jj,jk) = rn_evd * wmask(ji,jj,jk) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfgls.F90

    r14156 r14636  
    179179 
    180180      ! Compute surface, top and bottom friction at T-points 
    181       DO_2D( 0, 0, 0, 0 )          !==  surface ocean friction 
     181      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )          !==  surface ocean friction 
     182      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )          !==  surface ocean friction  
    182183         ustar2_surf(ji,jj) = r1_rho0 * taum(ji,jj) * tmask(ji,jj,1)   ! surface friction 
    183184      END_2D 
     
    186187      ! 
    187188      IF( .NOT.ln_drg_OFF ) THEN     !== top/bottom friction   (explicit before friction) 
    188          DO_2D( 0, 0, 0, 0 )         ! bottom friction (explicit before friction) 
     189         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )         ! bottom friction (explicit before friction) 
     190         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )          ! bottom friction (explicit before friction) 
    189191            zmsku = 0.5_wp * ( 2._wp - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 
    190192            zmskv = 0.5_wp * ( 2._wp - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) )     ! (CAUTION: CdU<0) 
     
    193195         END_2D 
    194196         IF( ln_isfcav ) THEN 
    195             DO_2D( 0, 0, 0, 0 )      ! top friction 
     197            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )      ! top friction 
     198            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )      ! top friction 
    196199               zmsku = 0.5_wp * ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 
    197200               zmskv = 0.5_wp * ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) )     ! (CAUTION: CdU<0) 
     
    220223      zhsro(:,:) = ( (1._wp-zice_fra(:,:)) * zhsro(:,:) + zice_fra(:,:) * rn_hsri )*tmask(:,:,1)  + (1._wp - tmask(:,:,1))*rn_hsro 
    221224      ! 
    222       DO_3D( 0, 0, 0, 0, 2, jpkm1 )  !==  Compute dissipation rate  ==! 
     225      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )  !==  Compute dissipation rate  ==! 
     226      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )  !==  Compute dissipation rate  ==! 
    223227         eps(ji,jj,jk)  = rc03 * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / hmxl_n(ji,jj,jk) 
    224228      END_3D 
     
    229233 
    230234      IF( nn_clos == 0 ) THEN    ! Mellor-Yamada 
    231          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     235         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     236         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    232237            zup   = hmxl_n(ji,jj,jk) * gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) 
    233238            zdown = vkarmn * gdepw(ji,jj,jk,Kmm) * ( -gdepw(ji,jj,jk,Kmm) + gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) ) 
     
    250255      ! Warning : after this step, en : right hand side of the matrix 
    251256 
    252       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     257      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     258      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    253259         ! 
    254260         buoy = - p_avt(ji,jj,jk) * rn2(ji,jj,jk)     ! stratif. destruction 
     
    327333      ! at k=2, set de/dz=Fw 
    328334      !cbr 
    329       DO_2D( 0, 0, 0, 0 )   ! zdiag zd_lw not defined/used on the halo 
     335      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )   ! zdiag zd_lw not defined/used on the halo 
     336      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )   ! zdiag zd_lw not defined/used on the halo 
    330337         zdiag(ji,jj,2) = zdiag(ji,jj,2) +  zd_lw(ji,jj,2) ! Remove zd_lw from zdiag 
    331338         zd_lw(ji,jj,2) = 0._wp 
     
    348355         !                      ! en(ibot) = u*^2 / Co2 and hmxl_n(ibot) = rn_lmin 
    349356         !                      ! Balance between the production and the dissipation terms 
    350          DO_2D( 0, 0, 0, 0 ) 
     357         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     358         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    351359!!gm This means that bottom and ocean w-level above have a specified "en" value.   Sure ???? 
    352360!!   With thick deep ocean level thickness, this may be quite large, no ??? 
     
    366374         ! 
    367375         IF( ln_isfcav) THEN     ! top boundary   (ocean cavity) 
    368             DO_2D( 0, 0, 0, 0 ) 
     376            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     377            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    369378               itop   = mikt(ji,jj)       ! k   top w-point 
    370379               itopp1 = mikt(ji,jj) + 1   ! k+1 1st w-point below the top one 
     
    384393      CASE ( 1 )             ! Neumman boundary condition 
    385394         ! 
    386          DO_2D( 0, 0, 0, 0 ) 
     395         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     396         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    387397            ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    388398            ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    399409         END_2D 
    400410         IF( ln_isfcav) THEN     ! top boundary   (ocean cavity) 
    401             DO_2D( 0, 0, 0, 0 ) 
     411            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     412            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    402413               itop   = mikt(ji,jj)       ! k   top w-point 
    403414               itopp1 = mikt(ji,jj) + 1   ! k+1 1st w-point below the top one 
     
    420431      ! ---------------------------------------------------------- 
    421432      ! 
    422       DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     433      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1  
     434      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    423435         zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    424436      END_3D 
    425       DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
     437      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
     438      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    426439         zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 
    427440      END_3D 
    428       DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 )           ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     441      ! [comm_cleanup] ! DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 )           ! Third recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     442      DO_3DS( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, jpkm1, 2, -1 )           ! Third recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    429443         en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    430444      END_3D 
     
    441455      ! 
    442456      CASE( 0 )               ! k-kl  (Mellor-Yamada) 
    443          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     457         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     458         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    444459            psi(ji,jj,jk)  = eb(ji,jj,jk) * hmxl_b(ji,jj,jk) 
    445460         END_3D 
    446461         ! 
    447462      CASE( 1 )               ! k-eps 
    448          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     463         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     464         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    449465            psi(ji,jj,jk)  = eps(ji,jj,jk) 
    450466         END_3D 
    451467         ! 
    452468      CASE( 2 )               ! k-w 
    453          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     469         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     470         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    454471            psi(ji,jj,jk)  = SQRT( eb(ji,jj,jk) ) / ( rc0 * hmxl_b(ji,jj,jk) ) 
    455472         END_3D 
    456473         ! 
    457474      CASE( 3 )               ! generic 
    458          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     475         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     476         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    459477            psi(ji,jj,jk)  = rc02 * eb(ji,jj,jk) * hmxl_b(ji,jj,jk)**rnn 
    460478         END_3D 
     
    469487      ! Warning : after this step, en : right hand side of the matrix 
    470488 
    471       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     489      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     490      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    472491         ! 
    473492         ! psi / k 
     
    541560         ! 
    542561         ! Neumann condition at k=2 
    543          DO_2D( 0, 0, 0, 0 )   ! zdiag zd_lw not defined/used on the halo 
     562         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )   ! zdiag zd_lw not defined/used on the halo 
     563         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )   ! zdiag zd_lw not defined/used on the halo 
    544564            zdiag(ji,jj,2) = zdiag(ji,jj,2) +  zd_lw(ji,jj,2) ! Remove zd_lw from zdiag 
    545565            zd_lw(ji,jj,2) = 0._wp 
     
    569589         !                      ! en(ibot) = u*^2 / Co2 and hmxl_n(ibot) = vkarmn * r_z0_bot 
    570590         !                      ! Balance between the production and the dissipation terms 
    571          DO_2D( 0, 0, 0, 0 ) 
     591         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     592         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    572593            ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    573594            ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    588609      CASE ( 1 )             ! Neumman boundary condition 
    589610         ! 
    590          DO_2D( 0, 0, 0, 0 ) 
     611         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     612         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    591613            ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    592614            ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    616638      ! ---------------- 
    617639      ! 
    618       DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     640      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1  
     641      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    619642         zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    620643      END_3D 
    621       DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
     644      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
     645      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! Second recurrence : Lk = RHSk - Lk / Dk-1 * Lk-1 
    622646         zd_lw(ji,jj,jk) = psi(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 
    623647      END_3D 
    624       DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 )           ! Third recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     648      ! [comm_cleanup] ! DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 )           ! Third recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     649      DO_3DS( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, jpkm1, 2, -1 )           ! Third recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    625650         psi(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * psi(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    626651      END_3D 
     
    632657      ! 
    633658      CASE( 0 )               ! k-kl  (Mellor-Yamada) 
    634          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     659         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     660         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    635661            eps(ji,jj,jk) = rc03 * en(ji,jj,jk) * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / MAX( psi(ji,jj,jk), rn_epsmin) 
    636662         END_3D 
    637663         ! 
    638664      CASE( 1 )               ! k-eps 
    639          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     665         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     666         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    640667            eps(ji,jj,jk) = psi(ji,jj,jk) 
    641668         END_3D 
    642669         ! 
    643670      CASE( 2 )               ! k-w 
    644          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     671         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     672         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    645673            eps(ji,jj,jk) = rc04 * en(ji,jj,jk) * psi(ji,jj,jk) 
    646674         END_3D 
     
    650678         zex1  =      ( 1.5_wp + rmm/rnn ) 
    651679         zex2  = -1._wp / rnn 
    652          DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     680         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     681         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    653682            eps(ji,jj,jk) = zcoef * en(ji,jj,jk)**zex1 * psi(ji,jj,jk)**zex2 
    654683         END_3D 
     
    658687      ! Limit dissipation rate under stable stratification 
    659688      ! -------------------------------------------------- 
    660       DO_3D( 0, 0, 0, 0, 1, jpkm1 )   ! Note that this set boundary conditions on hmxl_n at the same time 
     689      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 )   ! Note that this set boundary conditions on hmxl_n at the same time 
     690      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )   ! Note that this set boundary conditions on hmxl_n at the same time 
    661691         ! limitation 
    662692         eps   (ji,jj,jk)  = MAX( eps(ji,jj,jk), rn_epsmin ) 
     
    674704      ! 
    675705      CASE ( 0 , 1 )             ! Galperin or Kantha-Clayson stability functions 
    676          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     706         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     707         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    677708            ! zcof =  l²/q² 
    678709            zcof = hmxl_b(ji,jj,jk) * hmxl_b(ji,jj,jk) / ( 2._wp*eb(ji,jj,jk) ) 
     
    691722         ! 
    692723      CASE ( 2, 3 )               ! Canuto stability functions 
    693          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     724         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     725         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    694726            ! zcof =  l²/q² 
    695727            zcof = hmxl_b(ji,jj,jk)*hmxl_b(ji,jj,jk) / ( 2._wp * eb(ji,jj,jk) ) 
     
    723755      ! default value, in case jpk > mbkt(ji,jj)+1. Not needed but avoid a bug when looking for undefined values (-fpe0) 
    724756      zstm(:,:,jpk) = 0. 
    725       DO_2D( 0, 0, 0, 0 )             ! update bottom with good values 
     757      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )             ! update bottom with good values 
     758      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )             ! update bottom with good values 
    726759         zstm(ji,jj,mbkt(ji,jj)+1) = zstm(ji,jj,mbkt(ji,jj)) 
    727760      END_2D 
     
    738771      !     later overwritten by surface/bottom boundaries conditions, so we don't really care of p_avm(:,:1) and p_avm(:,:jpk) 
    739772      !     for zd_lw and zd_up but they have to be defined to avoid a bug when looking for undefined values (-fpe0) 
    740       DO_3D( 0, 0, 0, 0, 1, jpk ) 
     773      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpk ) 
     774      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 
    741775         zsqen = SQRT( 2._wp * en(ji,jj,jk) ) * hmxl_n(ji,jj,jk) 
    742776         zavt  = zsqen * zstt(ji,jj,jk) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfiwm.F90

    r13497 r14636  
    143143      ! Set to zero the 1st and last vertical levels of appropriate variables 
    144144      IF( iom_use("emix_iwm") ) THEN 
    145          DO_2D( 0, 0, 0, 0 ) 
     145         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     146         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    146147            zemx_iwm (ji,jj,1) = 0._wp   ;   zemx_iwm (ji,jj,jpk) = 0._wp 
    147148         END_2D 
    148149      ENDIF 
    149150      IF( iom_use("av_ratio") ) THEN 
    150          DO_2D( 0, 0, 0, 0 ) 
     151         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     152         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    151153            zav_ratio(ji,jj,1) = 0._wp   ;   zav_ratio(ji,jj,jpk) = 0._wp 
    152154         END_2D 
    153155      ENDIF 
    154156      IF( iom_use("av_wave") .OR. sn_cfctl%l_prtctl ) THEN 
    155          DO_2D( 0, 0, 0, 0 ) 
     157         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     158         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    156159            zav_wave (ji,jj,1) = 0._wp   ;   zav_wave (ji,jj,jpk) = 0._wp 
    157160         END_2D 
     
    164167      !                       !* Critical slope mixing: distribute energy over the time-varying ocean depth, 
    165168      !                                                 using an exponential decay from the seafloor. 
    166       DO_2D( 0, 0, 0, 0 )             ! part independent of the level 
     169      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )             ! part independent of the level 
     170      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )             ! part independent of the level 
    167171         zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1)       ! depth of the ocean 
    168172         zfact(ji,jj) = rho0 * (  1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) )  ) 
     
    170174      END_2D 
    171175!!gm gde3w ==>>>  check for ssh taken into account.... seem OK gde3w_n=gdept(:,:,:,Kmm) - ssh(:,:,Kmm) 
    172       DO_3D( 0, 0, 0, 0, 2, jpkm1 )   ! complete with the level-dependent part 
     176      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )   ! complete with the level-dependent part 
     177      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )   ! complete with the level-dependent part 
    173178         IF ( zfact(ji,jj) == 0._wp .OR. wmask(ji,jj,jk) == 0._wp ) THEN   ! optimization 
    174179            zemx_iwm(ji,jj,jk) = 0._wp 
     
    190195      CASE ( 1 )               ! Dissipation scales as N (recommended) 
    191196         ! 
    192          DO_2D( 0, 0, 0, 0 ) 
     197         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     198         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    193199            zfact(ji,jj) = 0._wp 
    194200         END_2D 
    195          DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
     201         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
     202         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )       ! part independent of the level 
    196203            zfact(ji,jj) = zfact(ji,jj) + e3w(ji,jj,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(ji,jj,jk) )  ) * wmask(ji,jj,jk) 
    197204         END_3D 
    198205         ! 
    199          DO_2D( 0, 0, 0, 0 ) 
     206         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     207         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    200208            IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    201209         END_2D 
    202210         ! 
    203          DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! complete with the level-dependent part 
     211         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! complete with the level-dependent part 
     212         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )       ! complete with the level-dependent part 
    204213            zemx_iwm(ji,jj,jk) = zemx_iwm(ji,jj,jk) + zfact(ji,jj) * SQRT(  MAX( 0._wp, rn2(ji,jj,jk) )  ) * wmask(ji,jj,jk) 
    205214         END_3D 
     
    207216      CASE ( 2 )               ! Dissipation scales as N^2 
    208217         ! 
    209          DO_2D( 0, 0, 0, 0 ) 
     218         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     219         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    210220            zfact(ji,jj) = 0._wp 
    211221         END_2D 
    212          DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
     222         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
     223         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )       ! part independent of the level 
    213224            zfact(ji,jj) = zfact(ji,jj) + e3w(ji,jj,jk,Kmm) * MAX( 0._wp, rn2(ji,jj,jk) ) * wmask(ji,jj,jk) 
    214225         END_3D 
    215226         ! 
    216          DO_2D( 0, 0, 0, 0 ) 
     227         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     228         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    217229            IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    218230         END_2D 
    219231         ! 
    220          DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! complete with the level-dependent part 
     232         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     233         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    221234            zemx_iwm(ji,jj,jk) = zemx_iwm(ji,jj,jk) + zfact(ji,jj) * MAX( 0._wp, rn2(ji,jj,jk) ) * wmask(ji,jj,jk) 
    222235         END_3D 
     
    227240      !                        !* ocean depth as proportional to rn2 * exp(-z_wkb/rn_hbot) 
    228241      ! 
    229       DO_2D( 0, 0, 0, 0 ) 
     242      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     243      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    230244         zwkb(ji,jj,1) = 0._wp 
    231245      END_2D 
    232       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     246      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     247      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    233248         zwkb(ji,jj,jk) = zwkb(ji,jj,jk-1) + e3w(ji,jj,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(ji,jj,jk) )  ) * wmask(ji,jj,jk) 
    234249      END_3D 
    235       DO_2D( 0, 0, 0, 0 ) 
     250      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     251      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    236252         zfact(ji,jj) = zwkb(ji,jj,jpkm1) 
    237253      END_2D 
    238254      ! 
    239       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     255      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     256      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    240257         IF( zfact(ji,jj) /= 0 )   zwkb(ji,jj,jk) = zhdep(ji,jj) * ( zfact(ji,jj) - zwkb(ji,jj,jk) )   & 
    241258            &                                     * wmask(ji,jj,jk) / zfact(ji,jj) 
    242259      END_3D 
    243       DO_2D( 0, 0, 0, 0 ) 
     260      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     261      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    244262         zwkb (ji,jj,1) = zhdep(ji,jj) * wmask(ji,jj,1) 
    245263      END_2D 
    246264      ! 
    247       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     265      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     266      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    248267         IF ( rn2(ji,jj,jk) <= 0._wp .OR. wmask(ji,jj,jk) == 0._wp ) THEN   ! optimization: EXP coast a lot 
    249268            zweight(ji,jj,jk) = 0._wp 
     
    254273      END_3D 
    255274      ! 
    256       DO_2D( 0, 0, 0, 0 ) 
     275      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     276      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    257277         zfact(ji,jj) = 0._wp 
    258278      END_2D 
    259       DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
     279      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
     280      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )       ! part independent of the level 
    260281         zfact(ji,jj) = zfact(ji,jj) + zweight(ji,jj,jk) 
    261282      END_3D 
    262283      ! 
    263       DO_2D( 0, 0, 0, 0 ) 
     284      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     285      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    264286         IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = ebot_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    265287      END_2D 
    266288      ! 
    267       DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! complete with the level-dependent part 
     289      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! complete with the level-dependent part 
     290      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )       ! complete with the level-dependent part 
    268291         zemx_iwm(ji,jj,jk) = zemx_iwm(ji,jj,jk) + zweight(ji,jj,jk) * zfact(ji,jj) * wmask(ji,jj,jk)   & 
    269292            &                                                        / ( gde3w(ji,jj,jk) - gde3w(ji,jj,jk-1) ) 
     
    273296!!gm  this is to be replaced by just a constant value znu=1.e-6 m2/s 
    274297      ! Calculate molecular kinematic viscosity 
    275       DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     298      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     299      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    276300         znu_t(ji,jj,jk) = 1.e-4_wp * (  17.91_wp - 0.53810_wp * ts(ji,jj,jk,jp_tem,Kmm)   & 
    277301            &                                     + 0.00694_wp * ts(ji,jj,jk,jp_tem,Kmm) * ts(ji,jj,jk,jp_tem,Kmm)  & 
    278302            &                                     + 0.02305_wp * ts(ji,jj,jk,jp_sal,Kmm)  ) * tmask(ji,jj,jk) * r1_rho0 
    279303      END_3D 
    280       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     304      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     305      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    281306         znu_w(ji,jj,jk) = 0.5_wp * ( znu_t(ji,jj,jk-1) + znu_t(ji,jj,jk) ) * wmask(ji,jj,jk) 
    282307      END_3D 
     
    284309      ! 
    285310      ! Calculate turbulence intensity parameter Reb 
    286       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     311      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     312      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    287313         zReb(ji,jj,jk) = zemx_iwm(ji,jj,jk) / MAX( 1.e-20_wp, znu_w(ji,jj,jk) * rn2(ji,jj,jk) ) 
    288314      END_3D 
    289315      ! 
    290316      ! Define internal wave-induced diffusivity 
    291       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     317      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     318      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    292319         zav_wave(ji,jj,jk) = znu_w(ji,jj,jk) * zReb(ji,jj,jk) * r1_6   ! This corresponds to a constant mixing efficiency of 1/6 
    293320      END_3D 
    294321      ! 
    295322      IF( ln_mevar ) THEN                ! Variable mixing efficiency case : modify zav_wave in the 
    296          DO_3D( 0, 0, 0, 0, 2, jpkm1 )   ! energetic (Reb > 480) and buoyancy-controlled (Reb <10.224 ) regimes 
     323         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )   ! energetic (Reb > 480) and buoyancy-controlled (Reb <10.224 ) regimes 
     324         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )   ! energetic (Reb > 480) and buoyancy-controlled (Reb <10.224 ) regimes 
    297325            IF( zReb(ji,jj,jk) > 480.00_wp ) THEN 
    298326               zav_wave(ji,jj,jk) = 3.6515_wp * znu_w(ji,jj,jk) * SQRT( zReb(ji,jj,jk) ) 
     
    303331      ENDIF 
    304332      ! 
    305       DO_3D( 0, 0, 0, 0, 2, jpkm1 )      ! Bound diffusivity by molecular value and 100 cm2/s 
     333      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )      ! Bound diffusivity by molecular value and 100 cm2/s 
     334      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )      ! Bound diffusivity by molecular value and 100 cm2/s 
    306335         zav_wave(ji,jj,jk) = MIN(  MAX( 1.4e-7_wp, zav_wave(ji,jj,jk) ), 1.e-2_wp  ) * wmask(ji,jj,jk) 
    307336      END_3D 
     
    310339         zztmp = 0._wp 
    311340!!gm used of glosum 3D.... 
    312          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     341         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     342         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    313343            zztmp = zztmp + e3w(ji,jj,jk,Kmm) * e1e2t(ji,jj)   & 
    314344               &          * MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
     
    332362      IF( ln_tsdiff ) THEN                !* Option for differential mixing of salinity and temperature 
    333363         ztmp1 = 0.505_wp + 0.495_wp * TANH( 0.92_wp * ( LOG10( 1.e-20_wp ) - 0.60_wp ) ) 
    334          DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! Calculate S/T diffusivity ratio as a function of Reb 
     364         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! Calculate S/T diffusivity ratio as a function of Reb 
     365         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )       ! Calculate S/T diffusivity ratio as a function of Reb 
    335366            ztmp2 = zReb(ji,jj,jk) * 5._wp * r1_6 
    336367            IF ( ztmp2 > 1.e-20_wp .AND. wmask(ji,jj,jk) == 1._wp ) THEN 
     
    341372         END_3D 
    342373         CALL iom_put( "av_ratio", zav_ratio ) 
    343          DO_3D( 0, 0, 0, 0, 2, jpkm1 )    !* update momentum & tracer diffusivity with wave-driven mixing 
     374         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )    !* update momentum & tracer diffusivity with wave-driven mixing 
     375         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )    !* update momentum & tracer diffusivity with wave-driven mixing 
    344376            p_avs(ji,jj,jk) = p_avs(ji,jj,jk) + zav_wave(ji,jj,jk) * zav_ratio(ji,jj,jk) 
    345377            p_avt(ji,jj,jk) = p_avt(ji,jj,jk) + zav_wave(ji,jj,jk) 
     
    348380         ! 
    349381      ELSE                                !* update momentum & tracer diffusivity with wave-driven mixing 
    350          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     382         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     383         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    351384            p_avs(ji,jj,jk) = p_avs(ji,jj,jk) + zav_wave(ji,jj,jk) 
    352385            p_avt(ji,jj,jk) = p_avt(ji,jj,jk) + zav_wave(ji,jj,jk) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfmfc.F90

    r14574 r14636  
    218218         WHERE(zrautbm1 .NE. 0.) zfbuo(:,:)  =  grav * (zraupl(:,:) - zrautbm1(:,:)) / zrautbm1(:,:) 
    219219 
    220          DO_2D( 0, 0, 0, 0 ) 
     220         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     221         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    221222 
    222223            ! Compute Environment of Plume. Interpolation T/S (before time step) on W-points 
     
    376377      ! 
    377378      ! 
    378       CALL lbc_lnk( 'zdfmfc', edmfm,'T',1., edmfa,'T',1., edmfb,'T',1., edmfc,'T',1., edmftra(:,:,:,jp_tem),'T',1., edmftra(:,:,:,jp_sal),'T',1.) 
     379      ! [comm_cleanup]  
     380      IF (nn_hls.eq.1) CALL lbc_lnk( 'zdfmfc', edmfm,'T',1., edmfa,'T',1., edmfb,'T',1., edmfc,'T',1., edmftra(:,:,:,jp_tem),'T',1., edmftra(:,:,:,jp_sal),'T',1.) 
    379381      ! 
    380382   END SUBROUTINE tra_mfc 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfmxl.F90

    r13497 r14636  
    9999      hmlp(:,:)  = 0._wp                  ! here hmlp used as a dummy variable, integrating vertically N^2 
    100100      zN2_c = grav * rho_c * r1_rho0      ! convert density criteria into N^2 criteria 
    101       DO_3D( 1, 1, 1, 1, nlb10, jpkm1 )   ! Mixed layer level: w-level 
     101      ! [comm_cleanup] ! DO_3D( 1, 1, 1, 1, nlb10, jpkm1 )   ! Mixed layer level: w-level 
     102      DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, nlb10, jpkm1 )   ! Mixed layer level: w-level 
    102103         ikt = mbkt(ji,jj) 
    103104         hmlp(ji,jj) =   & 
     
    108109      ! w-level of the turbocline and mixing layer (iom_use) 
    109110      imld(:,:) = mbkt(:,:) + 1                ! Initialization to the number of w ocean point 
    110       DO_3DS( 1, 1, 1, 1, jpkm1, nlb10, -1 )   ! from the bottom to nlb10 
     111      ! [comm_cleanup] ! DO_3DS( 1, 1, 1, 1, jpkm1, nlb10, -1 )   ! from the bottom to nlb10 
     112      DO_3DS( nn_hls, nn_hls, nn_hls, nn_hls, jpkm1, nlb10, -1 )   ! from the bottom to nlb10 
    111113         IF( avt (ji,jj,jk) < avt_c * wmask(ji,jj,jk) )   imld(ji,jj) = jk      ! Turbocline  
    112114      END_3D 
    113115      ! depth of the mixing and mixed layers 
    114       DO_2D( 1, 1, 1, 1 ) 
     116      ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     117      DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    115118         iiki = imld(ji,jj) 
    116119         iikn = nmln(ji,jj) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfosm.F90

    r14574 r14636  
    400400     zz0 =       rn_abs       ! surface equi-partition in 2-bands 
    401401     zz1 =  1. - rn_abs 
    402      DO_2D( 0, 0, 0, 0 ) 
     402     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     403     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    403404        ! Surface downward irradiance (so always +ve) 
    404405        zrad0(ji,jj) = qsr(ji,jj) * r1_rho0_rcp 
     
    410411     END_2D 
    411412     ! Turbulent surface fluxes and fluxes averaged over depth of the OSBL 
    412      DO_2D( 0, 0, 0, 0 ) 
     413     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     414     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    413415        zthermal = rab_n(ji,jj,1,jp_tem) 
    414416        zbeta    = rab_n(ji,jj,1,jp_sal) 
     
    437439     ! Assume constant La#=0.3 
    438440     CASE(0) 
    439         DO_2D( 0, 0, 0, 0 ) 
     441        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     442        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    440443           zus_x = zcos_wind(ji,jj) * zustar(ji,jj) / 0.3**2 
    441444           zus_y = zsin_wind(ji,jj) * zustar(ji,jj) / 0.3**2 
     
    446449     ! Assume Pierson-Moskovitz wind-wave spectrum 
    447450     CASE(1) 
    448         DO_2D( 0, 0, 0, 0 ) 
     451        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     452        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    449453           ! Use wind speed wndm included in sbc_oce module 
    450454           zustke(ji,jj) =  MAX ( 0.016 * wndm(ji,jj), 1.0e-8 ) 
     
    455459        zfac =  2.0_wp * rpi / 16.0_wp 
    456460 
    457         DO_2D( 0, 0, 0, 0 ) 
     461        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     462        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    458463           IF (hsw(ji,jj) > 1.e-4) THEN 
    459464              ! Use  wave fields 
     
    472477     IF (ln_zdfosm_ice_shelter) THEN 
    473478        ! Reduce both Stokes drift and its depth scale by ocean fraction to represent sheltering by ice 
    474         DO_2D( 0, 0, 0, 0 ) 
     479        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     480        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    475481           zustke(ji,jj) = zustke(ji,jj) * (1.0_wp - fr_i(ji,jj)) 
    476482           dstokes(ji,jj) = dstokes(ji,jj) * (1.0_wp - fr_i(ji,jj)) 
     
    494500        z_two_thirds = 2.0_wp / 3.0_wp 
    495501 
    496         DO_2D( 0, 0, 0, 0 ) 
     502        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     503        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    497504           zthickness = rn_osm_hblfrac*hbl(ji,jj) 
    498505           z2k_times_thickness =  zthickness * 2.0_wp / MAX( ABS( 5.97_wp * dstokes(ji,jj) ), 0.0000001_wp ) 
     
    509516        zsqrtpi = SQRT(rpi) 
    510517 
    511         DO_2D( 0, 0, 0, 0 ) 
     518        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     519        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    512520           zthickness = rn_osm_hblfrac*hbl(ji,jj) 
    513521           z2k_times_thickness =  zthickness * 2.0_wp / MAX( ABS( 5.97_wp * dstokes(ji,jj) ), 0.0000001_wp ) 
     
    530538     ! Langmuir velocity scale (zwstrl), La # (zla) 
    531539     ! mixed scale (zvstr), convective velocity scale (zwstrc) 
    532      DO_2D( 0, 0, 0, 0 ) 
     540     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     541     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    533542        ! Langmuir velocity scale (zwstrl), at T-point 
    534543        zwstrl(ji,jj) = ( zustar(ji,jj) * zustar(ji,jj) * zustke(ji,jj) )**pthird 
     
    563572      hbl(:,:) = MAX(hbl(:,:), gdepw(:,:,4,Kmm) ) 
    564573      ibld(:,:) = 4 
    565       DO_3D( 1, 1, 1, 1, 5, jpkm1 ) 
     574      ! [comm_cleanup] ! DO_3D( 1, 1, 1, 1, 5, jpkm1 ) 
     575      DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 5, jpkm1 ) 
    566576         IF ( hbl(ji,jj) >= gdepw(ji,jj,jk,Kmm) ) THEN 
    567577            ibld(ji,jj) = MIN(mbkt(ji,jj), jk) 
     
    570580     ! ########################################################################## 
    571581 
    572       DO_2D( 0, 0, 0, 0 ) 
     582      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     583      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    573584         zhbl(ji,jj) = gdepw(ji,jj,ibld(ji,jj),Kmm) 
    574585         imld(ji,jj) = MAX(3,ibld(ji,jj) - MAX( INT( dh(ji,jj) / e3t(ji, jj, ibld(ji,jj), Kmm )) , 1 )) 
     
    590601! Fox-Kemper Scheme 
    591602         mld_prof = 4 
    592          DO_3D( 0, 0, 0, 0, 5, jpkm1 ) 
     603         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 5, jpkm1 ) 
     604         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 5, jpkm1 ) 
    593605         IF ( hmle(ji,jj) >= gdepw(ji,jj,jk,Kmm) ) mld_prof(ji,jj) = MIN(mbkt(ji,jj), jk) 
    594606         END_3D 
     
    596608        CALL zdf_osm_vertical_average(mld_prof, jp_ext_mle, zt_mle, zs_mle, zb_mle, zu_mle, zv_mle, zdt_mle, zds_mle, zdb_mle, zdu_mle, zdv_mle) 
    597609 
    598          DO_2D( 0, 0, 0, 0 ) 
     610         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     611         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    599612           zhmle(ji,jj) = gdepw(ji,jj,mld_prof(ji,jj),Kmm) 
    600613         END_2D 
     
    611624         lflux(:,:) = .FALSE. 
    612625         lmle(:,:) = .FALSE. 
    613          DO_2D( 0, 0, 0, 0 ) 
     626         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     627         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    614628          IF ( lconv(ji,jj) .AND. zdb_bl(ji,jj) < rn_osm_bl_thresh ) lpyc(ji,jj) = .FALSE. 
    615629         END_2D 
     
    617631 
    618632! Test if pycnocline well resolved 
    619       DO_2D( 0, 0, 0, 0 ) 
     633      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     634      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    620635       IF (lconv(ji,jj) ) THEN 
    621636          ztmp = 0.2 * zhbl(ji,jj) / e3w(ji,jj,ibld(ji,jj),Kmm) 
     
    638653! Rate of change of hbl 
    639654      CALL zdf_osm_calculate_dhdt( zdhdt, zddhdt ) 
    640       DO_2D( 0, 0, 0, 0 ) 
     655      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     656      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    641657       zhbl_t(ji,jj) = hbl(ji,jj) + (zdhdt(ji,jj) - ww(ji,jj,ibld(ji,jj)))* rn_Dt ! certainly need ww here, so subtract it 
    642658            ! adjustment to represent limiting by ocean bottom 
     
    650666      ibld(:,:) = 4 
    651667 
    652       DO_3D( 0, 0, 0, 0, 4, jpkm1 ) 
     668      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 4, jpkm1 ) 
     669      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 4, jpkm1 ) 
    653670         IF ( zhbl_t(ji,jj) >= gdepw(ji,jj,jk,Kmm) ) THEN 
    654671            ibld(ji,jj) = jk 
     
    669686      CALL zdf_osm_pycnocline_thickness( dh, zdh ) 
    670687 
    671       DO_2D( 0, 0, 0, 0 ) 
     688      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     689      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    672690       IF ( zdb_bl(ji,jj) < rn_osm_bl_thresh .or. ibld(ji,jj) + jp_ext(ji,jj) >= mbkt(ji,jj) .or. ibld(ji,jj)-imld(ji,jj) == 1 ) lpyc(ji,jj) = .FALSE. 
    673691      END_2D 
     
    709727 
    710728 
    711        DO_2D( 0, 0, 0, 0 ) 
     729       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     730       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    712731         IF ( lconv(ji,jj) ) THEN 
    713732           DO jk = 2, imld(ji,jj) 
     
    744763          IF ( iom_use("ghamv_00") ) CALL iom_put( "ghamv_00", wmask*ghamv ) 
    745764       END IF 
    746        DO_2D( 0, 0, 0, 0 ) 
     765       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     766       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    747767          IF ( lconv(ji,jj) ) THEN 
    748768             DO jk = 2, imld(ji,jj) 
     
    776796       ENDWHERE 
    777797 
    778        DO_2D( 0, 0, 0, 0 ) 
     798       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     799       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    779800          IF (lconv(ji,jj) ) THEN 
    780801             DO jk = 2, imld(ji,jj) 
     
    838859       ENDWHERE 
    839860 
    840        DO_2D( 0, 0, 0, 0 ) 
     861       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     862       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    841863          IF ( lconv(ji,jj) ) THEN 
    842864             DO jk = 2 , imld(ji,jj) 
     
    856878       END_2D 
    857879 
    858        DO_2D( 0, 0, 0, 0 ) 
     880       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     881       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    859882        IF ( lpyc(ji,jj) ) THEN 
    860883          IF ( j_ddh(ji,jj) == 0 ) THEN 
     
    891914! Transport term in flux-gradient relationship [note : includes ROI ratio (X0.3) ] 
    892915 
    893        DO_2D( 1, 0, 1, 0 ) 
     916       ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 
     917       DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
    894918 
    895919         IF ( lconv(ji,jj) ) THEN 
     
    907931       END_2D 
    908932 
    909        DO_2D( 0, 0, 0, 0 ) 
     933       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     934       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    910935         IF ( lconv(ji,jj) ) THEN 
    911936            DO jk = 2, imld(ji,jj) 
     
    954979       ENDWHERE 
    955980 
    956        DO_2D( 0, 0, 0, 0 ) 
     981       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     982       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    957983          IF ( lconv(ji,jj) ) THEN 
    958984            DO jk = 2, imld(ji,jj) 
     
    10011027 ! Make surface forced velocity non-gradient terms go to zero at the base of the boundary layer. 
    10021028 
    1003       DO_2D( 0, 0, 0, 0 ) 
     1029      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1030      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    10041031         IF ( .not. lconv(ji,jj) ) THEN 
    10051032            DO jk = 2, ibld(ji,jj) 
     
    10171044 
    10181045      ! pynocline contributions 
    1019        DO_2D( 0, 0, 0, 0 ) 
     1046       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1047       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    10201048         IF ( .not. lconv(ji,jj) ) THEN 
    10211049          IF ( ibld(ji,jj) + jp_ext(ji,jj) < mbkt(ji,jj) ) THEN 
     
    10351063       END IF 
    10361064 
    1037        DO_2D( 0, 0, 0, 0 ) 
     1065       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1066       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    10381067          ghamt(ji,jj,ibld(ji,jj)+ibld_ext) = 0._wp 
    10391068          ghams(ji,jj,ibld(ji,jj)+ibld_ext) = 0._wp 
     
    10601089       ! rotate non-gradient velocity terms back to model reference frame 
    10611090 
    1062        DO_2D( 0, 0, 0, 0 ) 
     1091       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1092       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    10631093          DO jk = 2, ibld(ji,jj) 
    10641094             ztemp = ghamu(ji,jj,jk) 
     
    10761106! KPP-style Ri# mixing 
    10771107       IF( ln_kpprimix) THEN 
    1078           DO_3D( 1, 0, 1, 0, 2, jpkm1 )      !* Shear production at uw- and vw-points (energy conserving form) 
     1108           
     1109          ! [comm_cleanup] ! DO_3D( 1, 0, 1, 0, 2, jpkm1 )      !* Shear production at uw- and vw-points (energy conserving form) 
     1110          DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 2, jpkm1 ) 
    10791111             z3du(ji,jj,jk) = 0.5 * (  uu(ji,jj,jk-1,Kmm) -  uu(ji  ,jj,jk,Kmm) )   & 
    10801112                  &                 * (  uu(ji,jj,jk-1,Kbb) -  uu(ji  ,jj,jk,Kbb) ) * wumask(ji,jj,jk) & 
     
    10851117          END_3D 
    10861118      ! 
    1087          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     1119         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     1120         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    10881121            !                                          ! shear prod. at w-point weightened by mask 
    10891122            zesh2  =  ( z3du(ji-1,jj,jk) + z3du(ji,jj,jk) ) / MAX( 1._wp , umask(ji-1,jj,jk) + umask(ji,jj,jk) )   & 
     
    10961129         END_3D 
    10971130 
    1098           DO_2D( 0, 0, 0, 0 ) 
     1131          ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1132          DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    10991133             DO jk = ibld(ji,jj) + 1, jpkm1 
    11001134                zdiffut(ji,jj,jk) = zrimix(ji,jj,jk)*rn_difri 
     
    11071141! KPP-style set diffusivity large if unstable below BL 
    11081142       IF( ln_convmix) THEN 
    1109           DO_2D( 0, 0, 0, 0 ) 
     1143          ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1144          DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    11101145             DO jk = ibld(ji,jj) + 1, jpkm1 
    11111146               IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) zdiffut(ji,jj,jk) = rn_difconv 
     
    11171152 
    11181153       IF ( ln_osm_mle ) THEN  ! set up diffusivity and non-gradient mixing 
    1119           DO_2D( 0, 0, 0, 0 ) 
     1154          ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1155          DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    11201156              IF ( lflux(ji,jj) ) THEN ! MLE mixing extends below boundary layer 
    11211157             ! Calculate MLE flux contribution from surface fluxes 
     
    11581194       ! GN 25/8: need to change tmask --> wmask 
    11591195 
    1160      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     1196     ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     1197     DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    11611198          p_avt(ji,jj,jk) = MAX( zdiffut(ji,jj,jk), avtb(jk) ) * tmask(ji,jj,jk) 
    11621199          p_avm(ji,jj,jk) = MAX( zviscos(ji,jj,jk), avmb(jk) ) * tmask(ji,jj,jk) 
    11631200     END_3D 
    11641201      ! Lateral boundary conditions on ghamu and ghamv, currently on W-grid  (sign unchanged), needed to caclulate gham[uv] on u and v grids 
    1165      CALL lbc_lnk( 'zdfosm', p_avt, 'W', 1.0_wp , p_avm, 'W', 1.0_wp,   & 
    1166         &                    ghamu, 'W', 1.0_wp , ghamv, 'W', 1.0_wp ) 
     1202     IF (nn_hls.eq.1) CALL lbc_lnk( 'zdfosm', p_avt, 'W', 1.0_wp , p_avm, 'W', 1.0_wp,   & 
     1203                         &                    ghamu, 'W', 1.0_wp , ghamv, 'W', 1.0_wp ) 
    11671204       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    11681205            ghamu(ji,jj,jk) = ( ghamu(ji,jj,jk) + ghamu(ji+1,jj,jk) ) & 
     
    11761213       END_3D 
    11771214        ! Lateral boundary conditions on final outputs for hbl,  on T-grid (sign unchanged) 
    1178         CALL lbc_lnk( 'zdfosm', hbl, 'T', 1., dh, 'T', 1., hmle, 'T', 1. ) 
     1215        ! [comm_cleanup] ! no need lbc_lnk for output 
     1216        ! CALL lbc_lnk( 'zdfosm', hbl, 'T', 1., dh, 'T', 1., hmle, 'T', 1. ) 
    11791217        ! Lateral boundary conditions on final outputs for gham[ts],  on W-grid  (sign unchanged) 
    11801218        ! Lateral boundary conditions on final outputs for gham[uv],  on [UV]-grid  (sign changed) 
    1181         CALL lbc_lnk( 'zdfosm', ghamt, 'W',  1.0_wp , ghams, 'W',  1.0_wp,   & 
    1182            &                    ghamu, 'U', -1.0_wp , ghamv, 'V', -1.0_wp ) 
     1219        ! [comm_cleanup] ! no need lbc_lnk for output 
     1220        ! CALL lbc_lnk( 'zdfosm', ghamt, 'W',  1.0_wp , ghams, 'W',  1.0_wp,   & 
     1221        !   &                    ghamu, 'U', -1.0_wp , ghamv, 'V', -1.0_wp ) 
    11831222 
    11841223      IF(ln_dia_osm) THEN 
     
    12801319      REAL(wp), PARAMETER :: rn_vispyc_shr = 0.15 
    12811320 
    1282       DO_2D( 0, 0, 0, 0 ) 
     1321      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1322      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    12831323          IF ( lconv(ji,jj) ) THEN 
    12841324 
     
    13231363      END_2D 
    13241364! 
    1325        DO_2D( 0, 0, 0, 0 ) 
     1365       ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1366       DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    13261367          IF ( lconv(ji,jj) ) THEN 
    13271368             DO jk = 2, imld(ji,jj)   ! mixed layer diffusivity 
     
    14221463 
    14231464! Determins stability and set flag lconv 
    1424      DO_2D( 0, 0, 0, 0 ) 
     1465     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1466     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    14251467      IF ( zhol(ji,jj) < 0._wp ) THEN 
    14261468         lconv(ji,jj) = .TRUE. 
     
    14391481     j_ddh(:,:) = 1 
    14401482 
    1441      DO_2D( 0, 0, 0, 0 ) 
     1483     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1484     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    14421485      IF ( lconv(ji,jj) ) THEN 
    14431486         IF ( zdb_bl(ji,jj) > 0._wp ) THEN 
     
    14761519! Calculate entrainment buoyancy flux due to surface fluxes. 
    14771520 
    1478      DO_2D( 0, 0, 0, 0 ) 
     1521     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1522     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    14791523      IF ( lconv(ji,jj) ) THEN 
    14801524        zwcor = ABS(ff_t(ji,jj)) * zhbl(ji,jj) + epsln 
     
    15011545     zwb_min(:,:) = 0._wp 
    15021546 
    1503      DO_2D( 0, 0, 0, 0 ) 
     1547     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1548     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    15041549      IF ( lshear(ji,jj) ) THEN 
    15051550        IF ( lconv(ji,jj) ) THEN 
     
    15621607        zu   = 0._wp 
    15631608        zv   = 0._wp 
    1564         DO_2D( 0, 0, 0, 0 ) 
     1609        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1610        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    15651611         zthermal = rab_n(ji,jj,1,jp_tem) !ideally use ibld not 1?? 
    15661612         zbeta    = rab_n(ji,jj,1,jp_sal) 
     
    16191665        REAL(wp) :: ztemp 
    16201666 
    1621         DO_2D( 0, 0, 0, 0 ) 
     1667        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1668        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    16221669           ztemp = zu(ji,jj) 
    16231670           zu(ji,jj) = zu(ji,jj) * zcos_w(ji,jj) + zv(ji,jj) * zsin_w(ji,jj) 
     
    16531700      znd_param(:,:) = 0._wp 
    16541701 
    1655         DO_2D( 0, 0, 0, 0 ) 
     1702        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1703        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    16561704          ztmp =  r1_ft(ji,jj) *  MIN( 111.e3_wp , e1u(ji,jj) ) / rn_osm_mle_lf 
    16571705          zwb_fk(ji,jj) = rn_osm_mle_ce * hmle(ji,jj) * hmle(ji,jj) * ztmp * zdbds_mle(ji,jj) * zdbds_mle(ji,jj) 
    16581706        END_2D 
    1659         DO_2D( 0, 0, 0, 0 ) 
     1707        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1708        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    16601709                 ! 
    16611710         IF ( lconv(ji,jj) ) THEN 
     
    16811730 
    16821731! Diagnosis 
    1683         DO_2D( 0, 0, 0, 0 ) 
     1732        ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1733        DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    16841734          IF ( lconv(ji,jj) ) THEN 
    16851735            zwb_ent = - 2.0 * 0.2 * zwbav(ji,jj) & 
     
    17511801 
    17521802 
    1753      DO_2D( 0, 0, 0, 0 ) 
     1803     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1804     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    17541805        IF ( jbase(ji,jj)+1 < mbkt(ji,jj) ) THEN 
    17551806           zthermal = rab_n(ji,jj,1,jp_tem) !ideally use ibld not 1?? 
     
    17811832     REAL(wp), PARAMETER :: zgamma_b = 2.25, zzeta_sh = 0.15 
    17821833 
    1783      DO_2D( 0, 0, 0, 0 ) 
     1834     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1835     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    17841836        IF ( ibld(ji,jj) + jp_ext(ji,jj) < mbkt(ji,jj) ) THEN 
    17851837           IF ( lconv(ji,jj) ) THEN  ! convective conditions 
     
    18661918      REAL(wp) :: zzeta_v = 0.45 
    18671919      ! 
    1868       DO_2D( 0, 0, 0, 0 ) 
     1920      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1921      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    18691922         ! 
    18701923         IF ( ibld(ji,jj) + jp_ext(ji,jj) < mbkt(ji,jj) ) THEN 
     
    19291982    REAL, PARAMETER :: a_ddh = 2.5, a_ddh_2 = 3.5 ! also in pycnocline_depth 
    19301983 
    1931   DO_2D( 0, 0, 0, 0 ) 
     1984  ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     1985  DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    19321986 
    19331987    IF ( lshear(ji,jj) ) THEN 
     
    20722126    REAL(wp) :: zthermal, zbeta 
    20732127 
    2074      DO_2D( 0, 0, 0, 0 ) 
     2128     ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     2129     DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    20752130        IF ( ibld(ji,jj) - imld(ji,jj) > 1 ) THEN 
    20762131! 
     
    21762231      REAL, PARAMETER :: a_ddh_2 = 3.5 ! also in pycnocline_depth 
    21772232 
    2178     DO_2D( 0, 0, 0, 0 ) 
     2233    ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     2234    DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    21792235 
    21802236      IF ( lshear(ji,jj) ) THEN 
     
    23222378      zmld(:,:)  = 0._wp               ! here hmlp used as a dummy variable, integrating vertically N^2 
    23232379      zN2_c = grav * rn_osm_mle_rho_c * r1_rho0   ! convert density criteria into N^2 criteria 
    2324       DO_3D( 1, 1, 1, 1, nlb10, jpkm1 ) 
     2380      ! [comm_cleanup] ! DO_3D( 1, 1, 1, 1, nlb10, jpkm1 ) 
     2381      DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, nlb10, jpkm1 ) 
    23252382         ikt = mbkt(ji,jj) 
    23262383         zmld(ji,jj) = zmld(ji,jj) + MAX( rn2b(ji,jj,jk) , 0._wp ) * e3w(ji,jj,jk,Kmm) 
    23272384         IF( zmld(ji,jj) < zN2_c )   mld_prof(ji,jj) = MIN( jk , ikt ) + 1   ! Mixed layer level 
    23282385      END_3D 
    2329       DO_2D( 1, 1, 1, 1 ) 
     2386      ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     2387      DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    23302388         mld_prof(ji,jj) = MAX(mld_prof(ji,jj),ibld(ji,jj)) 
    23312389         zmld(ji,jj) = gdepw(ji,jj,mld_prof(ji,jj),Kmm) 
     
    23372395      ztm(:,:) = 0._wp 
    23382396      zsm(:,:) = 0._wp 
    2339       DO_3D( 1, 1, 1, 1, 1, ikmax ) 
     2397      ! [comm_cleanup] ! DO_3D( 1, 1, 1, 1, 1, ikmax ) 
     2398      DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, ikmax ) 
    23402399         zc = e3t(ji,jj,jk,Kmm) * REAL( MIN( MAX( 0, mld_prof(ji,jj)-jk ) , 1  )  )    ! zc being 0 outside the ML t-points 
    23412400         ztm(ji,jj) = ztm(ji,jj) + zc * ts(ji,jj,jk,jp_tem,Kmm) 
     
    23472406      ! calculate horizontal gradients at u & v points 
    23482407 
    2349       DO_2D( 1, 0, 0, 0 ) 
     2408      ! [comm_cleanup] ! DO_2D( 1, 0, 0, 0 ) 
     2409      DO_2D( nn_hls, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    23502410         zdtdx(ji,jj) = ( ztm(ji+1,jj) - ztm( ji,jj) )  * umask(ji,jj,1) / e1u(ji,jj) 
    23512411         zdsdx(ji,jj) = ( zsm(ji+1,jj) - zsm( ji,jj) )  * umask(ji,jj,1) / e1u(ji,jj) 
     
    23552415      END_2D 
    23562416 
    2357       DO_2D( 0, 0, 1, 0 ) 
     2417      ! [comm_cleanup] ! DO_2D( 0, 0, 1, 0 ) 
     2418      DO_2D( nn_hls-1, nn_hls-1, nn_hls, nn_hls-1 ) 
    23582419         zdtdy(ji,jj) = ( ztm(ji,jj+1) - ztm( ji,jj) ) * vmask(ji,jj,1) / e1v(ji,jj) 
    23592420         zdsdy(ji,jj) = ( zsm(ji,jj+1) - zsm( ji,jj) ) * vmask(ji,jj,1) / e1v(ji,jj) 
     
    23662427      CALL eos_rab(ztsm_midv, zmld_midv, zabv, Kmm) 
    23672428 
    2368       DO_2D( 1, 0, 0, 0 ) 
     2429      ! [comm_cleanup] ! DO_2D( 1, 0, 0, 0 ) 
     2430      DO_2D( nn_hls, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    23692431         dbdx_mle(ji,jj) = grav*(zdtdx(ji,jj)*zabu(ji,jj,jp_tem) - zdsdx(ji,jj)*zabu(ji,jj,jp_sal)) 
    23702432      END_2D 
    2371       DO_2D( 0, 0, 1, 0 ) 
     2433      ! [comm_cleanup] ! DO_2D( 0, 0, 1, 0 ) 
     2434      DO_2D( nn_hls-1, nn_hls-1, nn_hls, nn_hls-1 ) 
    23722435         dbdy_mle(ji,jj) = grav*(zdtdy(ji,jj)*zabv(ji,jj,jp_tem) - zdsdy(ji,jj)*zabv(ji,jj,jp_sal)) 
    23732436      END_2D 
    23742437 
    2375       DO_2D( 0, 0, 0, 0 ) 
     2438      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     2439      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    23762440        ztmp =  r1_ft(ji,jj) *  MIN( 111.e3_wp , e1u(ji,jj) ) / rn_osm_mle_lf 
    23772441        zdbds_mle(ji,jj) = SQRT( 0.5_wp * ( dbdx_mle(ji,jj) * dbdx_mle(ji,jj) + dbdy_mle(ji,jj) * dbdy_mle(ji,jj) & 
     
    24002464   ! Calculate vertical buoyancy, heat and salinity fluxes due to MLE. 
    24012465 
    2402       DO_2D( 0, 0, 0, 0 ) 
     2466      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     2467      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    24032468       IF ( lconv(ji,jj) ) THEN 
    24042469          ztmp =  r1_ft(ji,jj) *  MIN( 111.e3_wp , e1u(ji,jj) ) / rn_osm_mle_lf 
     
    24092474      END_2D 
    24102475   ! Timestep mixed layer eddy depth. 
    2411       DO_2D( 0, 0, 0, 0 ) 
     2476      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     2477      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    24122478        IF ( lmle(ji,jj) ) THEN  ! MLE layer growing. 
    24132479! Buoyancy gradient at base of MLE layer. 
     
    24332499 
    24342500      mld_prof = 4 
    2435       DO_3D( 0, 0, 0, 0, 5, jpkm1 ) 
     2501 
     2502      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 5, jpkm1 ) 
     2503      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 5, jpkm1 ) 
    24362504      IF ( hmle(ji,jj) >= gdepw(ji,jj,jk,Kmm) ) mld_prof(ji,jj) = MIN(mbkt(ji,jj), jk) 
    24372505      END_3D 
    2438       DO_2D( 0, 0, 0, 0 ) 
     2506      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     2507      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    24392508         zhmle(ji,jj) = gdepw(ji,jj, mld_prof(ji,jj),Kmm) 
    24402509      END_2D 
     
    25852654         !                                ! 1/(f^2+tau^2)^1/2 at t-point (needed in both nn_osm_mle case) 
    25862655         z1_t2 = 2.e-5 
    2587          DO_2D( 1, 1, 1, 1 ) 
     2656         ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     2657         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    25882658            r1_ft(ji,jj) = MIN(1./( ABS(ff_t(ji,jj)) + epsln ), ABS(ff_t(ji,jj))/z1_t2**2) 
    25892659         END_2D 
     
    26302700        etmean(:,:,:) = 0.e0 
    26312701 
    2632         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     2702        ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     2703        DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    26332704           etmean(ji,jj,jk) = tmask(ji,jj,jk)                     & 
    26342705                &  / MAX( 1.,  umask(ji-1,jj  ,jk) + umask(ji,jj,jk)   & 
     
    26442715        etmean(:,:,:) = 0.e0 
    26452716 
    2646         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     2717        ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     2718        DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    26472719           etmean(ji,jj,jk) = tmask(ji, jj,jk)                           & 
    26482720                & / MAX( 1., 2.* tmask(ji,jj,jk)                           & 
     
    27592831     ! 
    27602832     hbl(:,:)  = 0._wp              ! here hbl used as a dummy variable, integrating vertically N^2 
    2761      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     2833     ! [comm_cleanup] ! DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     2834     DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpkm1 ) 
    27622835        ikt = mbkt(ji,jj) 
    27632836        hbl(ji,jj) = hbl(ji,jj) + MAX( rn2(ji,jj,jk) , 0._wp ) * e3w(ji,jj,jk,Kmm) 
     
    27652838     END_3D 
    27662839     ! 
    2767      DO_2D( 1, 1, 1, 1 ) 
     2840     ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     2841     DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    27682842        iiki = MAX(4,imld_rst(ji,jj)) 
    27692843        hbl (ji,jj) = gdepw(ji,jj,iiki,Kmm  )    ! Turbocline depth 
     
    28122886      ENDIF 
    28132887 
    2814       DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     2888      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     2889      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    28152890         pts(ji,jj,jk,jp_tem,Krhs) =  pts(ji,jj,jk,jp_tem,Krhs)                      & 
    28162891            &                 - (  ghamt(ji,jj,jk  )  & 
     
    28792954      !code saving tracer trends removed, replace with trdmxl_oce 
    28802955 
    2881       DO_3D( 0, 0, 0, 0, 1, jpkm1 )       ! add non-local u and v fluxes 
     2956      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 )       ! add non-local u and v fluxes 
     2957      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )       ! add non-local u and v fluxes 
    28822958         puu(ji,jj,jk,Krhs) =  puu(ji,jj,jk,Krhs)                      & 
    28832959            &                 - (  ghamu(ji,jj,jk  )  & 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfphy.F90

    r14574 r14636  
    5454   INTEGER, PARAMETER ::   np_OSM = 5   ! OSMOSIS-OBL closure scheme for Kz 
    5555 
    56    LOGICAL ::   l_zdfsh2   ! shear production term flag (=F for CST, =T otherwise (i.e. TKE, GLS, RIC)) 
     56   LOGICAL, PUBLIC ::   l_zdfsh2   ! shear production term flag (=F for CST, =T otherwise (i.e. TKE, GLS, RIC)) 
    5757 
    5858   !!---------------------------------------------------------------------- 
     
    284284      CASE( np_TKE )   ;   CALL zdf_tke( kt, Kbb, Kmm, zsh2, avm_k, avt_k )    ! TKE closure scheme for Kz 
    285285      CASE( np_GLS )   ;   CALL zdf_gls( kt, Kbb, Kmm, zsh2, avm_k, avt_k )    ! GLS closure scheme for Kz 
     286      ! [comm_cleanup] ! modified but not tested - no ref config uses this scheme 
    286287      CASE( np_OSM )   ;   CALL zdf_osm( kt, Kbb, Kmm, Krhs, avm_k, avt_k )    ! OSMOSIS closure scheme for Kz 
    287288!     CASE( np_CST )                                  ! Constant Kz (reset avt, avm to the background value) 
     
    322323 
    323324      !                                         !* Lateral boundary conditions (sign unchanged) 
    324       IF( l_zdfsh2 ) THEN 
    325          CALL lbc_lnk( 'zdfphy', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp,   & 
    326             &                    avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
    327       ELSE 
    328          CALL lbc_lnk( 'zdfphy', avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
    329       ENDIF 
    330       ! 
    331       IF( l_zdfdrg ) THEN     ! drag  have been updated (non-linear cases) 
    332          IF( ln_isfcav ) THEN   ;  CALL lbc_lnk( 'zdfphy', rCdU_top, 'T', 1.0_wp , rCdU_bot, 'T', 1.0_wp )   ! top & bot drag 
    333          ELSE                   ;  CALL lbc_lnk( 'zdfphy', rCdU_bot, 'T', 1.0_wp )                       ! bottom drag only 
     325      ! [comm_cleanup] ! lbc_lnk shifted in stp 
     326      IF(nn_hls.eq.1) THEN  
     327         IF( l_zdfsh2 ) THEN 
     328            CALL lbc_lnk( 'zdfphy', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp,   & 
     329               &                    avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     330         ELSE 
     331            CALL lbc_lnk( 'zdfphy', avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     332         ENDIF 
     333      ! 
     334         IF( l_zdfdrg ) THEN     ! drag  have been updated (non-linear cases) 
     335            IF( ln_isfcav ) THEN   ;  CALL lbc_lnk( 'zdfphy', rCdU_top, 'T', 1.0_wp , rCdU_bot, 'T', 1.0_wp )   ! top & bot drag 
     336            ELSE                   ;  CALL lbc_lnk( 'zdfphy', rCdU_bot, 'T', 1.0_wp )                       ! bottom drag only 
     337            ENDIF 
    334338         ENDIF 
    335339      ENDIF 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfric.F90

    r14072 r14636  
    156156      ! 
    157157      !                       !==  avm and avt = F(Richardson number)  ==! 
    158       DO_3D( 1, 0, 1, 0, 2, jpkm1 )       ! coefficient = F(richardson number) (avm-weighted Ri) 
     158      ! [comm_cleanup] ! DO_3D( 1, 0, 1, 0, 2, jpkm1 )       ! coefficient = F(richardson number) (avm-weighted Ri) 
     159      DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 2, jpkm1 )       ! coefficient = F(richardson number) (avm-weighted Ri) 
    159160         zcfRi = 1._wp / (  1._wp + rn_alp * MAX(  0._wp , avm(ji,jj,jk) * rn2(ji,jj,jk) / ( p_sh2(ji,jj,jk) + 1.e-20 ) )  ) 
    160161         zav   = rn_avmri * zcfRi**nn_ric 
     
    169170      IF( ln_mldw ) THEN      !==  set a minimum value in the Ekman layer  ==! 
    170171         ! 
    171          DO_2D( 0, 0, 0, 0 )             !* Ekman depth 
     172         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )             !* Ekman depth 
     173         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )  
    172174            zustar = SQRT( taum(ji,jj) * r1_rho0 ) 
    173175            zhek   = rn_ekmfc * zustar / ( ABS( ff_t(ji,jj) ) + rsmall )   ! Ekman depth 
    174176            zh_ekm(ji,jj) = MAX(  rn_mldmin , MIN( zhek , rn_mldmax )  )   ! set allowed range 
    175177         END_2D 
    176          DO_3D( 0, 0, 0, 0, 2, jpkm1 )   !* minimum mixing coeff. within the Ekman layer 
     178         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )   !* minimum mixing coeff. within the Ekman layer 
     179         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )   !* minimum mixing coeff. within the Ekman layer 
    177180            IF( gdept(ji,jj,jk,Kmm) < zh_ekm(ji,jj) ) THEN 
    178181               p_avm(ji,jj,jk) = MAX(  p_avm(ji,jj,jk), rn_wvmix  ) * wmask(ji,jj,jk) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfsh2.F90

    r14072 r14636  
    6565      DO jk = 2, jpkm1                 !* Shear production at uw- and vw-points (energy conserving form) 
    6666         IF ( cpl_sdrftx .AND. ln_stshear )  THEN       ! Surface Stokes Drift available  ===>>>  shear + stokes drift contibution 
    67             DO_2D( 1, 0, 1, 0 ) 
     67            ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 
     68            DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
    6869               zsh2u(ji,jj) = ( p_avm(ji+1,jj,jk) + p_avm(ji,jj,jk) )        & 
    6970                  &         * ( uu (ji,jj,jk-1,Kmm) -   uu (ji,jj,jk,Kmm)    & 
     
    7879            END_2D 
    7980         ELSE 
    80             DO_2D( 1, 0, 1, 0 )     !* 2 x shear production at uw- and vw-points (energy conserving form) 
     81            ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 )     !* 2 x shear production at uw- and vw-points (energy conserving form) 
     82            DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )     !* 2 x shear production at uw- and vw-points (energy conserving form) 
    8183               zsh2u(ji,jj) = ( p_avm(ji+1,jj,jk) + p_avm(ji,jj,jk) ) & 
    8284                  &         * (   uu(ji,jj,jk-1,Kmm) -   uu(ji,jj,jk,Kmm) ) & 
     
    9193            END_2D 
    9294         ENDIF 
    93          DO_2D( 0, 0, 0, 0 )     !* shear production at w-point ! coast mask: =2 at the coast ; =1 otherwise (NB: wmask useless as zsh2 are masked) 
     95         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )     !* shear production at w-point ! coast mask: =2 at the coast ; =1 otherwise (NB: wmask useless as zsh2 are masked) 
     96         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )     !* shear production at w-point ! coast mask: =2 at the coast ; =1 otherwise (NB: wmask useless as zsh2 are masked) 
    9497            p_sh2(ji,jj,jk) = 0.25 * (   ( zsh2u(ji-1,jj) + zsh2u(ji,jj) ) * ( 2. - umask(ji-1,jj,jk) * umask(ji,jj,jk) )   & 
    9598               &                       + ( zsh2v(ji,jj-1) + zsh2v(ji,jj) ) * ( 2. - vmask(ji,jj-1,jk) * vmask(ji,jj,jk) )   ) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdfswm.F90

    r13295 r14636  
    6363      ! 
    6464      zcoef = 1._wp * 0.353553_wp 
    65       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     65      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     66      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    6667         zqb = zcoef * hsw(ji,jj) * tsd2d(ji,jj) * EXP( -3. * wnum(ji,jj) * gdepw(ji,jj,jk,Kmm) ) * wmask(ji,jj,jk) 
    6768         ! 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/ZDF/zdftke.F90

    r14072 r14636  
    241241      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    242242      ! 
    243       DO_2D( 0, 0, 0, 0 ) 
     243      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     244      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    244245         en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) 
    245246         zdiag(ji,jj,1) = 1._wp/en(ji,jj,1) 
     
    258259      IF( .NOT.ln_drg_OFF ) THEN    !== friction used as top/bottom boundary condition on TKE 
    259260         ! 
    260          DO_2D( 0, 0, 0, 0 )        ! bottom friction 
     261         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )        ! bottom friction 
     262         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )        ! bottom friction 
    261263            zmsku = ( 2. - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 
    262264            zmskv = ( 2. - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) ) 
     
    267269         END_2D 
    268270         IF( ln_isfcav ) THEN 
    269             DO_2D( 0, 0, 0, 0 )     ! top friction 
     271            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )     ! top friction 
     272            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )     ! top friction  
    270273               zmsku = ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 
    271274               zmskv = ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) ) 
     
    294297!!gm  ! PS: currently we don't have neither the 2 stress components at t-point !nor the angle between u* and u_s 
    295298!!gm  ! so we will overestimate the LC velocity....   !!gm I will do the work if !LC have an effect ! 
    296             DO_2D( 0, 0, 0, 0 ) 
     299            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     300            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    297301!!XC                  zWlc2(ji,jj) = 0.5_wp * SQRT( taum(ji,jj) * r1_rho0 * ( ut0sd(ji,jj)**2 +vt0sd(ji,jj)**2 )  ) 
    298302                  zWlc2(ji,jj) = 0.5_wp *  ( ut0sd(ji,jj)**2 +vt0sd(ji,jj)**2 ) 
     
    301305!  Projection of Stokes drift in the wind stress direction 
    302306! 
    303             DO_2D( 0, 0, 0, 0 ) 
     307            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     308            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    304309                  ztaui   = 0.5_wp * ( utau(ji,jj) + utau(ji-1,jj) ) 
    305310                  ztauj   = 0.5_wp * ( vtau(ji,jj) + vtau(ji,jj-1) ) 
     
    307312                  zWlc2(ji,jj) = 0.5_wp * z1_norm * ( MAX( ut0sd(ji,jj)*ztaui + vt0sd(ji,jj)*ztauj, 0._wp ) )**2 
    308313            END_2D 
    309          CALL lbc_lnk      ( 'zdftke', zWlc2, 'T', 1. ) 
     314            ! [comm_cleanup] 
     315            IF (nn_hls.eq.1) CALL lbc_lnk      ( 'zdftke', zWlc2, 'T', 1. ) 
    310316! 
    311317         ELSE                          ! Surface Stokes drift deduced from surface stress 
     
    315321            !                                ! 1/2 Wlc^2 = 0.5 * 0.016 * 0.016 |tau| /( rho_air Cdrag ) 
    316322            zcof = 0.5 * 0.016 * 0.016 / ( zrhoa * zcdrag )      ! to convert stress in 10m wind using a constant drag 
    317             DO_2D( 1, 1, 1, 1 ) 
     323            ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     324            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    318325               zWlc2(ji,jj) = zcof * taum(ji,jj) 
    319326            END_2D 
     
    331338         !                             !- compare LHS to RHS of Eq.47 
    332339         imlc(:,:) = mbkt(:,:) + 1       ! Initialization to the number of w ocean point (=2 over land) 
    333          DO_3DS( 1, 1, 1, 1, jpkm1, 2, -1 ) 
     340         ! [comm_cleanup] ! DO_3DS( 1, 1, 1, 1, jpkm1, 2, -1 ) 
     341         DO_3DS( nn_hls, nn_hls, nn_hls, nn_hls, jpkm1, 2, -1 ) 
    334342            IF( zpelc(ji,jj,jk) > zWlc2(ji,jj) )   imlc(ji,jj) = jk 
    335343         END_3D 
    336344         !                               ! finite LC depth 
    337          DO_2D( 1, 1, 1, 1 ) 
     345         ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     346         DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
    338347            zhlc(ji,jj) = gdepw(ji,jj,imlc(ji,jj),Kmm) 
    339348         END_2D 
    340349         ! 
    341350         zcof = 0.016 / SQRT( zrhoa * zcdrag ) 
    342          DO_2D( 0, 0, 0, 0 ) 
     351         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     352         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    343353            zus = SQRT( 2. * zWlc2(ji,jj) )             ! Stokes drift 
    344354            zus3(ji,jj) = MAX( 0._wp, 1._wp - zice_fra(ji,jj) ) * zus * zus * zus * tmask(ji,jj,1) ! zus > 0. ok 
    345355         END_2D 
    346          DO_3D( 0, 0, 0, 0, 2, jpkm1 )                  !* TKE Langmuir circulation source term added to en 
     356         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )                  !* TKE Langmuir circulation source term added to en 
     357         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                  !* TKE Langmuir circulation source term added to en 
    347358            IF ( zus3(ji,jj) /= 0._wp ) THEN 
    348359               IF ( gdepw(ji,jj,jk,Kmm) - zhlc(ji,jj) < 0 .AND. wmask(ji,jj,jk) /= 0. ) THEN 
     
    365376      ! 
    366377      IF( nn_pdl == 1 ) THEN          !* Prandtl number = F( Ri ) 
    367          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     378         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     379         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    368380            !                             ! local Richardson number 
    369381            IF (rn2b(ji,jj,jk) <= 0.0_wp) then 
     
    377389      ENDIF 
    378390      ! 
    379       DO_3D( 0, 0, 0, 0, 2, jpkm1 )   !* Matrix and right hand side in en 
     391      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )   !* Matrix and right hand side in en 
     392      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )   !* Matrix and right hand side in en 
    380393         zcof   = zfact1 * tmask(ji,jj,jk) 
    381394         !                                   ! A minimum of 2.e-5 m2/s is imposed on TKE vertical 
     
    406419 
    407420         CASE ( 0 ) ! Dirichlet BC 
    408             DO_2D( 0, 0, 0, 0 )    ! en(1)   = rn_ebb taum / rho0  (min value rn_emin0) 
     421            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )    ! en(1)   = rn_ebb taum / rho0  (min value rn_emin0) 
     422            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )    ! en(1)   = rn_ebb taum / rho0  (min value rn_emin0) 
    409423               IF ( phioc(ji,jj) < 0 )  phioc(ji,jj) = 0._wp 
    410424               en(ji,jj,1) = MAX( rn_emin0, .5 * ( 15.8 * phioc(ji,jj) / rho0 )**(2./3.) )  * tmask(ji,jj,1) 
     
    413427 
    414428         CASE ( 1 ) ! Neumann BC 
    415             DO_2D( 0, 0, 0, 0 ) 
     429            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     430            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    416431               IF ( phioc(ji,jj) < 0 )  phioc(ji,jj) = 0._wp 
    417432               en(ji,jj,2)    = en(ji,jj,2) + ( rn_Dt * phioc(ji,jj) / rho0 ) /e3w(ji,jj,2,Kmm) 
     
    427442      ! 
    428443      !                          !* Matrix inversion from level 2 (tke prescribed at level 1) 
    429       DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     444      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
     445      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! First recurrence : Dk = Dk - Lk * Uk-1 / Dk-1 
    430446         zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    431447      END_3D 
     
    434450!         zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1)    ! Surface boudary conditions on tke 
    435451!      END_2D 
    436       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     452      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     453      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    437454         zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) *zd_lw(ji,jj,jk-1) 
    438455      END_3D 
    439       DO_2D( 0, 0, 0, 0 )                          ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     456      ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )                          ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
     457      DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )                          ! thrid recurrence : Ek = ( Lk - Uk * Ek+1 ) / Dk 
    440458         en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 
    441459      END_2D 
    442       DO_3DS( 0, 0, 0, 0, jpk-2, 2, -1 ) 
     460      ! [comm_cleanup] ! DO_3DS( 0, 0, 0, 0, jpk-2, 2, -1 ) 
     461      DO_3DS( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, jpk-2, 2, -1 ) 
    443462         en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    444463      END_3D 
    445       DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! set the minimum value of tke 
     464      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )                ! set the minimum value of tke 
     465      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )                ! set the minimum value of tke 
    446466         en(ji,jj,jk) = MAX( en(ji,jj,jk), rn_emin ) * wmask(ji,jj,jk) 
    447467      END_3D 
     
    456476      ! 
    457477      IF( nn_etau == 1 ) THEN           !* penetration below the mixed layer (rn_efr fraction) 
    458          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     478         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     479         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    459480            en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -gdepw(ji,jj,jk,Kmm) / htau(ji,jj) )   & 
    460481               &                                 * MAX( 0._wp, 1._wp - zice_fra(ji,jj) ) * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    461482         END_3D 
    462483      ELSEIF( nn_etau == 2 ) THEN       !* act only at the base of the mixed layer (jk=nmln)  (rn_efr fraction) 
    463          DO_2D( 0, 0, 0, 0 ) 
     484         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     485         DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    464486            jk = nmln(ji,jj) 
    465487            en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -gdepw(ji,jj,jk,Kmm) / htau(ji,jj) )   & 
     
    467489         END_2D 
    468490      ELSEIF( nn_etau == 3 ) THEN       !* penetration belox the mixed layer (HF variability) 
    469          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     491         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     492         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    470493            ztx2 = utau(ji-1,jj  ) + utau(ji,jj) 
    471494            zty2 = vtau(ji  ,jj-1) + vtau(ji,jj) 
     
    548571            zraug = vkarmn * 2.e5_wp / ( rho0 * grav ) 
    549572#if ! defined key_si3 && ! defined key_cice 
    550             DO_2D( 0, 0, 0, 0 )                  ! No sea-ice 
     573            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )                  ! No sea-ice 
     574            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )                  ! No sea-ice 
    551575               zmxlm(ji,jj,1) =  zraug * taum(ji,jj) * tmask(ji,jj,1) 
    552576            END_2D 
     
    555579            ! 
    556580            CASE( 0 )                      ! No scaling under sea-ice 
    557                DO_2D( 0, 0, 0, 0 ) 
     581               ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     582               DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    558583                  zmxlm(ji,jj,1) = zraug * taum(ji,jj) * tmask(ji,jj,1) 
    559584               END_2D 
    560585               ! 
    561586            CASE( 1 )                      ! scaling with constant sea-ice thickness 
    562                DO_2D( 0, 0, 0, 0 ) 
     587               ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     588               DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    563589                  zmxlm(ji,jj,1) =  ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & 
    564590                     &                          fr_i(ji,jj)   * rn_mxlice           ) * tmask(ji,jj,1) 
     
    566592               ! 
    567593            CASE( 2 )                      ! scaling with mean sea-ice thickness 
    568                DO_2D( 0, 0, 0, 0 ) 
     594               ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     595               DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    569596#if defined key_si3 
    570597                  zmxlm(ji,jj,1) = ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & 
     
    578605               ! 
    579606            CASE( 3 )                      ! scaling with max sea-ice thickness 
    580                DO_2D( 0, 0, 0, 0 ) 
     607               ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     608               DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    581609                  zmaxice = MAXVAL( h_i(ji,jj,:) ) 
    582610                  zmxlm(ji,jj,1) = ( ( 1._wp - fr_i(ji,jj) ) * zraug * taum(ji,jj) + & 
     
    587615#endif 
    588616            ! 
    589             DO_2D( 0, 0, 0, 0 ) 
     617            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     618            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
    590619               zmxlm(ji,jj,1) = MAX( rn_mxl0, zmxlm(ji,jj,1) ) 
    591620            END_2D 
     
    596625      ENDIF 
    597626      ! 
    598       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     627      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     628      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    599629         zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 
    600630         zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 )  ) 
     
    611641      ! where wmask = 0 set zmxlm == e3w(:,:,:,Kmm) 
    612642      CASE ( 0 )           ! bounded by the distance to surface and bottom 
    613          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     643         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     644         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    614645            zemxl = MIN( gdepw(ji,jj,jk,Kmm) - gdepw(ji,jj,mikt(ji,jj),Kmm), zmxlm(ji,jj,jk),   & 
    615646            &            gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) - gdepw(ji,jj,jk,Kmm) ) 
     
    622653         ! 
    623654      CASE ( 1 )           ! bounded by the vertical scale factor 
    624          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     655         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     656         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    625657            zemxl = MIN( e3w(ji,jj,jk,Kmm), zmxlm(ji,jj,jk) ) 
    626658            zmxlm(ji,jj,jk) = zemxl 
     
    629661         ! 
    630662      CASE ( 2 )           ! |dk[xml]| bounded by e3t : 
    631          DO_3D( 0, 0, 0, 0, 2, jpkm1 )        ! from the surface to the bottom : 
     663         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! from the surface to the bottom : 
     664         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )       ! from the surface to the bottom : 
    632665            zmxlm(ji,jj,jk) =   & 
    633666               &    MIN( zmxlm(ji,jj,jk-1) + e3t(ji,jj,jk-1,Kmm), zmxlm(ji,jj,jk) ) 
    634667         END_3D 
    635          DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 )   ! from the bottom to the surface : 
     668         ! [comm_cleanup] ! DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 )   ! from the bottom to the surface : 
     669         DO_3DS( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, jpkm1, 2, -1 )   ! from the bottom to the surface : 
    636670            zemxl = MIN( zmxlm(ji,jj,jk+1) + e3t(ji,jj,jk+1,Kmm), zmxlm(ji,jj,jk) ) 
    637671            zmxlm(ji,jj,jk) = zemxl 
     
    640674         ! 
    641675      CASE ( 3 )           ! lup and ldown, |dk[xml]| bounded by e3t : 
    642          DO_3D( 0, 0, 0, 0, 2, jpkm1 )        ! from the surface to the bottom : lup 
     676         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 )        ! from the surface to the bottom : lup 
     677         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )        ! from the surface to the bottom : lup 
    643678            zmxld(ji,jj,jk) =    & 
    644679               &    MIN( zmxld(ji,jj,jk-1) + e3t(ji,jj,jk-1,Kmm), zmxlm(ji,jj,jk) ) 
    645680         END_3D 
    646          DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 )   ! from the bottom to the surface : ldown 
     681         ! [comm_cleanup] ! DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 )   ! from the bottom to the surface : ldown 
     682         DO_3DS( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, jpkm1, 2, -1 )   ! from the bottom to the surface : ldown 
    647683            zmxlm(ji,jj,jk) =   & 
    648684               &    MIN( zmxlm(ji,jj,jk+1) + e3t(ji,jj,jk+1,Kmm), zmxlm(ji,jj,jk) ) 
    649685         END_3D 
    650          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     686         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     687         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    651688            zemlm = MIN ( zmxld(ji,jj,jk),  zmxlm(ji,jj,jk) ) 
    652689            zemlp = SQRT( zmxld(ji,jj,jk) * zmxlm(ji,jj,jk) ) 
     
    660697      !                     !  Vertical eddy viscosity and diffusivity  (avm and avt) 
    661698      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    662       DO_3D( 0, 0, 0, 0, 1, jpkm1 )   !* vertical eddy viscosity & diffivity at w-points 
     699      ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 )   !* vertical eddy viscosity & diffivity at w-points 
     700      DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )   !* vertical eddy viscosity & diffivity at w-points 
    663701         zsqen = SQRT( en(ji,jj,jk) ) 
    664702         zav   = rn_ediff * zmxlm(ji,jj,jk) * zsqen 
     
    670708      ! 
    671709      IF( nn_pdl == 1 ) THEN          !* Prandtl number case: update avt 
    672          DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     710         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     711         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    673712            p_avt(ji,jj,jk)   = MAX( apdlr(ji,jj,jk) * p_avt(ji,jj,jk), avtb_2d(ji,jj) * avtb(jk) ) * wmask(ji,jj,jk) 
    674713         END_3D 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/step.F90

    r14576 r14636  
    168168                         CALL bn2    ( ts(:,:,:,:,Nnn), rab_n, rn2, Nnn  ) ! now    Brunt-Vaisala frequency 
    169169 
     170      ! [comm_cleanup]  
     171      IF (nn_hls.eq.2) THEN 
     172         IF( l_zdfsh2 ) THEN 
     173            CALL lbc_lnk( 'stp', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp,   & 
     174               &                    avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     175         ELSE 
     176            CALL lbc_lnk( 'stp', avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     177         ENDIF 
     178      ENDIF 
    170179      !  VERTICAL PHYSICS 
    171180                         CALL zdf_phy( kstp, Nbb, Nnn, Nrhs )   ! vertical physics update (top/bot drag, avt, avs, avm + MLD) 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/stpmlf.F90

    r14576 r14636  
    171171      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    172172      !  THERMODYNAMICS 
     173      ! [ comm_cleanup ] ! lbc_lnk for AMM12 with blp / triad & for atf_qco with ln_iceberg .true. 
     174      IF( nn_hls.eq.2)   CALL lbc_lnk( 'stp_MLF', ts(:,:,:,:,Nbb), 'T', 1._wp) 
    173175                         CALL eos_rab( ts(:,:,:,:,Nbb), rab_b, Nnn )       ! before local thermal/haline expension ratio at T-points 
    174176                         CALL eos_rab( ts(:,:,:,:,Nnn), rab_n, Nnn )       ! now    local thermal/haline expension ratio at T-points 
     
    177179 
    178180      !  VERTICAL PHYSICS 
     181      ! [comm_cleanup] ! lbc_lnk from ZDF 
     182      IF (nn_hls.eq.2) THEN 
     183         IF( l_zdfsh2 ) THEN 
     184            CALL lbc_lnk( 'stp_MLF', avm_k, 'W', 1.0_wp , avt_k, 'W', 1.0_wp,   & 
     185               &                    avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     186         ELSE 
     187            CALL lbc_lnk( 'stp_MLF', avm  , 'W', 1.0_wp , avt  , 'W', 1.0_wp , avs , 'W', 1.0_wp ) 
     188         ENDIF 
     189         ! CALL lbc_lnk( 'stp_MLF', uu(:,:,:,Nnn), 'U', -1.0_wp, vv(:,:,:,Nnn), 'V', -1.0_wp ) 
     190         ! IF(.NOT.lk_linssh) CALL lbc_lnk( 'stp_MLF', r3u(:,:,Nnn), 'U', 1.0_wp, r3v(:,:,Nnn), 'V', 1.0_wp, r3t(:,:,Nnn), 'T', 1.0_wp ) 
     191      ENDIF 
    179192                         CALL zdf_phy( kstp, Nbb, Nnn, Nrhs )   ! vertical physics update (top/bot drag, avt, avs, avm + MLD) 
    180193 
     
    309322#endif 
    310323 
    311      ! [comm_cleanup] 
    312      IF (nn_hls.EQ.2) THEN 
     324      ! [comm_cleanup] ! lbc_lnk from tra_adv 
     325      IF (nn_hls.EQ.2) THEN 
    313326         SELECT CASE ( nadv ) 
    314327         CASE ( np_FCT )                                 ! FCT scheme : 2nd / 4th order 
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/TOP/TRP/trcldf.F90

    r14086 r14636  
    8383      zahv(:,:,:) = rldf * ahtv(:,:,:) 
    8484      !                                  !* Enhanced zonal diffusivity coefficent in the equatorial domain 
    85       DO_3D( 1, 1, 1, 1, 1, jpk ) 
     85      ! [ comm_cleanup ] DO_3D( 1, 1, 1, 1, 1, jpk ) 
     86      DO_3D( nn_hls, nn_hls, nn_hls, nn_hls, 1, jpk ) 
    8687         IF( gdept(ji,jj,jk,Kmm) > 200. .AND. gphit(ji,jj) < 5. .AND. gphit(ji,jj) > -5. ) THEN 
    8788            zdep = MAX( gdept(ji,jj,jk,Kmm) - 1000., 0. ) / 1000. 
Note: See TracChangeset for help on using the changeset viewer.