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 14343 – NEMO

Changeset 14343


Ignore:
Timestamp:
2021-01-26T12:07:24+01:00 (3 years ago)
Author:
smasson
Message:

dev_r14312_MPI_Interface: bugfix when suppressing land-domains along the NP folding, #2598

Location:
NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/LBC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/LBC/lbc_lnk_neicoll_generic.h90

    r14338 r14343  
    3939      INTEGER  ::   idx 
    4040      INTEGER  ::   impi_nc 
     41      INTEGER  ::   ifill_nfd 
    4142      INTEGER, DIMENSION(4)  ::   iwewe, issnn 
    4243      INTEGER, DIMENSION(8)  ::   isizei, ishtsi, ishtri, ishtpi 
     
    109110      ! north fold treatment 
    110111      ll_IdoNFold = l_IdoNFold .AND. ifill(jpno) /= jpfillnothing 
    111       IF( ll_IdoNFold )   ifill( (/jpno,jpnw,jpne/) ) = jpfillnothing   ! we do north fold -> do nothing for northern halos 
     112      IF( ll_IdoNFold ) THEN 
     113         ifill_nfd = ifill(jpno)             ! if we are here, this means llrecv(jpno) = .false. and l_SelfPerio(jpno) = .false. 
     114         ifill( (/jpno/) ) = jpfillnothing   ! we do north fold -> do nothing for northern halo 
     115      ENDIF 
    112116       
     117      ! We first define the localization and size of the parts of the array that will be sent (s), received (r) 
     118      ! or used for periodocity (p). The localization is defined as "the bottom left corner - 1" in i and j directions. 
     119      ! This is a shift that will be applied later in the do loops to pick-up the appropriate part of the array 
    113120      !                    !                       ________________________ 
    114121      ip0i =          0    !          im0j = inner |__|________________|__| 
  • NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/LBC/lbc_lnk_pt2pt_generic.h90

    r14338 r14343  
    3434      INTEGER  ::   ip0j, ip1j, im0j, im1j 
    3535      INTEGER  ::   ishti, ishtj, ishti2, ishtj2 
    36       INTEGER  ::   icomm, ierr 
     36      INTEGER  ::   ifill_nfd, icomm, ierr 
    3737      INTEGER  ::   idxs, idxr 
    3838      INTEGER, DIMENSION(4)  ::   isizei, ishtsi, ishtri, ishtpi 
     
    9090      ! north fold treatment 
    9191      ll_IdoNFold = l_IdoNFold .AND. ifill(jpno) /= jpfillnothing 
    92       IF( ll_IdoNFold )   ifill( (/jpno/) ) = jpfillnothing   ! we do north fold -> do nothing for northern halo 
     92      IF( ll_IdoNFold ) THEN 
     93         ifill_nfd = ifill(jpno)             ! if we are here, this means llrecv(jpno) = .false. and l_SelfPerio(jpno) = .false. 
     94         ifill( (/jpno/) ) = jpfillnothing   ! we do north fold -> do nothing for northern halo 
     95      ENDIF 
    9396       
     97      ! We first define the localization and size of the parts of the array that will be sent (s), received (r) 
     98      ! or used for periodocity (p). The localization is defined as "the bottom left corner - 1" in i and j directions. 
     99      ! This is a shift that will be applied later in the do loops to pick-up the appropriate part of the array 
    94100      !                    !                       ________________________ 
    95101      ip0i =          0    !          im0j = inner |__|__|__________|__|__| 
     
    207213      ! 
    208214      IF( ll_IdoNFold ) THEN 
    209          IF( jpni == 1 )  THEN   ;   CALL lbc_nfd( ptab, cd_nat, psgn                    , ipf )   ! self NFold 
    210          ELSE                    ;   CALL mpp_nfd( ptab, cd_nat, psgn, ifill(jpno), zland, ipf )   ! mpi  NFold 
     215         IF( jpni == 1 )  THEN   ;   CALL lbc_nfd( ptab, cd_nat, psgn                  , ipf )   ! self NFold 
     216         ELSE                    ;   CALL mpp_nfd( ptab, cd_nat, psgn, ifill_nfd, zland, ipf )   ! mpi  NFold 
    211217         ENDIF 
    212218      ENDIF 
  • NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/LBC/lbc_nfd_nogather_generic.h90

    r14338 r14343  
    4242      ! 
    4343      ! 2nd dimension determines exchange speed 
    44       IF ( SIZE(ptab2,2) == 1 ) THEN 
    45         l_fast_exchanges = .TRUE. 
    46       ELSE 
    47         l_fast_exchanges = .FALSE. 
    48       ENDIF 
     44      l_fast_exchanges = SIZE(ptab2,2) == 1 
    4945         ! 
    5046         IF( c_NFtype == 'T' ) THEN          ! *  North fold  T-point pivot 
Note: See TracChangeset for help on using the changeset viewer.