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/ICE/icedyn_rhg_evp.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/ICE/icedyn_rhg_evp.F90

    r13286 r13295  
    181181      !------------------------------------------------------------------------------! 
    182182      ! ocean/land mask 
    183       DO_2D_10_10 
     183      DO_2D( 1, 0, 1, 0 ) 
    184184         zfmask(ji,jj) = tmask(ji,jj,1) * tmask(ji+1,jj,1) * tmask(ji,jj+1,1) * tmask(ji+1,jj+1,1) 
    185185      END_2D 
     
    188188      ! Lateral boundary conditions on velocity (modify zfmask) 
    189189      zwf(:,:) = zfmask(:,:) 
    190       DO_2D_00_00 
     190      DO_2D( 0, 0, 0, 0 ) 
    191191         IF( zfmask(ji,jj) == 0._wp ) THEN 
    192192            zfmask(ji,jj) = rn_ishlat * MIN( 1._wp , MAX( zwf(ji+1,jj), zwf(ji,jj+1), zwf(ji-1,jj), zwf(ji,jj-1) ) ) 
     
    254254      zsshdyn(:,:) = ice_var_sshdyn( ssh_m, snwice_mass, snwice_mass_b) 
    255255 
    256       DO_2D_00_00 
     256      DO_2D( 0, 0, 0, 0 ) 
    257257 
    258258         ! ice fraction at U-V points 
     
    305305      ! 
    306306      IF( ln_landfast_L16 ) THEN         !-- Lemieux 2016 
    307          DO_2D_00_00 
     307         DO_2D( 0, 0, 0, 0 ) 
    308308            ! ice thickness at U-V points 
    309309            zvU = 0.5_wp * ( vt_i(ji,jj) * e1e2t(ji,jj) + vt_i(ji+1,jj) * e1e2t(ji+1,jj) ) * r1_e1e2u(ji,jj) * umask(ji,jj,1) 
     
    322322         ! 
    323323      ELSE                               !-- no landfast 
    324          DO_2D_00_00 
     324         DO_2D( 0, 0, 0, 0 ) 
    325325            ztaux_base(ji,jj) = 0._wp 
    326326            ztauy_base(ji,jj) = 0._wp 
     
    345345 
    346346         ! --- divergence, tension & shear (Appendix B of Hunke & Dukowicz, 2002) --- ! 
    347          DO_2D_10_10 
     347         DO_2D( 1, 0, 1, 0 ) 
    348348 
    349349            ! shear at F points 
     
    355355         CALL lbc_lnk( 'icedyn_rhg_evp', zds, 'F', 1.0_wp ) 
    356356 
    357          DO_2D_01_01 
     357         DO_2D( 0, 1, 0, 1 ) 
    358358 
    359359            ! shear**2 at T points (doc eq. A16) 
     
    397397         CALL lbc_lnk( 'icedyn_rhg_evp', zp_delt, 'T', 1.0_wp ) 
    398398 
    399          DO_2D_10_10 
     399         DO_2D( 1, 0, 1, 0 ) 
    400400 
    401401            ! alpha & beta for aEVP 
     
    415415 
    416416         ! --- Ice internal stresses (Appendix C of Hunke and Dukowicz, 2002) --- ! 
    417          DO_2D_00_00 
     417         DO_2D( 0, 0, 0, 0 ) 
    418418            !                   !--- U points 
    419419            zfU(ji,jj) = 0.5_wp * ( ( zs1(ji+1,jj) - zs1(ji,jj) ) * e2u(ji,jj)                                             & 
     
    443443         IF( MOD(jter,2) == 0 ) THEN ! even iterations 
    444444            ! 
    445             DO_2D_00_00 
     445            DO_2D( 0, 0, 0, 0 ) 
    446446               !                 !--- tau_io/(v_oce - v_ice) 
    447447               zTauO = zaV(ji,jj) * zrhoco * SQRT( ( v_ice (ji,jj) - v_oce (ji,jj) ) * ( v_ice (ji,jj) - v_oce (ji,jj) )  & 
     
    492492            IF( ln_bdy )   CALL bdy_ice_dyn( 'V' ) 
    493493            ! 
    494             DO_2D_00_00 
     494            DO_2D( 0, 0, 0, 0 ) 
    495495               !                 !--- tau_io/(u_oce - u_ice) 
    496496               zTauO = zaU(ji,jj) * zrhoco * SQRT( ( u_ice (ji,jj) - u_oce (ji,jj) ) * ( u_ice (ji,jj) - u_oce (ji,jj) )  & 
     
    543543         ELSE ! odd iterations 
    544544            ! 
    545             DO_2D_00_00 
     545            DO_2D( 0, 0, 0, 0 ) 
    546546               !                 !--- tau_io/(u_oce - u_ice) 
    547547               zTauO = zaU(ji,jj) * zrhoco * SQRT( ( u_ice (ji,jj) - u_oce (ji,jj) ) * ( u_ice (ji,jj) - u_oce (ji,jj) )  & 
     
    592592            IF( ln_bdy )   CALL bdy_ice_dyn( 'U' ) 
    593593            ! 
    594             DO_2D_00_00 
     594            DO_2D( 0, 0, 0, 0 ) 
    595595               !                 !--- tau_io/(v_oce - v_ice) 
    596596               zTauO = zaV(ji,jj) * zrhoco * SQRT( ( v_ice (ji,jj) - v_oce (ji,jj) ) * ( v_ice (ji,jj) - v_oce (ji,jj) )  & 
     
    658658      ! 4) Recompute delta, shear and div (inputs for mechanical redistribution)  
    659659      !------------------------------------------------------------------------------! 
    660       DO_2D_10_10 
     660      DO_2D( 1, 0, 1, 0 ) 
    661661 
    662662         ! shear at F points 
     
    667667      END_2D 
    668668       
    669       DO_2D_00_00 
     669      DO_2D( 0, 0, 0, 0 ) 
    670670          
    671671         ! tension**2 at T points 
     
    706706      ! 5) diagnostics 
    707707      !------------------------------------------------------------------------------! 
    708       DO_2D_11_11 
     708      DO_2D( 1, 1, 1, 1 ) 
    709709         zmsk00(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice, 0 if no ice 
    710710      END_2D 
     
    735735         ALLOCATE( zsig1(jpi,jpj) , zsig2(jpi,jpj) , zsig3(jpi,jpj) ) 
    736736         !          
    737          DO_2D_00_00 
     737         DO_2D( 0, 0, 0, 0 ) 
    738738            zdum1 = ( zmsk00(ji-1,jj) * pstress12_i(ji-1,jj) + zmsk00(ji  ,jj-1) * pstress12_i(ji  ,jj-1) +  &  ! stress12_i at T-point 
    739739               &      zmsk00(ji  ,jj) * pstress12_i(ji  ,jj) + zmsk00(ji-1,jj-1) * pstress12_i(ji-1,jj-1) )  & 
     
    786786            &      zdiag_xmtrp_snw(jpi,jpj) , zdiag_ymtrp_snw(jpi,jpj) , zdiag_xatrp(jpi,jpj) , zdiag_yatrp(jpi,jpj) ) 
    787787         ! 
    788          DO_2D_00_00 
     788         DO_2D( 0, 0, 0, 0 ) 
    789789            ! 2D ice mass, snow mass, area transport arrays (X, Y) 
    790790            zfac_x = 0.5 * u_ice(ji,jj) * e2u(ji,jj) * zmsk00(ji,jj) 
Note: See TracChangeset for help on using the changeset viewer.