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 13295 for NEMO/trunk/src/OCE/TRA/traadv_qck.F90 – NEMO

Ignore:
Timestamp:
2020-07-10T20:24:21+02:00 (4 years ago)
Author:
acc
Message:

Replace do-loop macros in the trunk with alternative forms with greater flexibility for extra halo applications. This alters a lot of routines but does not change any behaviour or results. do_loop_substitute.h90 is greatly simplified by this change. SETTE results are identical to those with the previous revision

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/TRA/traadv_qck.F90

    r13237 r13295  
    142142         ! 
    143143!!gm why not using a SHIFT instruction... 
    144          DO_3D_00_00( 1, jpkm1 ) 
     144         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    145145            zfc(ji,jj,jk) = pt(ji-1,jj,jk,jn,Kbb)        ! Upstream   in the x-direction for the tracer 
    146146            zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb)        ! Downstream in the x-direction for the tracer 
     
    151151         ! Horizontal advective fluxes 
    152152         ! --------------------------- 
    153          DO_3D_00_00( 1, jpkm1 ) 
     153         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    154154            zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    155155            zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji+1,jj,jk)  ! FU in the x-direction for T  
    156156         END_3D 
    157157         ! 
    158          DO_3D_00_00( 1, jpkm1 ) 
     158         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    159159            zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    160160            zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) 
     
    170170         ! 
    171171         ! Mask at the T-points in the x-direction (mask=0 or mask=1) 
    172          DO_3D_00_00( 1, jpkm1 ) 
     172         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    173173            zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 
    174174         END_3D 
     
    179179         DO jk = 1, jpkm1   
    180180            ! 
    181             DO_2D_00_00 
     181            DO_2D( 0, 0, 0, 0 ) 
    182182               zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    183183               !--- If the second ustream point is a land point 
     
    192192         ! 
    193193         ! Computation of the trend 
    194          DO_3D_00_00( 1, jpkm1 ) 
     194         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    195195            zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    196196            ! horizontal advective trends 
     
    233233            !                                              
    234234            !--- Computation of the ustream and downstream value of the tracer and the mask 
    235             DO_2D_00_00 
     235            DO_2D( 0, 0, 0, 0 ) 
    236236               ! Upstream in the x-direction for the tracer 
    237237               zfc(ji,jj,jk) = pt(ji,jj-1,jk,jn,Kbb) 
     
    247247         ! --------------------------- 
    248248         ! 
    249          DO_3D_00_00( 1, jpkm1 ) 
     249         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    250250            zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    251251            zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji,jj+1,jk)  ! FU in the x-direction for T  
    252252         END_3D 
    253253         ! 
    254          DO_3D_00_00( 1, jpkm1 ) 
     254         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    255255            zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    256256            zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 
     
    267267         ! 
    268268         ! Mask at the T-points in the x-direction (mask=0 or mask=1) 
    269          DO_3D_00_00( 1, jpkm1 ) 
     269         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    270270            zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 
    271271         END_3D 
     
    275275         DO jk = 1, jpkm1   
    276276            ! 
    277             DO_2D_00_00 
     277            DO_2D( 0, 0, 0, 0 ) 
    278278               zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    279279               !--- If the second ustream point is a land point 
     
    288288         ! 
    289289         ! Computation of the trend 
    290          DO_3D_00_00( 1, jpkm1 ) 
     290         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    291291            zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    292292            ! horizontal advective trends 
     
    327327         !                                                       ! =========== 
    328328         ! 
    329          DO_3D_00_00( 2, jpkm1 ) 
     329         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    330330            zwz(ji,jj,jk) = 0.5 * pW(ji,jj,jk) * ( pt(ji,jj,jk-1,jn,Kmm) + pt(ji,jj,jk,jn,Kmm) ) * wmask(ji,jj,jk) 
    331331         END_3D 
    332332         IF( ln_linssh ) THEN                !* top value   (only in linear free surf. as zwz is multiplied by wmask) 
    333333            IF( ln_isfcav ) THEN                  ! ice-shelf cavities (top of the ocean) 
    334                DO_2D_11_11 
     334               DO_2D( 1, 1, 1, 1 ) 
    335335                  zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kmm)   ! linear free surface  
    336336               END_2D 
     
    340340         ENDIF 
    341341         ! 
    342          DO_3D_00_00( 1, jpkm1 ) 
     342         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    343343            pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwz(ji,jj,jk) - zwz(ji,jj,jk+1) )   & 
    344344               &                                * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     
    369369      !---------------------------------------------------------------------- 
    370370      ! 
    371       DO_3D_11_11( 1, jpkm1 ) 
     371      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    372372         zc     = puc(ji,jj,jk)                         ! Courant number 
    373373         zcurv  = pfd(ji,jj,jk) + pfu(ji,jj,jk) - 2. * pfc(ji,jj,jk) 
Note: See TracChangeset for help on using the changeset viewer.