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 11210 for NEMO/branches/2019 – NEMO

Changeset 11210 for NEMO/branches/2019


Ignore:
Timestamp:
2019-07-03T12:08:42+02:00 (5 years ago)
Author:
girrmann
Message:

dev_r10984_HPC-13 : remove some communications in bdy treatment in case nn_hls > 1, see #2285

Location:
NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdydyn2d.F90

    r11195 r11210  
    5454      LOGICAL, DIMENSION(4) :: llsend2, llrecv2, llsend3, llrecv3  ! indicate how communications are to be carried out 
    5555       
     56      llsend2(:) = .false.   ;   llrecv2(:) = .false. 
     57      llsend3(:) = .false.   ;   llrecv3(:) = .false. 
    5658      DO ir = 1, 0, -1   ! treat rim 1 before rim 0 
    5759         IF( ir == 0 ) THEN   ;   llrim0 = .TRUE. 
     
    7779         ENDDO 
    7880         ! 
    79          llsend2(:) = .false. 
    80          llrecv2(:) = .false. 
    81          llsend3(:) = .false. 
    82          llrecv3(:) = .false. 
     81         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
     82         IF( nn_hls == 1 ) THEN 
     83            llsend2(:) = .false.   ;   llrecv2(:) = .false. 
     84            llsend3(:) = .false.   ;   llrecv3(:) = .false. 
     85         END IF 
    8386         DO ib_bdy=1, nb_bdy 
    8487            SELECT CASE( cn_dyn2d(ib_bdy) ) 
     
    310313      LOGICAL, DIMENSION(4) :: llsend1, llrecv1  ! indicate how communications are to be carried out 
    311314      !!---------------------------------------------------------------------- 
     315      llsend1(:) = .false.   ;   llrecv1(:) = .false. 
    312316      DO ir = 1, 0, -1   ! treat rim 1 before rim 0 
    313          llsend1(:) = .false. 
    314          llrecv1(:) = .false. 
     317         IF( nn_hls == 1 ) THEN   ;   llsend1(:) = .false.   ;   llrecv1(:) = .false.   ;   END IF 
    315318         IF( ir == 0 ) THEN   ;   llrim0 = .TRUE. 
    316319         ELSE                 ;   llrim0 = .FALSE. 
     
    321324            llrecv1(:) = llrecv1(:) .OR. lrecv_bdyint(ib_bdy,1,:,ir)   ! possibly every direction, T points 
    322325         END DO 
     326         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
    323327         IF( ANY(llsend1) .OR. ANY(llrecv1) ) THEN   ! if need to send/recv in at least one direction 
    324328            CALL lbc_lnk( 'bdydyn2d', zssh(:,:,1), 'T',  1., kfillmode=jpfillnothing ,lsend=llsend1, lrecv=llrecv1 ) 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdydyn3d.F90

    r11195 r11210  
    4747 
    4848      !!---------------------------------------------------------------------- 
     49      llsend2(:) = .false.   ;   llrecv2(:) = .false. 
     50      llsend3(:) = .false.   ;   llrecv3(:) = .false. 
    4951      DO ir = 1, 0, -1   ! treat rim 1 before rim 0 
    5052         IF( ir == 0 ) THEN   ;   llrim0 = .TRUE. 
     
    6971         END DO 
    7072         ! 
    71          llsend2(:) = .false. 
    72          llrecv2(:) = .false. 
    73          llsend3(:) = .false. 
    74          llrecv3(:) = .false. 
     73         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
     74         IF( nn_hls == 1 ) THEN 
     75            llsend2(:) = .false.   ;   llrecv2(:) = .false. 
     76            llsend3(:) = .false.   ;   llrecv3(:) = .false. 
     77         END IF 
    7578         DO ib_bdy=1, nb_bdy 
    7679            SELECT CASE( cn_dyn3d(ib_bdy) ) 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdyice.F90

    r11195 r11210  
    6666      CALL ice_var_glo2eqv 
    6767      ! 
     68      llsend1(:) = .false.   ;   llrecv1(:) = .false. 
    6869      DO ir = 1, 0, -1   ! treat rim 1 before rim 0 
    6970         IF( ir == 0 ) THEN   ;   llrim0 = .TRUE. 
     
    8182         END DO 
    8283         ! 
    83          ! Update bdy points 
    84          llsend1(:) = .false. 
    85          llrecv1(:) = .false. 
     84         ! Update bdy points         
     85         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
     86         IF( nn_hls == 1 ) THEN   ;   llsend1(:) = .false.   ;   llrecv1(:) = .false.   ;   END IF 
    8687         DO jbdy = 1, nb_bdy 
    8788            IF( cn_ice(jbdy) == 'frs' ) THEN 
     
    316317      IF( ln_timing )   CALL timing_start('bdy_ice_dyn') 
    317318      ! 
     319      llsend2(:) = .false.   ;   llrecv2(:) = .false. 
     320      llsend3(:) = .false.   ;   llrecv3(:) = .false. 
    318321      DO ir = 1, 0, -1 
    319322         DO jbdy = 1, nb_bdy 
     
    404407         SELECT CASE ( cd_type )         
    405408         CASE ( 'U' )  
    406             llsend2(:) = .false.   ;   llrecv2(:) = .false. 
     409         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
     410         IF( nn_hls == 1 ) THEN   ;   llsend2(:) = .false.   ;   llrecv2(:) = .false.   ;   END IF 
    407411            DO jbdy = 1, nb_bdy 
    408412               IF( cn_ice(jbdy) == 'frs' .AND. nn_ice_dta(jbdy) /= 0 ) THEN 
     
    417421            END IF 
    418422         CASE ( 'V' ) 
    419             llsend3(:) = .false.   ;   llrecv3(:) = .false. 
     423         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
     424         IF( nn_hls == 1 ) THEN   ;   llsend3(:) = .false.   ;   llrecv3(:) = .false.   ;   END IF 
    420425            DO jbdy = 1, nb_bdy 
    421426               IF( cn_ice(jbdy) == 'frs' .AND. nn_ice_dta(jbdy) /= 0 ) THEN 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/OCE/BDY/bdytra.F90

    r11195 r11210  
    5555      !!---------------------------------------------------------------------- 
    5656      igrd = 1  
    57  
     57      llsend1(:) = .false.  ;   llrecv1(:) = .false. 
    5858      DO ir = 1, 0, -1   ! treat rim 1 before rim 0 
    5959         IF( ir == 0 ) THEN   ;   llrim0 = .TRUE. 
     
    8585         END DO 
    8686         ! 
    87          llsend1(:) = .false. 
    88          llrecv1(:) = .false. 
     87         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
     88         IF( nn_hls == 1 ) THEN   ;   llsend1(:) = .false.   ;   llrecv1(:) = .false.   ;   END IF 
    8989         DO ib_bdy=1, nb_bdy 
    9090            SELECT CASE( TRIM(cn_tra(ib_bdy)) ) 
  • NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/TOP/trcbdy.F90

    r11195 r11210  
    5656      ! 
    5757      igrd = 1  
    58       ! 
     58      llsend1(:) = .false.  ;   llrecv1(:) = .false. 
    5959      DO ir = 1, 0, -1   ! treat rim 1 before rim 0 
    6060         IF( ir == 0 ) THEN   ;   llrim0 = .TRUE. 
     
    8282         END DO 
    8383         ! 
    84          llsend1(:) = .false. 
    85          llrecv1(:) = .false. 
     84         IF( nn_hls > 1 .AND. ir == 1 ) CYCLE   ! at least 2 halos will be corrected -> no need to correct rim 1 before rim 0 
     85         IF( nn_hls == 1 ) THEN   ;   llsend1(:) = .false.   ;   llrecv1(:) = .false.   ;   END IF 
    8686         DO ib_bdy=1, nb_bdy 
    8787            SELECT CASE( TRIM(cn_tra(ib_bdy)) ) 
Note: See TracChangeset for help on using the changeset viewer.