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/LDF/ldftra.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/LDF/ldftra.F90

    r13286 r13295  
    430430         zaht_min = 0.2_wp * aht0                                       ! minimum value for aht 
    431431         zDaht    = aht0 - zaht_min                                       
    432          DO_2D_11_11 
     432         DO_2D( 1, 1, 1, 1 ) 
    433433            !!gm CAUTION : here we assume lat/lon grid in 20deg N/S band (like all ORCA cfg) 
    434434            !!     ==>>>   The Coriolis value is identical for t- & u_points, and for v- and f-points 
     
    648648      !                       ! Compute lateral diffusive coefficient at T-point 
    649649      IF( ln_traldf_triad ) THEN 
    650          DO_3D_00_00( 1, jpk ) 
     650         DO_3D( 0, 0, 0, 0, 1, jpk ) 
    651651            ! Take the max of N^2 and zero then take the vertical sum  
    652652            ! of the square root of the resulting N^2 ( required to compute  
     
    662662         END_3D 
    663663      ELSE 
    664          DO_3D_00_00( 1, jpk ) 
     664         DO_3D( 0, 0, 0, 0, 1, jpk ) 
    665665            ! Take the max of N^2 and zero then take the vertical sum  
    666666            ! of the square root of the resulting N^2 ( required to compute  
     
    678678      ENDIF 
    679679 
    680       DO_2D_00_00 
     680      DO_2D( 0, 0, 0, 0 ) 
    681681         zfw = MAX( ABS( 2. * omega * SIN( rad * gphit(ji,jj) ) ) , 1.e-10 ) 
    682682         ! Rossby radius at w-point taken betwenn 2 km and  40km 
     
    688688      !                                         !==  Bound on eiv coeff.  ==! 
    689689      z1_f20 = 1._wp / (  2._wp * omega * sin( rad * 20._wp )  ) 
    690       DO_2D_00_00 
     690      DO_2D( 0, 0, 0, 0 ) 
    691691         zzaei = MIN( 1._wp, ABS( ff_t(ji,jj) * z1_f20 ) ) * zaeiw(ji,jj)     ! tropical decrease 
    692692         zaeiw(ji,jj) = MIN( zzaei , paei0 )                                  ! Max value = paei0 
     
    694694      CALL lbc_lnk( 'ldftra', zaeiw(:,:), 'W', 1.0_wp )       ! lateral boundary condition 
    695695      !                
    696       DO_2D_00_00 
     696      DO_2D( 0, 0, 0, 0 ) 
    697697         paeiu(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji+1,jj  ) ) * umask(ji,jj,1) 
    698698         paeiv(ji,jj,1) = 0.5_wp * ( zaeiw(ji,jj) + zaeiw(ji  ,jj+1) ) * vmask(ji,jj,1) 
     
    750750      zpsi_uw(:,:,jpk) = 0._wp   ;   zpsi_vw(:,:,jpk) = 0._wp 
    751751      ! 
    752       DO_3D_10_10( 2, jpkm1 ) 
     752      DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    753753         zpsi_uw(ji,jj,jk) = - r1_4 * e2u(ji,jj) * ( wslpi(ji,jj,jk  ) + wslpi(ji+1,jj,jk) )   & 
    754754            &                                    * ( aeiu (ji,jj,jk-1) + aeiu (ji  ,jj,jk) ) * wumask(ji,jj,jk) 
     
    757757      END_3D 
    758758      ! 
    759       DO_3D_10_10( 1, jpkm1 ) 
     759      DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    760760         pu(ji,jj,jk) = pu(ji,jj,jk) - ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji,jj,jk+1) ) 
    761761         pv(ji,jj,jk) = pv(ji,jj,jk) - ( zpsi_vw(ji,jj,jk) - zpsi_vw(ji,jj,jk+1) ) 
    762762      END_3D 
    763       DO_3D_00_00( 1, jpkm1 ) 
     763      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    764764         pw(ji,jj,jk) = pw(ji,jj,jk) + (  zpsi_uw(ji,jj,jk) - zpsi_uw(ji-1,jj  ,jk)   & 
    765765            &                             + zpsi_vw(ji,jj,jk) - zpsi_vw(ji  ,jj-1,jk) ) 
     
    813813      CALL iom_put( "voce_eiv", zw3d ) 
    814814      ! 
    815       DO_3D_00_00( 1, jpkm1 ) 
     815      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    816816         zw3d(ji,jj,jk) = (  psi_vw(ji,jj,jk) - psi_vw(ji  ,jj-1,jk)    & 
    817817            &              + psi_uw(ji,jj,jk) - psi_uw(ji-1,jj  ,jk)  ) / e1e2t(ji,jj) 
     
    840840        zw2d(:,:)   = 0._wp  
    841841        zw3d(:,:,:) = 0._wp  
    842         DO_3D_00_00( 1, jpkm1 ) 
     842        DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    843843           zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_uw(ji,jj,jk+1)          - psi_uw(ji  ,jj,jk)            )   & 
    844844              &                            * ( ts    (ji,jj,jk,jp_tem,Kmm) + ts    (ji+1,jj,jk,jp_tem,Kmm) )  
     
    861861      zw2d(:,:)   = 0._wp  
    862862      zw3d(:,:,:) = 0._wp  
    863       DO_3D_00_00( 1, jpkm1 ) 
     863      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    864864         zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)          - psi_vw(ji,jj  ,jk)            )   & 
    865865            &                            * ( ts    (ji,jj,jk,jp_tem,Kmm) + ts    (ji,jj+1,jk,jp_tem,Kmm) )  
     
    876876        zw2d(:,:) = 0._wp  
    877877        zw3d(:,:,:) = 0._wp  
    878         DO_3D_00_00( 1, jpkm1 ) 
     878        DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    879879           zw3d(ji,jj,jk) = zw3d(ji,jj,jk) * ( psi_uw(ji,jj,jk+1)          - psi_uw(ji  ,jj,jk)            )   & 
    880880              &                            * ( ts    (ji,jj,jk,jp_sal,Kmm) + ts    (ji+1,jj,jk,jp_sal,Kmm) )  
     
    888888      zw2d(:,:) = 0._wp  
    889889      zw3d(:,:,:) = 0._wp  
    890       DO_3D_00_00( 1, jpkm1 ) 
     890      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    891891         zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_vw(ji,jj,jk+1)          - psi_vw(ji,jj  ,jk)            )   & 
    892892            &                            * ( ts    (ji,jj,jk,jp_sal,Kmm) + ts    (ji,jj+1,jk,jp_sal,Kmm) )  
Note: See TracChangeset for help on using the changeset viewer.