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 14576 for NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_triad.F90 – NEMO

Ignore:
Timestamp:
2021-03-03T17:04:07+01:00 (3 years ago)
Author:
hadcv
Message:

#2600: Merge in dev_r14393_HPC-03_Mele_Comm_Cleanup r14538

File:
1 edited

Legend:

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

    r14537 r14576  
    152152      IF( kpass == 1 ) THEN         !==  first pass only  and whatever the tracer is  ==! 
    153153         ! 
    154          DO_3D( 0, 0, 0, 0, 1, jpk ) 
     154         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpk ) 
     155         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk )  
    155156            akz     (ji,jj,jk) = 0._wp 
    156157            ah_wslp2(ji,jj,jk) = 0._wp 
     
    159160         DO ip = 0, 1                            ! i-k triads 
    160161            DO kp = 0, 1 
    161                DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     162               ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     163               DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )  
    162164                  ze3wr = 1._wp / e3w(ji,jj,jk+kp,Kmm) 
    163165                  zbu   = e1e2u(ji-ip,jj) * e3u(ji-ip,jj,jk,Kmm) 
     
    177179         DO jp = 0, 1                            ! j-k triads 
    178180            DO kp = 0, 1 
    179                DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     181               ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
     182               DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )  
    180183                  ze3wr = 1.0_wp / e3w(ji,jj,jk+kp,Kmm) 
    181184                  zbv   = e1e2v(ji,jj-jp) * e3v(ji,jj-jp,jk,Kmm) 
     
    197200            ! 
    198201            IF( ln_traldf_blp ) THEN                ! bilaplacian operator 
    199                DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     202               ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     203               DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )  
    200204                  akz(ji,jj,jk) = 16._wp           & 
    201205                     &   * ah_wslp2   (ji,jj,jk)   & 
     
    205209               END_3D 
    206210            ELSEIF( ln_traldf_lap ) THEN              ! laplacian operator 
    207                DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     211               ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     212               DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )  
    208213                  ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 
    209214                  zcoef0 = rDt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     
    213218           ! 
    214219         ELSE                                    ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 
    215             DO_3D( 0, 0, 0, 0, 1, jpk ) 
     220            ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpk ) 
     221            DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk )  
    216222               akz(ji,jj,jk) = ah_wslp2(ji,jj,jk) 
    217223            END_3D 
     
    228234               DO jp = 0, 1 
    229235                  DO kp = 0, 1 
    230                      DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
     236                     ! [comm_cleanup] ! DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
     237                     DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 )  
    231238                        zpsi_uw(ji,jj,jk+kp) = zpsi_uw(ji,jj,jk+kp) & 
    232239                           & + 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji+jp,jj,jk,1-jp,kp) 
     
    253260         zftv(:,:,:) = 0._wp 
    254261         ! 
    255          DO_3D( 1, 0, 1, 0, 1, jpkm1 )    !==  before lateral T & S gradients at T-level jk  ==! 
     262         ! [comm_cleanup] ! DO_3D( 1, 0, 1, 0, 1, jpkm1 )    !==  before lateral T & S gradients at T-level jk  ==! 
     263         DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 )  
    256264            zdit(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) 
    257265            zdjt(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 
    258266         END_3D 
    259267         IF( ln_zps .AND. l_grad_zps ) THEN    ! partial steps: correction at top/bottom ocean level 
    260             DO_2D( 1, 0, 1, 0 )                    ! bottom level 
     268            ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 )                    ! bottom level 
     269            DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )  
    261270               zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 
    262271               zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 
    263272            END_2D 
    264273            IF( ln_isfcav ) THEN                   ! top level (ocean cavities only) 
    265                DO_2D( 1, 0, 1, 0 ) 
     274               ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 
     275               DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )  
    266276                  IF( miku(ji,jj)  > 1 )   zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn) 
    267277                  IF( mikv(ji,jj)  > 1 )   zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn) 
     
    276286         DO jk = 1, jpkm1 
    277287            !                    !==  Vertical tracer gradient at level jk and jk+1 
    278             DO_2D( 1, 1, 1, 1 ) 
     288            ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     289            DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )  
    279290               zdkt3d(ji,jj,1) = ( pt(ji,jj,jk,jn) - pt(ji,jj,jk+1,jn) ) * tmask(ji,jj,jk+1) 
    280291            END_2D 
     
    283294            IF( jk == 1 ) THEN   ;   zdkt3d(:,:,0) = zdkt3d(:,:,1) 
    284295            ELSE 
    285                DO_2D( 1, 1, 1, 1 ) 
     296               ! [comm_cleanup] ! DO_2D( 1, 1, 1, 1 ) 
     297               DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )  
    286298                  zdkt3d(ji,jj,0) = ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 
    287299               END_2D 
     
    293305               DO ip = 0, 1              !==  Horizontal & vertical fluxes 
    294306                  DO kp = 0, 1 
    295                      DO_2D( 1, 0, 1, 0 ) 
     307                     ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 
     308                     DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )  
    296309                        ze1ur = r1_e1u(ji,jj) 
    297310                        zdxt  = zdit(ji,jj,jk) * ze1ur 
     
    314327               DO jp = 0, 1 
    315328                  DO kp = 0, 1 
    316                      DO_2D( 1, 0, 1, 0 ) 
     329                     ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 
     330                     DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )  
    317331                        ze2vr = r1_e2v(ji,jj) 
    318332                        zdyt  = zdjt(ji,jj,jk) * ze2vr 
     
    336350               DO ip = 0, 1               !==  Horizontal & vertical fluxes 
    337351                  DO kp = 0, 1 
    338                      DO_2D( 1, 0, 1, 0 ) 
     352                     ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 
     353                     DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )  
    339354                        ze1ur = r1_e1u(ji,jj) 
    340355                        zdxt  = zdit(ji,jj,jk) * ze1ur 
     
    357372               DO jp = 0, 1 
    358373                  DO kp = 0, 1 
    359                      DO_2D( 1, 0, 1, 0 ) 
     374                     ! [comm_cleanup] ! DO_2D( 1, 0, 1, 0 ) 
     375                     DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )  
    360376                        ze2vr = r1_e2v(ji,jj) 
    361377                        zdyt  = zdjt(ji,jj,jk) * ze2vr 
     
    376392            ENDIF 
    377393            !                             !==  horizontal divergence and add to the general trend  ==! 
    378             DO_2D( 0, 0, 0, 0 ) 
     394            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     395            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )  
    379396               pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    380397                  &                       + zsign * (  zftu(ji-1,jj  ,jk) - zftu(ji,jj,jk)       & 
     
    387404         !                                !==  add the vertical 33 flux  ==! 
    388405         IF( ln_traldf_lap ) THEN               ! laplacian case: eddy coef = ah_wslp2 - akz 
    389             DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 
     406            ! [comm_cleanup] ! DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 
     407            DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )  
    390408               ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)   & 
    391409                  &                            * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) )             & 
     
    395413            SELECT CASE( kpass ) 
    396414            CASE(  1  )                            ! 1st pass : eddy coef = ah_wslp2 
    397                DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 
     415               ! [comm_cleanup] ! DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 
     416               DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )  
    398417                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)             & 
    399418                     &                            * ah_wslp2(ji,jj,jk) * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 
    400419               END_3D 
    401420            CASE(  2  )                            ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt  and pt2 gradients, resp. 
    402                DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 
     421               ! [comm_cleanup] ! DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 
     422               DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )  
    403423                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)                      & 
    404424                     &                            * (  ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) )   & 
     
    408428         ENDIF 
    409429         ! 
    410          DO_3D( 0, 0, 0, 0, 1, jpkm1 )      !==  Divergence of vertical fluxes added to pta  ==! 
     430         ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 1, jpkm1 )      !==  Divergence of vertical fluxes added to pta  ==! 
     431         DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )  
    411432            pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    412433            &                                  + zsign * (  ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk)  )   & 
Note: See TracChangeset for help on using the changeset viewer.