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 13540 for NEMO/branches/2020/r12377_ticket2386/src/OCE/TRA/traldf_triad.F90 – NEMO

Ignore:
Timestamp:
2020-09-29T12:41:06+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2386: update to latest trunk

Location:
NEMO/branches/2020/r12377_ticket2386
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/r12377_ticket2386

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
        88 
        99# SETTE 
        10 ^/utils/CI/sette@HEAD         sette 
         10^/utils/CI/sette@13507        sette 
  • NEMO/branches/2020/r12377_ticket2386/src/OCE/TRA/traldf_triad.F90

    r12511 r13540  
    4141   !! * Substitutions 
    4242#  include "do_loop_substitute.h90" 
     43#  include "domzgr_substitute.h90" 
    4344   !!---------------------------------------------------------------------- 
    4445   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    136137         DO ip = 0, 1                            ! i-k triads 
    137138            DO kp = 0, 1 
    138                DO_3D_10_10( 1, jpkm1 ) 
     139               DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    139140                  ze3wr = 1._wp / e3w(ji+ip,jj,jk+kp,Kmm) 
    140141                  zbu   = e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm) 
     
    156157         DO jp = 0, 1                            ! j-k triads  
    157158            DO kp = 0, 1 
    158                DO_3D_10_10( 1, jpkm1 ) 
     159               DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 
    159160                  ze3wr = 1.0_wp / e3w(ji,jj+jp,jk+kp,Kmm) 
    160161                  zbv   = e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm) 
     
    178179            ! 
    179180            IF( ln_traldf_blp ) THEN                ! bilaplacian operator 
    180                DO_3D_10_10( 2, jpkm1 ) 
    181                   akz(ji,jj,jk) = 16._wp * ah_wslp2(ji,jj,jk)   & 
    182                      &          * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) )  ) 
     181               DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
     182                  akz(ji,jj,jk) = 16._wp           & 
     183                     &   * ah_wslp2   (ji,jj,jk)   & 
     184                     &   * (  akz     (ji,jj,jk)   & 
     185                     &      + ah_wslp2(ji,jj,jk)   & 
     186                     &        / ( e3w (ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) )  ) 
    183187               END_3D 
    184188            ELSEIF( ln_traldf_lap ) THEN              ! laplacian operator 
    185                DO_3D_10_10( 2, jpkm1 ) 
     189               DO_3D( 1, 0, 1, 0, 2, jpkm1 ) 
    186190                  ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 
    187191                  zcoef0 = rDt * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2  ) 
     
    207211         zftv(:,:,:) = 0._wp 
    208212         ! 
    209          DO_3D_10_10( 1, jpkm1 ) 
     213         DO_3D( 1, 0, 1, 0, 1, jpkm1 )    !==  before lateral T & S gradients at T-level jk  ==! 
    210214            zdit(ji,jj,jk) = ( pt(ji+1,jj  ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) 
    211215            zdjt(ji,jj,jk) = ( pt(ji  ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 
    212216         END_3D 
    213217         IF( ln_zps .AND. l_grad_zps ) THEN    ! partial steps: correction at top/bottom ocean level 
    214             DO_2D_10_10 
     218            DO_2D( 1, 0, 1, 0 )                    ! bottom level 
    215219               zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 
    216220               zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 
    217221            END_2D 
    218222            IF( ln_isfcav ) THEN                   ! top level (ocean cavities only) 
    219                DO_2D_10_10 
     223               DO_2D( 1, 0, 1, 0 ) 
    220224                  IF( miku(ji,jj)  > 1 )   zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn)  
    221225                  IF( mikv(ji,jj)  > 1 )   zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn)  
     
    242246               DO ip = 0, 1              !==  Horizontal & vertical fluxes 
    243247                  DO kp = 0, 1 
    244                      DO_2D_10_10 
     248                     DO_2D( 1, 0, 1, 0 ) 
    245249                        ze1ur = r1_e1u(ji,jj) 
    246250                        zdxt  = zdit(ji,jj,jk) * ze1ur 
     
    263267               DO jp = 0, 1 
    264268                  DO kp = 0, 1 
    265                      DO_2D_10_10 
     269                     DO_2D( 1, 0, 1, 0 ) 
    266270                        ze2vr = r1_e2v(ji,jj) 
    267271                        zdyt  = zdjt(ji,jj,jk) * ze2vr 
     
    285289               DO ip = 0, 1               !==  Horizontal & vertical fluxes 
    286290                  DO kp = 0, 1 
    287                      DO_2D_10_10 
     291                     DO_2D( 1, 0, 1, 0 ) 
    288292                        ze1ur = r1_e1u(ji,jj) 
    289293                        zdxt  = zdit(ji,jj,jk) * ze1ur 
     
    306310               DO jp = 0, 1 
    307311                  DO kp = 0, 1 
    308                      DO_2D_10_10 
     312                     DO_2D( 1, 0, 1, 0 ) 
    309313                        ze2vr = r1_e2v(ji,jj) 
    310314                        zdyt  = zdjt(ji,jj,jk) * ze2vr 
     
    325329            ENDIF 
    326330            !                             !==  horizontal divergence and add to the general trend  ==! 
    327             DO_2D_00_00 
    328                pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * (  zftu(ji-1,jj,jk) - zftu(ji,jj,jk)       & 
     331            DO_2D( 0, 0, 0, 0 ) 
     332               pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
     333                  &                       + zsign * (  zftu(ji-1,jj  ,jk) - zftu(ji,jj,jk)       & 
    329334                  &                                           + zftv(ji,jj-1,jk) - zftv(ji,jj,jk)   )   & 
    330335                  &                                        / (  e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm)  ) 
     
    335340         !                                !==  add the vertical 33 flux  ==! 
    336341         IF( ln_traldf_lap ) THEN               ! laplacian case: eddy coef = ah_wslp2 - akz 
    337             DO_3D_10_00( 2, jpkm1 ) 
     342            DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 
    338343               ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)   & 
    339344                  &                            * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) )             & 
     
    343348            SELECT CASE( kpass ) 
    344349            CASE(  1  )                            ! 1st pass : eddy coef = ah_wslp2 
    345                DO_3D_10_00( 2, jpkm1 ) 
     350               DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 
    346351                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)             & 
    347352                     &                            * ah_wslp2(ji,jj,jk) * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 
    348353               END_3D 
    349354            CASE(  2  )                            ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt  and pt2 gradients, resp. 
    350                DO_3D_10_00( 2, jpkm1 ) 
     355               DO_3D( 1, 0, 0, 0, 2, jpkm1 ) 
    351356                  ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk)                      & 
    352357                     &                            * (  ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) )   & 
     
    356361         ENDIF 
    357362         ! 
    358          DO_3D_00_00( 1, jpkm1 ) 
    359             pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * (  ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk)  )   & 
     363         DO_3D( 0, 0, 0, 0, 1, jpkm1 )      !==  Divergence of vertical fluxes added to pta  ==! 
     364            pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
     365            &                                  + zsign * (  ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk)  )   & 
    360366               &                                              / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 
    361367         END_3D 
Note: See TracChangeset for help on using the changeset viewer.