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/DOM/domqco.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/DOM/domqco.F90

    r14574 r14680  
    154154#if ! defined key_qcoTest_FluxForm 
    155155      !                                ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 
    156          DO_2D( 0, 0, 0, 0 ) 
     156         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     157         DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
    157158            pr3u(ji,jj) = 0.5_wp * (  e1e2t(ji  ,jj) * pssh(ji  ,jj)  & 
    158159               &                    + e1e2t(ji+1,jj) * pssh(ji+1,jj)  ) * r1_hu_0(ji,jj) * r1_e1e2u(ji,jj) 
     
    162163!!st      ELSE                                         !- Flux Form   (simple averaging) 
    163164#else 
    164          DO_2D( 0, 0, 0, 0 ) 
     165         ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 ) 
     166         DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
    165167            pr3u(ji,jj) = 0.5_wp * (  pssh(ji,jj) + pssh(ji+1,jj  )  ) * r1_hu_0(ji,jj) 
    166168            pr3v(ji,jj) = 0.5_wp * (  pssh(ji,jj) + pssh(ji  ,jj+1)  ) * r1_hv_0(ji,jj) 
     
    170172      ! 
    171173      IF( .NOT.PRESENT( pr3f ) ) THEN              !- lbc on ratio at u-, v-points only 
    172          CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 
     174         IF (nn_hls.eq.1) CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp ) 
    173175         ! 
    174176         ! 
     
    179181         !                                ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 
    180182 
    181             DO_2D( 0, 0, 0, 0 )                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
    182                pr3f(ji,jj) = 0.25_wp * (  e1e2t(ji  ,jj  ) * pssh(ji  ,jj  )  & 
    183                   &                     + e1e2t(ji+1,jj  ) * pssh(ji+1,jj  )  & 
    184                   &                     + e1e2t(ji  ,jj+1) * pssh(ji  ,jj+1)  & 
    185                   &                     + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1)  ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 
     183            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
     184            DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
     185               ! round brackets added to fix the order of floating point operations 
     186               ! needed to ensure halo 1 - halo 2 compatibility 
     187               pr3f(ji,jj) = 0.25_wp * ( ( e1e2t(ji  ,jj  ) * pssh(ji  ,jj  )   & 
     188                  &                      + e1e2t(ji+1,jj  ) * pssh(ji+1,jj  )   & 
     189                  &                      )                                      & ! bracket for halo 1 - halo 2 compatibility 
     190                  &                     + ( e1e2t(ji  ,jj+1) * pssh(ji  ,jj+1)  & 
     191                  &                       + e1e2t(ji+1,jj+1) * pssh(ji+1,jj+1)  & 
     192                  &                       )                                     & ! bracket for halo 1 - halo 2 compatibility 
     193                  &                    ) * r1_hf_0(ji,jj) * r1_e1e2f(ji,jj) 
    186194            END_2D 
    187195!!st         ELSE                                      !- Flux Form   (simple averaging) 
    188196#else 
    189             DO_2D( 0, 0, 0, 0 )                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
    190                pr3f(ji,jj) = 0.25_wp * (  pssh(ji,jj  ) + pssh(ji+1,jj  )  & 
    191                   &                     + pssh(ji,jj+1) + pssh(ji+1,jj+1)  ) * r1_hf_0(ji,jj) 
     197            ! [comm_cleanup] ! DO_2D( 0, 0, 0, 0 )                               ! start from 1 since lbc_lnk('F') doesn't update the 1st row/line 
     198            DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) 
     199               ! round brackets added to fix the order of floating point operations 
     200               ! needed to ensure halo 1 - halo 2 compatibility 
     201               pr3f(ji,jj) = 0.25_wp * ( ( pssh(ji,jj  ) + pssh(ji+1,jj  ) ) & 
     202                  &                     + ( pssh(ji,jj+1) + pssh(ji+1,jj+1)  &  
     203                  &                       )                                  & ! bracket for halo 1 - halo 2 compatibility 
     204                  &                    ) * r1_hf_0(ji,jj) 
    192205            END_2D 
    193206!!st         ENDIF 
    194207#endif 
    195208         !                                                 ! lbc on ratio at u-,v-,f-points 
    196          CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 
     209         IF (nn_hls.eq.1) CALL lbc_lnk( 'dom_qco_r3c', pr3u, 'U', 1._wp, pr3v, 'V', 1._wp, pr3f, 'F', 1._wp ) 
    197210         ! 
    198211      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.