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/ABL – NEMO

Changeset 13295 for NEMO/trunk/src/ABL


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/ABL/ablmod.F90

    r13226 r13295  
    127127      !! needed for surface boundary condition of TKE 
    128128      !! pwndm contains | U10m - U_oce | (see blk_oce_1 in sbcblk) 
    129       DO_2D_11_11 
     129      DO_2D( 1, 1, 1, 1 ) 
    130130         zzoce         = pCd_du    (ji,jj) * pwndm    (ji,jj) 
    131131#if defined key_si3 
     
    245245            ! 
    246246            ! Advance u_abl & v_abl to time n+1 
    247             DO_2D_11_11 
     247            DO_2D( 1, 1, 1, 1 ) 
    248248               zcff = ( fft_abl(ji,jj) * rDt_abl )*( fft_abl(ji,jj) * rDt_abl )  ! (f dt)**2 
    249249 
     
    483483         DO jk = 2, jpka    ! outer loop 
    484484         !------------- 
    485             DO_2D_01_01 
     485            DO_2D( 0, 1, 0, 1 ) 
    486486               zcff1 = pblh( ji, jj ) 
    487487               zsig  = ght_abl(jk) / MAX( jp_pblh_min,  MIN(  jp_pblh_max, zcff1  ) ) 
     
    506506      DO jk = 2, jpka    ! outer loop 
    507507      !------------- 
    508          DO_2D_11_11 
     508         DO_2D( 1, 1, 1, 1 ) 
    509509            zcff1 = pblh( ji, jj ) 
    510510            zsig  = ght_abl(jk) / MAX( jp_pblh_min,  MIN(  jp_pblh_max, zcff1  ) ) 
     
    580580      !                            !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    581581      ! 
    582       DO_2D_11_11 
     582      DO_2D( 1, 1, 1, 1 ) 
    583583         ztemp          =  tq_abl( ji, jj, 2, nt_a, jp_ta ) 
    584584         zhumi          =  tq_abl( ji, jj, 2, nt_a, jp_qa ) 
     
    589589      END_2D 
    590590 
    591       DO_2D_01_01 
     591      DO_2D( 0, 1, 0, 1 ) 
    592592         zwnd_i(ji,jj) = u_abl(ji  ,jj,2,nt_a) - 0.5_wp * ( pssu(ji  ,jj) + pssu(ji-1,jj) )   
    593593         zwnd_j(ji,jj) = v_abl(ji,jj  ,2,nt_a) - 0.5_wp * ( pssv(ji,jj  ) + pssv(ji,jj-1) )  
     
    597597      ! 
    598598      ! ... scalar wind ( = | U10m - U_oce | ) at T-point (masked) 
    599       DO_2D_11_11 
     599      DO_2D( 1, 1, 1, 1 ) 
    600600         zcff          = SQRT(  zwnd_i(ji,jj) * zwnd_i(ji,jj)   & 
    601601            &                 + zwnd_j(ji,jj) * zwnd_j(ji,jj) )   ! * msk_abl(ji,jj) 
     
    610610      !     Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 
    611611      !     Note the use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelves 
    612       DO_2D_00_00 
     612      DO_2D( 0, 0, 0, 0 ) 
    613613         zcff  = 0.5_wp * ( 2._wp - msk_abl(ji,jj)*msk_abl(ji+1,jj) ) 
    614614         zztmp = MAX(msk_abl(ji,jj),msk_abl(ji+1,jj)) 
     
    633633      !    Wind stress relative to the moving ice ( U10m - U_ice )   ! 
    634634      ! ------------------------------------------------------------ ! 
    635       DO_2D_00_00            
     635      DO_2D( 0, 0, 0, 0 )            
    636636         ptaui_ice(ji,jj) = 0.5_wp * ( rhoa(ji+1,jj) * pCd_du_ice(ji+1,jj) + rhoa(ji,jj) * pCd_du_ice(ji,jj)      )   & 
    637637            &                      * ( 0.5_wp * ( u_abl(ji+1,jj,2,nt_a) + u_abl(ji,jj,2,nt_a) ) - pssu_ice(ji,jj) ) 
     
    646646      !    Wind stress relative to the moving ice ( U10m - U_ice )   ! 
    647647      ! ------------------------------------------------------------ ! 
    648       DO_2D_00_00 
     648      DO_2D( 0, 0, 0, 0 ) 
    649649 
    650650         zztmp1 = 0.5_wp * ( u_abl(ji+1,jj  ,2,nt_a) + u_abl(ji,jj,2,nt_a) ) 
     
    12591259      smth_b = 1._wp / 4._wp 
    12601260      ! 
    1261       DO_2D_11_10 
     1261      DO_2D( 1, 1, 1, 0 ) 
    12621262         zumsk = msk(ji,jj) * msk(ji+1,jj) 
    12631263         zdX ( ji, jj ) = ( pvar2d( ji+1,jj ) - pvar2d( ji  ,jj ) ) * zumsk 
    12641264      END_2D 
    12651265 
    1266       DO_2D_10_11 
     1266      DO_2D( 1, 0, 1, 1 ) 
    12671267         zvmsk = msk(ji,jj) * msk(ji,jj+1) 
    12681268         zdY ( ji, jj ) = ( pvar2d( ji, jj+1 ) - pvar2d( ji  ,jj ) ) * zvmsk 
    12691269      END_2D 
    12701270 
    1271       DO_2D_10_00 
     1271      DO_2D( 1, 0, 0, 0 ) 
    12721272         zFY ( ji, jj  ) =   zdY ( ji, jj   )                        & 
    12731273            & +  smth_a*  ( (zdX ( ji, jj+1 ) - zdX( ji-1, jj+1 ))   & 
     
    12751275      END_2D 
    12761276 
    1277       DO_2D_00_10 
     1277      DO_2D( 0, 0, 1, 0 ) 
    12781278         zFX( ji, jj  ) =    zdX( ji, jj   )                         & 
    12791279           &    + smth_a*(  (zdY( ji+1, jj ) - zdY( ji+1, jj-1))     & 
     
    12811281      END_2D 
    12821282 
    1283       DO_2D_00_00 
     1283      DO_2D( 0, 0, 0, 0 ) 
    12841284         pvar2d( ji  ,jj ) = pvar2d( ji  ,jj )              & 
    12851285  &         + msk(ji,jj) * smth_b * (                       & 
Note: See TracChangeset for help on using the changeset viewer.