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 13899 for NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA – NEMO

Ignore:
Timestamp:
2020-11-27T17:26:33+01:00 (4 years ago)
Author:
mathiot
Message:

ticket #1900: update branch to trunk and add ICB test case

Location:
NEMO/branches/2020/tickets_icb_1900
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/tickets_icb_1900

    • Property svn:externals
      •  

        old new  
        22^/utils/build/makenemo@HEAD   makenemo 
        33^/utils/build/mk@HEAD         mk 
        4 ^/utils/tools/@HEAD           tools 
         4^/utils/tools@HEAD            tools 
        55^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
         
        88 
        99# SETTE 
        10 ^/utils/CI/sette@12931        sette 
         10^/utils/CI/sette@13559        sette 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/eosbn2.F90

    r13237 r13899  
    238238      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    239239         ! 
    240          DO_3D_11_11( 1, jpkm1 ) 
     240         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    241241            ! 
    242242            zh  = pdep(ji,jj,jk) * r1_Z0                                  ! depth 
     
    274274      CASE( np_seos )                !==  simplified EOS  ==! 
    275275         ! 
    276          DO_3D_11_11( 1, jpkm1 ) 
     276         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    277277            zt  = pts  (ji,jj,jk,jp_tem) - 10._wp 
    278278            zs  = pts  (ji,jj,jk,jp_sal) - 35._wp 
     
    338338            END DO 
    339339            ! 
    340             DO_3D_11_11( 1, jpkm1 ) 
     340            DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    341341               ! 
    342342               ! compute density (2*nn_sto_eos) times: 
     
    388388         ! Non-stochastic equation of state 
    389389         ELSE 
    390             DO_3D_11_11( 1, jpkm1 ) 
     390            DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    391391               ! 
    392392               zh  = pdep(ji,jj,jk) * r1_Z0                                  ! depth 
     
    426426      CASE( np_seos )                !==  simplified EOS  ==! 
    427427         ! 
    428          DO_3D_11_11( 1, jpkm1 ) 
     428         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    429429            zt  = pts  (ji,jj,jk,jp_tem) - 10._wp 
    430430            zs  = pts  (ji,jj,jk,jp_sal) - 35._wp 
     
    480480      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    481481         ! 
    482          DO_2D_11_11 
     482         DO_2D( 1, 1, 1, 1 ) 
    483483            ! 
    484484            zh  = pdep(ji,jj) * r1_Z0                                  ! depth 
     
    515515      CASE( np_seos )                !==  simplified EOS  ==! 
    516516         ! 
    517          DO_2D_11_11 
     517         DO_2D( 1, 1, 1, 1 ) 
    518518            ! 
    519519            zt    = pts  (ji,jj,jp_tem)  - 10._wp 
     
    563563      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    564564         ! 
    565          DO_3D_11_11( 1, jpkm1 ) 
     565         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    566566            ! 
    567567            zh  = gdept(ji,jj,jk,Kmm) * r1_Z0                                ! depth 
     
    616616      CASE( np_seos )                  !==  simplified EOS  ==! 
    617617         ! 
    618          DO_3D_11_11( 1, jpkm1 ) 
     618         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    619619            zt  = pts (ji,jj,jk,jp_tem) - 10._wp   ! pot. temperature anomaly (t-T0) 
    620620            zs  = pts (ji,jj,jk,jp_sal) - 35._wp   ! abs. salinity anomaly (s-S0) 
     
    670670      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    671671         ! 
    672          DO_2D_11_11 
     672         DO_2D( 1, 1, 1, 1 ) 
    673673            ! 
    674674            zh  = pdep(ji,jj) * r1_Z0                                  ! depth 
     
    723723      CASE( np_seos )                  !==  simplified EOS  ==! 
    724724         ! 
    725          DO_2D_11_11 
     725         DO_2D( 1, 1, 1, 1 ) 
    726726            ! 
    727727            zt    = pts  (ji,jj,jp_tem) - 10._wp   ! pot. temperature anomaly (t-T0) 
     
    873873      IF( ln_timing )   CALL timing_start('bn2') 
    874874      ! 
    875       DO_3D_11_11( 2, jpkm1 ) 
     875      DO_3D( 1, 1, 1, 1, 2, jpkm1 )      ! interior points only (2=< jk =< jpkm1 ); surface and bottom value set to zero one for all in istate.F90 
    876876         zrw =   ( gdepw(ji,jj,jk  ,Kmm) - gdept(ji,jj,jk,Kmm) )   & 
    877877            &  / ( gdept(ji,jj,jk-1,Kmm) - gdept(ji,jj,jk,Kmm) )  
     
    921921      z1_T0   = 1._wp/40._wp 
    922922      ! 
    923       DO_2D_11_11 
     923      DO_2D( 1, 1, 1, 1 ) 
    924924         ! 
    925925         zt  = ctmp   (ji,jj) * z1_T0 
     
    974974         ! 
    975975         z1_S0 = 1._wp / 35.16504_wp 
    976          DO_2D_11_11 
     976         DO_2D( 1, 1, 1, 1 ) 
    977977            zs= SQRT( ABS( psal(ji,jj) ) * z1_S0 )           ! square root salinity 
    978978            ptf(ji,jj) = ((((1.46873e-03_wp*zs-9.64972e-03_wp)*zs+2.28348e-02_wp)*zs & 
     
    10811081      CASE( np_teos10, np_eos80 )                !==  polynomial TEOS-10 / EOS-80 ==! 
    10821082         ! 
    1083          DO_3D_11_11( 1, jpkm1 ) 
     1083         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    10841084            ! 
    10851085            zh  = gdept(ji,jj,jk,Kmm) * r1_Z0                                ! depth 
     
    11401140      CASE( np_seos )                !==  Vallis (2006) simplified EOS  ==! 
    11411141         ! 
    1142          DO_3D_11_11( 1, jpkm1 ) 
     1142         DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    11431143            zt  = pts(ji,jj,jk,jp_tem) - 10._wp  ! temperature anomaly (t-T0) 
    11441144            zs = pts (ji,jj,jk,jp_sal) - 35._wp  ! abs. salinity anomaly (s-S0) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traadv_cen.F90

    r13237 r13899  
    104104         ! 
    105105         CASE(  2  )                         !* 2nd order centered 
    106             DO_3D_10_10( 1, jpkm1 ) 
     106            DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    107107               zwx(ji,jj,jk) = 0.5_wp * pU(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm) ) 
    108108               zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) ) 
     
    112112            ztu(:,:,jpk) = 0._wp                   ! Bottom value : flux set to zero 
    113113            ztv(:,:,jpk) = 0._wp 
    114             DO_3D_00_00( 1, jpkm1 ) 
     114            DO_3D( 0, 0, 0, 0, 1, jpkm1 )          ! masked gradient 
    115115               ztu(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * umask(ji,jj,jk) 
    116116               ztv(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 
     
    118118            CALL lbc_lnk_multi( 'traadv_cen', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp )   ! Lateral boundary cond. 
    119119            ! 
    120             DO_3D_00_10( 1, jpkm1 ) 
     120            DO_3D( 0, 0, 0, 0, 1, jpkm1 )           ! Horizontal advective fluxes 
    121121               zC2t_u = pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm)   ! C2 interpolation of T at u- & v-points (x2) 
    122122               zC2t_v = pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) 
     
    128128               zwy(ji,jj,jk) =  0.5_wp * pV(ji,jj,jk) * zC4t_v 
    129129            END_3D 
     130            CALL lbc_lnk_multi( 'traadv_cen', zwx, 'U', -1. , zwy, 'V', -1. ) 
    130131            ! 
    131132         CASE DEFAULT 
    132             CALL ctl_stop( 'traadv_fct: wrong value for nn_fct' ) 
     133            CALL ctl_stop( 'traadv_cen: wrong value for nn_cen' ) 
    133134         END SELECT 
    134135         ! 
     
    136137         ! 
    137138         CASE(  2  )                         !* 2nd order centered 
    138             DO_3D_00_00( 2, jpk ) 
     139            DO_3D( 0, 0, 0, 0, 2, jpk ) 
    139140               zwz(ji,jj,jk) = 0.5 * pW(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) ) * wmask(ji,jj,jk) 
    140141            END_3D 
     
    142143         CASE(  4  )                         !* 4th order compact 
    143144            CALL interp_4th_cpt( pt(:,:,:,jn,Kmm) , ztw )      ! ztw = interpolated value of T at w-point 
    144             DO_3D_00_00( 2, jpkm1 ) 
     145            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    145146               zwz(ji,jj,jk) = pW(ji,jj,jk) * ztw(ji,jj,jk) * wmask(ji,jj,jk) 
    146147            END_3D 
     
    150151         IF( ln_linssh ) THEN                !* top value   (linear free surf. only as zwz is multiplied by wmask) 
    151152            IF( ln_isfcav ) THEN                  ! ice-shelf cavities (top of the ocean) 
    152                DO_2D_11_11 
     153               DO_2D( 1, 1, 1, 1 ) 
    153154                  zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kmm)  
    154155               END_2D 
     
    158159         ENDIF 
    159160         !                
    160          DO_3D_00_00( 1, jpkm1 ) 
     161         DO_3D( 0, 0, 0, 0, 1, jpkm1 )   !--  Divergence of advective fluxes  --! 
    161162            pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs)    & 
    162163               &             - (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk  )    & 
     
    165166               &                * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    166167         END_3D 
    167          !                             ! trend diagnostics 
     168         !                               ! trend diagnostics 
    168169         IF( l_trd ) THEN 
    169170            CALL trd_tra( kt, Kmm, Krhs, cdtype, jn, jptra_xad, zwx, pU, pt(:,:,:,jn,Kmm) ) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traadv_fct.F90

    r13237 r13899  
    139139      IF( ll_zAimp ) THEN 
    140140         ALLOCATE(zwdia(jpi,jpj,jpk), zwinf(jpi,jpj,jpk),zwsup(jpi,jpj,jpk)) 
    141          DO_3D_00_00( 1, jpkm1 ) 
     141         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    142142            zwdia(ji,jj,jk) =  1._wp + p2dt * ( MAX( wi(ji,jj,jk) , 0._wp ) - MIN( wi(ji,jj,jk+1) , 0._wp ) )   & 
    143143            &                               / e3t(ji,jj,jk,Krhs) 
     
    151151         !        !==  upstream advection with initial mass fluxes & intermediate update  ==! 
    152152         !                    !* upstream tracer flux in the i and j direction  
    153          DO_3D_10_10( 1, jpkm1 ) 
     153         DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    154154            ! upstream scheme 
    155155            zfp_ui = pU(ji,jj,jk) + ABS( pU(ji,jj,jk) ) 
     
    160160            zwy(ji,jj,jk) = 0.5 * ( zfp_vj * pt(ji,jj,jk,jn,Kbb) + zfm_vj * pt(ji  ,jj+1,jk,jn,Kbb) ) 
    161161         END_3D 
    162          !                    !* upstream tracer flux in the k direction *! 
    163          DO_3D_11_11( 2, jpkm1 ) 
     162         !                               !* upstream tracer flux in the k direction *! 
     163         DO_3D( 1, 1, 1, 1, 2, jpkm1 )      ! Interior value ( multiplied by wmask) 
    164164            zfp_wk = pW(ji,jj,jk) + ABS( pW(ji,jj,jk) ) 
    165165            zfm_wk = pW(ji,jj,jk) - ABS( pW(ji,jj,jk) ) 
    166166            zwz(ji,jj,jk) = 0.5 * ( zfp_wk * pt(ji,jj,jk,jn,Kbb) + zfm_wk * pt(ji,jj,jk-1,jn,Kbb) ) * wmask(ji,jj,jk) 
    167167         END_3D 
    168          IF( ln_linssh ) THEN    ! top ocean value (only in linear free surface as zwz has been w-masked) 
    169             IF( ln_isfcav ) THEN             ! top of the ice-shelf cavities and at the ocean surface 
    170                DO_2D_11_11 
     168         IF( ln_linssh ) THEN               ! top ocean value (only in linear free surface as zwz has been w-masked) 
     169            IF( ln_isfcav ) THEN                        ! top of the ice-shelf cavities and at the ocean surface 
     170               DO_2D( 1, 1, 1, 1 ) 
    171171                  zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface  
    172172               END_2D 
    173             ELSE                             ! no cavities: only at the ocean surface 
    174                zwz(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kbb) 
     173            ELSE                                        ! no cavities: only at the ocean surface 
     174               DO_2D( 1, 1, 1, 1 ) 
     175                  zwz(ji,jj,1) = pW(ji,jj,1) * pt(ji,jj,1,jn,Kbb) 
     176               END_2D 
    175177            ENDIF 
    176178         ENDIF 
    177179         !                
    178          DO_3D_00_00( 1, jpkm1 ) 
    179             !                             ! total intermediate advective trends 
     180         DO_3D( 0, 0, 0, 0, 1, jpkm1 )   !* trend and after field with monotonic scheme 
     181            !                               ! total intermediate advective trends 
    180182            ztra = - (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk  )   & 
    181183               &      + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk  )   & 
    182184               &      + zwz(ji,jj,jk) - zwz(ji  ,jj  ,jk+1) ) * r1_e1e2t(ji,jj) 
    183             !                             ! update and guess with monotonic sheme 
     185            !                               ! update and guess with monotonic sheme 
    184186            pt(ji,jj,jk,jn,Krhs) =                   pt(ji,jj,jk,jn,Krhs) +       ztra   & 
    185187               &                                  / e3t(ji,jj,jk,Kmm ) * tmask(ji,jj,jk) 
     
    192194            ! 
    193195            ztw(:,:,1) = 0._wp ; ztw(:,:,jpk) = 0._wp ; 
    194             DO_3D_00_00( 2, jpkm1 ) 
     196            DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! Interior value ( multiplied by wmask) 
    195197               zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 
    196198               zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 
     
    198200               zwz(ji,jj,jk) = zwz(ji,jj,jk) + ztw(ji,jj,jk) ! update vertical fluxes 
    199201            END_3D 
    200             DO_3D_00_00( 1, jpkm1 ) 
     202            DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    201203               pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( ztw(ji,jj,jk) - ztw(ji  ,jj  ,jk+1) ) & 
    202204                  &                                        * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     
    216218         ! 
    217219         CASE(  2  )                   !- 2nd order centered 
    218             DO_3D_10_10( 1, jpkm1 ) 
     220            DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    219221               zwx(ji,jj,jk) = 0.5_wp * pU(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj,jk,jn,Kmm) ) - zwx(ji,jj,jk) 
    220222               zwy(ji,jj,jk) = 0.5_wp * pV(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj+1,jk,jn,Kmm) ) - zwy(ji,jj,jk) 
     
    225227            zltv(:,:,jpk) = 0._wp 
    226228            DO jk = 1, jpkm1                 ! Laplacian 
    227                DO_2D_10_10 
     229               DO_2D( 1, 0, 1, 0 )                 ! 1st derivative (gradient) 
    228230                  ztu(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * umask(ji,jj,jk) 
    229231                  ztv(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 
    230232               END_2D 
    231                DO_2D_00_00 
     233               DO_2D( 0, 0, 0, 0 )                 ! 2nd derivative * 1/ 6 
    232234                  zltu(ji,jj,jk) = (  ztu(ji,jj,jk) + ztu(ji-1,jj,jk)  ) * r1_6 
    233235                  zltv(ji,jj,jk) = (  ztv(ji,jj,jk) + ztv(ji,jj-1,jk)  ) * r1_6 
     
    236238            CALL lbc_lnk_multi( 'traadv_fct', zltu, 'T', 1.0_wp , zltv, 'T', 1.0_wp )   ! Lateral boundary cond. (unchanged sgn) 
    237239            ! 
    238             DO_3D_10_10( 1, jpkm1 ) 
     240            DO_3D( 1, 0, 1, 0, 1, jpkm1 )    ! Horizontal advective fluxes 
    239241               zC2t_u = pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm)   ! 2 x C2 interpolation of T at u- & v-points 
    240242               zC2t_v = pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) 
    241                !                                                  ! C4 minus upstream advective fluxes  
     243               !                                                        ! C4 minus upstream advective fluxes  
    242244               zwx(ji,jj,jk) =  0.5_wp * pU(ji,jj,jk) * ( zC2t_u + zltu(ji,jj,jk) - zltu(ji+1,jj,jk) ) - zwx(ji,jj,jk) 
    243245               zwy(ji,jj,jk) =  0.5_wp * pV(ji,jj,jk) * ( zC2t_v + zltv(ji,jj,jk) - zltv(ji,jj+1,jk) ) - zwy(ji,jj,jk) 
     
    247249            ztu(:,:,jpk) = 0._wp             ! Bottom value : flux set to zero 
    248250            ztv(:,:,jpk) = 0._wp 
    249             DO_3D_10_10( 1, jpkm1 ) 
     251            DO_3D( 1, 0, 1, 0, 1, jpkm1 )    ! 1st derivative (gradient) 
    250252               ztu(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * umask(ji,jj,jk) 
    251253               ztv(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn,Kmm) - pt(ji,jj,jk,jn,Kmm) ) * vmask(ji,jj,jk) 
     
    253255            CALL lbc_lnk_multi( 'traadv_fct', ztu, 'U', -1.0_wp , ztv, 'V', -1.0_wp )   ! Lateral boundary cond. (unchanged sgn) 
    254256            ! 
    255             DO_3D_00_00( 1, jpkm1 ) 
     257            DO_3D( 0, 0, 0, 0, 1, jpkm1 )    ! Horizontal advective fluxes 
    256258               zC2t_u = pt(ji,jj,jk,jn,Kmm) + pt(ji+1,jj  ,jk,jn,Kmm)   ! 2 x C2 interpolation of T at u- & v-points (x2) 
    257259               zC2t_v = pt(ji,jj,jk,jn,Kmm) + pt(ji  ,jj+1,jk,jn,Kmm) 
     
    269271         ! 
    270272         CASE(  2  )                   !- 2nd order centered 
    271             DO_3D_00_00( 2, jpkm1 ) 
     273            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    272274               zwz(ji,jj,jk) =  (  pW(ji,jj,jk) * 0.5_wp * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
    273275                  &              - zwz(ji,jj,jk)  ) * wmask(ji,jj,jk) 
     
    276278         CASE(  4  )                   !- 4th order COMPACT 
    277279            CALL interp_4th_cpt( pt(:,:,:,jn,Kmm) , ztw )   ! zwt = COMPACT interpolation of T at w-point 
    278             DO_3D_00_00( 2, jpkm1 ) 
     280            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    279281               zwz(ji,jj,jk) = ( pW(ji,jj,jk) * ztw(ji,jj,jk) - zwz(ji,jj,jk) ) * wmask(ji,jj,jk) 
    280282            END_3D 
     
    286288         !          
    287289         IF ( ll_zAimp ) THEN 
    288             DO_3D_00_00( 1, jpkm1 ) 
    289                !                             ! total intermediate advective trends 
     290            DO_3D( 0, 0, 0, 0, 1, jpkm1 )    !* trend and after field with monotonic scheme 
     291               !                                                ! total intermediate advective trends 
    290292               ztra = - (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk  )   & 
    291293                  &      + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk  )   & 
     
    296298            CALL tridia_solver( zwdia, zwsup, zwinf, ztw, ztw , 0 ) 
    297299            ! 
    298             DO_3D_00_00( 2, jpkm1 ) 
     300            DO_3D( 0, 0, 0, 0, 2, jpkm1 )       ! Interior value ( multiplied by wmask) 
    299301               zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 
    300302               zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 
     
    311313         !        !==  final trend with corrected fluxes  ==! 
    312314         ! 
    313          DO_3D_00_00( 1, jpkm1 ) 
     315         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    314316            ztra = - (  zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk  )   & 
    315317               &      + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk  )   & 
     
    322324            ! 
    323325            ztw(:,:,1) = 0._wp ; ztw(:,:,jpk) = 0._wp 
    324             DO_3D_00_00( 2, jpkm1 ) 
     326            DO_3D( 0, 0, 0, 0, 2, jpkm1 )      ! Interior value ( multiplied by wmask) 
    325327               zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 
    326328               zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 
     
    328330               zwz(ji,jj,jk) = zwz(ji,jj,jk) + ztw(ji,jj,jk) ! Update vertical fluxes for trend diagnostic 
    329331            END_3D 
    330             DO_3D_00_00( 1, jpkm1 ) 
     332            DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    331333               pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( ztw(ji,jj,jk) - ztw(ji  ,jj  ,jk+1) ) & 
    332334                  &                                        * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     
    407409      DO jk = 1, jpkm1 
    408410         ikm1 = MAX(jk-1,1) 
    409          DO_2D_00_00 
     411         DO_2D( 0, 0, 0, 0 ) 
    410412 
    411413            ! search maximum in neighbourhood 
     
    441443      ! 3. monotonic flux in the i & j direction (paa & pbb) 
    442444      ! ---------------------------------------- 
    443       DO_3D_00_00( 1, jpkm1 ) 
     445      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    444446         zau = MIN( 1._wp, zbetdo(ji,jj,jk), zbetup(ji+1,jj,jk) ) 
    445447         zbu = MIN( 1._wp, zbetup(ji,jj,jk), zbetdo(ji+1,jj,jk) ) 
     
    452454         pbb(ji,jj,jk) = pbb(ji,jj,jk) * ( zcv * zav + ( 1._wp - zcv) * zbv ) 
    453455 
    454 ! monotonic flux in the k direction, i.e. pcc 
    455 ! ------------------------------------------- 
     456      ! monotonic flux in the k direction, i.e. pcc 
     457      ! ------------------------------------------- 
    456458         za = MIN( 1., zbetdo(ji,jj,jk+1), zbetup(ji,jj,jk) ) 
    457459         zb = MIN( 1., zbetup(ji,jj,jk+1), zbetdo(ji,jj,jk) ) 
     
    479481      !!---------------------------------------------------------------------- 
    480482       
    481       DO_3D_11_11( 3, jpkm1 ) 
     483      DO_3D( 1, 1, 1, 1, 3, jpkm1 )       !==  build the three diagonal matrix  ==! 
    482484         zwd (ji,jj,jk) = 4._wp 
    483485         zwi (ji,jj,jk) = 1._wp 
     
    493495      END_3D 
    494496      ! 
    495       jk = 2                                          ! Switch to second order centered at top 
    496       DO_2D_11_11 
     497      jk = 2                                    ! Switch to second order centered at top 
     498      DO_2D( 1, 1, 1, 1 ) 
    497499         zwd (ji,jj,jk) = 1._wp 
    498500         zwi (ji,jj,jk) = 0._wp 
     
    502504      ! 
    503505      !                       !==  tridiagonal solve  ==! 
    504       DO_2D_11_11 
     506      DO_2D( 1, 1, 1, 1 )           ! first recurrence 
    505507         zwt(ji,jj,2) = zwd(ji,jj,2) 
    506508      END_2D 
    507       DO_3D_11_11( 3, jpkm1 ) 
     509      DO_3D( 1, 1, 1, 1, 3, jpkm1 ) 
    508510         zwt(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) /zwt(ji,jj,jk-1) 
    509511      END_3D 
    510512      ! 
    511       DO_2D_11_11 
     513      DO_2D( 1, 1, 1, 1 )           ! second recurrence:    Zk = Yk - Ik / Tk-1  Zk-1 
    512514         pt_out(ji,jj,2) = zwrm(ji,jj,2) 
    513515      END_2D 
    514       DO_3D_11_11( 3, jpkm1 ) 
     516      DO_3D( 1, 1, 1, 1, 3, jpkm1 ) 
    515517         pt_out(ji,jj,jk) = zwrm(ji,jj,jk) - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) *pt_out(ji,jj,jk-1)              
    516518      END_3D 
    517519 
    518       DO_2D_11_11 
     520      DO_2D( 1, 1, 1, 1 )           ! third recurrence: Xk = (Zk - Sk Xk+1 ) / Tk 
    519521         pt_out(ji,jj,jpkm1) = pt_out(ji,jj,jpkm1) / zwt(ji,jj,jpkm1) 
    520522      END_2D 
    521       DO_3DS_11_11( jpk-2, 2, -1 ) 
     523      DO_3DS( 1, 1, 1, 1, jpk-2, 2, -1 ) 
    522524         pt_out(ji,jj,jk) = ( pt_out(ji,jj,jk) - zws(ji,jj,jk) * pt_out(ji,jj,jk+1) ) / zwt(ji,jj,jk) 
    523525      END_3D 
     
    544546      !                      !==  build the three diagonal matrix & the RHS  ==! 
    545547      ! 
    546       DO_3D_00_00( 3, jpkm1 ) 
     548      DO_3D( 0, 0, 0, 0, 3, jpkm1 )    ! interior (from jk=3 to jpk-1) 
    547549         zwd (ji,jj,jk) = 3._wp * wmask(ji,jj,jk) + 1._wp                 !       diagonal 
    548550         zwi (ji,jj,jk) =         wmask(ji,jj,jk)                         ! lower diagonal 
     
    563565      END IF 
    564566      ! 
    565       DO_2D_00_00 
     567      DO_2D( 0, 0, 0, 0 )              ! 2nd order centered at top & bottom 
    566568         ikt = mikt(ji,jj) + 1            ! w-point below the 1st  wet point 
    567569         ikb = MAX(mbkt(ji,jj), 2)        !     -   above the last wet point 
     
    580582      !                       !==  tridiagonal solver  ==! 
    581583      ! 
    582       DO_2D_00_00 
     584      DO_2D( 0, 0, 0, 0 )           !* 1st recurrence:   Tk = Dk - Ik Sk-1 / Tk-1 
    583585         zwt(ji,jj,2) = zwd(ji,jj,2) 
    584586      END_2D 
    585       DO_3D_00_00( 3, jpkm1 ) 
     587      DO_3D( 0, 0, 0, 0, 3, jpkm1 ) 
    586588         zwt(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) /zwt(ji,jj,jk-1) 
    587589      END_3D 
    588590      ! 
    589       DO_2D_00_00 
     591      DO_2D( 0, 0, 0, 0 )           !* 2nd recurrence:    Zk = Yk - Ik / Tk-1  Zk-1 
    590592         pt_out(ji,jj,2) = zwrm(ji,jj,2) 
    591593      END_2D 
    592       DO_3D_00_00( 3, jpkm1 ) 
     594      DO_3D( 0, 0, 0, 0, 3, jpkm1 ) 
    593595         pt_out(ji,jj,jk) = zwrm(ji,jj,jk) - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) *pt_out(ji,jj,jk-1)              
    594596      END_3D 
    595597 
    596       DO_2D_00_00 
     598      DO_2D( 0, 0, 0, 0 )           !* 3d recurrence:    Xk = (Zk - Sk Xk+1 ) / Tk 
    597599         pt_out(ji,jj,jpkm1) = pt_out(ji,jj,jpkm1) / zwt(ji,jj,jpkm1) 
    598600      END_2D 
    599       DO_3DS_00_00( jpk-2, 2, -1 ) 
     601      DO_3DS( 0, 0, 0, 0, jpk-2, 2, -1 ) 
    600602         pt_out(ji,jj,jk) = ( pt_out(ji,jj,jk) - zws(ji,jj,jk) * pt_out(ji,jj,jk+1) ) / zwt(ji,jj,jk) 
    601603      END_3D 
     
    636638      kstart =  1  + klev 
    637639      ! 
    638       DO_2D_00_00 
     640      DO_2D( 0, 0, 0, 0 )                         !* 1st recurrence:   Tk = Dk - Ik Sk-1 / Tk-1 
    639641         zwt(ji,jj,kstart) = pD(ji,jj,kstart) 
    640642      END_2D 
    641       DO_3D_00_00( kstart+1, jpkm1 ) 
     643      DO_3D( 0, 0, 0, 0, kstart+1, jpkm1 ) 
    642644         zwt(ji,jj,jk) = pD(ji,jj,jk) - pL(ji,jj,jk) * pU(ji,jj,jk-1) /zwt(ji,jj,jk-1) 
    643645      END_3D 
    644646      ! 
    645       DO_2D_00_00 
     647      DO_2D( 0, 0, 0, 0 )                        !* 2nd recurrence:    Zk = Yk - Ik / Tk-1  Zk-1 
    646648         pt_out(ji,jj,kstart) = pRHS(ji,jj,kstart) 
    647649      END_2D 
    648       DO_3D_00_00( kstart+1, jpkm1 ) 
     650      DO_3D( 0, 0, 0, 0, kstart+1, jpkm1 ) 
    649651         pt_out(ji,jj,jk) = pRHS(ji,jj,jk) - pL(ji,jj,jk) / zwt(ji,jj,jk-1) *pt_out(ji,jj,jk-1)              
    650652      END_3D 
    651653 
    652       DO_2D_00_00 
     654      DO_2D( 0, 0, 0, 0 )                       !* 3d recurrence:    Xk = (Zk - Sk Xk+1 ) / Tk 
    653655         pt_out(ji,jj,jpkm1) = pt_out(ji,jj,jpkm1) / zwt(ji,jj,jpkm1) 
    654656      END_2D 
    655       DO_3DS_00_00( jpk-2, kstart, -1 ) 
     657      DO_3DS( 0, 0, 0, 0, jpk-2, kstart, -1 ) 
    656658         pt_out(ji,jj,jk) = ( pt_out(ji,jj,jk) - pU(ji,jj,jk) * pt_out(ji,jj,jk+1) ) / zwt(ji,jj,jk) 
    657659      END_3D 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traadv_mus.F90

    r13237 r13899  
    132132         zwx(:,:,jpk) = 0._wp                   ! bottom values 
    133133         zwy(:,:,jpk) = 0._wp   
    134          DO_3D_10_10( 1, jpkm1 ) 
     134         DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    135135            zwx(ji,jj,jk) = umask(ji,jj,jk) * ( pt(ji+1,jj,jk,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 
    136136            zwy(ji,jj,jk) = vmask(ji,jj,jk) * ( pt(ji,jj+1,jk,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 
     
    141141         zslpx(:,:,jpk) = 0._wp                 ! bottom values 
    142142         zslpy(:,:,jpk) = 0._wp 
    143          DO_3D_01_01( 1, jpkm1 ) 
     143         DO_3D( 0, 1, 0, 1, 1, jpkm1 ) 
    144144            zslpx(ji,jj,jk) =                       ( zwx(ji,jj,jk) + zwx(ji-1,jj  ,jk) )   & 
    145145               &            * ( 0.25 + SIGN( 0.25_wp, zwx(ji,jj,jk) * zwx(ji-1,jj  ,jk) ) ) 
     
    148148         END_3D 
    149149         ! 
    150          DO_3D_01_01( 1, jpkm1 ) 
     150         DO_3D( 0, 1, 0, 1, 1, jpkm1 )    !-- Slopes limitation 
    151151            zslpx(ji,jj,jk) = SIGN( 1.0_wp, zslpx(ji,jj,jk) ) * MIN(    ABS( zslpx(ji  ,jj,jk) ),   & 
    152152               &                                                     2.*ABS( zwx  (ji-1,jj,jk) ),   & 
     
    157157         END_3D 
    158158         ! 
    159          DO_3D_00_00( 1, jpkm1 ) 
     159         DO_3D( 0, 0, 0, 0, 1, jpkm1 )    !-- MUSCL horizontal advective fluxes 
    160160            ! MUSCL fluxes 
    161161            z0u = SIGN( 0.5_wp, pU(ji,jj,jk) ) 
     
    175175         CALL lbc_lnk_multi( 'traadv_mus', zwx, 'U', -1.0_wp , zwy, 'V', -1.0_wp )   ! lateral boundary conditions   (changed sign) 
    176176         ! 
    177          DO_3D_00_00( 1, jpkm1 ) 
     177         DO_3D( 0, 0, 0, 0, 1, jpkm1 )    !-- Tracer advective trend 
    178178            pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwx(ji,jj,jk) - zwx(ji-1,jj  ,jk  )       & 
    179179            &                                     + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk  ) )     & 
     
    200200         !                                !-- Slopes of tracer 
    201201         zslpx(:,:,1) = 0._wp                   ! surface values 
    202          DO_3D_11_11( 2, jpkm1 ) 
     202         DO_3D( 1, 1, 1, 1, 2, jpkm1 ) 
    203203            zslpx(ji,jj,jk) =                        ( zwx(ji,jj,jk) + zwx(ji,jj,jk+1) )  & 
    204204               &            * (  0.25 + SIGN( 0.25_wp, zwx(ji,jj,jk) * zwx(ji,jj,jk+1) )  ) 
    205205         END_3D 
    206          DO_3D_11_11( 2, jpkm1 ) 
     206         DO_3D( 1, 1, 1, 1, 2, jpkm1 )    !-- Slopes limitation 
    207207            zslpx(ji,jj,jk) = SIGN( 1.0_wp, zslpx(ji,jj,jk) ) * MIN(    ABS( zslpx(ji,jj,jk  ) ),   & 
    208208               &                                                     2.*ABS( zwx  (ji,jj,jk+1) ),   & 
    209209               &                                                     2.*ABS( zwx  (ji,jj,jk  ) )  ) 
    210210         END_3D 
    211          DO_3D_00_00( 1, jpk-2 ) 
     211         DO_3D( 0, 0, 0, 0, 1, jpk-2 )    !-- vertical advective flux 
    212212            z0w = SIGN( 0.5_wp, pW(ji,jj,jk+1) ) 
    213213            zalpha = 0.5 + z0w 
     
    219219         IF( ln_linssh ) THEN                   ! top values, linear free surface only 
    220220            IF( ln_isfcav ) THEN                      ! ice-shelf cavities (top of the ocean) 
    221                DO_2D_11_11 
     221               DO_2D( 1, 1, 1, 1 ) 
    222222                  zwx(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb) 
    223223               END_2D 
     
    227227         ENDIF 
    228228         ! 
    229          DO_3D_00_00( 1, jpkm1 ) 
     229         DO_3D( 0, 0, 0, 0, 1, jpkm1 )     !-- vertical advective trend 
    230230            pt(ji,jj,jk,jn,Krhs) =  pt(ji,jj,jk,jn,Krhs) - ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) )   & 
    231231               &                                      * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traadv_qck.F90

    r13237 r13899  
    142142         ! 
    143143!!gm why not using a SHIFT instruction... 
    144          DO_3D_00_00( 1, jpkm1 ) 
     144         DO_3D( 0, 0, 0, 0, 1, jpkm1 )     !--- Computation of the ustream and downstream value of the tracer and the mask 
    145145            zfc(ji,jj,jk) = pt(ji-1,jj,jk,jn,Kbb)        ! Upstream   in the x-direction for the tracer 
    146146            zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb)        ! Downstream in the x-direction for the tracer 
     
    151151         ! Horizontal advective fluxes 
    152152         ! --------------------------- 
    153          DO_3D_00_00( 1, jpkm1 ) 
     153         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    154154            zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    155155            zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji+1,jj,jk)  ! FU in the x-direction for T  
    156156         END_3D 
    157157         ! 
    158          DO_3D_00_00( 1, jpkm1 ) 
     158         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    159159            zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    160160            zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) 
     
    170170         ! 
    171171         ! Mask at the T-points in the x-direction (mask=0 or mask=1) 
    172          DO_3D_00_00( 1, jpkm1 ) 
     172         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    173173            zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 
    174174         END_3D 
     
    179179         DO jk = 1, jpkm1   
    180180            ! 
    181             DO_2D_00_00 
     181            DO_2D( 0, 0, 0, 0 ) 
    182182               zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    183183               !--- If the second ustream point is a land point 
     
    192192         ! 
    193193         ! Computation of the trend 
    194          DO_3D_00_00( 1, jpkm1 ) 
     194         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    195195            zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    196196            ! horizontal advective trends 
     
    233233            !                                              
    234234            !--- Computation of the ustream and downstream value of the tracer and the mask 
    235             DO_2D_00_00 
     235            DO_2D( 0, 0, 0, 0 ) 
    236236               ! Upstream in the x-direction for the tracer 
    237237               zfc(ji,jj,jk) = pt(ji,jj-1,jk,jn,Kbb) 
     
    247247         ! --------------------------- 
    248248         ! 
    249          DO_3D_00_00( 1, jpkm1 ) 
     249         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    250250            zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    251251            zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji,jj+1,jk)  ! FU in the x-direction for T  
    252252         END_3D 
    253253         ! 
    254          DO_3D_00_00( 1, jpkm1 ) 
     254         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    255255            zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    256256            zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 
     
    267267         ! 
    268268         ! Mask at the T-points in the x-direction (mask=0 or mask=1) 
    269          DO_3D_00_00( 1, jpkm1 ) 
     269         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    270270            zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 
    271271         END_3D 
     
    275275         DO jk = 1, jpkm1   
    276276            ! 
    277             DO_2D_00_00 
     277            DO_2D( 0, 0, 0, 0 ) 
    278278               zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) )   ! if pU > 0 : zdir = 1 otherwise zdir = 0  
    279279               !--- If the second ustream point is a land point 
     
    288288         ! 
    289289         ! Computation of the trend 
    290          DO_3D_00_00( 1, jpkm1 ) 
     290         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    291291            zbtr = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    292292            ! horizontal advective trends 
     
    327327         !                                                       ! =========== 
    328328         ! 
    329          DO_3D_00_00( 2, jpkm1 ) 
     329         DO_3D( 0, 0, 0, 0, 2, jpkm1 )       !* Interior point   (w-masked 2nd order centered flux) 
    330330            zwz(ji,jj,jk) = 0.5 * pW(ji,jj,jk) * ( pt(ji,jj,jk-1,jn,Kmm) + pt(ji,jj,jk,jn,Kmm) ) * wmask(ji,jj,jk) 
    331331         END_3D 
    332332         IF( ln_linssh ) THEN                !* top value   (only in linear free surf. as zwz is multiplied by wmask) 
    333333            IF( ln_isfcav ) THEN                  ! ice-shelf cavities (top of the ocean) 
    334                DO_2D_11_11 
     334               DO_2D( 1, 1, 1, 1 ) 
    335335                  zwz(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kmm)   ! linear free surface  
    336336               END_2D 
     
    340340         ENDIF 
    341341         ! 
    342          DO_3D_00_00( 1, jpkm1 ) 
     342         DO_3D( 0, 0, 0, 0, 1, jpkm1 )   !==  Tracer flux divergence added to the general trend  ==! 
    343343            pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( zwz(ji,jj,jk) - zwz(ji,jj,jk+1) )   & 
    344344               &                                * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     
    369369      !---------------------------------------------------------------------- 
    370370      ! 
    371       DO_3D_11_11( 1, jpkm1 ) 
     371      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    372372         zc     = puc(ji,jj,jk)                         ! Courant number 
    373373         zcurv  = pfd(ji,jj,jk) + pfu(ji,jj,jk) - 2. * pfc(ji,jj,jk) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traadv_ubs.F90

    r13237 r13899  
    124124         !                                                       ! =========== 
    125125         !                                               
    126          DO jk = 1, jpkm1        !==  horizontal laplacian of before tracer ==! 
    127             DO_2D_10_10 
     126         DO jk = 1, jpkm1                !==  horizontal laplacian of before tracer ==! 
     127            DO_2D( 1, 0, 1, 0 )                   ! First derivative (masked gradient) 
    128128               zeeu = e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm) * umask(ji,jj,jk) 
    129129               zeev = e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm) * vmask(ji,jj,jk) 
     
    131131               ztv(ji,jj,jk) = zeev * ( pt(ji  ,jj+1,jk,jn,Kbb) - pt(ji,jj,jk,jn,Kbb) ) 
    132132            END_2D 
    133             DO_2D_00_00 
     133            DO_2D( 0, 0, 0, 0 )                   ! Second derivative (divergence) 
    134134               zcoef = 1._wp / ( 6._wp * e3t(ji,jj,jk,Kmm) ) 
    135135               zltu(ji,jj,jk) = (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk)  ) * zcoef 
     
    140140         CALL lbc_lnk( 'traadv_ubs', zltu, 'T', 1.0_wp )   ;    CALL lbc_lnk( 'traadv_ubs', zltv, 'T', 1.0_wp )   ! Lateral boundary cond. (unchanged sgn) 
    141141         !     
    142          DO_3D_10_10( 1, jpkm1 ) 
    143             zfp_ui = pU(ji,jj,jk) + ABS( pU(ji,jj,jk) )      ! upstream transport (x2) 
     142         DO_3D( 1, 0, 1, 0, 1, jpkm1 )   !==  Horizontal advective fluxes  ==!     (UBS) 
     143            zfp_ui = pU(ji,jj,jk) + ABS( pU(ji,jj,jk) )        ! upstream transport (x2) 
    144144            zfm_ui = pU(ji,jj,jk) - ABS( pU(ji,jj,jk) ) 
    145145            zfp_vj = pV(ji,jj,jk) + ABS( pV(ji,jj,jk) ) 
     
    156156         ! 
    157157         DO jk = 1, jpkm1        !==  add the horizontal advective trend  ==! 
    158             DO_2D_00_00 
     158            DO_2D( 0, 0, 0, 0 ) 
    159159               pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs)                        & 
    160160                  &             - (  ztu(ji,jj,jk) - ztu(ji-1,jj  ,jk)    & 
     
    166166         ! 
    167167         zltu(:,:,:) = pt(:,:,:,jn,Krhs) - zltu(:,:,:)    ! Horizontal advective trend used in vertical 2nd order FCT case 
    168          !                                            ! and/or in trend diagnostic (l_trd=T)  
     168         !                                                ! and/or in trend diagnostic (l_trd=T)  
    169169         !                 
    170170         IF( l_trd ) THEN                  ! trend diagnostics 
     
    187187            IF( l_trd )   zltv(:,:,:) = pt(:,:,:,jn,Krhs)          ! store pt(:,:,:,:,Krhs) if trend diag. 
    188188            ! 
    189             !                          !*  upstream advection with initial mass fluxes & intermediate update  ==! 
    190             DO_3D_11_11( 2, jpkm1 ) 
     189            !                               !*  upstream advection with initial mass fluxes & intermediate update  ==! 
     190            DO_3D( 1, 1, 1, 1, 2, jpkm1 ) 
    191191               zfp_wk = pW(ji,jj,jk) + ABS( pW(ji,jj,jk) ) 
    192192               zfm_wk = pW(ji,jj,jk) - ABS( pW(ji,jj,jk) ) 
    193193               ztw(ji,jj,jk) = 0.5_wp * (  zfp_wk * pt(ji,jj,jk,jn,Kbb) + zfm_wk * pt(ji,jj,jk-1,jn,Kbb)  ) * wmask(ji,jj,jk) 
    194194            END_3D 
    195             IF( ln_linssh ) THEN             ! top ocean value (only in linear free surface as ztw has been w-masked) 
    196                IF( ln_isfcav ) THEN                ! top of the ice-shelf cavities and at the ocean surface 
    197                   DO_2D_11_11 
     195            IF( ln_linssh ) THEN                ! top ocean value (only in linear free surface as ztw has been w-masked) 
     196               IF( ln_isfcav ) THEN                   ! top of the ice-shelf cavities and at the ocean surface 
     197                  DO_2D( 1, 1, 1, 1 ) 
    198198                     ztw(ji,jj, mikt(ji,jj) ) = pW(ji,jj,mikt(ji,jj)) * pt(ji,jj,mikt(ji,jj),jn,Kbb)   ! linear free surface  
    199199                  END_2D 
    200                ELSE                                ! no cavities: only at the ocean surface 
     200               ELSE                                   ! no cavities: only at the ocean surface 
    201201                  ztw(:,:,1) = pW(:,:,1) * pt(:,:,1,jn,Kbb) 
    202202               ENDIF 
    203203            ENDIF 
    204204            ! 
    205             DO_3D_00_00( 1, jpkm1 ) 
     205            DO_3D( 0, 0, 0, 0, 1, jpkm1 )   !* trend and after field with monotonic scheme 
    206206               ztak = - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) )    & 
    207207                  &     * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     
    212212            ! 
    213213            !                          !*  anti-diffusive flux : high order minus low order 
    214             DO_3D_11_11( 2, jpkm1 ) 
     214            DO_3D( 1, 1, 1, 1, 2, jpkm1 ) 
    215215               ztw(ji,jj,jk) = (   0.5_wp * pW(ji,jj,jk) * ( pt(ji,jj,jk,jn,Kmm) + pt(ji,jj,jk-1,jn,Kmm) )   & 
    216216                  &              - ztw(ji,jj,jk)   ) * wmask(ji,jj,jk) 
     
    223223         CASE(  4  )                               ! 4th order COMPACT 
    224224            CALL interp_4th_cpt( pt(:,:,:,jn,Kmm) , ztw )         ! 4th order compact interpolation of T at w-point 
    225             DO_3D_00_00( 2, jpkm1 ) 
     225            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    226226               ztw(ji,jj,jk) = pW(ji,jj,jk) * ztw(ji,jj,jk) * wmask(ji,jj,jk) 
    227227            END_3D 
     
    230230         END SELECT 
    231231         ! 
    232          DO_3D_00_00( 1, jpkm1 ) 
     232         DO_3D( 0, 0, 0, 0, 1, jpkm1 )   !  final trend with corrected fluxes 
    233233            pt(ji,jj,jk,jn,Krhs) = pt(ji,jj,jk,jn,Krhs) - ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) )    & 
    234234               &                                        * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    235235         END_3D 
    236236         ! 
    237          IF( l_trd )  THEN       ! vertical advective trend diagnostics 
    238             DO_3D_00_00( 1, jpkm1 ) 
     237         IF( l_trd )  THEN               ! vertical advective trend diagnostics 
     238            DO_3D( 0, 0, 0, 0, 1, jpkm1 )                 ! (compute -w.dk[ptn]= -dk[w.ptn] + ptn.dk[w]) 
    239239               zltv(ji,jj,jk) = pt(ji,jj,jk,jn,Krhs) - zltv(ji,jj,jk)                          & 
    240240                  &           + pt(ji,jj,jk,jn,Kmm) * (  pW(ji,jj,jk) - pW(ji,jj,jk+1)  )   & 
     
    286286      DO jk = 1, jpkm1     ! search maximum in neighbourhood 
    287287         ikm1 = MAX(jk-1,1) 
    288          DO_2D_00_00 
     288         DO_2D( 0, 0, 0, 0 ) 
    289289            zbetup(ji,jj,jk) = MAX(  pbef(ji  ,jj  ,jk  ), paft(ji  ,jj  ,jk  ),   & 
    290290               &                     pbef(ji  ,jj  ,ikm1), pbef(ji  ,jj  ,jk+1),   & 
     
    298298      DO jk = 1, jpkm1     ! search minimum in neighbourhood 
    299299         ikm1 = MAX(jk-1,1) 
    300          DO_2D_00_00 
     300         DO_2D( 0, 0, 0, 0 ) 
    301301            zbetdo(ji,jj,jk) = MIN(  pbef(ji  ,jj  ,jk  ), paft(ji  ,jj  ,jk  ),   & 
    302302               &                     pbef(ji  ,jj  ,ikm1), pbef(ji  ,jj  ,jk+1),   & 
     
    310310      ! Positive and negative part of fluxes and beta terms 
    311311      ! --------------------------------------------------- 
    312       DO_3D_00_00( 1, jpkm1 ) 
     312      DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    313313         ! positive & negative part of the flux 
    314314         zpos = MAX( 0., pcc(ji  ,jj  ,jk+1) ) - MIN( 0., pcc(ji  ,jj  ,jk  ) ) 
     
    322322      ! monotonic flux in the k direction, i.e. pcc 
    323323      ! ------------------------------------------- 
    324       DO_3D_00_00( 2, jpkm1 ) 
     324      DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    325325         za = MIN( 1., zbetdo(ji,jj,jk), zbetup(ji,jj,jk-1) ) 
    326326         zb = MIN( 1., zbetup(ji,jj,jk), zbetdo(ji,jj,jk-1) ) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traatf.F90

    r13237 r13899  
    210210      DO jn = 1, kjpt 
    211211         ! 
    212          DO_3D_00_00( 1, jpkm1 ) 
     212         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    213213            ztn = pt(ji,jj,jk,jn,Kmm)                                     
    214214            ztd = pt(ji,jj,jk,jn,Kaa) - 2._wp * ztn + pt(ji,jj,jk,jn,Kbb)  ! time laplacian on tracers 
     
    275275      zfact2 = zfact1 * r1_rho0 
    276276      DO jn = 1, kjpt       
    277          DO_3D_00_00( 1, jpkm1 ) 
     277         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    278278            ze3t_b = e3t(ji,jj,jk,Kbb) 
    279279            ze3t_n = e3t(ji,jj,jk,Kmm) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traatf_qco.F90

    r13237 r13899  
    203203      DO jn = 1, kjpt 
    204204         ! 
    205          DO_3D_00_00( 1, jpkm1 ) 
     205         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    206206            ztn = pt(ji,jj,jk,jn,Kmm) 
    207207            ztd = pt(ji,jj,jk,jn,Kaa) - 2._wp * ztn + pt(ji,jj,jk,jn,Kbb)  ! time laplacian on tracers 
     
    268268      zfact2 = zfact1 * r1_rho0 
    269269      DO jn = 1, kjpt 
    270          DO_3D_00_00( 1, jpkm1 ) 
     270         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    271271            ze3t_b = e3t(ji,jj,jk,Kbb) 
    272272            ze3t_n = e3t(ji,jj,jk,Kmm) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/trabbc.F90

    r13237 r13899  
    9191      ENDIF 
    9292      !                             !  Add the geothermal trend on temperature 
    93       DO_2D_00_00 
     93      DO_2D( 0, 0, 0, 0 ) 
    9494         pts(ji,jj,mbkt(ji,jj),jp_tem,Krhs) = pts(ji,jj,mbkt(ji,jj),jp_tem,Krhs)   & 
    9595            &             + qgh_trd0(ji,jj) / e3t(ji,jj,mbkt(ji,jj),Kmm) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/trabbl.F90

    r13237 r13899  
    192192      DO jn = 1, kjpt                                     ! tracer loop 
    193193         !                                                ! =========== 
    194          DO_2D_11_11 
     194         DO_2D( 1, 1, 1, 1 ) 
    195195            ik = mbkt(ji,jj)                             ! bottom T-level index 
    196196            zptb(ji,jj) = pt(ji,jj,ik,jn)                ! bottom before T and S 
    197197         END_2D 
    198198         !                
    199          DO_2D_00_00 
     199         DO_2D( 0, 0, 0, 0 )                               ! Compute the trend 
    200200            ik = mbkt(ji,jj)                            ! bottom T-level index 
    201201            pt_rhs(ji,jj,ik,jn) = pt_rhs(ji,jj,ik,jn)                                                  & 
     
    343343      ENDIF 
    344344      !                                        !* bottom variables (T, S, alpha, beta, depth, velocity) 
    345       DO_2D_11_11 
     345      DO_2D( 1, 1, 1, 1 ) 
    346346         ik = mbkt(ji,jj)                             ! bottom T-level index 
    347347         zts (ji,jj,jp_tem) = ts(ji,jj,ik,jp_tem,Kbb) ! bottom before T and S 
     
    358358      IF( nn_bbl_ldf == 1 ) THEN          !   diffusive bbl   ! 
    359359         !                                !-------------------! 
    360          DO_2D_10_10 
     360         DO_2D( 1, 0, 1, 0 )                   ! (criteria for non zero flux: grad(rho).grad(h) < 0 ) 
    361361            !                                                   ! i-direction 
    362362            za = zab(ji+1,jj,jp_tem) + zab(ji,jj,jp_tem)              ! 2*(alpha,beta) at u-point 
     
    388388         ! 
    389389         CASE( 1 )                                   != use of upper velocity 
    390             DO_2D_10_10 
     390            DO_2D( 1, 0, 1, 0 )                              ! criteria: grad(rho).grad(h)<0  and grad(rho).grad(h)<0 
    391391               !                                                  ! i-direction 
    392392               za = zab(ji+1,jj,jp_tem) + zab(ji,jj,jp_tem)               ! 2*(alpha,beta) at u-point 
     
    417417         CASE( 2 )                                 != bbl velocity = F( delta rho ) 
    418418            zgbbl = grav * rn_gambbl 
    419             DO_2D_10_10 
     419            DO_2D( 1, 0, 1, 0 )                         ! criteria: rho_up > rho_down 
    420420               !                                                  ! i-direction 
    421421               ! down-slope T-point i/k-index (deep)  &   up-slope T-point i/k-index (shelf) 
     
    505505      IF( tra_bbl_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'tra_bbl_init : unable to allocate arrays' ) 
    506506      ! 
    507       IF( nn_bbl_adv == 1 )    WRITE(numout,*) '       * Advective BBL using upper velocity' 
    508       IF( nn_bbl_adv == 2 )    WRITE(numout,*) '       * Advective BBL using velocity = F( delta rho)' 
     507      IF(lwp) THEN 
     508         IF( nn_bbl_adv == 1 )    WRITE(numout,*) '       * Advective BBL using upper velocity' 
     509         IF( nn_bbl_adv == 2 )    WRITE(numout,*) '       * Advective BBL using velocity = F( delta rho)' 
     510      ENDIF 
    509511      ! 
    510512      !                             !* vertical index of  "deep" bottom u- and v-points 
    511       DO_2D_10_10 
     513      DO_2D( 1, 0, 1, 0 )                 ! (the "shelf" bottom k-indices are mbku and mbkv) 
    512514         mbku_d(ji,jj) = MAX(  mbkt(ji+1,jj  ) , mbkt(ji,jj)  )   ! >= 1 as mbkt=1 over land 
    513515         mbkv_d(ji,jj) = MAX(  mbkt(ji  ,jj+1) , mbkt(ji,jj)  ) 
     
    520522      !                             !* sign of grad(H) at u- and v-points; zero if grad(H) = 0 
    521523      mgrhu(:,:) = 0   ;   mgrhv(:,:) = 0 
    522       DO_2D_10_10 
     524      DO_2D( 1, 0, 1, 0 ) 
    523525         IF( gdept_0(ji+1,jj,mbkt(ji+1,jj)) - gdept_0(ji,jj,mbkt(ji,jj)) /= 0._wp ) THEN 
    524526            mgrhu(ji,jj) = INT(  SIGN( 1.0_wp, gdept_0(ji+1,jj,mbkt(ji+1,jj)) - gdept_0(ji,jj,mbkt(ji,jj)) )  ) 
     
    530532      END_2D 
    531533      ! 
    532       DO_2D_10_10 
     534      DO_2D( 1, 0, 1, 0 )           !* bbl thickness at u- (v-) point; minimum of top & bottom e3u_0 (e3v_0) 
    533535         e3u_bbl_0(ji,jj) = MIN( e3u_0(ji,jj,mbkt(ji+1,jj  )), e3u_0(ji,jj,mbkt(ji,jj)) ) 
    534536         e3v_bbl_0(ji,jj) = MIN( e3v_0(ji,jj,mbkt(ji  ,jj+1)), e3v_0(ji,jj,mbkt(ji,jj)) ) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/tradmp.F90

    r12377 r13899  
    112112      CASE( 0 )                        !*  newtonian damping throughout the water column  *! 
    113113         DO jn = 1, jpts 
    114             DO_3D_00_00( 1, jpkm1 ) 
     114            DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    115115               pts(ji,jj,jk,jn,Krhs) = pts(ji,jj,jk,jn,Krhs)           & 
    116116                  &                  + resto(ji,jj,jk) * ( zts_dta(ji,jj,jk,jn) - pts(ji,jj,jk,jn,Kbb) ) 
     
    119119         ! 
    120120      CASE ( 1 )                       !*  no damping in the turbocline (avt > 5 cm2/s)  *! 
    121          DO_3D_00_00( 1, jpkm1 ) 
     121         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    122122            IF( avt(ji,jj,jk) <= avt_c ) THEN 
    123123               pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs)   & 
     
    129129         ! 
    130130      CASE ( 2 )                       !*  no damping in the mixed layer   *! 
    131          DO_3D_00_00( 1, jpkm1 ) 
     131         DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    132132            IF( gdept(ji,jj,jk,Kmm) >= hmlp (ji,jj) ) THEN 
    133133               pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs)   & 
     
    208208         !                          ! Read in mask from file 
    209209         CALL iom_open ( cn_resto, imask) 
    210          CALL iom_get  ( imask, jpdom_autoglo, 'resto', resto ) 
     210         CALL iom_get  ( imask, jpdom_auto, 'resto', resto ) 
    211211         CALL iom_close( imask ) 
    212212      ENDIF 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traisf.F90

    r13237 r13899  
    108108      ! 
    109109      ! update pts(:,:,:,:,Krhs) 
    110       DO_2D_11_11 
     110      DO_2D( 1, 1, 1, 1 ) 
    111111         ! 
    112112         ikt = ktop(ji,jj) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traldf_iso.F90

    r13237 r13899  
    141141      IF( kpass == 1 ) THEN                  !==  first pass only  ==! 
    142142         ! 
    143          DO_3D_00_00( 2, jpkm1 ) 
     143         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    144144            ! 
    145145            zmsku = wmask(ji,jj,jk) / MAX(   umask(ji  ,jj,jk-1) + umask(ji-1,jj,jk)          & 
     
    158158         ! 
    159159         IF( ln_traldf_msc ) THEN                ! stabilizing vertical diffusivity coefficient 
    160             DO_3D_00_00( 2, jpkm1 ) 
     160            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    161161               akz(ji,jj,jk) = 0.25_wp * (                                                                     & 
    162162                  &              ( pahu(ji  ,jj,jk) + pahu(ji  ,jj,jk-1) ) / ( e1u(ji  ,jj) * e1u(ji  ,jj) )   & 
     
    167167            ! 
    168168            IF( ln_traldf_blp ) THEN                ! bilaplacian operator 
    169                DO_3D_10_10( 2, jpkm1 ) 
     169               DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    170170                  akz(ji,jj,jk) = 16._wp   & 
    171171                     &   * ah_wslp2   (ji,jj,jk)   & 
     
    175175               END_3D 
    176176            ELSEIF( ln_traldf_lap ) THEN              ! laplacian operator 
    177                DO_3D_10_10( 2, jpkm1 ) 
     177               DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    178178                  ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 
    179179                  zcoef0 = rDt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     
    200200 
    201201         ! Horizontal tracer gradient  
    202          DO_3D_10_10( 1, jpkm1 ) 
     202         DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    203203            zdit(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) 
    204204            zdjt(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 
    205205         END_3D 
    206206         IF( ln_zps ) THEN      ! botton and surface ocean correction of the horizontal gradient 
    207             DO_2D_10_10 
     207            DO_2D( 1, 0, 1, 0 )           ! bottom correction (partial bottom cell) 
    208208               zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn)           
    209209               zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 
    210210            END_2D 
    211211            IF( ln_isfcav ) THEN      ! first wet level beneath a cavity 
    212                DO_2D_10_10 
     212               DO_2D( 1, 0, 1, 0 ) 
    213213                  IF( miku(ji,jj) > 1 )   zdit(ji,jj,miku(ji,jj)) = pgui(ji,jj,jn)           
    214214                  IF( mikv(ji,jj) > 1 )   zdjt(ji,jj,mikv(ji,jj)) = pgvi(ji,jj,jn)      
     
    229229            ELSE                 ;   zdkt(:,:) = ( pt(:,:,jk-1,jn) - pt(:,:,jk,jn) ) * wmask(:,:,jk) 
    230230            ENDIF 
    231             DO_2D_10_10 
     231            DO_2D( 1, 0, 1, 0 )           !==  Horizontal fluxes 
    232232               zabe1 = pahu(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm) 
    233233               zabe2 = pahv(ji,jj,jk) * e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm) 
     
    250250            END_2D 
    251251            ! 
    252             DO_2D_00_00 
     252            DO_2D( 0, 0, 0, 0 )           !== horizontal divergence and add to pta 
    253253               pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    254254                  &       + zsign * (  zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk)  )   & 
     
    266266         ztfw(:,:, 1 ) = 0._wp      ;      ztfw(:,:,jpk) = 0._wp 
    267267          
    268          DO_3D_00_00( 2, jpkm1 ) 
     268         DO_3D( 0, 0, 0, 0, 2, jpkm1 )    ! interior (2=<jk=<jpk-1) 
    269269            ! 
    270270            zmsku = wmask(ji,jj,jk) / MAX(   umask(ji  ,jj,jk-1) + umask(ji-1,jj,jk)          & 
     
    288288         !                                !==  add the vertical 33 flux  ==! 
    289289         IF( ln_traldf_lap ) THEN               ! laplacian case: eddy coef = ah_wslp2 - akz 
    290             DO_3D_00_00( 2, jpkm1 ) 
     290            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    291291               ztfw(ji,jj,jk) = ztfw(ji,jj,jk) + e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * wmask(ji,jj,jk)   & 
    292292                  &                            * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) )               & 
     
    297297            SELECT CASE( kpass ) 
    298298            CASE(  1  )                            ! 1st pass : eddy coef = ah_wslp2 
    299                DO_3D_00_00( 2, jpkm1 ) 
     299               DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    300300                  ztfw(ji,jj,jk) =   & 
    301301                     &  ztfw(ji,jj,jk) + ah_wslp2(ji,jj,jk) * e1e2t(ji,jj)   & 
     
    303303               END_3D 
    304304            CASE(  2  )                         ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt  and pt2 gradients, resp. 
    305                DO_3D_00_00( 2, jpkm1 ) 
     305               DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    306306                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) + e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * wmask(ji,jj,jk)                  & 
    307307                     &                            * (  ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) )   & 
     
    311311         ENDIF 
    312312         !          
    313          DO_3D_00_00( 1, jpkm1 ) 
     313         DO_3D( 0, 0, 0, 0, 1, jpkm1 )    !==  Divergence of vertical fluxes added to pta  ==! 
    314314            pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * (  ztfw (ji,jj,jk) - ztfw(ji,jj,jk+1)  ) * r1_e1e2t(ji,jj)   & 
    315315               &                                             / e3t(ji,jj,jk,Kmm) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traldf_lap_blp.F90

    r13237 r13899  
    9999      ELSE                    ;   zsign = -1._wp 
    100100      ENDIF 
    101       DO_3D_10_10( 1, jpkm1 ) 
     101      DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    102102         zaheeu(ji,jj,jk) = zsign * pahu(ji,jj,jk) * e2_e1u(ji,jj) * e3u(ji,jj,jk,Kmm)   !!gm   * umask(ji,jj,jk) pah masked! 
    103103         zaheev(ji,jj,jk) = zsign * pahv(ji,jj,jk) * e1_e2v(ji,jj) * e3v(ji,jj,jk,Kmm)   !!gm   * vmask(ji,jj,jk) 
     
    108108         !                          ! =========== !     
    109109         !                                
    110          DO_3D_10_10( 1, jpkm1 ) 
     110         DO_3D( 1, 0, 1, 0, 1, jpkm1 )            !== First derivative (gradient)  ==! 
    111111            ztu(ji,jj,jk) = zaheeu(ji,jj,jk) * ( pt(ji+1,jj  ,jk,jn) - pt(ji,jj,jk,jn) ) 
    112112            ztv(ji,jj,jk) = zaheev(ji,jj,jk) * ( pt(ji  ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) 
    113113         END_3D 
    114          IF( ln_zps ) THEN                ! set gradient at bottom/top ocean level 
    115             DO_2D_10_10 
     114         IF( ln_zps ) THEN                             ! set gradient at bottom/top ocean level 
     115            DO_2D( 1, 0, 1, 0 )                              ! bottom 
    116116               ztu(ji,jj,mbku(ji,jj)) = zaheeu(ji,jj,mbku(ji,jj)) * pgu(ji,jj,jn) 
    117117               ztv(ji,jj,mbkv(ji,jj)) = zaheev(ji,jj,mbkv(ji,jj)) * pgv(ji,jj,jn) 
    118118            END_2D 
    119             IF( ln_isfcav ) THEN                ! top in ocean cavities only 
    120                DO_2D_10_10 
     119            IF( ln_isfcav ) THEN                             ! top in ocean cavities only 
     120               DO_2D( 1, 0, 1, 0 ) 
    121121                  IF( miku(ji,jj) > 1 )   ztu(ji,jj,miku(ji,jj)) = zaheeu(ji,jj,miku(ji,jj)) * pgui(ji,jj,jn)  
    122122                  IF( mikv(ji,jj) > 1 )   ztv(ji,jj,mikv(ji,jj)) = zaheev(ji,jj,mikv(ji,jj)) * pgvi(ji,jj,jn)  
     
    125125         ENDIF 
    126126         ! 
    127          DO_3D_00_00( 1, jpkm1 ) 
     127         DO_3D( 0, 0, 0, 0, 1, jpkm1 )            !== Second derivative (divergence) added to the general tracer trends  ==! 
    128128            pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk)     & 
    129129               &                                      +    ztv(ji,jj,jk) - ztv(ji,jj-1,jk) )   & 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traldf_triad.F90

    r13237 r13899  
    137137         DO ip = 0, 1                            ! i-k triads 
    138138            DO kp = 0, 1 
    139                DO_3D_10_10( 1, jpkm1 ) 
     139               DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    140140                  ze3wr = 1._wp / e3w(ji+ip,jj,jk+kp,Kmm) 
    141141                  zbu   = e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm) 
     
    157157         DO jp = 0, 1                            ! j-k triads  
    158158            DO kp = 0, 1 
    159                DO_3D_10_10( 1, jpkm1 ) 
     159               DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    160160                  ze3wr = 1.0_wp / e3w(ji,jj+jp,jk+kp,Kmm) 
    161161                  zbv   = e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm) 
     
    179179            ! 
    180180            IF( ln_traldf_blp ) THEN                ! bilaplacian operator 
    181                DO_3D_10_10( 2, jpkm1 ) 
     181               DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    182182                  akz(ji,jj,jk) = 16._wp           & 
    183183                     &   * ah_wslp2   (ji,jj,jk)   & 
     
    187187               END_3D 
    188188            ELSEIF( ln_traldf_lap ) THEN              ! laplacian operator 
    189                DO_3D_10_10( 2, jpkm1 ) 
     189               DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    190190                  ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 
    191191                  zcoef0 = rDt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     
    211211         zftv(:,:,:) = 0._wp 
    212212         ! 
    213          DO_3D_10_10( 1, jpkm1 ) 
     213         DO_3D( 1, 0, 1, 0, 1, jpkm1 )    !==  before lateral T & S gradients at T-level jk  ==! 
    214214            zdit(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) 
    215215            zdjt(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 
    216216         END_3D 
    217217         IF( ln_zps .AND. l_grad_zps ) THEN    ! partial steps: correction at top/bottom ocean level 
    218             DO_2D_10_10 
     218            DO_2D( 1, 0, 1, 0 )                    ! bottom level 
    219219               zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 
    220220               zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 
    221221            END_2D 
    222222            IF( ln_isfcav ) THEN                   ! top level (ocean cavities only) 
    223                DO_2D_10_10 
     223               DO_2D( 1, 0, 1, 0 ) 
    224224                  IF( miku(ji,jj)  > 1 )   zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn)  
    225225                  IF( mikv(ji,jj)  > 1 )   zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn)  
     
    246246               DO ip = 0, 1              !==  Horizontal & vertical fluxes 
    247247                  DO kp = 0, 1 
    248                      DO_2D_10_10 
     248                     DO_2D( 1, 0, 1, 0 ) 
    249249                        ze1ur = r1_e1u(ji,jj) 
    250250                        zdxt  = zdit(ji,jj,jk) * ze1ur 
     
    267267               DO jp = 0, 1 
    268268                  DO kp = 0, 1 
    269                      DO_2D_10_10 
     269                     DO_2D( 1, 0, 1, 0 ) 
    270270                        ze2vr = r1_e2v(ji,jj) 
    271271                        zdyt  = zdjt(ji,jj,jk) * ze2vr 
     
    289289               DO ip = 0, 1               !==  Horizontal & vertical fluxes 
    290290                  DO kp = 0, 1 
    291                      DO_2D_10_10 
     291                     DO_2D( 1, 0, 1, 0 ) 
    292292                        ze1ur = r1_e1u(ji,jj) 
    293293                        zdxt  = zdit(ji,jj,jk) * ze1ur 
     
    310310               DO jp = 0, 1 
    311311                  DO kp = 0, 1 
    312                      DO_2D_10_10 
     312                     DO_2D( 1, 0, 1, 0 ) 
    313313                        ze2vr = r1_e2v(ji,jj) 
    314314                        zdyt  = zdjt(ji,jj,jk) * ze2vr 
     
    329329            ENDIF 
    330330            !                             !==  horizontal divergence and add to the general trend  ==! 
    331             DO_2D_00_00 
     331            DO_2D( 0, 0, 0, 0 ) 
    332332               pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    333333                  &                       + zsign * (  zftu(ji-1,jj  ,jk) - zftu(ji,jj,jk)       & 
     
    340340         !                                !==  add the vertical 33 flux  ==! 
    341341         IF( ln_traldf_lap ) THEN               ! laplacian case: eddy coef = ah_wslp2 - akz 
    342             DO_3D_10_00( 2, jpkm1 ) 
     342            DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 
    343343               ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)   & 
    344344                  &                            * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) )             & 
     
    348348            SELECT CASE( kpass ) 
    349349            CASE(  1  )                            ! 1st pass : eddy coef = ah_wslp2 
    350                DO_3D_10_00( 2, jpkm1 ) 
     350               DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 
    351351                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)             & 
    352352                     &                            * ah_wslp2(ji,jj,jk) * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 
    353353               END_3D 
    354354            CASE(  2  )                            ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt  and pt2 gradients, resp. 
    355                DO_3D_10_00( 2, jpkm1 ) 
     355               DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 
    356356                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)                      & 
    357357                     &                            * (  ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) )   & 
     
    361361         ENDIF 
    362362         ! 
    363          DO_3D_00_00( 1, jpkm1 ) 
     363         DO_3D( 0, 0, 0, 0, 1, jpkm1 )      !==  Divergence of vertical fluxes added to pta  ==! 
    364364            pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    365365            &                                  + zsign * (  ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk)  )   & 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/tramle.F90

    r13237 r13899  
    100100      inml_mle(:,:) = mbkt(:,:) + 1                    ! init. to number of ocean w-level (T-level + 1) 
    101101      IF ( nla10 > 0 ) THEN                            ! avoid case where first level is thicker than 10m 
    102          DO_3DS_11_11( jpkm1, nlb10, -1 ) 
     102         DO_3DS( 1, 1, 1, 1, jpkm1, nlb10, -1 )        ! from the bottom to nlb10 (10m) 
    103103            IF( rhop(ji,jj,jk) > rhop(ji,jj,nla10) + rn_rho_c_mle )   inml_mle(ji,jj) = jk      ! Mixed layer 
    104104         END_3D 
     
    110110      zbm (:,:) = 0._wp 
    111111      zn2 (:,:) = 0._wp 
    112       DO_3D_11_11( 1, ikmax ) 
     112      DO_3D( 1, 1, 1, 1, 1, ikmax )                    ! MLD and mean buoyancy and N2 over the mixed layer 
    113113         zc = e3t(ji,jj,jk,Kmm) * REAL( MIN( MAX( 0, inml_mle(ji,jj)-jk ) , 1  )  )    ! zc being 0 outside the ML t-points 
    114114         zmld(ji,jj) = zmld(ji,jj) + zc 
     
    119119      SELECT CASE( nn_mld_uv )                         ! MLD at u- & v-pts 
    120120      CASE ( 0 )                                               != min of the 2 neighbour MLDs 
    121          DO_2D_10_10 
     121         DO_2D( 1, 0, 1, 0 ) 
    122122            zhu(ji,jj) = MIN( zmld(ji+1,jj), zmld(ji,jj) ) 
    123123            zhv(ji,jj) = MIN( zmld(ji,jj+1), zmld(ji,jj) ) 
    124124         END_2D 
    125125      CASE ( 1 )                                               != average of the 2 neighbour MLDs 
    126          DO_2D_10_10 
     126         DO_2D( 1, 0, 1, 0 ) 
    127127            zhu(ji,jj) = ( zmld(ji+1,jj) + zmld(ji,jj) ) * 0.5_wp 
    128128            zhv(ji,jj) = ( zmld(ji,jj+1) + zmld(ji,jj) ) * 0.5_wp 
    129129         END_2D 
    130130      CASE ( 2 )                                               != max of the 2 neighbour MLDs 
    131          DO_2D_10_10 
     131         DO_2D( 1, 0, 1, 0 ) 
    132132            zhu(ji,jj) = MAX( zmld(ji+1,jj), zmld(ji,jj) ) 
    133133            zhv(ji,jj) = MAX( zmld(ji,jj+1), zmld(ji,jj) ) 
     
    146146      ! 
    147147      IF( nn_mle == 0 ) THEN           ! Fox-Kemper et al. 2010 formulation 
    148          DO_2D_10_10 
     148         DO_2D( 1, 0, 1, 0 ) 
    149149            zpsim_u(ji,jj) = rn_ce * zhu(ji,jj) * zhu(ji,jj)  * e2_e1u(ji,jj)                                            & 
    150150               &           * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj) )   & 
     
    157157         ! 
    158158      ELSEIF( nn_mle == 1 ) THEN       ! New formulation (Lf = 5km fo/ff with fo=Coriolis parameter at latitude rn_lat) 
    159          DO_2D_10_10 
     159         DO_2D( 1, 0, 1, 0 ) 
    160160            zpsim_u(ji,jj) = rc_f *   zhu(ji,jj)   * zhu(ji,jj)   * e2_e1u(ji,jj)               & 
    161161               &                  * ( zbm(ji+1,jj) - zbm(ji,jj) ) * MIN( 111.e3_wp , e1u(ji,jj) ) 
     
    167167      ! 
    168168      IF( nn_conv == 1 ) THEN              ! No MLE in case of convection 
    169          DO_2D_10_10 
     169         DO_2D( 1, 0, 1, 0 ) 
    170170            IF( MIN( zn2(ji,jj) , zn2(ji+1,jj) ) < 0._wp )   zpsim_u(ji,jj) = 0._wp 
    171171            IF( MIN( zn2(ji,jj) , zn2(ji,jj+1) ) < 0._wp )   zpsim_v(ji,jj) = 0._wp 
     
    174174      ! 
    175175      !                                      !==  structure function value at uw- and vw-points  ==! 
    176       DO_2D_10_10 
     176      DO_2D( 1, 0, 1, 0 ) 
    177177         zhu(ji,jj) = 1._wp / zhu(ji,jj)                   ! hu --> 1/hu 
    178178         zhv(ji,jj) = 1._wp / zhv(ji,jj) 
     
    182182      zpsi_vw(:,:,:) = 0._wp 
    183183      ! 
    184       DO_3D_10_10( 2, ikmax ) 
     184      DO_3D( 1, 0, 1, 0, 2, ikmax )                ! start from 2 : surface value = 0 
    185185         zcuw = 1._wp - ( gdepw(ji+1,jj,jk,Kmm) + gdepw(ji,jj,jk,Kmm) ) * zhu(ji,jj) 
    186186         zcvw = 1._wp - ( gdepw(ji,jj+1,jk,Kmm) + gdepw(ji,jj,jk,Kmm) ) * zhv(ji,jj) 
     
    196196      !                                      !==  transport increased by the MLE induced transport ==! 
    197197      DO jk = 1, ikmax 
    198          DO_2D_10_10 
     198         DO_2D( 1, 0, 1, 0 )                      ! CAUTION pu,pv must be defined at row/column i=1 / j=1 
    199199            pu(ji,jj,jk) = pu(ji,jj,jk) + ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji,jj,jk+1) ) 
    200200            pv(ji,jj,jk) = pv(ji,jj,jk) + ( zpsi_vw(ji,jj,jk) - zpsi_vw(ji,jj,jk+1) ) 
    201201         END_2D 
    202          DO_2D_00_00 
     202         DO_2D( 0, 0, 0, 0 ) 
    203203            pw(ji,jj,jk) = pw(ji,jj,jk) - ( zpsi_uw(ji,jj,jk) - zpsi_uw(ji-1,jj,jk)   & 
    204204               &                          + zpsi_vw(ji,jj,jk) - zpsi_vw(ji,jj-1,jk) ) 
     
    283283            IF( ierr /= 0 )   CALL ctl_stop( 'tra_adv_mle_init: failed to allocate arrays' ) 
    284284            z1_t2 = 1._wp / ( rn_time * rn_time ) 
    285             DO_2D_01_01 
     285            DO_2D( 0, 1, 0, 1 )                      ! "coriolis+ time^-1" at u- & v-points 
    286286               zfu = ( ff_f(ji,jj) + ff_f(ji,jj-1) ) * 0.5_wp 
    287287               zfv = ( ff_f(ji,jj) + ff_f(ji-1,jj) ) * 0.5_wp 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/tranpc.F90

    r13237 r13899  
    103103         inpcc = 0 
    104104         ! 
    105          DO_2D_00_00 
     105         DO_2D( 0, 0, 0, 0 )                                ! interior column only 
    106106            ! 
    107107            IF( tmask(ji,jj,2) == 1 ) THEN      ! At least 2 ocean points 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/traqsr.F90

    r13237 r13899  
    6363   REAL(wp) ::   xsi1r   ! inverse of rn_si1 
    6464   ! 
    65    REAL(wp) , DIMENSION(3,61)           ::   rkrgb    ! tabulated attenuation coefficients for RGB absorption 
     65   REAL(wp) , PUBLIC, DIMENSION(3,61)   ::   rkrgb    ! tabulated attenuation coefficients for RGB absorption 
    6666   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_chl   ! structure of input Chl (file informations, fields read) 
    6767 
     
    138138            IF(lwp) WRITE(numout,*) '          nit000-1 qsr tracer content forcing field read in the restart file' 
    139139            z1_2 = 0.5_wp 
    140             CALL iom_get( numror, jpdom_autoglo, 'qsr_hc_b', qsr_hc_b, ldxios = lrxios )   ! before heat content trend due to Qsr flux 
     140            CALL iom_get( numror, jpdom_auto, 'qsr_hc_b', qsr_hc_b, ldxios = lrxios )   ! before heat content trend due to Qsr flux 
    141141         ELSE                                           ! No restart or restart not found: Euler forward time stepping 
    142142            z1_2 = 1._wp 
     
    172172            ! most expensive calculations) 
    173173            ! 
    174             DO_2D_00_00 
     174            DO_2D( 0, 0, 0, 0 ) 
    175175                       ! zlogc = log(zchl) 
    176176               zlogc = LOG ( MIN( 10. , MAX( 0.03, sf_chl(1)%fnow(ji,jj,1) ) ) )      
     
    191191             
    192192! 
    193             DO_3D_00_00 ( 1, nksr + 1 ) 
     193            DO_3D( 0, 0, 0, 0, 1, nksr + 1 ) 
    194194               ! zchl    = ALOG( ze0(ji,jj) ) 
    195195               zlogc = ze0(ji,jj) 
     
    221221         ! 
    222222         zcoef  = ( 1. - rn_abs ) / 3._wp    !* surface equi-partition in R-G-B 
    223          DO_2D_00_00 
     223         DO_2D( 0, 0, 0, 0 ) 
    224224            ze0(ji,jj) = rn_abs * qsr(ji,jj) 
    225225            ze1(ji,jj) = zcoef  * qsr(ji,jj) 
     
    231231         END_2D 
    232232         ! 
    233          !* interior equi-partition in R-G-B depending on vertical profile of Chl 
    234          DO_3D_00_00 ( 2, nksr + 1 ) 
     233         !                                    !* interior equi-partition in R-G-B depending on vertical profile of Chl 
     234         DO_3D( 0, 0, 0, 0, 2, nksr + 1 ) 
    235235            ze3t = e3t(ji,jj,jk-1,Kmm) 
    236236            irgb = NINT( ztmp3d(ji,jj,jk) ) 
     
    246246         END_3D 
    247247         ! 
    248          DO_3D_00_00( 1, nksr ) 
     248         DO_3D( 0, 0, 0, 0, 1, nksr )          !* now qsr induced heat content 
    249249            qsr_hc(ji,jj,jk) = r1_rho0_rcp * ( ztmp3d(ji,jj,jk) - ztmp3d(ji,jj,jk+1) ) 
    250250         END_3D 
     
    256256         zz0 =        rn_abs   * r1_rho0_rcp      ! surface equi-partition in 2-bands 
    257257         zz1 = ( 1. - rn_abs ) * r1_rho0_rcp 
    258          DO_3D_00_00( 1, nksr ) 
     258         DO_3D( 0, 0, 0, 0, 1, nksr )             ! solar heat absorbed at T-point in the top 400m  
    259259            zc0 = zz0 * EXP( -gdepw(ji,jj,jk  ,Kmm)*xsi0r ) + zz1 * EXP( -gdepw(ji,jj,jk  ,Kmm)*xsi1r ) 
    260260            zc1 = zz0 * EXP( -gdepw(ji,jj,jk+1,Kmm)*xsi0r ) + zz1 * EXP( -gdepw(ji,jj,jk+1,Kmm)*xsi1r ) 
     
    265265      ! 
    266266      !                          !-----------------------------! 
    267       DO_3D_00_00( 1, nksr ) 
     267      !                          !  update to the temp. trend  ! 
     268      !                          !-----------------------------! 
     269      DO_3D( 0, 0, 0, 0, 1, nksr ) 
    268270         pts(ji,jj,jk,jp_tem,Krhs) = pts(ji,jj,jk,jp_tem,Krhs)   & 
    269271            &                      + z1_2 * ( qsr_hc_b(ji,jj,jk) + qsr_hc(ji,jj,jk) )   & 
     
    272274      ! 
    273275      ! sea-ice: store the 1st ocean level attenuation coefficient 
    274       DO_2D_00_00 
     276      DO_2D( 0, 0, 0, 0 ) 
    275277         IF( qsr(ji,jj) /= 0._wp ) THEN   ;   fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rho0_rcp * qsr(ji,jj) ) 
    276278         ELSE                             ;   fraqsr_1lev(ji,jj) = 1._wp 
     
    417419         IF( .NOT.lk_top )   CALL ctl_stop( 'No bio model : ln_qsr_bio = true impossible ' ) 
    418420         ! 
     421         CALL trc_oce_rgb( rkrgb )                 ! tabulated attenuation coef. 
     422         !                                    
     423         nksr = trc_oce_ext_lev( r_si2, 33._wp )   ! level of light extinction 
     424         ! 
     425         IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksr, ' ref depth = ', gdepw_1d(nksr+1), ' m' 
     426         ! 
    419427      END SELECT 
    420428      ! 
     
    423431      ! 1st ocean level attenuation coefficient (used in sbcssm) 
    424432      IF( iom_varid( numror, 'fraqsr_1lev', ldstop = .FALSE. ) > 0 ) THEN 
    425          CALL iom_get( numror, jpdom_autoglo, 'fraqsr_1lev'  , fraqsr_1lev, ldxios = lrxios  ) 
     433         CALL iom_get( numror, jpdom_auto, 'fraqsr_1lev'  , fraqsr_1lev, ldxios = lrxios  ) 
    426434      ELSE 
    427435         fraqsr_1lev(:,:) = 1._wp   ! default : no penetration 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/trasbc.F90

    r13237 r13899  
    112112            zfact = 0.5_wp 
    113113            sbc_tsc(:,:,:) = 0._wp 
    114             CALL iom_get( numror, jpdom_autoglo, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content sbc trend 
    115             CALL iom_get( numror, jpdom_autoglo, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salt content sbc trend 
     114            CALL iom_get( numror, jpdom_auto, 'sbc_hc_b', sbc_tsc_b(:,:,jp_tem), ldxios = lrxios )   ! before heat content sbc trend 
     115            CALL iom_get( numror, jpdom_auto, 'sbc_sc_b', sbc_tsc_b(:,:,jp_sal), ldxios = lrxios )   ! before salt content sbc trend 
    116116         ELSE                                   ! No restart or restart not found: Euler forward time stepping 
    117117            zfact = 1._wp 
     
    124124      ENDIF 
    125125      !                             !==  Now sbc tracer content fields  ==! 
    126       DO_2D_01_00 
     126      DO_2D( 0, 1, 0, 0 ) 
    127127         sbc_tsc(ji,jj,jp_tem) = r1_rho0_rcp * qns(ji,jj)   ! non solar heat flux 
    128128         sbc_tsc(ji,jj,jp_sal) = r1_rho0     * sfx(ji,jj)   ! salt flux due to freezing/melting 
    129129      END_2D 
    130130      IF( ln_linssh ) THEN                !* linear free surface   
    131          DO_2D_01_00 
     131         DO_2D( 0, 1, 0, 0 )                    !==>> add concentration/dilution effect due to constant volume cell 
    132132            sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_tem,Kmm) 
    133133            sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_sal,Kmm) 
    134          END_2D 
     134         END_2D                                 !==>> output c./d. term 
    135135         IF( iom_use('emp_x_sst') )   CALL iom_put( "emp_x_sst", emp (:,:) * pts(:,:,1,jp_tem,Kmm) ) 
    136136         IF( iom_use('emp_x_sss') )   CALL iom_put( "emp_x_sss", emp (:,:) * pts(:,:,1,jp_sal,Kmm) ) 
     
    138138      ! 
    139139      DO jn = 1, jpts               !==  update tracer trend  ==! 
    140          DO_2D_01_00 
     140         DO_2D( 0, 1, 0, 0 ) 
    141141            pts(ji,jj,1,jn,Krhs) = pts(ji,jj,1,jn,Krhs) + zfact * ( sbc_tsc_b(ji,jj,jn) + sbc_tsc(ji,jj,jn) )    & 
    142142               &                                                / e3t(ji,jj,1,Kmm) 
     
    157157      IF( ln_rnf ) THEN         ! input of heat and salt due to river runoff  
    158158         zfact = 0.5_wp 
    159          DO_2D_01_00 
     159         DO_2D( 0, 1, 0, 0 ) 
    160160            IF( rnf(ji,jj) /= 0._wp ) THEN 
    161161               zdep = zfact / h_rnf(ji,jj) 
     
    182182          ! 
    183183         IF( ln_linssh ) THEN  
    184             DO_2D_01_00 
     184            DO_2D( 0, 1, 0, 0 ) 
    185185               ztim = ssh_iau(ji,jj) / e3t(ji,jj,1,Kmm) 
    186186               pts(ji,jj,1,jp_tem,Krhs) = pts(ji,jj,1,jp_tem,Krhs) + pts(ji,jj,1,jp_tem,Kmm) * ztim 
     
    188188            END_2D 
    189189         ELSE 
    190             DO_2D_01_00 
     190            DO_2D( 0, 1, 0, 0 ) 
    191191               ztim = ssh_iau(ji,jj) / ( ht(ji,jj) + 1. - ssmask(ji, jj) ) 
    192192               pts(ji,jj,:,jp_tem,Krhs) = pts(ji,jj,:,jp_tem,Krhs) + pts(ji,jj,:,jp_tem,Kmm) * ztim 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/trazdf.F90

    r13237 r13899  
    161161            IF( l_ldfslp ) THEN            ! isoneutral diffusion: add the contribution  
    162162               IF( ln_traldf_msc  ) THEN     ! MSC iso-neutral operator  
    163                   DO_3D_00_00( 2, jpkm1 ) 
     163                  DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    164164                     zwt(ji,jj,jk) = zwt(ji,jj,jk) + akz(ji,jj,jk)   
    165165                  END_3D 
    166166               ELSE                          ! standard or triad iso-neutral operator 
    167                   DO_3D_00_00( 2, jpkm1 ) 
     167                  DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    168168                     zwt(ji,jj,jk) = zwt(ji,jj,jk) + ah_wslp2(ji,jj,jk) 
    169169                  END_3D 
     
    173173            ! Diagonal, lower (i), upper (s)  (including the bottom boundary condition since avt is masked) 
    174174            IF( ln_zad_Aimp ) THEN         ! Adaptive implicit vertical advection 
    175                DO_3D_00_00( 1, jpkm1 ) 
     175               DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    176176                  zzwi = - p2dt * zwt(ji,jj,jk  ) / e3w(ji,jj,jk  ,Kmm) 
    177177                  zzws = - p2dt * zwt(ji,jj,jk+1) / e3w(ji,jj,jk+1,Kmm) 
     
    182182               END_3D 
    183183            ELSE 
    184                DO_3D_00_00( 1, jpkm1 ) 
     184               DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 
    185185                  zwi(ji,jj,jk) = - p2dt * zwt(ji,jj,jk  ) / e3w(ji,jj,jk,Kmm) 
    186186                  zws(ji,jj,jk) = - p2dt * zwt(ji,jj,jk+1) / e3w(ji,jj,jk+1,Kmm) 
     
    208208            !   used as a work space array: its value is modified. 
    209209            ! 
    210             DO_2D_00_00 
     210            DO_2D( 0, 0, 0, 0 )      !* 1st recurrence:   Tk = Dk - Ik Sk-1 / Tk-1   (increasing k) ! done one for all passive tracers (so included in the IF instruction) 
    211211               zwt(ji,jj,1) = zwd(ji,jj,1) 
    212212            END_2D 
    213             DO_3D_00_00( 2, jpkm1 ) 
     213            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    214214               zwt(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwt(ji,jj,jk-1) 
    215215            END_3D 
     
    217217         ENDIF  
    218218         !          
    219          DO_2D_00_00 
     219         DO_2D( 0, 0, 0, 0 )         !* 2nd recurrence:    Zk = Yk - Ik / Tk-1  Zk-1 
    220220            pt(ji,jj,1,jn,Kaa) =        e3t(ji,jj,1,Kbb) * pt(ji,jj,1,jn,Kbb)    & 
    221221               &               + p2dt * e3t(ji,jj,1,Kmm) * pt(ji,jj,1,jn,Krhs) 
    222222         END_2D 
    223          DO_3D_00_00( 2, jpkm1 ) 
     223         DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    224224            zrhs =        e3t(ji,jj,jk,Kbb) * pt(ji,jj,jk,jn,Kbb)    &  
    225225               & + p2dt * e3t(ji,jj,jk,Kmm) * pt(ji,jj,jk,jn,Krhs)   ! zrhs=right hand side 
     
    227227         END_3D 
    228228         ! 
    229          DO_2D_00_00 
     229         DO_2D( 0, 0, 0, 0 )         !* 3d recurrence:    Xk = (Zk - Sk Xk+1 ) / Tk   (result is the after tracer) 
    230230            pt(ji,jj,jpkm1,jn,Kaa) = pt(ji,jj,jpkm1,jn,Kaa) / zwt(ji,jj,jpkm1) * tmask(ji,jj,jpkm1) 
    231231         END_2D 
    232          DO_3DS_00_00( jpk-2, 1, -1 ) 
     232         DO_3DS( 0, 0, 0, 0, jpk-2, 1, -1 ) 
    233233            pt(ji,jj,jk,jn,Kaa) = ( pt(ji,jj,jk,jn,Kaa) - zws(ji,jj,jk) * pt(ji,jj,jk+1,jn,Kaa) )   & 
    234234               &             / zwt(ji,jj,jk) * tmask(ji,jj,jk) 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/TRA/zpshde.F90

    r13237 r13899  
    107107      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==! 
    108108         ! 
    109          DO_2D_10_10 
     109         DO_2D( 1, 0, 1, 0 ) 
    110110            iku = mbku(ji,jj)   ;   ikum1 = MAX( iku - 1 , 1 )    ! last and before last ocean level at u- & v-points 
    111111            ikv = mbkv(ji,jj)   ;   ikvm1 = MAX( ikv - 1 , 1 )    ! if level first is a p-step, ik.m1=1 
     
    151151         pgru(:,:) = 0._wp 
    152152         pgrv(:,:) = 0._wp                ! depth of the partial step level 
    153          DO_2D_10_10 
     153         DO_2D( 1, 0, 1, 0 ) 
    154154            iku = mbku(ji,jj) 
    155155            ikv = mbkv(ji,jj) 
     
    167167         CALL eos( ztj, zhj, zrj )        ! at the partial step depth output in  zri, zrj  
    168168         ! 
    169          DO_2D_10_10 
     169         DO_2D( 1, 0, 1, 0 )              ! Gradient of density at the last level 
    170170            iku = mbku(ji,jj) 
    171171            ikv = mbkv(ji,jj) 
     
    262262      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==! 
    263263         ! 
    264          DO_2D_10_10 
     264         DO_2D( 1, 0, 1, 0 ) 
    265265 
    266266            iku = mbku(ji,jj); ikum1 = MAX( iku - 1 , 1 )    ! last and before last ocean level at u- & v-points 
     
    308308         pgru(:,:)=0.0_wp   ; pgrv(:,:)=0.0_wp ;  
    309309         ! 
    310          DO_2D_10_10 
     310         DO_2D( 1, 0, 1, 0 ) 
    311311 
    312312            iku = mbku(ji,jj) 
     
    329329         CALL eos( ztj, zhj, zrj ) 
    330330 
    331          DO_2D_10_10 
     331         DO_2D( 1, 0, 1, 0 )            ! Gradient of density at the last level 
    332332            iku = mbku(ji,jj) 
    333333            ikv = mbkv(ji,jj) 
     
    351351      ! 
    352352      DO jn = 1, kjpt      !==   Interpolation of tracers at the last ocean level   ==!            ! 
    353          DO_2D_10_10 
     353         DO_2D( 1, 0, 1, 0 ) 
    354354            iku = miku(ji,jj); ikup1 = miku(ji,jj) + 1 
    355355            ikv = mikv(ji,jj); ikvp1 = mikv(ji,jj) + 1 
     
    400400         ! 
    401401         pgrui(:,:)  =0.0_wp; pgrvi(:,:)  =0.0_wp; 
    402          DO_2D_10_10 
     402         DO_2D( 1, 0, 1, 0 ) 
    403403 
    404404            iku = miku(ji,jj) 
     
    420420         CALL eos( ztj, zhj, zrj )        ! at the partial step depth output in  zri, zrj  
    421421         ! 
    422          DO_2D_10_10 
     422         DO_2D( 1, 0, 1, 0 )              ! Gradient of density at the last level 
    423423            iku = miku(ji,jj)  
    424424            ikv = mikv(ji,jj)  
Note: See TracChangeset for help on using the changeset viewer.