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 11411 for NEMO/trunk/src – NEMO

Changeset 11411 for NEMO/trunk/src


Ignore:
Timestamp:
2019-08-06T17:08:55+02:00 (5 years ago)
Author:
jchanut
Message:

#2305, a few corrections and comestic changes following Andrew's revision 11407

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/TRA/traadv_fct.F90

    r11407 r11411  
    195195            CALL tridia_solver( zwdia, zwsup, zwinf, zwi, zwi , 0 ) 
    196196            ! 
    197             ztu(:,:,1) = 0._wp; ztu(:,:,jpk) = 0._wp 
     197            ztw(:,:,1) = 0._wp ; ztw(:,:,jpk) = 0._wp ; 
    198198            DO jk = 2, jpkm1        ! Interior value ( multiplied by wmask) 
    199                DO jj = 1, jpj 
    200                   DO ji = 1, jpi 
     199               DO jj = 2, jpjm1 
     200                  DO ji = fs_2, fs_jpim1   ! vector opt.   
    201201                     zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 
    202202                     zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 
    203                      ztu(ji,jj,jk) =  0.5 * e1e2t(ji,jj) * ( zfp_wk * zwi(ji,jj,jk) + zfm_wk * zwi(ji,jj,jk-1) ) * wmask(ji,jj,jk) 
     203                     ztw(ji,jj,jk) =  0.5 * e1e2t(ji,jj) * ( zfp_wk * zwi(ji,jj,jk) + zfm_wk * zwi(ji,jj,jk-1) ) * wmask(ji,jj,jk) 
     204                     zwz(ji,jj,jk) = zwz(ji,jj,jk) + ztw(ji,jj,jk) ! update vertical fluxes 
    204205                  END DO 
    205206               END DO 
     
    208209               DO jj = 2, jpjm1 
    209210                  DO ji = fs_2, fs_jpim1   ! vector opt.   
    210                      pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) - ( ztu(ji,jj,jk) - ztu(ji  ,jj  ,jk+1) ) & 
     211                     pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) - ( ztw(ji,jj,jk) - ztw(ji  ,jj  ,jk+1) ) & 
    211212                        &                                  * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
    212213                  END DO 
    213214               END DO 
    214215            END DO 
    215             zwz(:,:,:) = zwz(:,:,:) + ztu(:,:,:) 
    216216            ! 
    217217         END IF 
     
    324324            zwz(:,:,1) = 0._wp   ! only ocean surface as interior zwz values have been w-masked 
    325325         ENDIF 
    326          ! 
    327          CALL lbc_lnk_multi( 'traadv_fct', zwi, 'T', 1., zwx, 'U', -1. , zwy, 'V', -1.,  zwz, 'W',  1. ) 
    328          ! 
    329326         !          
    330327         IF ( ll_zAimp ) THEN 
     
    336333                        &      + zwy(ji,jj,jk) - zwy(ji  ,jj-1,jk  )   & 
    337334                        &      + zwz(ji,jj,jk) - zwz(ji  ,jj  ,jk+1) ) * r1_e1e2t(ji,jj) 
    338                      ztu(ji,jj,jk)  = zwi(ji,jj,jk) + p2dt * ztra / e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 
    339                   END DO 
    340                END DO 
    341             END DO 
    342             ! 
    343             CALL tridia_solver( zwdia, zwsup, zwinf, ztu, ztu , 0 ) 
    344             ! 
    345             ztu(:,:,1) = 0._wp 
     335                     ztw(ji,jj,jk)  = zwi(ji,jj,jk) + p2dt * ztra / e3t_a(ji,jj,jk) * tmask(ji,jj,jk) 
     336                  END DO 
     337               END DO 
     338            END DO 
     339            ! 
     340            CALL tridia_solver( zwdia, zwsup, zwinf, ztw, ztw , 0 ) 
     341            ! 
    346342            DO jk = 2, jpkm1        ! Interior value ( multiplied by wmask) 
    347343               DO jj = 2, jpjm1 
     
    349345                     zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 
    350346                     zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 
    351                      zwz(ji,jj,jk) =  zwz(ji,jj,jk) + 0.5 * e1e2t(ji,jj) * ( zfp_wk * ztu(ji,jj,jk) + zfm_wk * ztu(ji,jj,jk-1) ) * wmask(ji,jj,jk) 
     347                     zwz(ji,jj,jk) =  zwz(ji,jj,jk) + 0.5 * e1e2t(ji,jj) * ( zfp_wk * ztw(ji,jj,jk) + zfm_wk * ztw(ji,jj,jk-1) ) * wmask(ji,jj,jk) 
    352348                  END DO 
    353349               END DO 
    354350            END DO 
    355351         END IF 
     352         ! 
     353         CALL lbc_lnk_multi( 'traadv_fct', zwi, 'T', 1., zwx, 'U', -1. , zwy, 'V', -1.,  zwz, 'W',  1. ) 
     354         ! 
    356355         !        !==  monotonicity algorithm  ==! 
    357356         ! 
     
    374373         IF ( ll_zAimp ) THEN 
    375374            ! 
     375            ztw(:,:,1) = 0._wp ; ztw(:,:,jpk) = 0._wp 
    376376            DO jk = 2, jpkm1        ! Interior value ( multiplied by wmask) 
    377377               DO jj = 2, jpjm1 
     
    379379                     zfp_wk = wi(ji,jj,jk) + ABS( wi(ji,jj,jk) ) 
    380380                     zfm_wk = wi(ji,jj,jk) - ABS( wi(ji,jj,jk) ) 
    381                      zwz(ji,jj,jk) = - 0.5 * e1e2t(ji,jj) * ( zfp_wk * zwi(ji,jj,jk) + zfm_wk * zwi(ji,jj,jk-1) ) * wmask(ji,jj,jk) 
     381                     ztw(ji,jj,jk) = - 0.5 * e1e2t(ji,jj) * ( zfp_wk * zwi(ji,jj,jk) + zfm_wk * zwi(ji,jj,jk-1) ) * wmask(ji,jj,jk) 
     382                     zwz(ji,jj,jk) = zwz(ji,jj,jk) + ztw(ji,jj,jk) ! Update vertical fluxes for trend diagnostic 
    382383                  END DO 
    383384               END DO 
     
    386387               DO jj = 2, jpjm1 
    387388                  DO ji = fs_2, fs_jpim1   ! vector opt.   
    388                      pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) - ( zwz(ji,jj,jk) - zwz(ji  ,jj  ,jk+1) ) & 
     389                     pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) - ( ztw(ji,jj,jk) - ztw(ji  ,jj  ,jk+1) ) & 
    389390                        &                                * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 
    390391                  END DO 
Note: See TracChangeset for help on using the changeset viewer.