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 10358 for NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/lib_mpp.F90 – NEMO

Ignore:
Timestamp:
2018-11-25T15:24:21+01:00 (5 years ago)
Author:
smasson
Message:

dev_r10164_HPC09_ESIWACE_PREP_MERGE: action 5b: by default, suppress global communication in stpctl, see #2133

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/lib_mpp.F90

    r10357 r10358  
    574574      INTEGER, INTENT(in   ), OPTIONAL     ::   kcom  
    575575      INTEGER  ::   ierror, ilocalcomm 
    576       LOGICAL, SAVE ::   ll_switch  
     576      LOGICAL, SAVE ::   ll_switch , lllast 
    577577      INTEGER, SAVE ::   ireq = -1 
    578578      !!---------------------------------------------------------------------- 
    579579      ilocalcomm = mpi_comm_oce 
    580       IF( PRESENT(kcom) )   ilocalcomm = kcom 
     580      IF( PRESENT(  kcom) )   ilocalcomm = kcom 
     581      lllast = .FALSE. 
     582      IF( PRESENT(ldlast) )   lllast = ldlast 
    581583       
    582584      IF ( ireq /= -1 ) THEN   ! get ld_switch(2) from ll_switch (from previous call) 
     
    586588         IF( ln_timing ) CALL tic_tac(.FALSE., ld_global = .TRUE.) 
    587589      ENDIF 
    588       IF( .NOT. ldlast ) &     ! send ll_switch to be received on next call 
     590      IF( .NOT. lllast ) &     ! send ll_switch to be received on next call 
    589591         CALL mpi_iallreduce( ld_switch(1), ll_switch, 1, MPI_LOGICAL, mpi_lor, ilocalcomm, ireq, ierror ) 
    590592 
     
    751753 
    752754 
    753    SUBROUTINE mppstop( ldfinal )  
     755   SUBROUTINE mppstop( ldfinal, ld_force_abort )  
    754756      !!---------------------------------------------------------------------- 
    755757      !!                  ***  routine mppstop  *** 
     
    759761      !!---------------------------------------------------------------------- 
    760762      LOGICAL, OPTIONAL, INTENT(in) :: ldfinal    ! source process number 
    761       LOGICAL ::   llfinal 
     763      LOGICAL, OPTIONAL, INTENT(in) :: ld_force_abort    ! source process number 
     764      LOGICAL ::   llfinal, ll_force_abort 
    762765      INTEGER ::   info 
    763766      !!---------------------------------------------------------------------- 
    764       ! 
    765       CALL mppsync 
    766       CALL mpi_finalize( info ) 
    767767      llfinal = .FALSE. 
    768768      IF( PRESENT(ldfinal) ) llfinal = ldfinal 
     769      ll_force_abort = .FALSE. 
     770      IF( PRESENT(ld_force_abort) ) ll_force_abort = ld_force_abort 
     771      ! 
     772      IF(ll_force_abort) THEN 
     773         CALL mpi_abort( MPI_COMM_WORLD ) 
     774      ELSE 
     775         CALL mppsync 
     776         CALL mpi_finalize( info ) 
     777      ENDIF 
    769778      IF( .NOT. llfinal ) STOP 123456 
    770779      ! 
     
    16381647   END SUBROUTINE mpp_ilor 
    16391648 
    1640    SUBROUTINE mppstop 
     1649   SUBROUTINE mppstop( ldfinal, ld_force_abort ) 
     1650      LOGICAL, OPTIONAL, INTENT(in) :: ldfinal    ! source process number 
     1651      LOGICAL, OPTIONAL, INTENT(in) :: ld_force_abort    ! source process number 
    16411652      STOP      ! non MPP case, just stop the run 
    16421653   END SUBROUTINE mppstop 
     
    17661777      iost=0 
    17671778      IF( cdacce(1:6) == 'DIRECT' )  THEN 
    1768          OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat, RECL=klengh, ERR=100, IOSTAT=iost ) 
     1779         OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat, RECL=klengh         , ERR=100, IOSTAT=iost ) 
     1780      ELSE IF( cdstat(1:6) == 'APPEND' )  THEN 
     1781         OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS='UNKNOWN', POSITION='APPEND', ERR=100, IOSTAT=iost ) 
    17691782      ELSE 
    1770          OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat             , ERR=100, IOSTAT=iost ) 
    1771       ENDIF 
    1772       IF( iost /= 0 .AND. TRIM(clfile) == '/dev/null' ) & 
    1773          &  OPEN(UNIT=knum,FILE='NUL', FORM=cdform, ACCESS=cdacce, STATUS=cdstat             , ERR=100, IOSTAT=iost )   ! for windows 
     1783         OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat                      , ERR=100, IOSTAT=iost ) 
     1784      ENDIF 
     1785      IF( iost /= 0 .AND. TRIM(clfile) == '/dev/null' ) &   ! for windows 
     1786         &  OPEN(UNIT=knum,FILE='NUL', FORM=cdform, ACCESS=cdacce, STATUS=cdstat                      , ERR=100, IOSTAT=iost )    
    17741787      IF( iost == 0 ) THEN 
    17751788         IF(ldwp) THEN 
    1776             WRITE(kout,*) '     file   : ', clfile,' open ok' 
     1789            WRITE(kout,*) '     file   : ', TRIM(clfile),' open ok' 
    17771790            WRITE(kout,*) '     unit   = ', knum 
    17781791            WRITE(kout,*) '     status = ', cdstat 
     
    17861799         IF(ldwp) THEN 
    17871800            WRITE(kout,*) 
    1788             WRITE(kout,*) ' ===>>>> : bad opening file: ', clfile 
     1801            WRITE(kout,*) ' ===>>>> : bad opening file: ', TRIM(clfile) 
    17891802            WRITE(kout,*) ' =======   ===  ' 
    17901803            WRITE(kout,*) '           unit   = ', knum 
     
    17971810         ELSE  !!! Force writing to make sure we get the information - at least once - in this violent STOP!! 
    17981811            WRITE(*,*) 
    1799             WRITE(*,*) ' ===>>>> : bad opening file: ', clfile 
     1812            WRITE(*,*) ' ===>>>> : bad opening file: ', TRIM(clfile) 
    18001813            WRITE(*,*) ' =======   ===  ' 
    18011814            WRITE(*,*) '           unit   = ', knum 
Note: See TracChangeset for help on using the changeset viewer.