- Timestamp:
- 2018-11-25T15:24:21+01:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/OCE/LBC/lib_mpp.F90
r10357 r10358 574 574 INTEGER, INTENT(in ), OPTIONAL :: kcom 575 575 INTEGER :: ierror, ilocalcomm 576 LOGICAL, SAVE :: ll_switch 576 LOGICAL, SAVE :: ll_switch , lllast 577 577 INTEGER, SAVE :: ireq = -1 578 578 !!---------------------------------------------------------------------- 579 579 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 581 583 582 584 IF ( ireq /= -1 ) THEN ! get ld_switch(2) from ll_switch (from previous call) … … 586 588 IF( ln_timing ) CALL tic_tac(.FALSE., ld_global = .TRUE.) 587 589 ENDIF 588 IF( .NOT. l dlast ) & ! send ll_switch to be received on next call590 IF( .NOT. lllast ) & ! send ll_switch to be received on next call 589 591 CALL mpi_iallreduce( ld_switch(1), ll_switch, 1, MPI_LOGICAL, mpi_lor, ilocalcomm, ireq, ierror ) 590 592 … … 751 753 752 754 753 SUBROUTINE mppstop( ldfinal )755 SUBROUTINE mppstop( ldfinal, ld_force_abort ) 754 756 !!---------------------------------------------------------------------- 755 757 !! *** routine mppstop *** … … 759 761 !!---------------------------------------------------------------------- 760 762 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 762 765 INTEGER :: info 763 766 !!---------------------------------------------------------------------- 764 !765 CALL mppsync766 CALL mpi_finalize( info )767 767 llfinal = .FALSE. 768 768 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 769 778 IF( .NOT. llfinal ) STOP 123456 770 779 ! … … 1638 1647 END SUBROUTINE mpp_ilor 1639 1648 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 1641 1652 STOP ! non MPP case, just stop the run 1642 1653 END SUBROUTINE mppstop … … 1766 1777 iost=0 1767 1778 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 ) 1769 1782 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 windows1783 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 ) 1774 1787 IF( iost == 0 ) THEN 1775 1788 IF(ldwp) THEN 1776 WRITE(kout,*) ' file : ', clfile,' open ok'1789 WRITE(kout,*) ' file : ', TRIM(clfile),' open ok' 1777 1790 WRITE(kout,*) ' unit = ', knum 1778 1791 WRITE(kout,*) ' status = ', cdstat … … 1786 1799 IF(ldwp) THEN 1787 1800 WRITE(kout,*) 1788 WRITE(kout,*) ' ===>>>> : bad opening file: ', clfile1801 WRITE(kout,*) ' ===>>>> : bad opening file: ', TRIM(clfile) 1789 1802 WRITE(kout,*) ' ======= === ' 1790 1803 WRITE(kout,*) ' unit = ', knum … … 1797 1810 ELSE !!! Force writing to make sure we get the information - at least once - in this violent STOP!! 1798 1811 WRITE(*,*) 1799 WRITE(*,*) ' ===>>>> : bad opening file: ', clfile1812 WRITE(*,*) ' ===>>>> : bad opening file: ', TRIM(clfile) 1800 1813 WRITE(*,*) ' ======= === ' 1801 1814 WRITE(*,*) ' unit = ', knum
Note: See TracChangeset
for help on using the changeset viewer.