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.
Diff from NEMO/branches/2021/dev_r14393_HPC-03_Mele_Comm_Cleanup/src/OCE/TRA/traldf_triad.F90@14757 to NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_triad.F90@14787 – NEMO

Ignore:
File:
1 edited

Legend:

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

    r14757 r14787  
    1313   USE oce            ! ocean dynamics and active tracers 
    1414   USE dom_oce        ! ocean space and time domain 
    15    ! TEMP: [tiling] This change not necessary if XIOS has subdomain support 
    16    USE domtile 
    1715   USE domutl, ONLY : is_tile 
    1816   USE phycst         ! physical constants 
     
    109107      REAL(wp), DIMENSION(A2D_T(ktt_rhs),JPK,KJPT), INTENT(inout) ::   pt_rhs     ! tracer trend 
    110108      ! 
    111       INTEGER  ::  ji, jj, jk, jn, kp   ! dummy loop indices 
     109      INTEGER  ::  ji, jj, jk, jn, kp, iij   ! dummy loop indices 
    112110      REAL(wp) ::  zcoef0, ze3w_2, zsign          !   -      - 
    113111      ! 
     
    115113      REAL(wp) ::   ze1ur, ze2vr, ze3wr, zdxt, zdyt, zdzt, zdyt_jp1, ze3wr_jp1, zdzt_jp1, zah_slp1, zah_slp_jp1, zaei_slp_jp1 
    116114      REAL(wp) ::   zah_slp, zaei_slp, zdxt_ip1, ze3wr_ip1, zdzt_ip1, zah_slp_ip1, zaei_slp_ip1, zaei_slp1 
    117       REAL(wp), DIMENSION(A2D(nn_hls),0:1)     ::   zdkt3d                         ! vertical tracer gradient at 2 levels 
    118       REAL(wp), DIMENSION(A2D(nn_hls)        ) ::   z2d                            ! 2D workspace 
    119       REAL(wp), DIMENSION(A2D(nn_hls)    ,jpk) ::   zdit, zdjt, zftu, zftv, ztfw   ! 3D     - 
    120       ! TEMP: [tiling] This can be A2D(nn_hls) if XIOS has subdomain support 
    121       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpsi_uw, zpsi_vw 
     115      REAL(wp), DIMENSION(A2D(nn_hls),0:1) ::   zdkt3d                                           ! vertical tracer gradient at 2 levels 
     116      REAL(wp), DIMENSION(A2D(nn_hls)    ) ::   z2d                                              ! 2D workspace 
     117      REAL(wp), DIMENSION(A2D(nn_hls),jpk) ::   zdit, zdjt, zftu, zftv, ztfw, zpsi_uw, zpsi_vw   ! 3D     - 
    122118      !!---------------------------------------------------------------------- 
    123119      ! 
    124       IF( ntile == 0 .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
     120      IF( .NOT. l_istiled .OR. ntile == 1 )  THEN                       ! Do only on the first tile 
    125121         IF( kpass == 1 .AND. kt == kit000 )  THEN 
    126122            IF(lwp) WRITE(numout,*) 
     
    138134      ENDIF 
    139135      ! 
     136      ! Define pt_rhs halo points for multi-point haloes in bilaplacian case 
     137      IF( nldf_tra == np_blp_it .AND. kpass == 1 ) THEN ; iij = nn_hls 
     138      ELSE                                              ; iij = 1 
     139      ENDIF 
     140 
     141      ! 
    140142      IF( kpass == 1 ) THEN   ;   zsign =  1._wp      ! bilaplacian operator require a minus sign (eddy diffusivity >0) 
    141143      ELSE                    ;   zsign = -1._wp 
     
    148150      IF( kpass == 1 ) THEN         !==  first pass only  and whatever the tracer is  ==! 
    149151         ! 
    150          DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 
     152         DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 
    151153            akz     (ji,jj,jk) = 0._wp 
    152154            ah_wslp2(ji,jj,jk) = 0._wp 
     
    154156         ! 
    155157         DO kp = 0, 1                            ! i-k triads 
    156             DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
     158            DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    157159               ze3wr = 1._wp / e3w(ji,jj,jk+kp,Kmm) 
    158160               zbu   = e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm) 
     
    177179         ! 
    178180         DO kp = 0, 1                            ! j-k triads 
    179             DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
     181            DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 
    180182               ze3wr = 1.0_wp / e3w(ji,jj,jk+kp,Kmm) 
    181183               zbv   = e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm) 
     
    204206            ! 
    205207            IF( ln_traldf_blp ) THEN                ! bilaplacian operator 
    206                DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
     208               DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    207209                  akz(ji,jj,jk) = 16._wp           & 
    208210                     &   * ah_wslp2   (ji,jj,jk)   & 
     
    212214               END_3D 
    213215            ELSEIF( ln_traldf_lap ) THEN              ! laplacian operator 
    214                DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
     216               DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    215217                  ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 
    216218                  zcoef0 = rDt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     
    220222           ! 
    221223         ELSE                                    ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 
    222             DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 
     224            DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 
    223225               akz(ji,jj,jk) = ah_wslp2(ji,jj,jk) 
    224226            END_3D 
    225227         ENDIF 
    226228         ! 
    227          ! TEMP: [tiling] These changes not necessary if XIOS has subdomain support 
    228          IF( ntile == 0 .OR. ntile == nijtile )  THEN                ! Do only for the full domain 
    229             IF( ln_ldfeiv_dia .AND. cdtype == 'TRA' ) THEN 
    230                IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) 
    231  
    232                   zpsi_uw(:,:,:) = 0._wp 
    233                   zpsi_vw(:,:,:) = 0._wp 
    234                    
    235                   DO kp = 0, 1 
    236                      DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    237                         ! round brackets added to fix the order of floating point operations 
    238                         ! needed to ensure halo 1 - halo 2 compatibility 
    239                         zpsi_uw(ji,jj,jk+kp) = zpsi_uw(ji,jj,jk+kp)                                     & 
    240                            & + ( 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji,jj,jk,1,kp)        &  
    241                            &   + 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji+1,jj,jk,0,kp)      & 
    242                            &   )                                                                        ! bracket for halo 1 - halo 2 compatibility 
    243                         zpsi_vw(ji,jj,jk+kp) = zpsi_vw(ji,jj,jk+kp)                                     & 
    244                            & + ( 0.25_wp * aeiv(ji,jj,jk) * e1v(ji,jj) * triadj_g(ji,jj,jk,1,kp)        & 
    245                            &   + 0.25_wp * aeiv(ji,jj,jk) * e1v(ji,jj) * triadj_g(ji,jj+1,jk,0,kp)      & 
    246                            &   )                                                                        ! bracket for halo 1 - halo 2 compatibility 
    247                      END_3D 
    248                   END DO 
    249                CALL ldf_eiv_dia( zpsi_uw, zpsi_vw, Kmm ) 
    250  
    251                IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = nijtile ) 
    252             ENDIF 
     229         IF( ln_ldfeiv_dia .AND. cdtype == 'TRA' ) THEN 
     230            zpsi_uw(:,:,:) = 0._wp 
     231            zpsi_vw(:,:,:) = 0._wp 
     232 
     233            DO kp = 0, 1 
     234               DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
     235                  ! round brackets added to fix the order of floating point operations 
     236                  ! needed to ensure halo 1 - halo 2 compatibility 
     237                  zpsi_uw(ji,jj,jk+kp) = zpsi_uw(ji,jj,jk+kp)                                     & 
     238                     & + ( 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji,jj,jk,1,kp)        & 
     239                     &   + 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji+1,jj,jk,0,kp)      & 
     240                     &   )                                                                        ! bracket for halo 1 - halo 2 compatibility 
     241                  zpsi_vw(ji,jj,jk+kp) = zpsi_vw(ji,jj,jk+kp)                                     & 
     242                     & + ( 0.25_wp * aeiv(ji,jj,jk) * e1v(ji,jj) * triadj_g(ji,jj,jk,1,kp)        & 
     243                     &   + 0.25_wp * aeiv(ji,jj,jk) * e1v(ji,jj) * triadj_g(ji,jj+1,jk,0,kp)      & 
     244                     &   )                                                                        ! bracket for halo 1 - halo 2 compatibility 
     245               END_3D 
     246            END DO 
     247            CALL ldf_eiv_dia( zpsi_uw, zpsi_vw, Kmm ) 
    253248         ENDIF 
    254249         ! 
     
    263258         zftu(:,:,:) = 0._wp 
    264259         zftv(:,:,:) = 0._wp 
    265          ! 
    266          DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 )    !==  before lateral T & S gradients at T-level jk  ==! 
     260         zdit(:,:,:) = 0._wp 
     261         zdjt(:,:,:) = 0._wp 
     262         ! 
     263         DO_3D( iij, iij-1, iij, iij-1, 1, jpkm1 )    !==  before lateral T & S gradients at T-level jk  ==! 
    267264            zdit(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) 
    268265            zdjt(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 
    269266         END_3D 
    270267         IF( ln_zps .AND. l_grad_zps ) THEN    ! partial steps: correction at top/bottom ocean level 
    271             DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )                    ! bottom level 
     268            DO_2D( iij, iij-1, iij, iij-1 )                    ! bottom level 
    272269               zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 
    273270               zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 
    274271            END_2D 
    275272            IF( ln_isfcav ) THEN                   ! top level (ocean cavities only) 
    276                DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
     273               DO_2D( iij, iij-1, iij, iij-1 ) 
    277274                  IF( miku(ji,jj)  > 1 )   zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn) 
    278275                  IF( mikv(ji,jj)  > 1 )   zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn) 
     
    287284         DO jk = 1, jpkm1 
    288285            !                    !==  Vertical tracer gradient at level jk and jk+1 
    289             DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
     286            DO_2D( iij, iij, iij, iij ) 
    290287               zdkt3d(ji,jj,1) = ( pt(ji,jj,jk,jn) - pt(ji,jj,jk+1,jn) ) * tmask(ji,jj,jk+1) 
    291288            END_2D 
     
    294291            IF( jk == 1 ) THEN   ;   zdkt3d(:,:,0) = zdkt3d(:,:,1) 
    295292            ELSE 
    296                DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) 
     293               DO_2D( iij, iij, iij, iij ) 
    297294                  zdkt3d(ji,jj,0) = ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
    298295               END_2D 
     
    300297            ! 
    301298            zaei_slp = 0._wp 
     299            zaei_slp_ip1 = 0._wp 
     300            zaei_slp_jp1 = 0._wp 
     301            zaei_slp1 = 0._wp 
    302302            ! 
    303303            IF( ln_botmix_triad ) THEN 
    304304               DO kp = 0, 1              !==  Horizontal & vertical fluxes 
    305                   DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
     305                  DO_2D( iij, iij-1, iij, iij-1 ) 
    306306                     ze1ur = r1_e1u(ji,jj) 
    307307                     zdxt  = zdit(ji,jj,jk) * ze1ur 
     
    315315                     zbu_ip1 = 0.25_wp * e1e2u(ji+1,jj) * e3u(ji+1,jj,jk,Kmm) 
    316316                     ! ln_botmix_triad is .T. don't mask zah for bottom half cells    !!gm ?????   ahu is masked.... 
    317                      zah = pahu(ji,jj,jk)  
    318                      zah_ip1 = pahu(ji+1,jj,jk)  
     317                     zah = pahu(ji,jj,jk) 
     318                     zah_ip1 = pahu(ji+1,jj,jk) 
    319319                     zah_slp  = zah * triadi(ji,jj,jk,1,kp) 
    320320                     zah_slp_ip1  = zah_ip1 * triadi(ji+1,jj,jk,1,kp) 
     
    331331                                         &      + ( zah * zdxt + zah_slp1 * zdzt_ip1 - zaei_slp1 * zdzt_ip1 ) * zbu * ze1ur  & 
    332332                                         &      )                                                                            ! bracket for halo 1 - halo 2 compatibility 
    333                      ztfw(ji+1,jj,jk+kp) =  ztfw(ji+1,jj,jk+kp)                                                              &  
     333                     ztfw(ji+1,jj,jk+kp) =  ztfw(ji+1,jj,jk+kp)                                                              & 
    334334                                         &    - ( (zah_slp_ip1 + zaei_slp_ip1) * zdxt_ip1 * zbu_ip1 * ze3wr_ip1              & 
    335                                          &      + ( zah_slp1 + zaei_slp1) * zdxt * zbu * ze3wr_ip1                           &  
     335                                         &      + ( zah_slp1 + zaei_slp1) * zdxt * zbu * ze3wr_ip1                           & 
    336336                                         &      )                                                                            ! bracket for halo 1 - halo 2 compatibility 
    337337                  END_2D 
     
    339339               ! 
    340340               DO kp = 0, 1 
    341                   DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
     341                  DO_2D( iij, iij-1, iij, iij-1 ) 
    342342                     ze2vr = r1_e2v(ji,jj) 
    343343                     zdyt  = zdjt(ji,jj,jk) * ze2vr 
     
    351351                     ! ln_botmix_triad is .T. don't mask zah for bottom half cells    !!gm ?????   ahu is masked.... 
    352352                     zah = pahv(ji,jj,jk)          ! pahv(ji,jj+jp,jk)  ???? 
    353                      zah_jp1 = pahv(ji,jj+1,jk)  
     353                     zah_jp1 = pahv(ji,jj+1,jk) 
    354354                     zah_slp = zah * triadj(ji,jj,jk,1,kp) 
    355355                     zah_slp1 = zah * triadj(ji,jj+1,jk,0,kp) 
    356356                     zah_slp_jp1 = zah_jp1 * triadj(ji,jj+1,jk,1,kp) 
    357357                     IF( ln_ldfeiv )   THEN 
    358                         zaei_slp = aeiv(ji,jj,jk) * triadj_g(ji,jj,jk,1,kp)   
    359                         zaei_slp_jp1 = aeiv(ji,jj+1,jk) * triadj_g(ji,jj+1,jk,1,kp)   
     358                        zaei_slp = aeiv(ji,jj,jk) * triadj_g(ji,jj,jk,1,kp) 
     359                        zaei_slp_jp1 = aeiv(ji,jj+1,jk) * triadj_g(ji,jj+1,jk,1,kp) 
    360360                        zaei_slp1 = aeiv(ji,jj,jk) * triadj_g(ji,jj+1,jk,0,kp) 
    361361                     ENDIF 
     
    376376               ! 
    377377               DO kp = 0, 1               !==  Horizontal & vertical fluxes 
    378                   DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
     378                  DO_2D( iij, iij-1, iij, iij-1 ) 
    379379                     ze1ur = r1_e1u(ji,jj) 
    380380                     zdxt  = zdit(ji,jj,jk) * ze1ur 
     
    389389                     ! ln_botmix_triad is .F. mask zah for bottom half cells 
    390390                     zah = pahu(ji,jj,jk) * umask(ji,jj,jk+kp)         ! pahu(ji+ip,jj,jk)   ===>>  ???? 
    391                      zah_ip1 = pahu(ji+1,jj,jk) * umask(ji+1,jj,jk+kp)  
     391                     zah_ip1 = pahu(ji+1,jj,jk) * umask(ji+1,jj,jk+kp) 
    392392                     zah_slp  = zah * triadi(ji,jj,jk,1,kp) 
    393393                     zah_slp_ip1  = zah_ip1 * triadi(ji+1,jj,jk,1,kp) 
    394394                     zah_slp1  = zah * triadi(ji+1,jj,jk,0,kp) 
    395395                     IF( ln_ldfeiv )   THEN 
    396                         zaei_slp = aeiu(ji,jj,jk) * triadi_g(ji,jj,jk,1,kp)  
     396                        zaei_slp = aeiu(ji,jj,jk) * triadi_g(ji,jj,jk,1,kp) 
    397397                        zaei_slp_ip1 = aeiu(ji+1,jj,jk) * triadi_g(ji+1,jj,jk,1,kp) 
    398398                        zaei_slp1 = aeiu(ji,jj,jk) * triadi_g(ji+1,jj,jk,0,kp) 
    399399                     ENDIF 
    400 !                     zftu(ji   ,jj,jk  ) = zftu(ji   ,jj,jk ) - ( zah * zdxt + (zah_slp - zaei_slp) * zdzt ) * zbu * ze1ur - ( zah * zdxt + (zah_slp1 - zaei_slp1) * zdzt_ip1 ) * zbu * ze1ur 
    401 !                     ztfw(ji+1,jj,jk+kp) = ztfw(ji+1,jj,jk+kp) - (zah_slp_ip1 + zaei_slp_ip1) * zdxt_ip1 * zbu_ip1 * ze3wr_ip1 - (zah_slp1 + zaei_slp1) * zdxt * zbu * ze3wr_ip1 
    402400                     ! round brackets added to fix the order of floating point operations 
    403401                     ! needed to ensure halo 1 - halo 2 compatibility 
     
    406404                                         &      + ( zah * zdxt + zah_slp1 * zdzt_ip1 - zaei_slp1 * zdzt_ip1 ) * zbu * ze1ur  & 
    407405                                         &      )                                                                            ! bracket for halo 1 - halo 2 compatibility 
    408                      ztfw(ji+1,jj,jk+kp) =  ztfw(ji+1,jj,jk+kp)                                                              &  
     406                     ztfw(ji+1,jj,jk+kp) =  ztfw(ji+1,jj,jk+kp)                                                              & 
    409407                                         &    - ( (zah_slp_ip1 + zaei_slp_ip1) * zdxt_ip1 * zbu_ip1 * ze3wr_ip1              & 
    410408                                         &      + ( zah_slp1 + zaei_slp1) * zdxt * zbu * ze3wr_ip1                           & 
     
    414412               ! 
    415413               DO kp = 0, 1 
    416                   DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
     414                  DO_2D( iij, iij-1, iij, iij-1 ) 
    417415                     ze2vr = r1_e2v(ji,jj) 
    418416                     zdyt  = zdjt(ji,jj,jk) * ze2vr 
     
    431429                     zah_slp_jp1 = zah_jp1 * triadj(ji,jj+1,jk,1,kp) 
    432430                     IF( ln_ldfeiv )   THEN 
    433                         zaei_slp = aeiv(ji,jj,jk) * triadj_g(ji,jj,jk,1,kp)  
     431                        zaei_slp = aeiv(ji,jj,jk) * triadj_g(ji,jj,jk,1,kp) 
    434432                        zaei_slp_jp1 = aeiv(ji,jj+1,jk) * triadj_g(ji,jj+1,jk,1,kp) 
    435433                        zaei_slp1 = aeiv(ji,jj,jk) * triadj_g(ji,jj+1,jk,0,kp) 
    436434                     ENDIF 
    437 !                     zftv(ji,jj  ,jk   ) = zftv(ji,jj  ,jk   ) - ( zah * zdyt + (zah_slp - zaei_slp) * zdzt ) * zbv * ze2vr - ( zah * zdyt + (zah_slp1 - zaei_slp1) * zdzt_jp1 ) * zbv * ze2vr 
    438 !                     ztfw(ji,jj+1,jk+kp) = ztfw(ji,jj+1,jk+kp) - ( zah_slp_jp1 + zaei_slp_jp1) * zdyt_jp1 * zbv_jp1 * ze3wr_jp1 - (zah_slp1 + zaei_slp1) * zdyt * zbv * ze3wr_jp1 
    439435                     ! round brackets added to fix the order of floating point operations 
    440436                     ! needed to ensure halo 1 - halo 2 compatibility 
     
    451447            ENDIF 
    452448            !                             !==  horizontal divergence and add to the general trend  ==! 
    453             DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 ) 
     449            DO_2D( iij-1, iij-1, iij-1, iij-1 ) 
    454450               ! round brackets added to fix the order of floating point operations 
    455451               ! needed to ensure halo 1 - halo 2 compatibility 
     
    466462         !                                !==  add the vertical 33 flux  ==! 
    467463         IF( ln_traldf_lap ) THEN               ! laplacian case: eddy coef = ah_wslp2 - akz 
    468             DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
     464            DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) 
    469465               ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)   & 
    470466                  &                            * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) )             & 
     
    474470            SELECT CASE( kpass ) 
    475471            CASE(  1  )                            ! 1st pass : eddy coef = ah_wslp2 
    476                DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
     472               DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) 
    477473                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)             & 
    478474                     &                            * ah_wslp2(ji,jj,jk) * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 
    479475               END_3D 
    480476            CASE(  2  )                            ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt  and pt2 gradients, resp. 
    481                DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
     477               DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    482478                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)                      & 
    483479                     &                            * (  ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) )   & 
     
    487483         ENDIF 
    488484         ! 
    489          DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )      !==  Divergence of vertical fluxes added to pta  ==! 
     485         DO_3D( iij-1, iij-1, iij-1, iij-1, 1, jpkm1 )      !==  Divergence of vertical fluxes added to pta  ==! 
    490486            pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    491487            &                                  + zsign * (  ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk)  )   & 
Note: See TracChangeset for help on using the changeset viewer.