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 14667 for NEMO/branches/2021/dev_r14393_HPC-03_Mele_Comm_Cleanup/src/OCE/TRA/traldf_iso.F90 – NEMO

Ignore:
Timestamp:
2021-04-01T10:43:32+02:00 (3 years ago)
Author:
francesca
Message:

TRA additional changes + first set of DYN files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14393_HPC-03_Mele_Comm_Cleanup/src/OCE/TRA/traldf_iso.F90

    r14538 r14667  
    180180            zmskv = wmask(ji,jj,jk) / MAX(   vmask(ji,jj  ,jk-1) + vmask(ji,jj-1,jk)          & 
    181181               &                           + vmask(ji,jj-1,jk-1) + vmask(ji,jj  ,jk) , 1._wp  ) 
    182                ! 
    183             zahu_w = (   pahu(ji  ,jj,jk-1) + pahu(ji-1,jj,jk)    & 
    184                &       + pahu(ji-1,jj,jk-1) + pahu(ji  ,jj,jk)  ) * zmsku 
    185             zahv_w = (   pahv(ji,jj  ,jk-1) + pahv(ji,jj-1,jk)    & 
    186                &       + pahv(ji,jj-1,jk-1) + pahv(ji,jj  ,jk)  ) * zmskv 
     182            ! round brackets added to fix the order of floating point operations 
     183            ! needed to ensure halo 1 - halo 2 compatibility 
     184            zahu_w = ( (  pahu(ji  ,jj,jk-1) + pahu(ji-1,jj,jk)                    & 
     185               &       )                                                           & ! bracket for halo 1 - halo 2 compatibility 
     186               &       + ( pahu(ji-1,jj,jk-1) + pahu(ji  ,jj,jk)                   & 
     187               &         ) ) * zmsku                                                 ! bracket for halo 1 - halo 2 compatibility 
     188            zahv_w = ( (  pahv(ji,jj  ,jk-1) + pahv(ji,jj-1,jk)                    & 
     189               &       )                                                           & ! bracket for halo 1 - halo 2 compatibility 
     190               &       + ( pahv(ji,jj-1,jk-1) + pahv(ji,jj  ,jk)                   &  
     191               &         ) ) * zmskv                                                 ! bracket for halo 1 - halo 2 compatibility 
    187192               ! 
    188193            ah_wslp2(ji,jj,jk) = zahu_w * wslpi(ji,jj,jk) * wslpi(ji,jj,jk)   & 
     
    193198            ! [comm_cleanup] ! DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
    194199            DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )  
     200               ! round brackets added to fix the order of floating point operations 
     201               ! needed to ensure halo 1 - halo 2 compatibility 
    195202               akz(ji,jj,jk) = 0.25_wp * (                                                                     & 
    196                   &              ( pahu(ji  ,jj,jk) + pahu(ji  ,jj,jk-1) ) / ( e1u(ji  ,jj) * e1u(ji  ,jj) )   & 
     203                  &            ( ( pahu(ji  ,jj,jk) + pahu(ji  ,jj,jk-1) ) / ( e1u(ji  ,jj) * e1u(ji  ,jj) )   & 
    197204                  &            + ( pahu(ji-1,jj,jk) + pahu(ji-1,jj,jk-1) ) / ( e1u(ji-1,jj) * e1u(ji-1,jj) )   & 
    198                   &            + ( pahv(ji,jj  ,jk) + pahv(ji,jj  ,jk-1) ) / ( e2v(ji,jj  ) * e2v(ji,jj  ) )   & 
    199                   &            + ( pahv(ji,jj-1,jk) + pahv(ji,jj-1,jk-1) ) / ( e2v(ji,jj-1) * e2v(ji,jj-1) )   ) 
     205                  &            )                                                                               & ! bracket for halo 1 - halo 2 compatibility 
     206                  &            + ( ( pahv(ji,jj  ,jk) + pahv(ji,jj  ,jk-1) ) / ( e2v(ji,jj  ) * e2v(ji,jj  ) ) & 
     207                  &              + ( pahv(ji,jj-1,jk) + pahv(ji,jj-1,jk-1) ) / ( e2v(ji,jj-1) * e2v(ji,jj-1) ) &   
     208                  &              ) )                                                                             ! bracket for halo 1 - halo 2 compatibility 
    200209            END_3D 
    201210            ! 
     
    289298               zcof2 = - pahv(ji,jj,jk) * e1v(ji,jj) * vslp(ji,jj,jk) * zmskv 
    290299               ! 
    291                zftu(ji,jj,jk ) = (  zabe1 * zdit(ji,jj,jk)   & 
    292                   &               + zcof1 * (  zdkt (ji+1,jj) + zdk1t(ji,jj)      & 
    293                   &                          + zdk1t(ji+1,jj) + zdkt (ji,jj)  )  ) * umask(ji,jj,jk) 
    294                zftv(ji,jj,jk) = (  zabe2 * zdjt(ji,jj,jk)   & 
    295                   &               + zcof2 * (  zdkt (ji,jj+1) + zdk1t(ji,jj)      & 
    296                   &                          + zdk1t(ji,jj+1) + zdkt (ji,jj)  )  ) * vmask(ji,jj,jk) 
     300               ! round brackets added to fix the order of floating point operations 
     301               ! needed to ensure halo 1 - halo 2 compatibility 
     302               zftu(ji,jj,jk ) = (  zabe1 * zdit(ji,jj,jk)                       & 
     303                  &               + zcof1 * ( ( zdkt (ji+1,jj) + zdk1t(ji,jj)    & 
     304                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     305                  &                         + ( zdk1t(ji+1,jj) + zdkt (ji,jj)    &  
     306                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     307                  &                         ) ) * umask(ji,jj,jk) 
     308               zftv(ji,jj,jk) = (  zabe2 * zdjt(ji,jj,jk)                        & 
     309                  &              + zcof2 * ( ( zdkt (ji,jj+1) + zdk1t(ji,jj)     & 
     310                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     311                  &                         + ( zdk1t(ji,jj+1) + zdkt (ji,jj)    & 
     312                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     313                  &                         ) ) * vmask(ji,jj,jk)       
    297314            END_2D 
    298315            ! 
    299316            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )           !== horizontal divergence and add to pta 
    300317            DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )           !== horizontal divergence and add to pta 
    301                pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    302                   &       + zsign * (  zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk)  )   & 
    303                   &                                              * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     318               ! round brackets added to fix the order of floating point operations 
     319               ! needed to ensure halo 1 - halo 2 compatibility 
     320               pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)                         & 
     321                  &       + zsign * ( ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk)        & 
     322                  &                   )                                          & ! bracket for halo 1 - halo 2 compatibility 
     323                  &                 + ( zftv(ji,jj,jk) - zftv(ji,jj-1,jk)        & 
     324                  &                   )                                          & ! bracket for halo 1 - halo 2 compatibility 
     325                  &                 ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    304326            END_2D 
    305327         END DO                                        !   End of slab 
     
    330352            zcoef4 = - zahv_w * e1t(ji,jj) * zmskv * wslpj (ji,jj,jk) 
    331353            ! 
    332             ztfw(ji,jj,jk) = zcoef3 * (   zdit(ji  ,jj  ,jk-1) + zdit(ji-1,jj  ,jk)      & 
    333                &                        + zdit(ji-1,jj  ,jk-1) + zdit(ji  ,jj  ,jk)  )   & 
    334                &           + zcoef4 * (   zdjt(ji  ,jj  ,jk-1) + zdjt(ji  ,jj-1,jk)      & 
    335                &                        + zdjt(ji  ,jj-1,jk-1) + zdjt(ji  ,jj  ,jk)  ) 
     354            ! round brackets added to fix the order of floating point operations 
     355            ! needed to ensure halo 1 - halo 2 compatibility 
     356            ztfw(ji,jj,jk) = zcoef3 * ( ( zdit(ji  ,jj  ,jk-1) + zdit(ji-1,jj  ,jk)    & 
     357                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     358                  &                   + ( zdit(ji-1,jj  ,jk-1) + zdit(ji  ,jj  ,jk)    & 
     359                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility  
     360                  &                   )                                                & 
     361                  &        + zcoef4 * ( ( zdjt(ji  ,jj  ,jk-1) + zdjt(ji  ,jj-1,jk)    & 
     362                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     363                  &                   + ( zdjt(ji  ,jj-1,jk-1) + zdjt(ji  ,jj  ,jk)    & 
     364                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     365                  &                   ) 
    336366         END_3D 
    337367         !                                !==  add the vertical 33 flux  ==! 
Note: See TracChangeset for help on using the changeset viewer.