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/DIA – 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/DIA
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/DIA/diaar5.F90

    r13286 r13295  
    110110      ! 
    111111      IF( iom_use( 'e3tb' ) )  THEN    ! bottom layer thickness 
    112          DO_2D_11_11 
     112         DO_2D( 1, 1, 1, 1 ) 
    113113            ikb = mbkt(ji,jj) 
    114114            z2d(ji,jj) = e3t(ji,jj,ikb,Kmm) 
     
    195195          !                                         ! Mean density anomalie, temperature and salinity 
    196196          ztsn(:,:,:,:) = 0._wp                    ! ztsn(:,:,1,jp_tem/sal) is used here as 2D Workspace for temperature & salinity 
    197           DO_3D_11_11( 1, jpkm1 ) 
     197          DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    198198             zztmp = e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) 
    199199             ztsn(ji,jj,1,jp_tem) = ztsn(ji,jj,1,jp_tem) + zztmp * ts(ji,jj,jk,jp_tem,Kmm) 
     
    255255             IF( iom_use( 'tosmint_pot') ) THEN 
    256256               z2d(:,:) = 0._wp 
    257                DO_3D_11_11( 1, jpkm1 ) 
     257               DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    258258                  z2d(ji,jj) = z2d(ji,jj) + rho0 * e3t(ji,jj,jk,Kmm) *  ztpot(ji,jj,jk) 
    259259               END_3D 
     
    276276         zpe(:,:) = 0._wp 
    277277         IF( ln_zdfddm ) THEN 
    278             DO_3D_11_11( 2, jpk ) 
     278            DO_3D( 1, 1, 1, 1, 2, jpk ) 
    279279               IF( rn2(ji,jj,jk) > 0._wp ) THEN 
    280280                  zrw = ( gdept(ji,jj,jk,Kmm) - gdepw(ji,jj,jk,Kmm) ) / e3w(ji,jj,jk,Kmm) 
     
    289289            END_3D 
    290290          ELSE 
    291             DO_3D_11_11( 1, jpk ) 
     291            DO_3D( 1, 1, 1, 1, 1, jpk ) 
    292292               zpe(ji,jj) = zpe(ji,jj) + avt(ji,jj,jk) * MIN(0._wp,rn2(ji,jj,jk)) * rho0 * e3w(ji,jj,jk,Kmm) 
    293293            END_3D 
     
    324324     
    325325      z2d(:,:) = puflx(:,:,1)  
    326       DO_3D_00_00( 1, jpkm1 ) 
     326      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    327327         z2d(ji,jj) = z2d(ji,jj) + puflx(ji,jj,jk)  
    328328      END_3D 
     
    338338       ! 
    339339       z2d(:,:) = pvflx(:,:,1)  
    340        DO_3D_00_00( 1, jpkm1 ) 
     340       DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    341341          z2d(ji,jj) = z2d(ji,jj) + pvflx(ji,jj,jk)  
    342342       END_3D 
     
    385385         zvol0 (:,:) = 0._wp 
    386386         thick0(:,:) = 0._wp 
    387          DO_3D_11_11( 1, jpkm1 ) 
     387         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    388388            idep = tmask(ji,jj,jk) * e3t_0(ji,jj,jk) 
    389389            zvol0 (ji,jj) = zvol0 (ji,jj) +  idep * e1e2t(ji,jj) 
     
    403403            sn0(:,:,:) = sn0(:,:,:) * tmask(:,:,:) 
    404404            IF( ln_zps ) THEN               ! z-coord. partial steps 
    405                DO_2D_11_11 
     405               DO_2D( 1, 1, 1, 1 ) 
    406406                  ik = mbkt(ji,jj) 
    407407                  IF( ik > 1 ) THEN 
  • NEMO/trunk/src/OCE/DIA/diacfl.F90

    r13237 r13295  
    6060      IF( ln_timing )   CALL timing_start('dia_cfl') 
    6161      ! 
    62       DO_3D_11_11( 1, jpk ) 
     62      DO_3D( 1, 1, 1, 1, 1, jpk ) 
    6363         zCu_cfl(ji,jj,jk) = ABS( uu(ji,jj,jk,Kmm) ) * rDt / e1u  (ji,jj)      ! for i-direction 
    6464         zCv_cfl(ji,jj,jk) = ABS( vv(ji,jj,jk,Kmm) ) * rDt / e2v  (ji,jj)      ! for j-direction 
  • NEMO/trunk/src/OCE/DIA/diahth.F90

    r13237 r13295  
    130130            zdepinv(:,:) = 0._wp   
    131131            zmaxdzT(:,:) = 0._wp   
    132             DO_2D_11_11 
     132            DO_2D( 1, 1, 1, 1 ) 
    133133               zztmp = gdepw(ji,jj,mbkt(ji,jj)+1,Kmm)  
    134134               hth     (ji,jj) = zztmp 
     
    139139            END_2D 
    140140            IF( nla10 > 1 ) THEN  
    141                DO_2D_11_11 
     141               DO_2D( 1, 1, 1, 1 ) 
    142142                  zztmp = gdepw(ji,jj,mbkt(ji,jj)+1,Kmm)  
    143143                  zrho0_3(ji,jj) = zztmp 
     
    148148            ! Preliminary computation 
    149149            ! computation of zdelr = (dr/dT)(T,S,10m)*(-0.2 degC) 
    150             DO_2D_11_11 
     150            DO_2D( 1, 1, 1, 1 ) 
    151151               IF( tmask(ji,jj,nla10) == 1. ) THEN 
    152152                  zu  =  1779.50 + 11.250 * ts(ji,jj,nla10,jp_tem,Kmm) - 3.80   * ts(ji,jj,nla10,jp_sal,Kmm)  & 
     
    170170            ! MLD: rho = rho(1) + zrho1                                     ! 
    171171            ! ------------------------------------------------------------- ! 
    172             DO_3DS_11_11( jpkm1, 2, -1 ) 
     172            DO_3DS( 1, 1, 1, 1, jpkm1, 2, -1 ) 
    173173               ! 
    174174               zzdep = gdepw(ji,jj,jk,Kmm) 
     
    207207            ! depth of temperature inversion                                ! 
    208208            ! ------------------------------------------------------------- ! 
    209             DO_3DS_11_11( jpkm1, nlb10, -1 ) 
     209            DO_3DS( 1, 1, 1, 1, jpkm1, nlb10, -1 ) 
    210210               ! 
    211211               zzdep = gdepw(ji,jj,jk,Kmm) * tmask(ji,jj,1) 
     
    305305      ! --------------------------------------- ! 
    306306      iktem(:,:) = 1 
    307       DO_3D_11_11( 1, jpkm1 ) 
     307      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    308308         zztmp = ts(ji,jj,jk,jp_tem,Kmm) 
    309309         IF( zztmp >= ptem )   iktem(ji,jj) = jk 
     
    313313      !  Depth of ptem isotherm         ! 
    314314      ! ------------------------------- ! 
    315       DO_2D_11_11 
     315      DO_2D( 1, 1, 1, 1 ) 
    316316         ! 
    317317         zzdep = gdepw(ji,jj,mbkt(ji,jj)+1,Kmm)       ! depth of the ocean bottom 
     
    351351      ! 
    352352      ilevel(:,:) = 1 
    353       DO_3D_11_11( 2, jpkm1 ) 
     353      DO_3D( 1, 1, 1, 1, 2, jpkm1 ) 
    354354         IF( ( gdept(ji,jj,jk,Kmm) < pdep ) .AND. ( tmask(ji,jj,jk) == 1 ) ) THEN 
    355355             ilevel(ji,jj) = jk 
     
    359359      END_3D 
    360360      ! 
    361       DO_2D_11_11 
     361      DO_2D( 1, 1, 1, 1 ) 
    362362         ik = ilevel(ji,jj) 
    363363         zthick(ji,jj) = pdep - zthick(ji,jj)   !   remaining thickness to reach depht pdep 
  • NEMO/trunk/src/OCE/DIA/diaptr.F90

    r13286 r13295  
    119119            zmask(:,:,:) = 0._wp 
    120120            zts(:,:,:,:) = 0._wp 
    121             DO_3D_10_11( 1, jpkm1 ) 
     121            DO_3D( 1, 0, 1, 1, 1, jpkm1 ) 
    122122               zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 
    123123               zmask(ji,jj,jk)      = vmask(ji,jj,jk)      * zvfc 
     
    190190         zts(:,:,:,:) = 0._wp 
    191191         IF( iom_use( 'zotem' ) .OR. iom_use( 'zosal' ) .OR. iom_use( 'zosrf' )  ) THEN    ! i-mean i-k-surface  
    192             DO_3D_11_11( 1, jpkm1 ) 
     192            DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    193193               zsfc = e1t(ji,jj) * e3t(ji,jj,jk,Kmm) 
    194194               zmask(ji,jj,jk)      = tmask(ji,jj,jk)      * zsfc 
     
    280280         IF( iom_use( 'sopstvtr' ) .OR. iom_use( 'sophtvtr' ) ) THEN 
    281281            zts(:,:,:,:) = 0._wp 
    282             DO_3D_10_11( 1, jpkm1 ) 
     282            DO_3D( 1, 0, 1, 1, 1, jpkm1 ) 
    283283               zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 
    284284               zts(ji,jj,jk,jp_tem) = (ts(ji,jj,jk,jp_tem,Kmm)+ts(ji,jj+1,jk,jp_tem,Kmm)) * 0.5 * zvfc  !Tracers averaged onto V grid 
     
    505505      ijpj = jpj 
    506506      p_fval(:) = 0._wp 
    507       DO_3D_00_00( 1, jpkm1 ) 
     507      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    508508         p_fval(jj) = p_fval(jj) + pvflx(ji,jj,jk) * pmsk(ji,jj) * tmask_i(ji,jj) 
    509509      END_3D 
     
    538538      ijpj = jpj 
    539539      p_fval(:) = 0._wp 
    540       DO_2D_00_00 
     540      DO_2D( 0, 0, 0, 0 ) 
    541541         p_fval(jj) = p_fval(jj) + pvflx(ji,jj) * pmsk(ji,jj) * tmask_i(ji,jj) 
    542542      END_2D 
     
    567567      p_fval(:,:) = 0._wp 
    568568      DO jc = 1, jpnj ! looping over all processors in j axis 
    569          DO_2D_00_00 
     569         DO_2D( 0, 0, 0, 0 ) 
    570570            p_fval(ji,jj) = p_fval(ji,jj-1) + pva(ji,jj) * tmask_i(ji,jj) 
    571571         END_2D 
     
    606606      p_fval(:,:) = 0._wp 
    607607      ! 
    608       DO_3D_00_00( 1, jpkm1 ) 
     608      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    609609         p_fval(jj,jk) = p_fval(jj,jk) + pta(ji,jj,jk) * pmsk(ji,jj) * tmask_i(ji,jj) 
    610610      END_3D 
  • NEMO/trunk/src/OCE/DIA/diawri.F90

    r13286 r13295  
    175175      CALL iom_put(  "sst", ts(:,:,1,jp_tem,Kmm) )    ! surface temperature 
    176176      IF ( iom_use("sbt") ) THEN 
    177          DO_2D_11_11 
     177         DO_2D( 1, 1, 1, 1 ) 
    178178            ikbot = mbkt(ji,jj) 
    179179            z2d(ji,jj) = ts(ji,jj,ikbot,jp_tem,Kmm) 
     
    185185      CALL iom_put(  "sss", ts(:,:,1,jp_sal,Kmm) )    ! surface salinity 
    186186      IF ( iom_use("sbs") ) THEN 
    187          DO_2D_11_11 
     187         DO_2D( 1, 1, 1, 1 ) 
    188188            ikbot = mbkt(ji,jj) 
    189189            z2d(ji,jj) = ts(ji,jj,ikbot,jp_sal,Kmm) 
     
    199199         zztmp = rho0 * 0.25 
    200200         z2d(:,:) = 0._wp 
    201          DO_2D_00_00 
     201         DO_2D( 0, 0, 0, 0 ) 
    202202            zztmp2 = (  ( rCdU_bot(ji+1,jj)+rCdU_bot(ji  ,jj) ) * uu(ji  ,jj,mbku(ji  ,jj),Kmm)  )**2   & 
    203203               &   + (  ( rCdU_bot(ji  ,jj)+rCdU_bot(ji-1,jj) ) * uu(ji-1,jj,mbku(ji-1,jj),Kmm)  )**2   & 
     
    214214      CALL iom_put(  "ssu", uu(:,:,1,Kmm) )            ! surface i-current 
    215215      IF ( iom_use("sbu") ) THEN 
    216          DO_2D_11_11 
     216         DO_2D( 1, 1, 1, 1 ) 
    217217            ikbot = mbku(ji,jj) 
    218218            z2d(ji,jj) = uu(ji,jj,ikbot,Kmm) 
     
    224224      CALL iom_put(  "ssv", vv(:,:,1,Kmm) )            ! surface j-current 
    225225      IF ( iom_use("sbv") ) THEN 
    226          DO_2D_11_11 
     226         DO_2D( 1, 1, 1, 1 ) 
    227227            ikbot = mbkv(ji,jj) 
    228228            z2d(ji,jj) = vv(ji,jj,ikbot,Kmm) 
     
    254254 
    255255      IF ( iom_use("sstgrad") .OR. iom_use("sstgrad2") ) THEN 
    256          DO_2D_00_00 
     256         DO_2D( 0, 0, 0, 0 ) 
    257257            zztmp  = ts(ji,jj,1,jp_tem,Kmm) 
    258258            zztmpx = ( ts(ji+1,jj,1,jp_tem,Kmm) - zztmp ) * r1_e1u(ji,jj) + ( zztmp - ts(ji-1,jj  ,1,jp_tem,Kmm) ) * r1_e1u(ji-1,jj) 
     
    270270      IF( iom_use("heatc") ) THEN 
    271271         z2d(:,:)  = 0._wp  
    272          DO_3D_11_11( 1, jpkm1 ) 
     272         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    273273            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_tem,Kmm) * tmask(ji,jj,jk) 
    274274         END_3D 
     
    278278      IF( iom_use("saltc") ) THEN 
    279279         z2d(:,:)  = 0._wp  
    280          DO_3D_11_11( 1, jpkm1 ) 
     280         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    281281            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) * tmask(ji,jj,jk) 
    282282         END_3D 
     
    286286      IF ( iom_use("eken") ) THEN 
    287287         z3d(:,:,jpk) = 0._wp  
    288          DO_3D_00_00( 1, jpkm1 ) 
     288         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    289289            zztmp  = 0.25_wp * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    290290            z3d(ji,jj,jk) = zztmp * (  uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm)   & 
     
    312312      IF( iom_use("u_heattr") ) THEN 
    313313         z2d(:,:) = 0._wp  
    314          DO_3D_00_00( 1, jpkm1 ) 
     314         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    315315            z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 
    316316         END_3D 
     
    321321      IF( iom_use("u_salttr") ) THEN 
    322322         z2d(:,:) = 0.e0  
    323          DO_3D_00_00( 1, jpkm1 ) 
     323         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    324324            z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 
    325325         END_3D 
     
    339339      IF( iom_use("v_heattr") ) THEN 
    340340         z2d(:,:) = 0.e0  
    341          DO_3D_00_00( 1, jpkm1 ) 
     341         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    342342            z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 
    343343         END_3D 
     
    348348      IF( iom_use("v_salttr") ) THEN 
    349349         z2d(:,:) = 0._wp  
    350          DO_3D_00_00( 1, jpkm1 ) 
     350         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    351351            z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 
    352352         END_3D 
     
    357357      IF( iom_use("tosmint") ) THEN 
    358358         z2d(:,:) = 0._wp 
    359          DO_3D_00_00( 1, jpkm1 ) 
     359         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    360360            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) *  ts(ji,jj,jk,jp_tem,Kmm) 
    361361         END_3D 
     
    365365      IF( iom_use("somint") ) THEN 
    366366         z2d(:,:)=0._wp 
    367          DO_3D_00_00( 1, jpkm1 ) 
     367         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    368368            z2d(ji,jj) = z2d(ji,jj) + e3t(ji,jj,jk,Kmm) * ts(ji,jj,jk,jp_sal,Kmm) 
    369369         END_3D 
Note: See TracChangeset for help on using the changeset viewer.