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/ZDF – 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/ZDF
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/ZDF/zdfddm.F90

    r13237 r13295  
    9494!!gm                            and many acces in memory 
    9595          
    96          DO_2D_11_11 
     96         DO_2D( 1, 1, 1, 1 ) 
    9797            zrw =   ( gdepw(ji,jj,jk  ,Kmm) - gdept(ji,jj,jk,Kmm) )   & 
    9898!!gm please, use e3w at Kmm below  
     
    110110         END_2D 
    111111 
    112          DO_2D_11_11 
     112         DO_2D( 1, 1, 1, 1 ) 
    113113            ! stability indicator: msks=1 if rn2>0; 0 elsewhere 
    114114            IF( rn2(ji,jj,jk) + 1.e-12  <= 0. ) THEN   ;   zmsks(ji,jj) = 0._wp 
     
    140140         ! ------------------ 
    141141         ! Constant eddy coefficient: reset to the background value 
    142          DO_2D_11_11 
     142         DO_2D( 1, 1, 1, 1 ) 
    143143            zinr = 1._wp / zrau(ji,jj) 
    144144            ! salt fingering 
  • NEMO/trunk/src/OCE/ZDF/zdfdrg.F90

    r13286 r13295  
    116116      ! 
    117117      IF( l_log_not_linssh ) THEN     !==  "log layer"  ==!   compute Cd and -Cd*|U| 
    118          DO_2D_00_00 
     118         DO_2D( 0, 0, 0, 0 ) 
    119119            imk = k_mk(ji,jj)          ! ocean bottom level at t-points 
    120120            zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm)     ! 2 x velocity at t-point 
     
    128128         END_2D 
    129129      ELSE                                            !==  standard Cd  ==! 
    130          DO_2D_00_00 
     130         DO_2D( 0, 0, 0, 0 ) 
    131131            imk = k_mk(ji,jj)    ! ocean bottom level at t-points 
    132132            zut = uu(ji,jj,imk,Kmm) + uu(ji-1,jj,imk,Kmm)     ! 2 x velocity at t-point 
     
    175175      ENDIF 
    176176 
    177       DO_2D_00_00 
     177      DO_2D( 0, 0, 0, 0 ) 
    178178         ikbu = mbku(ji,jj)          ! deepest wet ocean u- & v-levels 
    179179         ikbv = mbkv(ji,jj) 
     
    188188      ! 
    189189      IF( ln_isfcav ) THEN        ! ocean cavities 
    190          DO_2D_00_00 
     190         DO_2D( 0, 0, 0, 0 ) 
    191191            ikbu = miku(ji,jj)          ! first wet ocean u- & v-levels 
    192192            ikbv = mikv(ji,jj) 
     
    422422            l_log_not_linssh = .FALSE.    !- don't update Cd at each time step 
    423423            ! 
    424             DO_2D_11_11 
     424            DO_2D( 1, 1, 1, 1 ) 
    425425               zzz =  0.5_wp * e3t_0(ji,jj,k_mk(ji,jj)) 
    426426               zcd = (  vkarmn / LOG( zzz / rn_z0 )  )**2 
  • NEMO/trunk/src/OCE/ZDF/zdfevd.F90

    r12377 r13295  
    8787!         END WHERE 
    8888         ! 
    89          DO_3D_00_00( 1, jpkm1 ) 
     89         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    9090            IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 
    9191               p_avt(ji,jj,jk) = rn_evd * wmask(ji,jj,jk) 
     
    103103!         END WHERE 
    104104 
    105          DO_3D_00_00( 1, jpkm1 ) 
     105         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    106106            IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 )   & 
    107107               p_avt(ji,jj,jk) = rn_evd * wmask(ji,jj,jk) 
  • NEMO/trunk/src/OCE/ZDF/zdfgls.F90

    r13286 r13295  
    168168 
    169169      ! Compute surface, top and bottom friction at T-points 
    170       DO_2D_00_00 
     170      DO_2D( 0, 0, 0, 0 ) 
    171171         ! 
    172172         ! surface friction 
     
    181181      END_2D 
    182182      IF( ln_isfcav ) THEN       !top friction 
    183          DO_2D_00_00 
     183         DO_2D( 0, 0, 0, 0 ) 
    184184            zmsku = ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 
    185185            zmskv = ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) )     ! (CAUTION: CdU<0) 
     
    204204      END SELECT 
    205205      ! 
    206       DO_3D_10_10( 2, jpkm1 ) 
     206      DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    207207         eps(ji,jj,jk)  = rc03 * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / hmxl_n(ji,jj,jk) 
    208208      END_3D 
     
    213213 
    214214      IF( nn_clos == 0 ) THEN    ! Mellor-Yamada 
    215          DO_3D_00_00( 2, jpkm1 ) 
     215         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    216216            zup   = hmxl_n(ji,jj,jk) * gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) 
    217217            zdown = vkarmn * gdepw(ji,jj,jk,Kmm) * ( -gdepw(ji,jj,jk,Kmm) + gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) ) 
     
    234234      ! Warning : after this step, en : right hand side of the matrix 
    235235 
    236       DO_3D_00_00( 2, jpkm1 ) 
     236      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    237237         ! 
    238238         buoy = - p_avt(ji,jj,jk) * rn2(ji,jj,jk)     ! stratif. destruction 
     
    330330         !                      ! en(ibot) = u*^2 / Co2 and hmxl_n(ibot) = rn_lmin 
    331331         !                      ! Balance between the production and the dissipation terms 
    332          DO_2D_00_00 
     332         DO_2D( 0, 0, 0, 0 ) 
    333333!!gm This means that bottom and ocean w-level above have a specified "en" value.   Sure ???? 
    334334!!   With thick deep ocean level thickness, this may be quite large, no ??? 
     
    348348         ! 
    349349         IF( ln_isfcav) THEN     ! top boundary   (ocean cavity) 
    350             DO_2D_00_00 
     350            DO_2D( 0, 0, 0, 0 ) 
    351351               itop   = mikt(ji,jj)       ! k   top w-point 
    352352               itopp1 = mikt(ji,jj) + 1   ! k+1 1st w-point below the top one 
     
    366366      CASE ( 1 )             ! Neumman boundary condition 
    367367         !                       
    368          DO_2D_00_00 
     368         DO_2D( 0, 0, 0, 0 ) 
    369369            ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    370370            ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    380380         END_2D 
    381381         IF( ln_isfcav) THEN     ! top boundary   (ocean cavity) 
    382             DO_2D_00_00 
     382            DO_2D( 0, 0, 0, 0 ) 
    383383               itop   = mikt(ji,jj)       ! k   top w-point 
    384384               itopp1 = mikt(ji,jj) + 1   ! k+1 1st w-point below the top one 
     
    400400      ! ---------------------------------------------------------- 
    401401      ! 
    402       DO_3D_00_00( 2, jpkm1 ) 
     402      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    403403         zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    404404      END_3D 
    405       DO_3D_00_00( 2, jpk ) 
     405      DO_3D( 0, 0, 0, 0, 2, jpk ) 
    406406         zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 
    407407      END_3D 
    408       DO_3DS_00_00( jpk-1, 2, -1 ) 
     408      DO_3DS( 0, 0, 0, 0, jpk-1, 2, -1 ) 
    409409         en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    410410      END_3D 
     
    421421      ! 
    422422      CASE( 0 )               ! k-kl  (Mellor-Yamada) 
    423          DO_3D_00_00( 2, jpkm1 ) 
     423         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    424424            psi(ji,jj,jk)  = eb(ji,jj,jk) * hmxl_b(ji,jj,jk) 
    425425         END_3D 
    426426         ! 
    427427      CASE( 1 )               ! k-eps 
    428          DO_3D_00_00( 2, jpkm1 ) 
     428         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    429429            psi(ji,jj,jk)  = eps(ji,jj,jk) 
    430430         END_3D 
    431431         ! 
    432432      CASE( 2 )               ! k-w 
    433          DO_3D_00_00( 2, jpkm1 ) 
     433         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    434434            psi(ji,jj,jk)  = SQRT( eb(ji,jj,jk) ) / ( rc0 * hmxl_b(ji,jj,jk) ) 
    435435         END_3D 
    436436         ! 
    437437      CASE( 3 )               ! generic 
    438          DO_3D_00_00( 2, jpkm1 ) 
     438         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    439439            psi(ji,jj,jk)  = rc02 * eb(ji,jj,jk) * hmxl_b(ji,jj,jk)**rnn  
    440440         END_3D 
     
    449449      ! Warning : after this step, en : right hand side of the matrix 
    450450 
    451       DO_3D_00_00( 2, jpkm1 ) 
     451      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    452452         ! 
    453453         ! psi / k 
     
    546546         !                      ! en(ibot) = u*^2 / Co2 and hmxl_n(ibot) = vkarmn * r_z0_bot 
    547547         !                      ! Balance between the production and the dissipation terms 
    548          DO_2D_00_00 
     548         DO_2D( 0, 0, 0, 0 ) 
    549549            ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    550550            ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    565565      CASE ( 1 )             ! Neumman boundary condition 
    566566         !                       
    567          DO_2D_00_00 
     567         DO_2D( 0, 0, 0, 0 ) 
    568568            ibot   = mbkt(ji,jj) + 1      ! k   bottom level of w-point 
    569569            ibotm1 = mbkt(ji,jj)          ! k-1 bottom level of w-point but >=1 
     
    593593      ! ---------------- 
    594594      ! 
    595       DO_3D_00_00( 2, jpkm1 ) 
     595      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    596596         zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    597597      END_3D 
    598       DO_3D_00_00( 2, jpk ) 
     598      DO_3D( 0, 0, 0, 0, 2, jpk ) 
    599599         zd_lw(ji,jj,jk) = psi(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) * zd_lw(ji,jj,jk-1) 
    600600      END_3D 
    601       DO_3DS_00_00( jpk-1, 2, -1 ) 
     601      DO_3DS( 0, 0, 0, 0, jpk-1, 2, -1 ) 
    602602         psi(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * psi(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    603603      END_3D 
     
    609609      ! 
    610610      CASE( 0 )               ! k-kl  (Mellor-Yamada) 
    611          DO_3D_00_00( 1, jpkm1 ) 
     611         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    612612            eps(ji,jj,jk) = rc03 * en(ji,jj,jk) * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / MAX( psi(ji,jj,jk), rn_epsmin) 
    613613         END_3D 
    614614         ! 
    615615      CASE( 1 )               ! k-eps 
    616          DO_3D_00_00( 1, jpkm1 ) 
     616         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    617617            eps(ji,jj,jk) = psi(ji,jj,jk) 
    618618         END_3D 
    619619         ! 
    620620      CASE( 2 )               ! k-w 
    621          DO_3D_00_00( 1, jpkm1 ) 
     621         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    622622            eps(ji,jj,jk) = rc04 * en(ji,jj,jk) * psi(ji,jj,jk)  
    623623         END_3D 
     
    627627         zex1  =      ( 1.5_wp + rmm/rnn ) 
    628628         zex2  = -1._wp / rnn 
    629          DO_3D_00_00( 1, jpkm1 ) 
     629         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    630630            eps(ji,jj,jk) = zcoef * en(ji,jj,jk)**zex1 * psi(ji,jj,jk)**zex2 
    631631         END_3D 
     
    635635      ! Limit dissipation rate under stable stratification 
    636636      ! -------------------------------------------------- 
    637       DO_3D_00_00( 1, jpkm1 ) 
     637      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    638638         ! limitation 
    639639         eps   (ji,jj,jk)  = MAX( eps(ji,jj,jk), rn_epsmin ) 
     
    651651      ! 
    652652      CASE ( 0 , 1 )             ! Galperin or Kantha-Clayson stability functions 
    653          DO_3D_00_00( 2, jpkm1 ) 
     653         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    654654            ! zcof =  l²/q² 
    655655            zcof = hmxl_b(ji,jj,jk) * hmxl_b(ji,jj,jk) / ( 2._wp*eb(ji,jj,jk) ) 
     
    668668         ! 
    669669      CASE ( 2, 3 )               ! Canuto stability functions 
    670          DO_3D_00_00( 2, jpkm1 ) 
     670         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    671671            ! zcof =  l²/q² 
    672672            zcof = hmxl_b(ji,jj,jk)*hmxl_b(ji,jj,jk) / ( 2._wp * eb(ji,jj,jk) ) 
     
    700700      ! default value, in case jpk > mbkt(ji,jj)+1. Not needed but avoid a bug when looking for undefined values (-fpe0) 
    701701      zstm(:,:,jpk) = 0.   
    702       DO_2D_00_00 
     702      DO_2D( 0, 0, 0, 0 ) 
    703703         zstm(ji,jj,mbkt(ji,jj)+1) = zstm(ji,jj,mbkt(ji,jj)) 
    704704      END_2D 
     
    715715      !     later overwritten by surface/bottom boundaries conditions, so we don't really care of p_avm(:,:1) and p_avm(:,:jpk) 
    716716      !     for zd_lw and zd_up but they have to be defined to avoid a bug when looking for undefined values (-fpe0) 
    717       DO_3D_00_00( 1, jpk ) 
     717      DO_3D( 0, 0, 0, 0, 1, jpk ) 
    718718         zsqen = SQRT( 2._wp * en(ji,jj,jk) ) * hmxl_n(ji,jj,jk) 
    719719         zavt  = zsqen * zstt(ji,jj,jk) 
  • NEMO/trunk/src/OCE/ZDF/zdfiwm.F90

    r13286 r13295  
    143143      ! Set to zero the 1st and last vertical levels of appropriate variables 
    144144      IF( iom_use("emix_iwm") ) THEN 
    145          DO_2D_00_00 
     145         DO_2D( 0, 0, 0, 0 ) 
    146146            zemx_iwm (ji,jj,1) = 0._wp   ;   zemx_iwm (ji,jj,jpk) = 0._wp 
    147147         END_2D 
     
    150150      ENDIF 
    151151      IF( iom_use("av_ratio") ) THEN 
    152          DO_2D_00_00 
     152         DO_2D( 0, 0, 0, 0 ) 
    153153            zav_ratio(ji,jj,1) = 0._wp   ;   zav_ratio(ji,jj,jpk) = 0._wp 
    154154         END_2D 
     
    157157      ENDIF 
    158158      IF( iom_use("av_wave") ) THEN 
    159          DO_2D_00_00 
     159         DO_2D( 0, 0, 0, 0 ) 
    160160            zav_wave (ji,jj,1) = 0._wp   ;   zav_wave (ji,jj,jpk) = 0._wp 
    161161         END_2D 
     
    170170      !                       !* Critical slope mixing: distribute energy over the time-varying ocean depth, 
    171171      !                                                 using an exponential decay from the seafloor. 
    172       DO_2D_00_00 
     172      DO_2D( 0, 0, 0, 0 ) 
    173173         zhdep(ji,jj) = gdepw_0(ji,jj,mbkt(ji,jj)+1)       ! depth of the ocean 
    174174         zfact(ji,jj) = rho0 * (  1._wp - EXP( -zhdep(ji,jj) / hcri_iwm(ji,jj) )  ) 
     
    176176      END_2D 
    177177!!gm gde3w ==>>>  check for ssh taken into account.... seem OK gde3w_n=gdept(:,:,:,Kmm) - ssh(:,:,Kmm) 
    178       DO_3D_00_00( 2, jpkm1 ) 
     178      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    179179         IF ( zfact(ji,jj) == 0._wp .OR. wmask(ji,jj,jk) == 0._wp ) THEN   ! optimization 
    180180            zemx_iwm(ji,jj,jk) = 0._wp 
     
    196196      CASE ( 1 )               ! Dissipation scales as N (recommended) 
    197197         ! 
    198          DO_2D_00_00 
     198         DO_2D( 0, 0, 0, 0 ) 
    199199            zfact(ji,jj) = 0._wp 
    200200         END_2D 
    201          DO_3D_00_00( 2, jpkm1 )       ! part independent of the level 
     201         DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
    202202            zfact(ji,jj) = zfact(ji,jj) + e3w(ji,jj,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(ji,jj,jk) )  ) * wmask(ji,jj,jk) 
    203203         END_3D 
    204204         ! 
    205          DO_2D_00_00 
     205         DO_2D( 0, 0, 0, 0 ) 
    206206            IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    207207         END_2D 
    208208         ! 
    209          DO_3D_00_00( 2, jpkm1 )       ! complete with the level-dependent part 
     209         DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! complete with the level-dependent part 
    210210            zemx_iwm(ji,jj,jk) = zemx_iwm(ji,jj,jk) + zfact(ji,jj) * SQRT(  MAX( 0._wp, rn2(ji,jj,jk) )  ) * wmask(ji,jj,jk) 
    211211         END_3D 
     
    213213      CASE ( 2 )               ! Dissipation scales as N^2 
    214214         ! 
    215          DO_2D_00_00 
     215         DO_2D( 0, 0, 0, 0 ) 
    216216            zfact(ji,jj) = 0._wp 
    217217         END_2D 
    218          DO_3D_00_00( 2, jpkm1 )       ! part independent of the level 
     218         DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
    219219            zfact(ji,jj) = zfact(ji,jj) + e3w(ji,jj,jk,Kmm) * MAX( 0._wp, rn2(ji,jj,jk) ) * wmask(ji,jj,jk) 
    220220         END_3D 
    221221         ! 
    222          DO_2D_00_00 
     222         DO_2D( 0, 0, 0, 0 ) 
    223223            IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = epyc_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    224224         END_2D 
    225225         ! 
    226          DO_3D_00_00( 2, jpkm1 )       ! complete with the level-dependent part 
     226         DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! complete with the level-dependent part 
    227227            zemx_iwm(ji,jj,jk) = zemx_iwm(ji,jj,jk) + zfact(ji,jj) * MAX( 0._wp, rn2(ji,jj,jk) ) * wmask(ji,jj,jk) 
    228228         END_3D 
     
    233233      !                        !* ocean depth as proportional to rn2 * exp(-z_wkb/rn_hbot) 
    234234      ! 
    235       DO_2D_00_00 
     235      DO_2D( 0, 0, 0, 0 ) 
    236236         zwkb(ji,jj,1) = 0._wp 
    237237      END_2D 
    238       DO_3D_00_00( 2, jpkm1 ) 
     238      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    239239         zwkb(ji,jj,jk) = zwkb(ji,jj,jk-1) + e3w(ji,jj,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(ji,jj,jk) )  ) * wmask(ji,jj,jk) 
    240240      END_3D 
    241       DO_2D_00_00 
     241      DO_2D( 0, 0, 0, 0 ) 
    242242         zfact(ji,jj) = zwkb(ji,jj,jpkm1) 
    243243      END_2D 
    244244      ! 
    245       DO_3D_00_00( 2, jpkm1 ) 
     245      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    246246         IF( zfact(ji,jj) /= 0 )   zwkb(ji,jj,jk) = zhdep(ji,jj) * ( zfact(ji,jj) - zwkb(ji,jj,jk) )   & 
    247247            &                                     * wmask(ji,jj,jk) / zfact(ji,jj) 
    248248      END_3D 
    249       DO_2D_00_00 
     249      DO_2D( 0, 0, 0, 0 ) 
    250250         zwkb (ji,jj,1) = zhdep(ji,jj) * wmask(ji,jj,1) 
    251251      END_2D 
    252252      ! 
    253       DO_3D_00_00( 2, jpkm1 ) 
     253      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    254254         IF ( rn2(ji,jj,jk) <= 0._wp .OR. wmask(ji,jj,jk) == 0._wp ) THEN   ! optimization: EXP coast a lot 
    255255            zweight(ji,jj,jk) = 0._wp 
     
    260260      END_3D 
    261261      ! 
    262       DO_2D_00_00 
     262      DO_2D( 0, 0, 0, 0 ) 
    263263         zfact(ji,jj) = 0._wp 
    264264      END_2D 
    265       DO_3D_00_00( 2, jpkm1 )       ! part independent of the level 
     265      DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! part independent of the level 
    266266         zfact(ji,jj) = zfact(ji,jj) + zweight(ji,jj,jk) 
    267267      END_3D 
    268268      ! 
    269       DO_2D_00_00 
     269      DO_2D( 0, 0, 0, 0 ) 
    270270         IF( zfact(ji,jj) /= 0 )   zfact(ji,jj) = ebot_iwm(ji,jj) / ( rho0 * zfact(ji,jj) ) 
    271271      END_2D 
    272272      ! 
    273       DO_3D_00_00( 2, jpkm1 )       ! complete with the level-dependent part 
     273      DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! complete with the level-dependent part 
    274274         zemx_iwm(ji,jj,jk) = zemx_iwm(ji,jj,jk) + zweight(ji,jj,jk) * zfact(ji,jj) * wmask(ji,jj,jk)   & 
    275275            &                                                        / ( gde3w(ji,jj,jk) - gde3w(ji,jj,jk-1) ) 
     
    279279!!gm  this is to be replaced by just a constant value znu=1.e-6 m2/s 
    280280      ! Calculate molecular kinematic viscosity 
    281       DO_3D_00_00( 1, jpkm1 ) 
     281      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    282282         znu_t(ji,jj,jk) = 1.e-4_wp * (  17.91_wp - 0.53810_wp * ts(ji,jj,jk,jp_tem,Kmm)   & 
    283283            &                                     + 0.00694_wp * ts(ji,jj,jk,jp_tem,Kmm) * ts(ji,jj,jk,jp_tem,Kmm)  & 
    284284            &                                     + 0.02305_wp * ts(ji,jj,jk,jp_sal,Kmm)  ) * tmask(ji,jj,jk) * r1_rho0 
    285285      END_3D 
    286       DO_3D_00_00( 2, jpkm1 ) 
     286      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    287287         znu_w(ji,jj,jk) = 0.5_wp * ( znu_t(ji,jj,jk-1) + znu_t(ji,jj,jk) ) * wmask(ji,jj,jk) 
    288288      END_3D 
     
    290290      ! 
    291291      ! Calculate turbulence intensity parameter Reb 
    292       DO_3D_00_00( 2, jpkm1 ) 
     292      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    293293         zReb(ji,jj,jk) = zemx_iwm(ji,jj,jk) / MAX( 1.e-20_wp, znu_w(ji,jj,jk) * rn2(ji,jj,jk) ) 
    294294      END_3D 
    295295      ! 
    296296      ! Define internal wave-induced diffusivity 
    297       DO_3D_00_00( 2, jpkm1 ) 
     297      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    298298         zav_wave(ji,jj,jk) = znu_w(ji,jj,jk) * zReb(ji,jj,jk) * r1_6   ! This corresponds to a constant mixing efficiency of 1/6 
    299299      END_3D 
    300300      ! 
    301301      IF( ln_mevar ) THEN              ! Variable mixing efficiency case : modify zav_wave in the 
    302          DO_3D_00_00( 2, jpkm1 ) 
     302         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    303303            IF( zReb(ji,jj,jk) > 480.00_wp ) THEN 
    304304               zav_wave(ji,jj,jk) = 3.6515_wp * znu_w(ji,jj,jk) * SQRT( zReb(ji,jj,jk) ) 
     
    309309      ENDIF 
    310310      ! 
    311       DO_3D_00_00( 2, jpkm1 )          ! Bound diffusivity by molecular value and 100 cm2/s 
     311      DO_3D( 0, 0, 0, 0, 2, jpkm1 )          ! Bound diffusivity by molecular value and 100 cm2/s 
    312312         zav_wave(ji,jj,jk) = MIN(  MAX( 1.4e-7_wp, zav_wave(ji,jj,jk) ), 1.e-2_wp  ) * wmask(ji,jj,jk) 
    313313      END_3D 
     
    316316         zztmp = 0._wp 
    317317!!gm used of glosum 3D.... 
    318          DO_3D_00_00( 2, jpkm1 ) 
     318         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    319319            zztmp = zztmp + e3w(ji,jj,jk,Kmm) * e1e2t(ji,jj)   & 
    320320               &          * MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
     
    338338      IF( ln_tsdiff ) THEN          !* Option for differential mixing of salinity and temperature 
    339339         ztmp1 = 0.505_wp + 0.495_wp * TANH( 0.92_wp * ( LOG10( 1.e-20_wp ) - 0.60_wp ) ) 
    340          DO_3D_00_00( 2, jpkm1 ) 
     340         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    341341            ztmp2 = zReb(ji,jj,jk) * 5._wp * r1_6 
    342342            IF ( ztmp2 > 1.e-20_wp .AND. wmask(ji,jj,jk) == 1._wp ) THEN 
     
    347347         END_3D 
    348348         CALL iom_put( "av_ratio", zav_ratio ) 
    349          DO_3D_00_00( 2, jpkm1 )    !* update momentum & tracer diffusivity with wave-driven mixing 
     349         DO_3D( 0, 0, 0, 0, 2, jpkm1 )    !* update momentum & tracer diffusivity with wave-driven mixing 
    350350            p_avs(ji,jj,jk) = p_avs(ji,jj,jk) + zav_wave(ji,jj,jk) * zav_ratio(ji,jj,jk) 
    351351            p_avt(ji,jj,jk) = p_avt(ji,jj,jk) + zav_wave(ji,jj,jk) 
     
    354354         ! 
    355355      ELSE                          !* update momentum & tracer diffusivity with wave-driven mixing 
    356          DO_3D_00_00( 2, jpkm1 ) 
     356         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    357357            p_avs(ji,jj,jk) = p_avs(ji,jj,jk) + zav_wave(ji,jj,jk) 
    358358            p_avt(ji,jj,jk) = p_avt(ji,jj,jk) + zav_wave(ji,jj,jk) 
     
    369369         ALLOCATE( z2d(jpi,jpj) , z3d(jpi,jpj,jpk) ) 
    370370         ! Initialisation for iom_put 
    371          DO_2D_00_00 
     371         DO_2D( 0, 0, 0, 0 ) 
    372372            z3d(ji,jj,1) = 0._wp   ;   z3d(ji,jj,jpk) = 0._wp 
    373373         END_2D 
     
    377377         z2d(jpi-nn_hls+1:jpi   ,:  ) = 0._wp   ;   z2d(:,jpj-nn_hls+1:   jpj  ) = 0._wp 
    378378 
    379          DO_3D_00_00( 2, jpkm1 ) 
     379         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    380380            z3d(ji,jj,jk) = MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) 
    381381         END_3D 
    382          DO_2D_00_00 
     382         DO_2D( 0, 0, 0, 0 ) 
    383383            z2d(ji,jj) = 0._wp 
    384384         END_2D 
    385          DO_3D_00_00( 2, jpkm1 )  
     385         DO_3D( 0, 0, 0, 0, 2, jpkm1 )  
    386386            z2d(ji,jj) = z2d(ji,jj) + e3w(ji,jj,jk,Kmm) * z3d(ji,jj,jk) * wmask(ji,jj,jk) 
    387387         END_3D 
    388          DO_2D_00_00 
     388         DO_2D( 0, 0, 0, 0 ) 
    389389            z2d(ji,jj) = rho0 * z2d(ji,jj) 
    390390         END_2D 
  • NEMO/trunk/src/OCE/ZDF/zdfmxl.F90

    r13237 r13295  
    9999      hmlp(:,:)  = 0._wp               ! here hmlp used as a dummy variable, integrating vertically N^2 
    100100      zN2_c = grav * rho_c * r1_rho0   ! convert density criteria into N^2 criteria 
    101       DO_3D_11_11( nlb10, jpkm1 ) 
     101      DO_3D( 1, 1, 1, 1, nlb10, jpkm1 ) 
    102102         ikt = mbkt(ji,jj) 
    103103         hmlp(ji,jj) =   & 
     
    108108      ! w-level of the turbocline and mixing layer (iom_use) 
    109109      imld(:,:) = mbkt(:,:) + 1        ! Initialization to the number of w ocean point 
    110       DO_3DS_11_11( jpkm1, nlb10, -1 ) 
     110      DO_3DS( 1, 1, 1, 1, jpkm1, nlb10, -1 ) 
    111111         IF( avt (ji,jj,jk) < avt_c * wmask(ji,jj,jk) )   imld(ji,jj) = jk      ! Turbocline  
    112112      END_3D 
    113113      ! depth of the mixing and mixed layers 
    114       DO_2D_11_11 
     114      DO_2D( 1, 1, 1, 1 ) 
    115115         iiki = imld(ji,jj) 
    116116         iikn = nmln(ji,jj) 
  • NEMO/trunk/src/OCE/ZDF/zdfosm.F90

    r13286 r13295  
    300300     zz0 =       rn_abs       ! surface equi-partition in 2-bands 
    301301     zz1 =  1. - rn_abs 
    302      DO_2D_00_00 
     302     DO_2D( 0, 0, 0, 0 ) 
    303303        ! Surface downward irradiance (so always +ve) 
    304304        zrad0(ji,jj) = qsr(ji,jj) * r1_rho0_rcp 
     
    310310     END_2D 
    311311     ! Turbulent surface fluxes and fluxes averaged over depth of the OSBL 
    312      DO_2D_00_00 
     312     DO_2D( 0, 0, 0, 0 ) 
    313313        zthermal = rab_n(ji,jj,1,jp_tem) 
    314314        zbeta    = rab_n(ji,jj,1,jp_sal) 
     
    337337     ! Assume constant La#=0.3 
    338338     CASE(0) 
    339         DO_2D_00_00 
     339        DO_2D( 0, 0, 0, 0 ) 
    340340           zus_x = zcos_wind(ji,jj) * zustar(ji,jj) / 0.3**2 
    341341           zus_y = zsin_wind(ji,jj) * zustar(ji,jj) / 0.3**2 
     
    345345     ! Assume Pierson-Moskovitz wind-wave spectrum 
    346346     CASE(1) 
    347         DO_2D_00_00 
     347        DO_2D( 0, 0, 0, 0 ) 
    348348           ! Use wind speed wndm included in sbc_oce module 
    349349           zustke(ji,jj) = MAX ( 0.016 * wndm(ji,jj), 1.0e-8 ) 
     
    353353     CASE(2) 
    354354        zfac =  2.0_wp * rpi / 16.0_wp 
    355         DO_2D_00_00 
     355        DO_2D( 0, 0, 0, 0 ) 
    356356           ! The Langmur number from the ECMWF model appears to give La<0.3 for wind-driven seas. 
    357357           !    The coefficient 0.8 gives La=0.3  in this situation. 
     
    366366     ! Langmuir velocity scale (zwstrl), La # (zla) 
    367367     ! mixed scale (zvstr), convective velocity scale (zwstrc) 
    368      DO_2D_00_00 
     368     DO_2D( 0, 0, 0, 0 ) 
    369369        ! Langmuir velocity scale (zwstrl), at T-point 
    370370        zwstrl(ji,jj) = ( zustar(ji,jj) * zustar(ji,jj) * zustke(ji,jj) )**pthird 
     
    402402      hbl(:,:) = MAX(hbl(:,:), gdepw(:,:,3,Kmm) ) 
    403403      ibld(:,:) = 3 
    404       DO_3D_00_00( 4, jpkm1 ) 
     404      DO_3D( 0, 0, 0, 0, 4, jpkm1 ) 
    405405         IF ( hbl(ji,jj) >= gdepw(ji,jj,jk,Kmm) ) THEN 
    406406            ibld(ji,jj) = MIN(mbkt(ji,jj), jk) 
     
    408408      END_3D 
    409409 
    410       DO_2D_00_00 
     410      DO_2D( 0, 0, 0, 0 ) 
    411411            zthermal = rab_n(ji,jj,1,jp_tem) !ideally use ibld not 1?? 
    412412            zbeta    = rab_n(ji,jj,1,jp_sal) 
     
    478478      zdhdt(:,:) = MIN(zdhdt(:,:), (zhbl_t(:,:) - hbl(:,:))/rn_Dt + ww(ji,jj,ibld(ji,jj))) ! adjustment to represent limiting by ocean bottom 
    479479 
    480       DO_3D_00_00( 4, jpkm1 ) 
     480      DO_3D( 0, 0, 0, 0, 4, jpkm1 ) 
    481481         IF ( zhbl_t(ji,jj) >= gdepw(ji,jj,jk,Kmm) ) THEN 
    482482            ibld(ji,jj) =  MIN(mbkt(ji,jj), jk) 
     
    487487! Step through model levels taking account of buoyancy change to determine the effect on dhdt 
    488488! 
    489       DO_2D_00_00 
     489      DO_2D( 0, 0, 0, 0 ) 
    490490         IF ( ibld(ji,jj) - imld(ji,jj) > 1 ) THEN 
    491491! 
     
    552552     ! Consider later  combining this into the loop above and looking for columns 
    553553     ! where the index for base of the boundary layer have changed 
    554       DO_2D_00_00 
     554      DO_2D( 0, 0, 0, 0 ) 
    555555            zthermal = rab_n(ji,jj,1,jp_tem) !ideally use ibld not 1?? 
    556556            zbeta    = rab_n(ji,jj,1,jp_sal) 
     
    635635      ! Average over the depth of the mixed layer in the convective boundary layer 
    636636      ! Also calculate entrainment fluxes for temperature and salinity 
    637       DO_2D_00_00 
     637      DO_2D( 0, 0, 0, 0 ) 
    638638         zthermal = rab_n(ji,jj,1,jp_tem) !ideally use ibld not 1?? 
    639639         zbeta    = rab_n(ji,jj,1,jp_sal) 
     
    705705    ! 
    706706 
    707       DO_2D_00_00 
     707      DO_2D( 0, 0, 0, 0 ) 
    708708         ztemp = zu_ml(ji,jj) 
    709709         zu_ml(ji,jj) = zu_ml(ji,jj) * zcos_wind(ji,jj) + zv_ml(ji,jj) * zsin_wind(ji,jj) 
     
    723723     zuw_bse = 0._wp 
    724724     zvw_bse = 0._wp 
    725      DO_2D_00_00 
     725     DO_2D( 0, 0, 0, 0 ) 
    726726 
    727727        IF ( lconv(ji,jj) ) THEN 
     
    740740      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    741741 
    742        DO_2D_00_00 
     742       DO_2D( 0, 0, 0, 0 ) 
    743743       ! 
    744744          IF ( lconv (ji,jj) ) THEN 
     
    788788       END_2D 
    789789! 
    790        DO_2D_00_00 
     790       DO_2D( 0, 0, 0, 0 ) 
    791791       ! 
    792792          IF ( lconv (ji,jj) ) THEN 
     
    832832      !     zvisml_sc = zwstrl * zhbl * EXP ( -( zhol / 0.183_wp )**2 ) 
    833833      !  ENDWHERE 
    834        DO_2D_00_00 
     834       DO_2D( 0, 0, 0, 0 ) 
    835835          IF ( lconv(ji,jj) ) THEN 
    836836            zdifml_sc(ji,jj) = zhml(ji,jj) * ( zvstr(ji,jj)**3 + 0.5 * zwstrc(ji,jj)**3 )**pthird 
     
    846846       END_2D 
    847847! 
    848        DO_2D_00_00 
     848       DO_2D( 0, 0, 0, 0 ) 
    849849          IF ( lconv(ji,jj) ) THEN 
    850850             DO jk = 2, imld(ji,jj)   ! mixed layer diffusivity 
     
    896896 
    897897 
    898        DO_2D_00_00 
     898       DO_2D( 0, 0, 0, 0 ) 
    899899         IF ( lconv(ji,jj) ) THEN 
    900900           DO jk = 2, imld(ji,jj) 
     
    929929       ENDWHERE 
    930930 
    931        DO_2D_00_00 
     931       DO_2D( 0, 0, 0, 0 ) 
    932932          IF ( lconv(ji,jj) ) THEN 
    933933             DO jk = 2, imld(ji,jj) 
     
    961961       ENDWHERE 
    962962 
    963        DO_2D_00_00 
     963       DO_2D( 0, 0, 0, 0 ) 
    964964          IF (lconv(ji,jj) ) THEN 
    965965             DO jk = 2, imld(ji,jj) 
     
    993993       ENDWHERE 
    994994 
    995        DO_2D_00_00 
     995       DO_2D( 0, 0, 0, 0 ) 
    996996          IF ( lconv(ji,jj) ) THEN 
    997997             DO jk = 2 , imld(ji,jj) 
     
    10211021       ENDWHERE 
    10221022 
    1023        DO_2D_00_00 
     1023       DO_2D( 0, 0, 0, 0 ) 
    10241024         IF ( lconv(ji,jj) ) THEN 
    10251025            DO jk = 2, imld(ji,jj) 
     
    10581058       ENDWHERE 
    10591059 
    1060        DO_2D_00_00 
     1060       DO_2D( 0, 0, 0, 0 ) 
    10611061          IF ( lconv(ji,jj) ) THEN 
    10621062            DO jk = 2, imld(ji,jj) 
     
    10931093! Make surface forced velocity non-gradient terms go to zero at the base of the mixed layer. 
    10941094 
    1095       DO_2D_00_00 
     1095      DO_2D( 0, 0, 0, 0 ) 
    10961096         IF ( lconv(ji,jj) ) THEN 
    10971097            DO jk = 2, ibld(ji,jj) 
     
    11221122       ! Temporary fix to avoid instabilities when zdb_bl becomes very very small 
    11231123       zsc_uw_1 = 0._wp ! 50.0 * zla**(8.0/3.0) * zustar**2 * zhbl / ( zdb_bl + epsln ) 
    1124        DO_2D_00_00 
     1124       DO_2D( 0, 0, 0, 0 ) 
    11251125          DO jk= 2, ibld(ji,jj) 
    11261126             znd = gdepw(ji,jj,jk,Kmm) / zhbl(ji,jj) 
     
    11351135! Entrainment contribution. 
    11361136 
    1137        DO_2D_00_00 
     1137       DO_2D( 0, 0, 0, 0 ) 
    11381138          IF ( lconv(ji,jj) ) THEN 
    11391139            DO jk = 1, imld(ji,jj) - 1 
     
    11701170       ! rotate non-gradient velocity terms back to model reference frame 
    11711171 
    1172        DO_2D_00_00 
     1172       DO_2D( 0, 0, 0, 0 ) 
    11731173          DO jk = 2, ibld(ji,jj) 
    11741174             ztemp = ghamu(ji,jj,jk) 
     
    11841184! KPP-style Ri# mixing 
    11851185       IF( ln_kpprimix) THEN 
    1186           DO_3D_10_10( 2, jpkm1 ) 
     1186          DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    11871187             z3du(ji,jj,jk) = 0.5 * (  uu(ji,jj,jk-1,Kmm) -  uu(ji  ,jj,jk,Kmm) )   & 
    11881188                  &                 * (  uu(ji,jj,jk-1,Kbb) -  uu(ji  ,jj,jk,Kbb) ) * wumask(ji,jj,jk) & 
     
    11931193          END_3D 
    11941194      ! 
    1195          DO_3D_00_00( 2, jpkm1 ) 
     1195         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    11961196            !                                          ! shear prod. at w-point weightened by mask 
    11971197            zesh2  =  ( z3du(ji-1,jj,jk) + z3du(ji,jj,jk) ) / MAX( 1._wp , umask(ji-1,jj,jk) + umask(ji,jj,jk) )   & 
     
    12041204         END_3D 
    12051205 
    1206           DO_2D_00_00 
     1206          DO_2D( 0, 0, 0, 0 ) 
    12071207             DO jk = ibld(ji,jj) + 1, jpkm1 
    12081208                zdiffut(ji,jj,jk) = zrimix(ji,jj,jk)*rn_difri 
     
    12151215! KPP-style set diffusivity large if unstable below BL 
    12161216       IF( ln_convmix) THEN 
    1217           DO_2D_00_00 
     1217          DO_2D( 0, 0, 0, 0 ) 
    12181218             DO jk = ibld(ji,jj) + 1, jpkm1 
    12191219               IF(  MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) zdiffut(ji,jj,jk) = rn_difconv 
     
    12271227       ! GN 25/8: need to change tmask --> wmask 
    12281228 
    1229      DO_3D_00_00( 2, jpkm1 ) 
     1229     DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    12301230          p_avt(ji,jj,jk) = MAX( zdiffut(ji,jj,jk), avtb(jk) ) * tmask(ji,jj,jk) 
    12311231          p_avm(ji,jj,jk) = MAX( zviscos(ji,jj,jk), avmb(jk) ) * tmask(ji,jj,jk) 
     
    12341234     CALL lbc_lnk_multi( 'zdfosm', p_avt, 'W', 1.0_wp , p_avm, 'W', 1.0_wp,   & 
    12351235      &                  ghamu, 'W', 1.0_wp , ghamv, 'W', 1.0_wp ) 
    1236        DO_3D_00_00( 2, jpkm1 ) 
     1236       DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    12371237            ghamu(ji,jj,jk) = ( ghamu(ji,jj,jk) + ghamu(ji+1,jj,jk) ) & 
    12381238               &  / MAX( 1., tmask(ji,jj,jk) + tmask (ji + 1,jj,jk) ) * umask(ji,jj,jk) 
     
    13951395        etmean(:,:,:) = 0.e0 
    13961396 
    1397         DO_3D_00_00( 1, jpkm1 ) 
     1397        DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    13981398           etmean(ji,jj,jk) = tmask(ji,jj,jk)                     & 
    13991399                &  / MAX( 1.,  umask(ji-1,jj  ,jk) + umask(ji,jj,jk)   & 
     
    14091409        etmean(:,:,:) = 0.e0 
    14101410 
    1411         DO_3D_00_00( 1, jpkm1 ) 
     1411        DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    14121412           etmean(ji,jj,jk) = tmask(ji, jj,jk)                           & 
    14131413                & / MAX( 1., 2.* tmask(ji,jj,jk)                           & 
     
    15161516     ! 
    15171517     hbl(:,:)  = 0._wp              ! here hbl used as a dummy variable, integrating vertically N^2 
    1518      DO_3D_11_11( 1, jpkm1 ) 
     1518     DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    15191519        ikt = mbkt(ji,jj) 
    15201520        hbl(ji,jj) = hbl(ji,jj) + MAX( rn2(ji,jj,jk) , 0._wp ) * e3w(ji,jj,jk,Kmm) 
     
    15221522     END_3D 
    15231523     ! 
    1524      DO_2D_11_11 
     1524     DO_2D( 1, 1, 1, 1 ) 
    15251525        iiki = imld_rst(ji,jj) 
    15261526        hbl (ji,jj) = gdepw(ji,jj,iiki  ,Kmm) * ssmask(ji,jj)    ! Turbocline depth 
     
    15611561 
    15621562      ! add non-local temperature and salinity flux 
    1563       DO_3D_00_00( 1, jpkm1 ) 
     1563      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    15641564         pts(ji,jj,jk,jp_tem,Krhs) =  pts(ji,jj,jk,jp_tem,Krhs)                      & 
    15651565            &                 - (  ghamt(ji,jj,jk  )  & 
     
    16291629      !code saving tracer trends removed, replace with trdmxl_oce 
    16301630 
    1631       DO_3D_00_00( 1, jpkm1 ) 
     1631      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    16321632         puu(ji,jj,jk,Krhs) =  puu(ji,jj,jk,Krhs)                      & 
    16331633            &                 - (  ghamu(ji,jj,jk  )  & 
  • NEMO/trunk/src/OCE/ZDF/zdfric.F90

    r13286 r13295  
    160160      ! 
    161161      !                       !==  avm and avt = F(Richardson number)  ==! 
    162       DO_3D_10_10( 2, jpkm1 ) 
     162      DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    163163         zcfRi = 1._wp / (  1._wp + rn_alp * MAX(  0._wp , avm(ji,jj,jk) * rn2(ji,jj,jk) / ( p_sh2(ji,jj,jk) + 1.e-20 ) )  ) 
    164164         zav   = rn_avmri * zcfRi**nn_ric 
     
    173173      IF( ln_mldw ) THEN      !==  set a minimum value in the Ekman layer  ==! 
    174174         ! 
    175          DO_2D_00_00 
     175         DO_2D( 0, 0, 0, 0 ) 
    176176            zustar = SQRT( taum(ji,jj) * r1_rho0 ) 
    177177            zhek   = rn_ekmfc * zustar / ( ABS( ff_t(ji,jj) ) + rsmall )   ! Ekman depth 
    178178            zh_ekm(ji,jj) = MAX(  rn_mldmin , MIN( zhek , rn_mldmax )  )   ! set allowed range 
    179179         END_2D 
    180          DO_3D_00_00( 2, jpkm1 ) 
     180         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    181181            IF( gdept(ji,jj,jk,Kmm) < zh_ekm(ji,jj) ) THEN 
    182182               p_avm(ji,jj,jk) = MAX(  p_avm(ji,jj,jk), rn_wvmix  ) * wmask(ji,jj,jk) 
  • NEMO/trunk/src/OCE/ZDF/zdfsh2.F90

    r13237 r13295  
    6060      ! 
    6161      DO jk = 2, jpkm1 
    62          DO_2D_10_10 
     62         DO_2D( 1, 0, 1, 0 ) 
    6363            zsh2u(ji,jj) = ( p_avm(ji+1,jj,jk) + p_avm(ji,jj,jk) ) & 
    6464               &         * (   uu(ji,jj,jk-1,Kmm) -   uu(ji,jj,jk,Kmm) ) & 
     
    7272               &         * wvmask(ji,jj,jk) 
    7373         END_2D 
    74          DO_2D_00_00 
     74         DO_2D( 0, 0, 0, 0 ) 
    7575            p_sh2(ji,jj,jk) = 0.25 * (   ( zsh2u(ji-1,jj) + zsh2u(ji,jj) ) * ( 2. - umask(ji-1,jj,jk) * umask(ji,jj,jk) )   & 
    7676               &                       + ( zsh2v(ji,jj-1) + zsh2v(ji,jj) ) * ( 2. - vmask(ji,jj-1,jk) * vmask(ji,jj,jk) )   ) 
  • NEMO/trunk/src/OCE/ZDF/zdfswm.F90

    r12377 r13295  
    6363      ! 
    6464      zcoef = 1._wp * 0.353553_wp 
    65       DO_3D_00_00( 2, jpkm1 ) 
     65      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    6666         zqb = zcoef * hsw(ji,jj) * tsd2d(ji,jj) * EXP( -3. * wnum(ji,jj) * gdepw(ji,jj,jk,Kmm) ) * wmask(ji,jj,jk) 
    6767         ! 
  • NEMO/trunk/src/OCE/ZDF/zdftke.F90

    r13286 r13295  
    224224      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    225225      !  
    226       DO_2D_00_00 
     226      DO_2D( 0, 0, 0, 0 ) 
    227227         en(ji,jj,1) = MAX( rn_emin0, zbbrau * taum(ji,jj) ) * tmask(ji,jj,1) 
    228228      END_2D 
     
    238238      IF( ln_drg ) THEN       !== friction used as top/bottom boundary condition on TKE 
    239239         ! 
    240          DO_2D_00_00 
     240         DO_2D( 0, 0, 0, 0 ) 
    241241            zmsku = ( 2. - umask(ji-1,jj,mbkt(ji,jj)) * umask(ji,jj,mbkt(ji,jj)) ) 
    242242            zmskv = ( 2. - vmask(ji,jj-1,mbkt(ji,jj)) * vmask(ji,jj,mbkt(ji,jj)) ) 
     
    247247         END_2D 
    248248         IF( ln_isfcav ) THEN       ! top friction 
    249             DO_2D_00_00 
     249            DO_2D( 0, 0, 0, 0 ) 
    250250               zmsku = ( 2. - umask(ji-1,jj,mikt(ji,jj)) * umask(ji,jj,mikt(ji,jj)) ) 
    251251               zmskv = ( 2. - vmask(ji,jj-1,mikt(ji,jj)) * vmask(ji,jj,mikt(ji,jj)) ) 
     
    274274         zcof = 0.5 * 0.016 * 0.016 / ( zrhoa * zcdrag ) 
    275275         imlc(:,:) = mbkt(:,:) + 1       ! Initialization to the number of w ocean point (=2 over land) 
    276          DO_3DS_11_11( jpkm1, 2, -1 ) 
     276         DO_3DS( 1, 1, 1, 1, jpkm1, 2, -1 ) 
    277277            zus  = zcof * taum(ji,jj) 
    278278            IF( zpelc(ji,jj,jk) > zus )   imlc(ji,jj) = jk 
    279279         END_3D 
    280280         !                               ! finite LC depth 
    281          DO_2D_11_11 
     281         DO_2D( 1, 1, 1, 1 ) 
    282282            zhlc(ji,jj) = gdepw(ji,jj,imlc(ji,jj),Kmm) 
    283283         END_2D 
    284284         zcof = 0.016 / SQRT( zrhoa * zcdrag ) 
    285          DO_2D_00_00 
     285         DO_2D( 0, 0, 0, 0 ) 
    286286            zus  = zcof * SQRT( taum(ji,jj) )           ! Stokes drift 
    287287            zfr_i(ji,jj) = ( 1._wp - 4._wp * fr_i(ji,jj) ) * zus * zus * zus * tmask(ji,jj,1) ! zus > 0. ok 
    288288            IF (zfr_i(ji,jj) < 0. ) zfr_i(ji,jj) = 0. 
    289289         END_2D 
    290          DO_3D_00_00( 2, jpkm1 ) 
     290         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    291291            IF ( zfr_i(ji,jj) /= 0. ) THEN                
    292292               ! vertical velocity due to LC    
     
    310310      ! 
    311311      IF( nn_pdl == 1 ) THEN      !* Prandtl number = F( Ri ) 
    312          DO_3D_00_00( 2, jpkm1 ) 
     312         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    313313            !                             ! local Richardson number 
    314314            IF (rn2b(ji,jj,jk) <= 0.0_wp) then 
     
    322322      ENDIF 
    323323      !          
    324       DO_3D_00_00( 2, jpkm1 ) 
     324      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    325325         zcof   = zfact1 * tmask(ji,jj,jk) 
    326326         !                                   ! A minimum of 2.e-5 m2/s is imposed on TKE vertical 
     
    344344      END_3D 
    345345      !                          !* Matrix inversion from level 2 (tke prescribed at level 1) 
    346       DO_3D_00_00( 3, jpkm1 ) 
     346      DO_3D( 0, 0, 0, 0, 3, jpkm1 ) 
    347347         zdiag(ji,jj,jk) = zdiag(ji,jj,jk) - zd_lw(ji,jj,jk) * zd_up(ji,jj,jk-1) / zdiag(ji,jj,jk-1) 
    348348      END_3D 
    349       DO_2D_00_00 
     349      DO_2D( 0, 0, 0, 0 ) 
    350350         zd_lw(ji,jj,2) = en(ji,jj,2) - zd_lw(ji,jj,2) * en(ji,jj,1)    ! Surface boudary conditions on tke 
    351351      END_2D 
    352       DO_3D_00_00( 3, jpkm1 ) 
     352      DO_3D( 0, 0, 0, 0, 3, jpkm1 ) 
    353353         zd_lw(ji,jj,jk) = en(ji,jj,jk) - zd_lw(ji,jj,jk) / zdiag(ji,jj,jk-1) *zd_lw(ji,jj,jk-1) 
    354354      END_3D 
    355       DO_2D_00_00 
     355      DO_2D( 0, 0, 0, 0 ) 
    356356         en(ji,jj,jpkm1) = zd_lw(ji,jj,jpkm1) / zdiag(ji,jj,jpkm1) 
    357357      END_2D 
    358       DO_3DS_00_00( jpk-2, 2, -1 ) 
     358      DO_3DS( 0, 0, 0, 0, jpk-2, 2, -1 ) 
    359359         en(ji,jj,jk) = ( zd_lw(ji,jj,jk) - zd_up(ji,jj,jk) * en(ji,jj,jk+1) ) / zdiag(ji,jj,jk) 
    360360      END_3D 
    361       DO_3D_00_00( 2, jpkm1 ) 
     361      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    362362         en(ji,jj,jk) = MAX( en(ji,jj,jk), rn_emin ) * wmask(ji,jj,jk) 
    363363      END_3D 
     
    371371       
    372372      IF( nn_etau == 1 ) THEN           !* penetration below the mixed layer (rn_efr fraction) 
    373          DO_3D_00_00( 2, jpkm1 ) 
     373         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    374374            en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -gdepw(ji,jj,jk,Kmm) / htau(ji,jj) )   & 
    375375               &                                 * MAX(0.,1._wp - rn_eice *fr_i(ji,jj) )  * wmask(ji,jj,jk) * tmask(ji,jj,1) 
    376376         END_3D 
    377377      ELSEIF( nn_etau == 2 ) THEN       !* act only at the base of the mixed layer (jk=nmln)  (rn_efr fraction) 
    378          DO_2D_00_00 
     378         DO_2D( 0, 0, 0, 0 ) 
    379379            jk = nmln(ji,jj) 
    380380            en(ji,jj,jk) = en(ji,jj,jk) + rn_efr * en(ji,jj,1) * EXP( -gdepw(ji,jj,jk,Kmm) / htau(ji,jj) )   & 
     
    382382         END_2D 
    383383      ELSEIF( nn_etau == 3 ) THEN       !* penetration belox the mixed layer (HF variability) 
    384          DO_3D_00_00( 2, jpkm1 ) 
     384         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    385385            ztx2 = utau(ji-1,jj  ) + utau(ji,jj) 
    386386            zty2 = vtau(ji  ,jj-1) + vtau(ji,jj) 
     
    456456         zraug = vkarmn * 2.e5_wp / ( rho0 * grav ) 
    457457#if ! defined key_si3 && ! defined key_cice 
    458          DO_2D_00_00 
     458         DO_2D( 0, 0, 0, 0 ) 
    459459            zmxlm(ji,jj,1) =  zraug * taum(ji,jj) * tmask(ji,jj,1) 
    460460         END_2D 
     
    463463         ! 
    464464         CASE( 0 )                      ! No scaling under sea-ice 
    465             DO_2D_00_00 
     465            DO_2D( 0, 0, 0, 0 ) 
    466466               zmxlm(ji,jj,1) = zraug * taum(ji,jj) * tmask(ji,jj,1) 
    467467            END_2D 
    468468            ! 
    469469         CASE( 1 )                           ! scaling with constant sea-ice thickness 
    470             DO_2D_00_00 
     470            DO_2D( 0, 0, 0, 0 ) 
    471471               zmxlm(ji,jj,1) =  ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * rn_mxlice ) * tmask(ji,jj,1) 
    472472            END_2D 
    473473            ! 
    474474         CASE( 2 )                                 ! scaling with mean sea-ice thickness 
    475             DO_2D_00_00 
     475            DO_2D( 0, 0, 0, 0 ) 
    476476#if defined key_si3 
    477477               zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * hm_i(ji,jj) * 2. ) * tmask(ji,jj,1) 
     
    483483            ! 
    484484         CASE( 3 )                                 ! scaling with max sea-ice thickness 
    485             DO_2D_00_00 
     485            DO_2D( 0, 0, 0, 0 ) 
    486486               zmaxice = MAXVAL( h_i(ji,jj,:) ) 
    487487               zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * zmaxice ) * tmask(ji,jj,1) 
     
    491491#endif 
    492492         ! 
    493          DO_2D_00_00 
     493         DO_2D( 0, 0, 0, 0 ) 
    494494            zmxlm(ji,jj,1) = MAX( rn_mxl0, zmxlm(ji,jj,1) ) 
    495495         END_2D 
     
    500500 
    501501      ! 
    502       DO_3D_00_00( 2, jpkm1 ) 
     502      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    503503         zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 
    504504         zmxlm(ji,jj,jk) = MAX(  rmxl_min,  SQRT( 2._wp * en(ji,jj,jk) / zrn2 )  ) 
     
    515515      ! where wmask = 0 set zmxlm == e3w(:,:,:,Kmm) 
    516516      CASE ( 0 )           ! bounded by the distance to surface and bottom 
    517          DO_3D_00_00( 2, jpkm1 ) 
     517         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    518518            zemxl = MIN( gdepw(ji,jj,jk,Kmm) - gdepw(ji,jj,mikt(ji,jj),Kmm), zmxlm(ji,jj,jk),   & 
    519519            &            gdepw(ji,jj,mbkt(ji,jj)+1,Kmm) - gdepw(ji,jj,jk,Kmm) ) 
     
    526526         ! 
    527527      CASE ( 1 )           ! bounded by the vertical scale factor 
    528          DO_3D_00_00( 2, jpkm1 ) 
     528         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    529529            zemxl = MIN( e3w(ji,jj,jk,Kmm), zmxlm(ji,jj,jk) ) 
    530530            zmxlm(ji,jj,jk) = zemxl 
     
    533533         ! 
    534534      CASE ( 2 )           ! |dk[xml]| bounded by e3t : 
    535          DO_3D_00_00( 2, jpkm1 ) 
     535         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    536536            zmxlm(ji,jj,jk) =   & 
    537537               &    MIN( zmxlm(ji,jj,jk-1) + e3t(ji,jj,jk-1,Kmm), zmxlm(ji,jj,jk) ) 
    538538         END_3D 
    539          DO_3DS_00_00( jpkm1, 2, -1 ) 
     539         DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 ) 
    540540            zemxl = MIN( zmxlm(ji,jj,jk+1) + e3t(ji,jj,jk+1,Kmm), zmxlm(ji,jj,jk) ) 
    541541            zmxlm(ji,jj,jk) = zemxl 
     
    544544         ! 
    545545      CASE ( 3 )           ! lup and ldown, |dk[xml]| bounded by e3t : 
    546          DO_3D_00_00( 2, jpkm1 ) 
     546         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    547547            zmxld(ji,jj,jk) =    & 
    548548               &    MIN( zmxld(ji,jj,jk-1) + e3t(ji,jj,jk-1,Kmm), zmxlm(ji,jj,jk) ) 
    549549         END_3D 
    550          DO_3DS_00_00( jpkm1, 2, -1 ) 
     550         DO_3DS( 0, 0, 0, 0, jpkm1, 2, -1 ) 
    551551            zmxlm(ji,jj,jk) =   & 
    552552               &    MIN( zmxlm(ji,jj,jk+1) + e3t(ji,jj,jk+1,Kmm), zmxlm(ji,jj,jk) ) 
    553553         END_3D 
    554          DO_3D_00_00( 2, jpkm1 ) 
     554         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    555555            zemlm = MIN ( zmxld(ji,jj,jk),  zmxlm(ji,jj,jk) ) 
    556556            zemlp = SQRT( zmxld(ji,jj,jk) * zmxlm(ji,jj,jk) ) 
     
    564564      !                     !  Vertical eddy viscosity and diffusivity  (avm and avt) 
    565565      !                     !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    566       DO_3D_00_00( 1, jpkm1 ) 
     566      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    567567         zsqen = SQRT( en(ji,jj,jk) ) 
    568568         zav   = rn_ediff * zmxlm(ji,jj,jk) * zsqen 
     
    574574      ! 
    575575      IF( nn_pdl == 1 ) THEN      !* Prandtl number case: update avt 
    576          DO_3D_00_00( 2, jpkm1 ) 
     576         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    577577            p_avt(ji,jj,jk)   = MAX( apdlr(ji,jj,jk) * p_avt(ji,jj,jk), avtb_2d(ji,jj) * avtb(jk) ) * wmask(ji,jj,jk) 
    578578         END_3D 
Note: See TracChangeset for help on using the changeset viewer.