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/SWE/domvvl.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/SWE/domvvl.F90

    r12983 r13295  
    205205      gdept(:,:,1,Kbb) = 0.5_wp * e3w(:,:,1,Kbb) 
    206206      gdepw(:,:,1,Kbb) = 0.0_wp 
    207       DO_3D_11_11( 2, jpk ) 
     207      DO_3D( 1, 1, 1, 1, 2, jpk ) 
    208208         !    zcoef = tmask - wmask    ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 
    209209         !                             ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) 
     
    253253         ENDIF 
    254254         IF ( ln_vvl_zstar_at_eqtor ) THEN   ! use z-star in vicinity of the Equator 
    255             DO_2D_11_11 
     255            DO_2D( 1, 1, 1, 1 ) 
    256256!!gm  case |gphi| >= 6 degrees is useless   initialized just above by default 
    257257               IF( ABS(gphit(ji,jj)) >= 6.) THEN 
     
    354354      e3v(:,:,:,Kaa) = e3v(:,:,:,Kmm) 
    355355      ! 
    356       DO_3D_11_11( 1, jpk ) 
     356      DO_3D( 1, 1, 1, 1, 1, jpk ) 
    357357         gdepw(ji,jj,jk,Kmm) =  gdepw_0(ji,jj,jk) * (1._wp + r3t(ji,jj,Kmm)) 
    358358         gdept(ji,jj,jk,Kmm) =  gdept_0(ji,jj,jk) * (1._wp + r3t(ji,jj,Kmm))  
     
    500500         zwu(:,:) = 0._wp 
    501501         zwv(:,:) = 0._wp 
    502          DO_3D_10_10( 1, jpkm1 ) 
     502         DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    503503            un_td(ji,jj,jk) = rn_ahe3 * umask(ji,jj,jk) * e2_e1u(ji,jj)           & 
    504504               &            * ( tilde_e3t_b(ji,jj,jk) - tilde_e3t_b(ji+1,jj  ,jk) ) 
     
    508508            zwv(ji,jj) = zwv(ji,jj) + vn_td(ji,jj,jk) 
    509509         END_3D 
    510          DO_2D_11_11 
     510         DO_2D( 1, 1, 1, 1 ) 
    511511            un_td(ji,jj,mbku(ji,jj)) = un_td(ji,jj,mbku(ji,jj)) - zwu(ji,jj) 
    512512            vn_td(ji,jj,mbkv(ji,jj)) = vn_td(ji,jj,mbkv(ji,jj)) - zwv(ji,jj) 
    513513         END_2D 
    514          DO_3D_00_00( 1, jpkm1 ) 
     514         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    515515            tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) + (   un_td(ji-1,jj  ,jk) - un_td(ji,jj,jk)    & 
    516516               &                                          +     vn_td(ji  ,jj-1,jk) - vn_td(ji,jj,jk)    & 
     
    831831      gdepw(:,:,1,Kmm) = 0.0_wp 
    832832      gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) 
    833       DO_3D_11_11( 2, jpk ) 
     833      DO_3D( 1, 1, 1, 1, 2, jpk ) 
    834834        !    zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk))   ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 
    835835                                                           ! 1 for jk = mikt 
     
    918918 
    919919      ! t- and w- points depth (set the isf depth as it is in the initial step) 
    920       DO_3D_11_11( 1, jpk ) 
     920      DO_3D( 1, 1, 1, 1, 1, jpk ) 
    921921         gdepw(ji,jj,jk,Kmm) =  gdepw_0(ji,jj,jk) * (1._wp + r3t(ji,jj,Kmm)) 
    922922         gdept(ji,jj,jk,Kmm) =  gdept_0(ji,jj,jk) * (1._wp + r3t(ji,jj,Kmm))  
     
    10141014         ! 
    10151015      CASE( 'U' )                   !* from T- to U-point : hor. surface weighted mean 
    1016          DO_2D_00_00 
     1016         DO_2D( 0, 0, 0, 0 ) 
    10171017            zc3(ji,jj) = 0.5_wp * (  e1e2t(ji  ,jj) * pssh(ji  ,jj)  & 
    10181018               &                   + e1e2t(ji+1,jj) * pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 
     
    10251025         ! 
    10261026      CASE( 'V' )                   !* from T- to V-point : hor. surface weighted mean 
    1027          DO_2D_00_00 
     1027         DO_2D( 0, 0, 0, 0 ) 
    10281028            zc3(ji,jj) = 0.5_wp * (  e1e2t(ji,jj  ) * pssh(ji,jj  )  & 
    10291029               &                   + e1e2t(ji,jj+1) * pssh(ji,jj+1)  ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 
     
    10361036         ! 
    10371037      CASE( 'F' )                   !* from U-point to F-point : hor. surface weighted mean 
    1038          DO_2D_10_10 
     1038         DO_2D( 1, 0, 1, 0 ) 
    10391039            zc3(ji,jj) = 0.25_wp * (  e1e2t(ji  ,jj  ) * pssh(ji  ,jj  )  & 
    10401040               &                    + e1e2t(ji+1,jj  ) * pssh(ji+1,jj  )  & 
     
    10571057      CASE( 'UW' )                  !* from U- to UW-point 
    10581058         ! 
    1059          DO_2D_00_00 
     1059         DO_2D( 0, 0, 0, 0 ) 
    10601060            zc3(ji,jj) = 0.5_wp * (  e1e2t(ji  ,jj) * pssh(ji  ,jj)  & 
    10611061               &                   + e1e2t(ji+1,jj) * pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 
     
    10681068      CASE( 'VW' )                  !* from U- to UW-point : vertical simple mean 
    10691069         ! 
    1070          DO_2D_00_00 
     1070         DO_2D( 0, 0, 0, 0 ) 
    10711071            zc3(ji,jj) = 0.5_wp * (  e1e2t(ji,jj  ) * pssh(ji,jj  )  & 
    10721072               &                   + e1e2t(ji,jj+1) * pssh(ji,jj+1)  ) * r1_hv_0(ji,jj) * r1_e1e2v(ji,jj) 
     
    12011201                  ssh(:,:,Kbb) = -ssh_ref 
    12021202 
    1203                   DO_2D_11_11 
     1203                  DO_2D( 1, 1, 1, 1 ) 
    12041204                     IF( ht_0(ji,jj)-ssh_ref <  rn_wdmin1 ) THEN ! if total depth is less than min depth 
    12051205                        ssh(ji,jj,Kbb) = rn_wdmin1 - (ht_0(ji,jj) ) 
Note: See TracChangeset for help on using the changeset viewer.