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 7997 for branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfsh2.F90 – NEMO

Ignore:
Timestamp:
2017-05-08T11:24:47+02:00 (7 years ago)
Author:
gm
Message:

#1880 (HPC-09) - step-5: bug correction + optimisation in zdfsh2.F90

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_HPC09_ZDF/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfsh2.F90

    r7991 r7997  
    5858      ! 
    5959      DO jk = 2, jpkm1 
    60          DO jj = 1, jpjm1        !* Shear production at uw- and vw-points (energy conserving form) 
     60         DO jj = 1, jpjm1        !* 2 x shear production at uw- and vw-points (energy conserving form) 
    6161            DO ji = 1, jpim1 
    62                zsh2u(ji,jj) = 0.5 * ( avm(ji+1,jj,jk) + avm(ji,jj,jk) ) * wumask(ji,jj,jk) & 
    63                   &               * (  un(ji,jj,jk-1) -  un(ji,jj,jk) )  & 
    64                   &               * (  ub(ji,jj,jk-1) -  ub(ji,jj,jk) ) / ( e3uw_n(ji,jj,jk) * e3uw_b(ji,jj,jk) ) 
    65                zsh2v(ji,jj) = 0.5 * ( avm(ji,jj+1,jk) + avm(ji,jj,jk) ) * wvmask(ji,jj,jk) & 
    66                   &               * (  vn(ji,jj,jk-1) -  vn(ji,jj,jk) )  & 
    67                   &               * (  vb(ji,jj,jk-1) -  vb(ji,jj,jk) ) / ( e3vw_n(ji,jj,jk) * e3vw_b(ji,jj,jk) ) 
     62               zsh2u(ji,jj) = ( avm(ji+1,jj,jk) + avm(ji,jj,jk) ) & 
     63                  &         * (  un(ji,jj,jk-1) -  un(ji,jj,jk) ) & 
     64                  &         * (  ub(ji,jj,jk-1) -  ub(ji,jj,jk) ) / ( e3uw_n(ji,jj,jk) * e3uw_b(ji,jj,jk) ) * wumask(ji,jj,jk)  
     65               zsh2v(ji,jj) = ( avm(ji,jj+1,jk) + avm(ji,jj,jk) ) & 
     66                  &         * (  vn(ji,jj,jk-1) -  vn(ji,jj,jk) ) & 
     67                  &         * (  vb(ji,jj,jk-1) -  vb(ji,jj,jk) ) / ( e3vw_n(ji,jj,jk) * e3vw_b(ji,jj,jk) ) * wvmask(ji,jj,jk) 
    6868            END DO 
    6969         END DO 
    7070         DO jj = 2, jpjm1        !* shear production at w-point 
    71             DO ji = 2, jpim1 
    72                ! 
    73 !!gm original type of coding 
    74 !              psh2(ji,jj,jk) = ( zsh2u(ji-1,jj) + zsh2u(ji,jj) ) / MAX( 1._wp , umask(ji-1,jj,jk)+umask(ji,jj,jk) )   & 
    75 !                 &           + ( zsh2v(ji,jj-1) + zsh2v(ji,jj) ) / MAX( 1._wp , vmask(ji,jj-1,jk)+vmask(ji,jj,jk) )     
    76 ! 
    77 !!gm optimized but it changes the last digits after 1 year of GYRE 
    78                !                       ! coast mask: =1 at the coast ; =2 otherwise 
    79                !                       ! no need of wmask as zsh2 are already masked 
    80                psh2(ji,jj,jk) = ( zsh2u(ji-1,jj) + zsh2u(ji,jj) ) * ( 2._wp - umask(ji-1,jj,jk) * umask(ji,jj,jk) )   & 
    81                   &           + ( zsh2v(ji,jj-1) + zsh2v(ji,jj) ) * ( 2._wp - vmask(ji,jj-1,jk) * vmask(ji,jj,jk) ) 
     71            DO ji = 2, jpim1           ! coast mask: =2 at the coast ; =1 otherwise (NB: wmask useless as zsh2 are masked) 
     72               psh2(ji,jj,jk) = 0.25 * (   ( zsh2u(ji-1,jj) + zsh2u(ji,jj) ) * ( 2. - umask(ji-1,jj,jk) * umask(ji,jj,jk) )   & 
     73                  &                      + ( zsh2v(ji,jj-1) + zsh2v(ji,jj) ) * ( 2. - vmask(ji,jj-1,jk) * vmask(ji,jj,jk) )   ) 
    8274            END DO 
    8375         END DO 
Note: See TracChangeset for help on using the changeset viewer.