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/TRD – 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

Location:
NEMO/trunk/src/OCE/TRD
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/TRD/trddyn.F90

    r13237 r13295  
    124124                              z3dx(:,:,:) = 0._wp                  ! U.dxU & V.dyV (approximation) 
    125125                              z3dy(:,:,:) = 0._wp 
    126                               DO_3D_00_00( 1, jpkm1 ) 
     126                              DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    127127                                 z3dx(ji,jj,jk) = uu(ji,jj,jk,Kmm) * ( uu(ji+1,jj,jk,Kmm) - uu(ji-1,jj,jk,Kmm) ) / ( 2._wp * e1u(ji,jj) ) 
    128128                                 z3dy(ji,jj,jk) = vv(ji,jj,jk,Kmm) * ( vv(ji,jj+1,jk,Kmm) - vv(ji,jj-1,jk,Kmm) ) / ( 2._wp * e2v(ji,jj) ) 
  • NEMO/trunk/src/OCE/TRD/trdglo.F90

    r13237 r13295  
    8686         ! 
    8787         CASE( 'TRA' )          !==  Tracers (T & S)  ==! 
    88             DO_3D_11_11( 1, jpkm1 ) 
     88            DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    8989               zvm = e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    9090               zvt = ptrdx(ji,jj,jk) * zvm 
     
    115115            ! 
    116116         CASE( 'DYN' )          !==  Momentum and KE  ==!         
    117             DO_3D_10_10( 1, jpkm1 ) 
     117            DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    118118               zvt = ptrdx(ji,jj,jk) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk)   & 
    119119                  &                                     * e1e2u  (ji,jj) * e3u(ji,jj,jk,Kmm) 
     
    127127            IF( ktrd == jpdyn_zdf ) THEN      ! zdf trend: compute separately the surface forcing trend 
    128128               z1_2rho0 = 0.5_wp / rho0 
    129                DO_2D_10_10 
     129               DO_2D( 1, 0, 1, 0 ) 
    130130                  zvt = ( utau_b(ji,jj) + utau(ji,jj) ) * tmask_i(ji+1,jj) * tmask_i(ji,jj) * umask(ji,jj,jk)   & 
    131131                     &                                                     * z1_2rho0       * e1e2u(ji,jj) 
     
    211211          
    212212         zcof   = 0.5_wp / rho0           ! Density flux at u and v-points 
    213          DO_3D_10_10( 1, jpkm1 ) 
     213         DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    214214            zkx(ji,jj,jk) = zcof * e2u(ji,jj) * e3u(ji,jj,jk,Kmm)   & 
    215215               &                              *  uu(ji,jj,jk,Kmm) * ( rhop(ji,jj,jk) + rhop(ji+1,jj,jk) ) 
     
    218218         END_3D 
    219219          
    220          DO_3D_00_00( 1, jpkm1 ) 
     220         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    221221            zkepe(ji,jj,jk) = - (  zkz(ji,jj,jk) - zkz(ji  ,jj  ,jk+1)               & 
    222222               &                 + zkx(ji,jj,jk) - zkx(ji-1,jj  ,jk  )               & 
     
    527527      tvolv = 0._wp 
    528528 
    529       DO_3D_00_00( 1, jpk ) 
     529      DO_3D( 0, 0, 0, 0, 1, jpk ) 
    530530         tvolu = tvolu + e1u(ji,jj) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm)   & 
    531531            &                                       * tmask_i(ji+1,jj  ) * tmask_i(ji,jj) * umask(ji,jj,jk) 
  • NEMO/trunk/src/OCE/TRD/trdken.F90

    r13237 r13295  
    102102      zke(1,:, : ) = 0._wp 
    103103      zke(:,1, : ) = 0._wp 
    104       DO_3D_01_01( 1, jpkm1 ) 
     104      DO_3D( 0, 1, 0, 1, 1, jpkm1 ) 
    105105         zke(ji,jj,jk) = 0.5_wp * rho0 *( uu(ji  ,jj,jk,Kmm) * putrd(ji  ,jj,jk) * bu(ji  ,jj,jk)  & 
    106106            &                           + uu(ji-1,jj,jk,Kmm) * putrd(ji-1,jj,jk) * bu(ji-1,jj,jk)  & 
     
    123123                           z2dy(:,:) = vv(:,:,1,Kmm) * ( vtau_b(:,:) + vtau(:,:) ) * e1e2v(:,:) * vmask(:,:,1) 
    124124                           zke2d(1,:) = 0._wp   ;   zke2d(:,1) = 0._wp 
    125                            DO_2D_01_01 
     125                           DO_2D( 0, 1, 0, 1 ) 
    126126                              zke2d(ji,jj) = r1_rho0 * 0.5_wp * (   z2dx(ji,jj) + z2dx(ji-1,jj)   & 
    127127                              &                                   + z2dy(ji,jj) + z2dy(ji,jj-1)   ) * r1_bt(ji,jj,1) 
     
    219219 
    220220      ! conv value on T-point 
    221       DO_3D_11_11( 1, jpkm1 ) 
     221      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    222222         zcoef = 0.5_wp / e3t(ji,jj,jk,Kmm) 
    223223         pconv(ji,jj,jk) = zcoef * ( zconv(ji,jj,jk) + zconv(ji,jj,jk+1) ) * tmask(ji,jj,jk) 
  • NEMO/trunk/src/OCE/TRD/trdmxl.F90

    r13237 r13295  
    120120         ! 
    121121         wkx(:,:,:) = 0._wp         !==  now ML weights for vertical averaging  ==! 
    122          DO_3D_11_11( 1, jpktrd ) 
     122         DO_3D( 1, 1, 1, 1, 1, jpktrd ) 
    123123            IF( jk - kmxln(ji,jj) < 0 )   THEN 
    124124               wkx(ji,jj,jk) = e3t(ji,jj,jk,Kmm) * tmask(ji,jj,jk) 
  • NEMO/trunk/src/OCE/TRD/trdtra.F90

    r13237 r13295  
    221221      ptrd(:,:,jpk) = 0._wp 
    222222      ! 
    223       DO_3D_00_00( 1, jpkm1 ) 
     223      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    224224         ptrd(ji,jj,jk) = - (     pf (ji,jj,jk) - pf (ji-ii,jj-ij,jk-ik)                        & 
    225225           &                  - ( pu(ji,jj,jk) - pu(ji-ii,jj-ij,jk-ik) ) * pt(ji,jj,jk)  )   & 
  • NEMO/trunk/src/OCE/TRD/trdvor.F90

    r13237 r13295  
    105105      CASE( jpdyn_zdf )                                                      ! Vertical Diffusion  
    106106         ztswu(:,:) = 0.e0   ;   ztswv(:,:) = 0.e0 
    107          DO_2D_00_00 
     107         DO_2D( 0, 0, 0, 0 ) 
    108108            ztswu(ji,jj) = 0.5 * ( utau_b(ji,jj) + utau(ji,jj) ) / ( e3u(ji,jj,1,Kmm) * rho0 ) 
    109109            ztswv(ji,jj) = 0.5 * ( vtau_b(ji,jj) + vtau(ji,jj) ) / ( e3v(ji,jj,1,Kmm) * rho0 ) 
     
    172172      ! 
    173173      CASE( jpvor_bfr )        ! bottom friction 
    174          DO_2D_00_00 
     174         DO_2D( 0, 0, 0, 0 ) 
    175175            ikbu = mbkv(ji,jj) 
    176176            ikbv = mbkv(ji,jj)             
Note: See TracChangeset for help on using the changeset viewer.