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 14680 for NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_iso.F90 – NEMO

Ignore:
Timestamp:
2021-04-07T19:16:18+02:00 (3 years ago)
Author:
hadcv
Message:

#2600: Merge in dev_r14393_HPC-03_Mele_Comm_Cleanup [14667]

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_iso.F90

    r14632 r14680  
    185185            zmskv = wmask(ji,jj,jk) / MAX(   vmask(ji,jj  ,jk-1) + vmask(ji,jj-1,jk)          & 
    186186               &                           + vmask(ji,jj-1,jk-1) + vmask(ji,jj  ,jk) , 1._wp  ) 
    187                ! 
    188             ! NOTE: [halo1-halo2] 
    189             ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 
    190             zahu_w = (   (pahu(ji  ,jj,jk-1) + pahu(ji-1,jj,jk))    & 
    191                &       + (pahu(ji-1,jj,jk-1) + pahu(ji  ,jj,jk))  ) * zmsku 
    192             zahv_w = (   (pahv(ji,jj  ,jk-1) + pahv(ji,jj-1,jk))    & 
    193                &       + (pahv(ji,jj-1,jk-1) + pahv(ji,jj  ,jk))  ) * zmskv 
     187            ! round brackets added to fix the order of floating point operations 
     188            ! needed to ensure halo 1 - halo 2 compatibility 
     189            zahu_w = ( (  pahu(ji  ,jj,jk-1) + pahu(ji-1,jj,jk)                    & 
     190               &       )                                                           & ! bracket for halo 1 - halo 2 compatibility 
     191               &       + ( pahu(ji-1,jj,jk-1) + pahu(ji  ,jj,jk)                   & 
     192               &         ) ) * zmsku                                                 ! bracket for halo 1 - halo 2 compatibility 
     193            zahv_w = ( (  pahv(ji,jj  ,jk-1) + pahv(ji,jj-1,jk)                    & 
     194               &       )                                                           & ! bracket for halo 1 - halo 2 compatibility 
     195               &       + ( pahv(ji,jj-1,jk-1) + pahv(ji,jj  ,jk)                   & 
     196               &         ) ) * zmskv                                                 ! bracket for halo 1 - halo 2 compatibility 
    194197               ! 
    195198            ah_wslp2(ji,jj,jk) = zahu_w * wslpi(ji,jj,jk) * wslpi(ji,jj,jk)   & 
     
    200203            ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    201204            DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 
    202                ! NOTE: [halo1-halo2] 
    203                ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 
    204                akz(ji,jj,jk) = 0.25_wp * (                                                                       & 
    205                   &              (( pahu(ji  ,jj,jk) + pahu(ji  ,jj,jk-1) ) / ( e1u(ji  ,jj) * e1u(ji  ,jj) )    & 
    206                   &            + (  pahu(ji-1,jj,jk) + pahu(ji-1,jj,jk-1) ) / ( e1u(ji-1,jj) * e1u(ji-1,jj) ))   & 
    207                   &            + (( pahv(ji,jj  ,jk) + pahv(ji,jj  ,jk-1) ) / ( e2v(ji,jj  ) * e2v(ji,jj  ) )    & 
    208                   &            + (  pahv(ji,jj-1,jk) + pahv(ji,jj-1,jk-1) ) / ( e2v(ji,jj-1) * e2v(ji,jj-1) ))   ) 
     205               ! round brackets added to fix the order of floating point operations 
     206               ! needed to ensure halo 1 - halo 2 compatibility 
     207               akz(ji,jj,jk) = 0.25_wp * (                                                                     & 
     208                  &            ( ( pahu(ji  ,jj,jk) + pahu(ji  ,jj,jk-1) ) / ( e1u(ji  ,jj) * e1u(ji  ,jj) )   & 
     209                  &            + ( pahu(ji-1,jj,jk) + pahu(ji-1,jj,jk-1) ) / ( e1u(ji-1,jj) * e1u(ji-1,jj) )   & 
     210                  &            )                                                                               & ! bracket for halo 1 - halo 2 compatibility 
     211                  &            + ( ( pahv(ji,jj  ,jk) + pahv(ji,jj  ,jk-1) ) / ( e2v(ji,jj  ) * e2v(ji,jj  ) ) & 
     212                  &              + ( pahv(ji,jj-1,jk) + pahv(ji,jj-1,jk-1) ) / ( e2v(ji,jj-1) * e2v(ji,jj-1) ) & 
     213                  &              ) )                                                                             ! bracket for halo 1 - halo 2 compatibility 
    209214            END_3D 
    210215            ! 
     
    296301               zcof2 = - pahv(ji,jj,jk) * e1v(ji,jj) * vslp(ji,jj,jk) * zmskv 
    297302               ! 
    298                ! NOTE: [halo1-halo2] 
    299                ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 
    300                zftu(ji,jj,jk) = (  zabe1 * zdit(ji,jj,jk)                          & 
    301                   &              + zcof1 * (  (zdkt (ji+1,jj) + zdk1t(ji,jj))      & 
    302                   &                         + (zdk1t(ji+1,jj) + zdkt (ji,jj))  )  ) * umask(ji,jj,jk) 
    303                zftv(ji,jj,jk) = (  zabe2 * zdjt(ji,jj,jk)                          & 
    304                   &              + zcof2 * (  (zdkt (ji,jj+1) + zdk1t(ji,jj))      & 
    305                   &                         + (zdk1t(ji,jj+1) + zdkt (ji,jj))  )  ) * vmask(ji,jj,jk) 
     303               ! round brackets added to fix the order of floating point operations 
     304               ! needed to ensure halo 1 - halo 2 compatibility 
     305               zftu(ji,jj,jk ) = (  zabe1 * zdit(ji,jj,jk)                       & 
     306                  &               + zcof1 * ( ( zdkt (ji+1,jj) + zdk1t(ji,jj)    & 
     307                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     308                  &                         + ( zdk1t(ji+1,jj) + zdkt (ji,jj)    & 
     309                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     310                  &                         ) ) * umask(ji,jj,jk) 
     311               zftv(ji,jj,jk) = (  zabe2 * zdjt(ji,jj,jk)                        & 
     312                  &              + zcof2 * ( ( zdkt (ji,jj+1) + zdk1t(ji,jj)     & 
     313                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     314                  &                         + ( zdk1t(ji,jj+1) + zdkt (ji,jj)    & 
     315                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     316                  &                         ) ) * vmask(ji,jj,jk) 
    306317            END_2D 
    307318            ! 
    308319            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )           !== horizontal divergence and add to pta 
    309320            DO_2D( iij-1, iij-1, iij-1, iij-1 )           !== horizontal divergence and add to pta 
    310                ! NOTE: [halo1-halo2] 
    311                ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 
    312                pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    313                   &       + zsign * (  (zftu(ji,jj,jk) - zftu(ji-1,jj,jk)) + & 
    314                   &                    (zftv(ji,jj,jk) - zftv(ji,jj-1,jk))  ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     321               ! round brackets added to fix the order of floating point operations 
     322               ! needed to ensure halo 1 - halo 2 compatibility 
     323               pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)                         & 
     324                  &       + zsign * ( ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk)        & 
     325                  &                   )                                          & ! bracket for halo 1 - halo 2 compatibility 
     326                  &                 + ( zftv(ji,jj,jk) - zftv(ji,jj-1,jk)        & 
     327                  &                   )                                          & ! bracket for halo 1 - halo 2 compatibility 
     328                  &                 ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    315329            END_2D 
    316330         END DO                                        !   End of slab 
     
    341355            zcoef4 = - zahv_w * e1t(ji,jj) * zmskv * wslpj (ji,jj,jk) 
    342356            ! 
    343             ! NOTE: [halo1-halo2] 
    344             ! Extra brackets required to ensure consistent floating point arithmetic for different nn_hls for bilaplacian 
    345             ztfw(ji,jj,jk) = zcoef3 * (   (zdit(ji  ,jj  ,jk-1) + zdit(ji-1,jj  ,jk))      & 
    346                &                        + (zdit(ji-1,jj  ,jk-1) + zdit(ji  ,jj  ,jk))  )   & 
    347                &           + zcoef4 * (   (zdjt(ji  ,jj  ,jk-1) + zdjt(ji  ,jj-1,jk))      & 
    348                &                        + (zdjt(ji  ,jj-1,jk-1) + zdjt(ji  ,jj  ,jk))  ) 
     357            ! round brackets added to fix the order of floating point operations 
     358            ! needed to ensure halo 1 - halo 2 compatibility 
     359            ztfw(ji,jj,jk) = zcoef3 * ( ( zdit(ji  ,jj  ,jk-1) + zdit(ji-1,jj  ,jk)    & 
     360                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     361                  &                   + ( zdit(ji-1,jj  ,jk-1) + zdit(ji  ,jj  ,jk)    & 
     362                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     363                  &                   )                                                & 
     364                  &        + zcoef4 * ( ( zdjt(ji  ,jj  ,jk-1) + zdjt(ji  ,jj-1,jk)    & 
     365                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     366                  &                   + ( zdjt(ji  ,jj-1,jk-1) + zdjt(ji  ,jj  ,jk)    & 
     367                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     368                  &                   ) 
    349369         END_3D 
    350370         !                                !==  add the vertical 33 flux  ==! 
Note: See TracChangeset for help on using the changeset viewer.