hdiff output

r28690/disconnectionDPS.f90 2017-01-21 10:41:40.895838815 +0000 r28689/disconnectionDPS.f90 2017-01-21 10:41:41.147848881 +0000
 72: ! are represented by each node in each level. Nodes are listed from left to 72: ! are represented by each node in each level. Nodes are listed from left to
 73: ! right in each level. 73: ! right in each level.
 74: ! 74: !
 75: ! EXCLUDEALL 75: ! EXCLUDEALL
 76: ! Removes all minima from the list of minima to be plotted.  This is to be 76: ! Removes all minima from the list of minima to be plotted.  This is to be
 77: ! used in conjunction with the PICK command which can be used to specify 77: ! used in conjunction with the PICK command which can be used to specify
 78: ! exclusively which minima are to be included. 78: ! exclusively which minima are to be included.
 79: ! 79: !
 80: ! CONNECTMIN <min> 80: ! CONNECTMIN <min>
 81: ! If present then the analysis for a connected database is based upon minimum 81: ! If present then the analysis for a connected database is based upon minimum
 82: ! number min. If absent then the global minimum is used to define the 82: ! number min. If absent then the global minimum is used to judge connectivity.
 83: ! connected component to be plotted on the graph. 
 84: ! 83: !
 85: ! COLOURPRINT 84: ! COLOURPRINT
 86: ! For use with TRMIN, if present colour analysis written to 'node_sections'.    85: ! For use with TRMIN, if present colour analysis written to 'node_sections'.   
 87: ! Not actually required for colour analysis. 86: ! Not actually required for colour analysis.
 88: ! 87: !
 89: ! IDENTIFY 88: ! IDENTIFY
 90: ! If present, the branch ends are labelled with the lowest-energy minimum 89: ! If present, the branch ends are labelled with the lowest-energy minimum
 91: ! they represent. 90: ! they represent.
 92: ! 91: !
 93: ! IDENTIFY_NODE <max_min> 92: ! IDENTIFY_NODE <max_min>
238: ! TSTHRESH    <threshold> ignore transition states above this threshold.237: ! TSTHRESH    <threshold> ignore transition states above this threshold.
239: ! MAXTSENERGY <threshold> ignore transition states above this threshold.238: ! MAXTSENERGY <threshold> ignore transition states above this threshold.
240: ! MAXTSBARRIER <threshold> ignore transition states with both barriers above this threshold.239: ! MAXTSBARRIER <threshold> ignore transition states with both barriers above this threshold.
241: !240: !
242: ! WEIGHTS <file>241: ! WEIGHTS <file>
243: ! If present, use weights in <file> to scale the horizontal width. The expected 242: ! If present, use weights in <file> to scale the horizontal width. The expected 
244: ! format of <file> is 243: ! format of <file> is 
245: ! bin number  Vmin   Vmax  ln weight244: ! bin number  Vmin   Vmax  ln weight
246: !245: !
247: ! ZEROGM246: ! ZEROGM
248: ! Shift all energies so that the global minimum (or the lowest-energy minimum in the connected 247: ! Shift all energies so that the global minimum is at 0
249: ! component to be plotted) is at 0.248: 
250: ! 
251: ! COLOURFRONT249: ! COLOURFRONT
252: ! put the coloured brances in the front of default black branches.250: ! put the coloured brances in the front of default black branches.
253: 251: 
254: !................................................................................!252: !................................................................................!
255: 253: 
256: !!!254: !!!
257: !!! KEYWORDS LIBRARY255: !!! KEYWORDS LIBRARY
258: !!!256: !!!
259: !!! Subroutines: ma readread_line(unit[,logical])257: !!! Subroutines: ma readread_line(unit[,logical])
260: !!!              get_string(string[,logical])258: !!!              get_string(string[,logical])
377:       END IF375:       END IF
378:       DO I=1, N_TRACE376:       DO I=1, N_TRACE
379:       READ (22, *) NUMOFMIN377:       READ (22, *) NUMOFMIN
380:       VALUES(NUMOFMIN)=VALUE378:       VALUES(NUMOFMIN)=VALUE
381:       END DO379:       END DO
382:       CLOSE (22)380:       CLOSE (22)
383:       WRITE (6, '(A,I2,A,I6, 3A)')'Colour ',value, ': ', n_trace, ' minima read in from ', TRIM(file_trace), '.'381:       WRITE (6, '(A,I2,A,I6, 3A)')'Colour ',value, ': ', n_trace, ' minima read in from ', TRIM(file_trace), '.'
384:   382:   
385:    END SUBROUTINE READ_TRFILE383:    END SUBROUTINE READ_TRFILE
386: !!384: !!
387: ! READ_PAIRFILE(CH(120) FILE_PAIRS, INT VALUE, INT(:,:,:) :: VALUES)385: ! READ_PAIRFILE(CH(120) FILE_PAIRS, INT VALUE, INT(:,:,:) :: VALUES){{{
388:    SUBROUTINE READ_PAIRFILE(FILE_PAIRS, VALUE, VALUES)386:    SUBROUTINE READ_PAIRFILE(FILE_PAIRS, VALUE, VALUES)
389:       IMPLICIT NONE387:       IMPLICIT NONE
390:       INTEGER :: VALUES(:,:,:)388:       INTEGER :: VALUES(:,:,:)
391:       INTEGER :: ERR, I, N_PAIRS, VALUE389:       INTEGER :: ERR, I, N_PAIRS, VALUE
392:       CHARACTER(LEN=120) :: FILE_PAIRS 390:       CHARACTER(LEN=120) :: FILE_PAIRS 
393:       391:       
394:       CALL COUNT_MIN(FILE_PAIRS, N_PAIRS)392:       CALL COUNT_MIN(FILE_PAIRS, N_PAIRS)
395:       OPEN (UNIT=22, FILE=TRIM(FILE_PAIRS), STATUS='OLD', IOSTAT=ERR)393:       OPEN (UNIT=22, FILE=TRIM(FILE_PAIRS), STATUS='OLD', IOSTAT=ERR)
396:       IF (ERR /= 0) THEN394:       IF (ERR /= 0) THEN
397:       WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_pairs)395:       WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_pairs)
404:         CLOSE (22)402:         CLOSE (22)
405:         WRITE (6, '(A,I2,A,I6, 3A)')'Colour ',value, ': ', n_pairs, ' pairs of minima read in from ', TRIM(file_pairs), '.'403:         WRITE (6, '(A,I2,A,I6, 3A)')'Colour ',value, ': ', n_pairs, ' pairs of minima read in from ', TRIM(file_pairs), '.'
406:       ELSE404:       ELSE
407:         DO I=1, N_PAIRS405:         DO I=1, N_PAIRS
408:           READ (22, *) VALUES(I, 1, 1), VALUES(I, 1, 2)406:           READ (22, *) VALUES(I, 1, 1), VALUES(I, 1, 2)
409:         END DO407:         END DO
410:         CLOSE (22)408:         CLOSE (22)
411:         WRITE (6, '(A,I6,A,I6, 3A)')'Colours ',n_pairs, ': ', n_pairs, ' pairs of minima read in from ', TRIM(file_pairs), '.'409:         WRITE (6, '(A,I6,A,I6, 3A)')'Colours ',n_pairs, ': ', n_pairs, ' pairs of minima read in from ', TRIM(file_pairs), '.'
412:       ENDIF 410:       ENDIF 
413:    END SUBROUTINE READ_PAIRFILE411:    END SUBROUTINE READ_PAIRFILE
 412: ! }}}
414: !!413: !!
415: ! GET_DP(DP VALUE, SUCCESS) 414: ! GET_DP(DP VALUE, SUCCESS) 
416:    SUBROUTINE GET_DP(VALUE, SUCCESS)415:    SUBROUTINE GET_DP(VALUE, SUCCESS)
417:       IMPLICIT NONE416:       IMPLICIT NONE
418:       DOUBLE PRECISION, INTENT(INOUT) :: VALUE417:       DOUBLE PRECISION, INTENT(INOUT) :: VALUE
419:       LOGICAL, INTENT(INOUT), OPTIONAL :: SUCCESS418:       LOGICAL, INTENT(INOUT), OPTIONAL :: SUCCESS
420:       DOUBLE PRECISION :: TEMP419:       DOUBLE PRECISION :: TEMP
421:       INTEGER :: OUTCOME, ERR420:       INTEGER :: OUTCOME, ERR
422:       CHARACTER(LEN=TOT_LENGTH) :: ITEM421:       CHARACTER(LEN=TOT_LENGTH) :: ITEM
423:       CALL NEXT_ITEM(ITEM, OUTCOME)422:       CALL NEXT_ITEM(ITEM, OUTCOME)
609:    IMPLICIT NONE608:    IMPLICIT NONE
610: ! Parameters 609: ! Parameters 
611:    TYPE TRANSITION_STATE610:    TYPE TRANSITION_STATE
612:       DOUBLE PRECISION :: E611:       DOUBLE PRECISION :: E
613:       INTEGER :: N, MIN1, MIN2612:       INTEGER :: N, MIN1, MIN2
614:    END TYPE TRANSITION_STATE613:    END TYPE TRANSITION_STATE
615: 614: 
616:    CHARACTER(LEN=3) :: PG615:    CHARACTER(LEN=3) :: PG
617:    CHARACTER(LEN=8) :: MIN_TRIM, BRANCH_TRIM, BRANCH_TRIM2616:    CHARACTER(LEN=8) :: MIN_TRIM, BRANCH_TRIM, BRANCH_TRIM2
618:    DOUBLE PRECISION :: B_HIGH, B_LOW, ENERGY, FRAC, LPAFS, &617:    DOUBLE PRECISION :: B_HIGH, B_LOW, ENERGY, FRAC, LPAFS, &
619:       & X1, X2, X3, X_POS, Y1, Y2, Y3, Y_POS, PADDING, E_GMIN, SPLIT_OPTION, E_GMIN_CONN618:       & X1, X2, X3, X_POS, Y1, Y2, Y3, Y_POS, PADDING, E_GMIN, SPLIT_OPTION
620:    TYPE(TRANSITION_STATE), DIMENSION(:), ALLOCATABLE :: TS619:    TYPE(TRANSITION_STATE), DIMENSION(:), ALLOCATABLE :: TS
621:    INTEGER :: I, J, K, P, Q, S, R, F, C, MM, NCONNMAX, J1, NDEAD, NCYCLE, NUNCONA, NLEFTMIN, NLEFTTS620:    INTEGER :: I, J, K, P, Q, S, R, F, C, MM, NCONNMAX, J1, NDEAD, NCYCLE, NUNCONA, NLEFTMIN, NLEFTTS
622:    INTEGER :: BASIN_NO, ERR, H_PG, MIN1, MIN2, MIN_TEMP, N_BR, N_COLS, &621:    INTEGER :: BASIN_NO, ERR, H_PG, MIN1, MIN2, MIN_TEMP, N_BR, N_COLS, &
623:       & N_NODES, N_TS, PATH, USED, BIG_ONES, BASIN_GMIN, GMIN, GMIN_CONN622:       & N_NODES, N_TS, PATH, USED, BIG_ONES, BASIN_GMIN, GMIN
624:    INTEGER, DIMENSION(:), ALLOCATABLE :: CONNECT, END_M, INDX1, SORTED623:    INTEGER, DIMENSION(:), ALLOCATABLE :: CONNECT, END_M, INDX1, SORTED
625:    DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: FSORTED624:    DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: FSORTED
626:    LOGICAL :: AGAIN, CHANGED625:    LOGICAL :: AGAIN, CHANGED
627:    INTEGER, ALLOCATABLE :: PLUS(:), MINUS(:), NDISTA(:), MAP(:)626:    INTEGER, ALLOCATABLE :: PLUS(:), MINUS(:), NDISTA(:), MAP(:)
628:    LOGICAL, ALLOCATABLE :: DEADTS(:)627:    LOGICAL, ALLOCATABLE :: DEADTS(:)
629:    INTEGER NDUMMY, NN, NCHAIN, RMAX 628:    INTEGER NDUMMY, NN, NCHAIN, RMAX 
630:    DOUBLE PRECISION VMIN, VMAX, DUMMY,R2629:    DOUBLE PRECISION VMIN, VMAX, DUMMY,R2
631:    DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: END_E, TSEN630:    DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: END_E, TSEN
632:    DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: BRANCH_XY631:    DOUBLE PRECISION, DIMENSION(:,:,:), ALLOCATABLE :: BRANCH_XY
633:    INTEGER, ALLOCATABLE :: SAVEID(:)632:    INTEGER, ALLOCATABLE :: SAVEID(:)
689: !     READ (20, *) j, m(i)688: !     READ (20, *) j, m(i)
690: !  Standard PATHSAMPLE.2.0 format689: !  Standard PATHSAMPLE.2.0 format
691:       READ (20, *) M(I)690:       READ (20, *) M(I)
692:       IF (M(I) < E_GMIN) THEN691:       IF (M(I) < E_GMIN) THEN
693:          E_GMIN = M(I)692:          E_GMIN = M(I)
694:          GMIN = I693:          GMIN = I
695:       END IF694:       END IF
696:    END DO695:    END DO
697:    CLOSE (20)696:    CLOSE (20)
698:    WRITE (6, '(I6, 3A)') n_min, ' minima read in from ', TRIM(file_min), '.'697:    WRITE (6, '(I6, 3A)') n_min, ' minima read in from ', TRIM(file_min), '.'
699:    WRITE (6, '(A,2(F18.10),A)') ' Global minimum at index, energy ',GMIN,E_GMIN,'.' 
700:    IF ((LOWEST <= 0).OR.(LOWEST > N_MIN)) LOWEST = N_MIN698:    IF ((LOWEST <= 0).OR.(LOWEST > N_MIN)) LOWEST = N_MIN
701: 699: 
702: 700: 
703: !  Procure transition state info.701: !  Procure transition state info.
704:    CALL COUNT_TS(FILE_TS, N_TS, B_HIGH, B_LOW)702:    CALL COUNT_TS(FILE_TS, N_TS, B_HIGH, B_LOW)
705:    ALLOCATE (TS(N_TS),DEADTS(N_TS))703:    ALLOCATE (TS(N_TS),DEADTS(N_TS))
706:    I = 1704:    I = 1
707:    OPEN (UNIT=20, FILE=TRIM(FILE_TS), STATUS='OLD', IOSTAT=err)705:    OPEN (UNIT=20, FILE=TRIM(FILE_TS), STATUS='OLD', IOSTAT=err)
708:    IF (ERR /= 0) THEN706:    IF (ERR /= 0) THEN
709:       WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_ts)707:       WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_ts)
749:       PLUS(I)=TS(I)%MIN1747:       PLUS(I)=TS(I)%MIN1
750:       MINUS(I)=TS(I)%MIN2748:       MINUS(I)=TS(I)%MIN2
751:    ENDDO749:    ENDDO
752:    CALL GETNCONN(N_MIN,N_TS,NCONN,PLUS,MINUS,NCONNMIN,NCONNMAX,.FALSE.,TSEN)750:    CALL GETNCONN(N_MIN,N_TS,NCONN,PLUS,MINUS,NCONNMIN,NCONNMAX,.FALSE.,TSEN)
753:    DEADTS(1:N_TS)=.FALSE.751:    DEADTS(1:N_TS)=.FALSE.
754:    IF (NCONNMIN.GE.0) THEN752:    IF (NCONNMIN.GE.0) THEN
755:       NDEAD=0753:       NDEAD=0
756:       DO J1=1,N_MIN754:       DO J1=1,N_MIN
757:          IF (NCONN(J1).LE.NCONNMIN) THEN755:          IF (NCONN(J1).LE.NCONNMIN) THEN
758:             NDEAD=NDEAD+1756:             NDEAD=NDEAD+1
759:             IF (J1 == GMIN .AND. (CONNECTMIN==0 .OR. CONNECTMIN==J1)) THEN 
760:                WRITE (6, '(A)') ' Global minimum does not have enough connections; stopping.' 
761:                STOP 
762:             ELSEIF (J1 == CONNECTMIN) THEN 
763:                WRITE (6, '(A,I10,A)') ' Minimum ',CONNECTMIN,' does not have enough connections; stopping.' 
764:                STOP 
765:             ENDIF 
766:          ENDIF 757:          ENDIF 
767:       ENDDO758:       ENDDO
768:       PRINT '(3(I8,A))',NDEAD,' minima with ',NCONNMIN,' connections or fewer will not be considered'759:       PRINT '(3(I8,A))',NDEAD,' minima with ',NCONNMIN,' connections or fewer will not be considered'
769:    ENDIF760:    ENDIF
770: !761: !
771: !  Check that the stationary point database is actually connected, and remove762: !  Check that the stationary point database is actually connected, and remove
772: !  minima that lie in disjoint graphs.763: !  minima that lie in disjoint graphs.
773: !  Calculate minimum number of steps of each minimum from the global minimum.764: !  Calculate minimum number of steps of each minimum from the global minimum.
774: !765: !
775:    NDISTA(1:N_MIN)=1000000766:    NDISTA(1:N_MIN)=1000000
790:          NDISTA(PLUS(J1))=NDISTA(MINUS(J1))+1781:          NDISTA(PLUS(J1))=NDISTA(MINUS(J1))+1
791:       ENDIF782:       ENDIF
792:       IF (NDISTA(PLUS(J1))+1.LT.NDISTA(MINUS(J1))) THEN783:       IF (NDISTA(PLUS(J1))+1.LT.NDISTA(MINUS(J1))) THEN
793:          CHANGED=.TRUE.784:          CHANGED=.TRUE.
794:          NDISTA(MINUS(J1))=NDISTA(PLUS(J1))+1785:          NDISTA(MINUS(J1))=NDISTA(PLUS(J1))+1
795:       ENDIF786:       ENDIF
796:    ENDDO787:    ENDDO
797:    IF (CHANGED) GOTO 5788:    IF (CHANGED) GOTO 5
798:    NUNCONA=0789:    NUNCONA=0
799:    NLEFTMIN=0790:    NLEFTMIN=0
800:    E_GMIN_CONN=HUGE(E_GMIN_CONN) 
801:    DO J1=1,N_MIN791:    DO J1=1,N_MIN
802:       IF (NDISTA(J1).EQ.1000000) THEN792:       IF (NDISTA(J1).EQ.1000000) THEN
803:          NUNCONA=NUNCONA+1793:          NUNCONA=NUNCONA+1
804:          NCONN(J1)=0794:          NCONN(J1)=0
 795:    IF (CONNECTMIN.GT.0) THEN
 796:       NDISTA(CONNECTMIN)=0
 797:    ELSE
 798:       NDISTA(GMIN)=0
 799:    ENDIF
805:       ELSEIF (NCONN(J1).GT.NCONNMIN) THEN800:       ELSEIF (NCONN(J1).GT.NCONNMIN) THEN
806:          NLEFTMIN=NLEFTMIN+1801:          NLEFTMIN=NLEFTMIN+1
807:          IF (M(J1) < E_GMIN_CONN) THEN 
808:             E_GMIN_CONN = M(J1) 
809:             GMIN_CONN = J1 
810:          END IF 
811:       ENDIF802:       ENDIF
812:    ENDDO803:    ENDDO
813:    IF (CONNECTMIN.GT.0) THEN804:    IF (CONNECTMIN.GT.0) THEN
814:       PRINT '(3(A,I8))','Steps to minimum ',CONNECTMIN,' converged in ',NCYCLE-1,' cycles; disconnected=',NUNCONA805:       PRINT '(3(A,I8))','Steps to minimum ',CONNECTMIN,' converged in ',NCYCLE-1,' cycles; disconnected=',NUNCONA
815:    ELSE806:    ELSE
816:       PRINT '(2(A,I8))','Steps to global minimum converged in ',NCYCLE-1,' cycles; disconnected=',NUNCONA807:       PRINT '(2(A,I8))','Steps to global minimum converged in ',NCYCLE-1,' cycles; disconnected=',NUNCONA
817:    ENDIF808:    ENDIF
818: !809: !
819: ! Dump positions of disconnected minima.810: ! Dump positions of disconnected minima.
820: !811: !
821:    LUNIT=GETUNIT()812:    LUNIT=GETUNIT()
822:    OPEN(LUNIT,FILE='disconnected',STATUS='UNKNOWN')813:    OPEN(LUNIT,FILE='disconnected',STATUS='UNKNOWN')
823:    J2=0814:    J2=0
824:    DO J1=1,N_MIN815:    DO J1=1,N_MIN
825: !      IF (NCONN(J1).LT.1) THEN816:       IF (NCONN(J1).LT.1) THEN
826:       IF (NCONN(J1).LE.NCONNMIN) THEN 
827:          J2=J2+1817:          J2=J2+1
828:          WRITE(LUNIT,'(I8,G20.10,I8)') J2,M(J1),J1818:          WRITE(LUNIT,'(I8,G20.10,I8)') J2,M(J1),J1
829:       ENDIF819:       ENDIF
830:    ENDDO820:    ENDDO
831:    CLOSE(LUNIT)821:    CLOSE(LUNIT)
832: !822: !
833: !  Flag transition states to underconnected minima via DEADTS.823: !  Flag transition states to underconnected minima as DEAD.
834: !  NCONN only counts non-degenerate rearrangements as connections.824: !  NCONN only counts non-degenerate rearrangements as connections.
835: !825: !
836:    NLEFTTS=0826:    NLEFTTS=0
837:    DO J1=1,N_TS827:    DO J1=1,N_TS
838:       IF ((NCONN(PLUS(J1)).LE.NCONNMIN).OR.(NCONN(MINUS(J1)).LE.NCONNMIN)) DEADTS(J1)=.TRUE.828:       IF ((NCONN(PLUS(J1)).LE.NCONNMIN).OR.(NCONN(MINUS(J1)).LE.NCONNMIN)) DEADTS(J1)=.TRUE.
839:       IF (TS(J1)%E.GT.TSTHRESH) DEADTS(J1)=.TRUE.829:       IF (TS(J1)%E.GT.TSTHRESH) DEADTS(J1)=.TRUE.
840:       IF ((TS(J1)%E-M(TS(J1)%MIN1).GT.TSBARTHRESH).AND.(TS(J1)%E-M(TS(J1)%MIN2).GT.TSBARTHRESH)) DEADTS(J1)=.TRUE.830:       IF ((TS(J1)%E-M(TS(J1)%MIN1).GT.TSBARTHRESH).AND.(TS(J1)%E-M(TS(J1)%MIN2).GT.TSBARTHRESH)) DEADTS(J1)=.TRUE.
841:       IF (.NOT.DEADTS(J1)) NLEFTTS=NLEFTTS+1831:       IF (.NOT.DEADTS(J1)) NLEFTTS=NLEFTTS+1
842:    ENDDO832:    ENDDO
843:    PRINT '(A,2I8)','Number of remaining minima and transition states=',NLEFTMIN,NLEFTTS833:    PRINT '(A,2I8)','Number of remaining minima and transition states=',NLEFTMIN,NLEFTTS
844: 834: 
845:    IF (GMIN_CONN /= GMIN) THEN 
846:       WRITE (6, '(A,2(F18.10),A)') ' Lowest minimum satisfying connectivity criteria at index, energy ',GMIN_CONN,E_GMIN_CONN,'.' 
847:       GMIN = GMIN_CONN 
848:       E_GMIN = E_GMIN_CONN 
849:       IF (ZEROGM) THEN 
850:          WRITE (6, '(A)') ' Setting the energy of the lowest minimum on the tree to zero.' 
851:          DO I=1,N_MIN 
852:             M(I)=M(I)-E_GMIN_CONN 
853:          ENDDO 
854:          DO I=1,N_TS 
855:             TS(I)%E=TS(I)%E-E_GMIN_CONN 
856:          ENDDO 
857:       ENDIF 
858:    ENDIF 
859:  
860:    ALLOCATE (NODES(N_LEVELS))835:    ALLOCATE (NODES(N_LEVELS))
861:    ALLOCATE (BASIN(N_LEVELS, N_MIN))836:    ALLOCATE (BASIN(N_LEVELS, N_MIN))
862:    WRITE (6, *)837:    WRITE (6, *)
863: 838: 
864: !  Check existence of pick file rather than doing basin analysis and then failing.839: !  Check existence of pick file rather than doing basin analysis and then failing.
865:    IF (FILE_PICK /= '') THEN840:    IF (FILE_PICK /= '') THEN
866:       OPEN (UNIT=20, FILE=TRIM(FILE_PICK), STATUS='OLD', IOSTAT=err)841:       OPEN (UNIT=20, FILE=TRIM(FILE_PICK), STATUS='OLD', IOSTAT=err)
867:       IF (ERR /= 0) THEN842:       IF (ERR /= 0) THEN
868:          WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_pick)843:          WRITE (6, '(/,2A,/)') 'ERROR: Could not open ', TRIM(file_pick)
869:          STOP844:          STOP
924:         IF (.NOT.CHANGED) EXIT899:         IF (.NOT.CHANGED) EXIT
925:      ENDDO 900:      ENDDO 
926: !901: !
927: !  No need to remove empty groups and close up gaps. 902: !  No need to remove empty groups and close up gaps. 
928: !  Disconnected minima should all belong to group 0.903: !  Disconnected minima should all belong to group 0.
929: !  Minima that are not connected at this energy level but lie below it904: !  Minima that are not connected at this energy level but lie below it
930: !  and will be connected should be assigned to a non-zero basin. DJW905: !  and will be connected should be assigned to a non-zero basin. DJW
931: !906: !
932:      NCOUNT=NBASIN907:      NCOUNT=NBASIN
933:      DO J1=1,N_MIN908:      DO J1=1,N_MIN
934:         IF ((DJWBASIN(J1).EQ.0).AND.(NCONN(J1).GT.NCONNMIN).AND.(M(J1).LT.ENERGY+DELTA_E)) THEN909:         IF ((DJWBASIN(J1).EQ.0).AND.(NCONN(J1).GT.0).AND.(M(J1).LT.ENERGY+DELTA_E)) THEN
935:            NBASIN=NBASIN+1910:            NBASIN=NBASIN+1
936:            DJWBASIN(J1)=NBASIN911:            DJWBASIN(J1)=NBASIN
937:         ENDIF912:         ENDIF
938:      ENDDO 913:      ENDDO 
939: 914: 
940: !    DO J1=1,NBASIN915: !    DO J1=1,NBASIN
941: !       NCOUNT=0916: !       NCOUNT=0
942: !       DO J2=1,N_MIN917: !       DO J2=1,N_MIN
943: !          IF (DJWBASIN(J2).EQ.J1) THEN918: !          IF (DJWBASIN(J2).EQ.J1) THEN
944: !             NCOUNT=NCOUNT+1919: !             NCOUNT=NCOUNT+1


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0