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/traldf_iso.F90 – 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:
2 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/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) 
Note: See TracChangeset for help on using the changeset viewer.