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 14820 for NEMO/trunk/src/OCE/TRA/traldf_iso.F90 – NEMO

Ignore:
Timestamp:
2021-05-10T10:26:13+02:00 (3 years ago)
Author:
francesca
Message:

merge ticket2607_r14608_halo1_halo2_compatibility into trunk

File:
1 edited

Legend:

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

    r14072 r14820  
    179179               &                           + vmask(ji,jj-1,jk-1) + vmask(ji,jj  ,jk) , 1._wp  ) 
    180180               ! 
    181             zahu_w = (   pahu(ji  ,jj,jk-1) + pahu(ji-1,jj,jk)    & 
    182                &       + pahu(ji-1,jj,jk-1) + pahu(ji  ,jj,jk)  ) * zmsku 
    183             zahv_w = (   pahv(ji,jj  ,jk-1) + pahv(ji,jj-1,jk)    & 
    184                &       + pahv(ji,jj-1,jk-1) + pahv(ji,jj  ,jk)  ) * zmskv 
     181            ! round brackets added to fix the order of floating point operations 
     182            ! needed to ensure halo 1 - halo 2 compatibility 
     183            zahu_w = ( (  pahu(ji  ,jj,jk-1) + pahu(ji-1,jj,jk)                    & 
     184               &       )                                                           & ! bracket for halo 1 - halo 2 compatibility 
     185               &       + ( pahu(ji-1,jj,jk-1) + pahu(ji  ,jj,jk)                   & 
     186               &         )                                                         & ! bracket for halo 1 - halo 2 compatibility 
     187               &     ) * zmsku                                        
     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               &         )                                                         & ! bracket for halo 1 - halo 2 compatibility 
     192               &     ) * zmskv                                                
    185193               ! 
    186194            ah_wslp2(ji,jj,jk) = zahu_w * wslpi(ji,jj,jk) * wslpi(ji,jj,jk)   & 
     
    190198         IF( ln_traldf_msc ) THEN                ! stabilizing vertical diffusivity coefficient 
    191199            DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 
     200               ! round brackets added to fix the order of floating point operations 
     201               ! needed to ensure halo 1 - halo 2 compatibility 
    192202               akz(ji,jj,jk) = 0.25_wp * (                                                                     & 
    193                   &              ( 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) )   & 
    194204                  &            + ( pahu(ji-1,jj,jk) + pahu(ji-1,jj,jk-1) ) / ( e1u(ji-1,jj) * e1u(ji-1,jj) )   & 
    195                   &            + ( pahv(ji,jj  ,jk) + pahv(ji,jj  ,jk-1) ) / ( e2v(ji,jj  ) * e2v(ji,jj  ) )   & 
    196                   &            + ( 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 
     209                  &                      )                                                                          
    197210            END_3D 
    198211            ! 
     
    278291               zcof2 = - pahv(ji,jj,jk) * e1v(ji,jj) * vslp(ji,jj,jk) * zmskv 
    279292               ! 
    280                zftu(ji,jj,jk ) = (  zabe1 * zdit(ji,jj,jk)   & 
    281                   &               + zcof1 * (  zdkt (ji+1,jj) + zdk1t(ji,jj)      & 
    282                   &                          + zdk1t(ji+1,jj) + zdkt (ji,jj)  )  ) * umask(ji,jj,jk) 
    283                zftv(ji,jj,jk) = (  zabe2 * zdjt(ji,jj,jk)   & 
    284                   &               + zcof2 * (  zdkt (ji,jj+1) + zdk1t(ji,jj)      & 
    285                   &                          + zdk1t(ji,jj+1) + zdkt (ji,jj)  )  ) * vmask(ji,jj,jk) 
     293               ! round brackets added to fix the order of floating point operations 
     294               ! needed to ensure halo 1 - halo 2 compatibility 
     295               zftu(ji,jj,jk ) = (  zabe1 * zdit(ji,jj,jk)                       & 
     296                  &               + zcof1 * ( ( zdkt (ji+1,jj) + zdk1t(ji,jj)    & 
     297                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     298                  &                         + ( zdk1t(ji+1,jj) + zdkt (ji,jj)    &  
     299                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     300                  &                         ) ) * umask(ji,jj,jk) 
     301               zftv(ji,jj,jk) = (  zabe2 * zdjt(ji,jj,jk)                        & 
     302                  &              + zcof2 * ( ( zdkt (ji,jj+1) + zdk1t(ji,jj)     & 
     303                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     304                  &                         + ( zdk1t(ji,jj+1) + zdkt (ji,jj)    & 
     305                  &                           )                                  & ! bracket for halo 1 - halo 2 compatibility 
     306                  &                         ) ) * vmask(ji,jj,jk)       
    286307            END_2D 
    287308            ! 
    288309            DO_2D( 0, 0, 0, 0 )           !== horizontal divergence and add to pta 
    289                pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn)    & 
    290                   &       + zsign * (  zftu(ji,jj,jk) - zftu(ji-1,jj,jk) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk)  )   & 
    291                   &                                              * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
     310               ! round brackets added to fix the order of floating point operations 
     311               ! needed to ensure halo 1 - halo 2 compatibility 
     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                  &                   )                                          & ! bracket for halo 1 - halo 2 compatibility 
     315                  &                 + ( zftv(ji,jj,jk) - zftv(ji,jj-1,jk)        & 
     316                  &                   )                                          & ! bracket for halo 1 - halo 2 compatibility 
     317                  &                 ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 
    292318            END_2D 
    293319         END DO                                        !   End of slab 
     
    317343            zcoef4 = - zahv_w * e1t(ji,jj) * zmskv * wslpj (ji,jj,jk) 
    318344            ! 
    319             ztfw(ji,jj,jk) = zcoef3 * (   zdit(ji  ,jj  ,jk-1) + zdit(ji-1,jj  ,jk)      & 
    320                &                        + zdit(ji-1,jj  ,jk-1) + zdit(ji  ,jj  ,jk)  )   & 
    321                &           + zcoef4 * (   zdjt(ji  ,jj  ,jk-1) + zdjt(ji  ,jj-1,jk)      & 
    322                &                        + zdjt(ji  ,jj-1,jk-1) + zdjt(ji  ,jj  ,jk)  ) 
     345            ! round brackets added to fix the order of floating point operations 
     346            ! needed to ensure halo 1 - halo 2 compatibility 
     347            ztfw(ji,jj,jk) = zcoef3 * ( ( zdit(ji  ,jj  ,jk-1) + zdit(ji-1,jj  ,jk)    & 
     348                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     349                  &                   + ( zdit(ji-1,jj  ,jk-1) + zdit(ji  ,jj  ,jk)    & 
     350                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility  
     351                  &                   )                                                & 
     352                  &        + zcoef4 * ( ( zdjt(ji  ,jj  ,jk-1) + zdjt(ji  ,jj-1,jk)    & 
     353                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     354                  &                   + ( zdjt(ji  ,jj-1,jk-1) + zdjt(ji  ,jj  ,jk)    & 
     355                  &                     )                                              & ! bracket for halo 1 - halo 2 compatibility 
     356                  &                   ) 
    323357         END_3D 
    324358         !                                !==  add the vertical 33 flux  ==! 
Note: See TracChangeset for help on using the changeset viewer.