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 12590 for NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traldf_triad.F90 – NEMO

Ignore:
Timestamp:
2020-03-23T22:16:19+01:00 (4 years ago)
Author:
techene
Message:

all: add e3 substitute, OCE/DOM/domzgr_substitute.h90: correct a bug for e3f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12377_KERNEL-06_techene_e3/src/OCE/TRA/traldf_triad.F90

    r12377 r12590  
    4141   !! * Substitutions 
    4242#  include "do_loop_substitute.h90" 
     43#  include "domzgr_substitute.h90" 
    4344   !!---------------------------------------------------------------------- 
    4445   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    108109         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~' 
    109110      ENDIF 
    110       !    
     111      ! 
    111112      l_hst = .FALSE. 
    112113      l_ptr = .FALSE. 
    113       IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) )      l_ptr = .TRUE.  
     114      IF( cdtype == 'TRA' .AND. ( iom_use( 'sophtldf' ) .OR. iom_use( 'sopstldf' ) ) )      l_ptr = .TRUE. 
    114115      IF( cdtype == 'TRA' .AND. ( iom_use("uadv_heattr") .OR. iom_use("vadv_heattr") .OR. & 
    115116         &                        iom_use("uadv_salttr") .OR. iom_use("vadv_salttr")  ) )   l_hst = .TRUE. 
     
    124125      ELSE                    ;   zsign = -1._wp 
    125126      ENDIF 
    126       !     
     127      ! 
    127128      !!---------------------------------------------------------------------- 
    128129      !!   0 - calculate  ah_wslp2, akz, and optionally zpsi_uw, zpsi_vw 
     
    131132      IF( kpass == 1 ) THEN         !==  first pass only  and whatever the tracer is  ==! 
    132133         ! 
    133          akz     (:,:,:) = 0._wp       
     134         akz     (:,:,:) = 0._wp 
    134135         ah_wslp2(:,:,:) = 0._wp 
    135136         IF( ln_ldfeiv_dia ) THEN 
     
    158159         END DO 
    159160         ! 
    160          DO jp = 0, 1                            ! j-k triads  
     161         DO jp = 0, 1                            ! j-k triads 
    161162            DO kp = 0, 1 
    162163               DO_3D_10_10( 1, jpkm1 ) 
     
    184185               DO_3D_10_10( 2, jpkm1 ) 
    185186                  akz(ji,jj,jk) = 16._wp * ah_wslp2(ji,jj,jk)   & 
    186                      &          * (  akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) )  ) 
     187                     &          * (  akz(ji,jj,jk)              & 
     188                     &            + ah_wslp2(ji,jj,jk) / ( e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) )  ) 
    187189               END_3D 
    188190            ELSEIF( ln_traldf_lap ) THEN              ! laplacian operator 
     
    195197           ! 
    196198         ELSE                                    ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 
    197             akz(:,:,:) = ah_wslp2(:,:,:)       
     199            akz(:,:,:) = ah_wslp2(:,:,:) 
    198200         ENDIF 
    199201         ! 
     
    222224            IF( ln_isfcav ) THEN                   ! top level (ocean cavities only) 
    223225               DO_2D_10_10 
    224                   IF( miku(ji,jj)  > 1 )   zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn)  
    225                   IF( mikv(ji,jj)  > 1 )   zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn)  
     226                  IF( miku(ji,jj)  > 1 )   zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn) 
     227                  IF( mikv(ji,jj)  > 1 )   zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn) 
    226228               END_2D 
    227229            ENDIF 
     
    330332            !                             !==  horizontal divergence and add to the general trend  ==! 
    331333            DO_2D_00_00 
    332                pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * (  zftu(ji-1,jj,jk) - zftu(ji,jj,jk)       & 
    333                   &                                           + zftv(ji,jj-1,jk) - zftv(ji,jj,jk)   )   & 
    334                   &                                        / (  e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm)  ) 
     334               pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
     335                  &                            + zsign * (  zftu(ji-1,jj,jk) - zftu(ji,jj,jk)       & 
     336                  &                                       + zftv(ji,jj-1,jk) - zftv(ji,jj,jk)   )   & 
     337                  &                                     / (  e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm)  ) 
    335338            END_2D 
    336339            ! 
     
    344347                  &                            * (  pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 
    345348            END_3D 
    346          ELSE                                   ! bilaplacian  
     349         ELSE                                   ! bilaplacian 
    347350            SELECT CASE( kpass ) 
    348351            CASE(  1  )                            ! 1st pass : eddy coef = ah_wslp2 
     
    357360                     &                               + akz     (ji,jj,jk) * ( pt2(ji,jj,jk-1,jn) - pt2(ji,jj,jk,jn) )   ) 
    358361               END_3D 
    359             END SELECT  
     362            END SELECT 
    360363         ENDIF 
    361364         ! 
    362365         DO_3D_00_00( 1, jpkm1 ) 
    363             pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + zsign * (  ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk)  )   & 
    364                &                                              / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 
     366            pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
     367            &                                  + zsign * (  ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk)  )   & 
     368               &                                       / ( e1e2t(ji,jj) * e3t(ji,jj,jk,Kmm) ) 
    365369         END_3D 
    366370         ! 
Note: See TracChangeset for help on using the changeset viewer.