hdiff output

r31726/commons.f90 2017-01-21 10:38:13.983556184 +0000 r31725/commons.f90 2017-01-21 10:38:14.835628249 +0000
  4:      &        NATOMS, MAXLENGTH, CONNECTIONS, HORDER, ERROR, MINSEP, NRWREACTANT, &  4:      &        NATOMS, MAXLENGTH, CONNECTIONS, HORDER, ERROR, MINSEP, NRWREACTANT, &
  5:      &        NATTEMPT, NNEW, NTOTAL, NEXCLUDE, NPERMGROUP, BHSTEPS, NGTSIZE,  &  5:      &        NATTEMPT, NNEW, NTOTAL, NEXCLUDE, NPERMGROUP, BHSTEPS, NGTSIZE,  &
  6:      &        MAXCONN, KAPPA, ISEED, NTAG, NDIHE, NCPU, GTINT, NCONNMAX, BESTPATHLENGTH, NGLY, &  6:      &        MAXCONN, KAPPA, ISEED, NTAG, NDIHE, NCPU, GTINT, NCONNMAX, BESTPATHLENGTH, NGLY, &
  7:      &        STARTMINA, STARTMINB, WHICHMIN, SECONDMIN, WHICHTS, MAXATTEMPT, COSTFUNCTIONPOWER, &  7:      &        STARTMINA, STARTMINB, WHICHMIN, SECONDMIN, WHICHTS, MAXATTEMPT, COSTFUNCTIONPOWER, &
  8:      &        NPAIRDONE, NMINDONE, NPAIRFRQ, CHECKSPS, CHECKSPF, &  8:      &        NPAIRDONE, NMINDONE, NPAIRFRQ, CHECKSPS, CHECKSPF, &
  9:      &        BISECTSTEPS, BISECTMAXATTEMPTS, NDIAGEIG, QRELONE, QRELTWO, MAXTSATTEMPTS, &  9:      &        BISECTSTEPS, BISECTMAXATTEMPTS, NDIAGEIG, QRELONE, QRELTWO, MAXTSATTEMPTS, &
 10:      &        INTCONSEP, INTREPSEP, PAIRDISTMAX, PAIRDIST1, PAIRDIST2, PATOM1, PATOM2, NRANROT, & 10:      &        INTCONSEP, INTREPSEP, PAIRDISTMAX, PAIRDIST1, PAIRDIST2, PATOM1, PATOM2, NRANROT, &
 11:      &        NMINADDXYZ, LOCALPERMNEIGH, NRATESCYCLETEMPS, RATESUNIT, CONNMINSTART, DISTANCETO, & 11:      &        NMINADDXYZ, LOCALPERMNEIGH, NRATESCYCLETEMPS, RATESUNIT, CONNMINSTART, DISTANCETO, &
 12:      &        DISTANCETO1, DISTANCETO2, OSTART, OFINISH, PTSTART, PTFINISH, RFMULTIN, RFUNIT, & 12:      &        DISTANCETO1, DISTANCETO2, OSTART, OFINISH, PTSTART, PTFINISH, RFMULTIN, RFUNIT, &
 13:      &        RFKMCN, RFKMCSTEPS, NPEQ, MLPIN, MLPSTART, MLPOUT, MLPHIDDEN, NMLP, NOPT, CVSTARTMIN, CVENDMIN, CVINCMIN, & 13:      &        RFKMCN, RFKMCSTEPS, NPEQ, MLPIN, MLPSTART, MLPOUT, MLPHIDDEN, NMLP, NOPT, CVSTARTMIN, CVENDMIN, CVINCMIN, &
 14:      &        CONNECTMIN2F, CONNECTMIN2SAVE 14:      &        CONNECTMIN2F
 15:  15: 
 16:       INTEGER, ALLOCATABLE :: LOCATIONA(:), LOCATIONB(:) 16:       INTEGER, ALLOCATABLE :: LOCATIONA(:), LOCATIONB(:)
 17:       INTEGER, ALLOCATABLE :: NCONN(:)     ! reallocate MAXMIN when used 17:       INTEGER, ALLOCATABLE :: NCONN(:)     ! reallocate MAXMIN when used
 18:       INTEGER, ALLOCATABLE :: BESTPATH(:)   18:       INTEGER, ALLOCATABLE :: BESTPATH(:)  
 19:       INTEGER, ALLOCATABLE :: USEPAIRSMIN(:) 19:       INTEGER, ALLOCATABLE :: USEPAIRSMIN(:)
 20: ! 20: !
 21: ! I/O unit numbers 21: ! I/O unit numbers
 22: ! 22: !
 23:       INTEGER, PARAMETER :: UMINDATA=11, UTSDATA=12, UMIN=13, UTS=15 23:       INTEGER, PARAMETER :: UMINDATA=11, UTSDATA=12, UMIN=13, UTS=15
 24:  24: 


r31726/connectd.f90 2017-01-21 10:38:14.251578857 +0000 r31725/connectd.f90 2017-01-21 10:38:15.079648861 +0000
 17: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 17: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 18: ! 18: !
 19:  19: 
 20: ! 20: !
 21: !  Subroutine to provide candidate pairs of minima based on distance analysis 21: !  Subroutine to provide candidate pairs of minima based on distance analysis
 22: !  for pairs of minima. 22: !  for pairs of minima.
 23: ! 23: !
 24: SUBROUTINE CONNECTD(NAVAIL) 24: SUBROUTINE CONNECTD(NAVAIL)
 25: USE COMMONS, ONLY: NATOMS, UMIN, CONNECTMIN1, CONNECTMIN2, CONNECTDIST, DMIN1, DMIN2, TCONNECTDIST, TOPPOINTER, POINTERP, & 25: USE COMMONS, ONLY: NATOMS, UMIN, CONNECTMIN1, CONNECTMIN2, CONNECTDIST, DMIN1, DMIN2, TCONNECTDIST, TOPPOINTER, POINTERP, &
 26:   &               POINTERM, NMIN, PLUS, MINUS, BULKT, TWOD, DMINMAX, DEBUG, PERMDIST, BOXLX, BOXLY, BOXLZ, RIGIDBODY, & 26:   &               POINTERM, NMIN, PLUS, MINUS, BULKT, TWOD, DMINMAX, DEBUG, PERMDIST, BOXLX, BOXLY, BOXLZ, RIGIDBODY, &
 27:   &               ANGLEAXIS, PAIR1, PAIR2, NPAIRDONE, INTERPCOSTFUNCTION, CONNECTREGIONT, NOPT, CONNECTMIN2F, NCPU, & 27:   &               ANGLEAXIS, PAIR1, PAIR2, NPAIRDONE, INTERPCOSTFUNCTION, CONNECTREGIONT, NOPT, CONNECTMIN2F, NCPU
 28:   &               CONNECTMIN2SAVE 
 29: IMPLICIT NONE 28: IMPLICIT NONE
 30: INTEGER NUSED, MINS, MINF, NAVAIL, J1, J2, J3, LOOP2END 29: INTEGER NUSED, MINS, MINF, NAVAIL, J1, J2, J3, LOOP2END
 31: INTEGER, ALLOCATABLE :: VINT(:) 30: INTEGER, ALLOCATABLE :: VINT(:)
 32: DOUBLE PRECISION SPOINTS(NOPT), FPOINTS(NOPT), ELAPSED, TNEW, DISTANCE, RMAT(3,3), DIST2 31: DOUBLE PRECISION SPOINTS(NOPT), FPOINTS(NOPT), ELAPSED, TNEW, DISTANCE, RMAT(3,3), DIST2
 33:  32: 
 34: CALL CPU_TIME(ELAPSED) 33: CALL CPU_TIME(ELAPSED)
 35: ALLOCATE(VINT(DMINMAX)) 34: ALLOCATE(VINT(DMINMAX))
 36:  35: 
 37: NAVAIL=0 36: NAVAIL=0
 38: LOOP2END=CONNECTMIN2F 37: LOOP2END=CONNECTMIN2F
 39: IF (CONNECTMIN2F.EQ.-1) LOOP2END=NMIN 38: IF (CONNECTMIN2F.EQ.-1) LOOP2END=NMIN
 40: DO J1=CONNECTMIN1,NMIN 39: DO J1=CONNECTMIN1,NMIN
 41:    READ(UMIN,REC=J1) SPOINTS(1:NOPT) 40:    READ(UMIN,REC=J1) SPOINTS(1:NOPT)
 42:    IF (J1.GE.LOOP2END) LOOP2END=NMIN 41:    loop2: DO J2=CONNECTMIN2,MIN(LOOP2END,NMIN)
 43:    loop2: DO J2=MAX(CONNECTMIN2,J1+1),MIN(LOOP2END,NMIN) 42: !  loop2: DO J2=MAX(CONNECTMIN2,J1+1),NMIN
 44:  
 45: !     PRINT'(A,7I10)','connectd> J1,J2,CONNECTMIN1,CONNECTMIN2,CONNECTMIN2F,LOOP2END,NMIN=', & 
 46: !  &                   J1,J2,CONNECTMIN1,CONNECTMIN2,CONNECTMIN2F,LOOP2END,NMIN 
 47:  
 48: ! 43: !
 49: ! For a connectregion run allow connection attempts for local minima 44: ! For a connectregion run allow connection attempts for local minima
 50: ! that already have a direct connection. Otherwise we might miss 45: ! that already have a direct connection. Otherwise we might miss
 51: ! a lower path. 46: ! a lower path.
 52: ! 47: !
 53: !     IF (.NOT.CONNECTREGIONT) THEN 48: !     IF (.NOT.CONNECTREGIONT) THEN
 54:          J3=TOPPOINTER(J2)  !  sets J3 to the ts connected to minimum J2 with the highest value 49:          J3=TOPPOINTER(J2)  !  sets J3 to the ts connected to minimum J2 with the highest value
 55:          IF (J3.LE.0) GOTO 555  50:          IF (J3.LE.0) GOTO 555 
 56: 11       IF (PLUS(J3).EQ.J2) THEN 51: 11       IF (PLUS(J3).EQ.J2) THEN
 57:             IF (MINUS(J3).EQ.J1) CYCLE loop2 ! they are already connected 52:             IF (MINUS(J3).EQ.J1) CYCLE loop2 ! they are already connected
 58:             J3=POINTERP(J3) 53:             J3=POINTERP(J3)
 59:          ELSE 54:          ELSE
 60:             IF (PLUS(J3).EQ.J1) CYCLE loop2 ! they are already connected 55:             IF (PLUS(J3).EQ.J1) CYCLE loop2 ! they are already connected
 61:             J3=POINTERM(J3) 56:             J3=POINTERM(J3)
 62:          ENDIF 57:          ENDIF
 63:          IF (J3.GT.0) GOTO 11 ! check the next ts connected to minimum J2 58:          IF (J3.GT.0) GOTO 11 ! check the next ts connected to minimum J2
 64: 555      CONTINUE 59: 555      CONTINUE
 65:          DO J3=1,NPAIRDONE 60:          DO J3=1,NPAIRDONE
 66:             IF ((PAIR1(J3).EQ.J1).AND.(PAIR2(J3).EQ.J2)) THEN 61:             IF ((PAIR1(J3).EQ.J1).AND.(PAIR2(J3).EQ.J2)) CYCLE loop2 ! do not repeat searches!
 67:                IF (DEBUG) PRINT '(3(A,I8),A,G20.10)','connectd> pair ',J1,' and ',J2,' already connected' 62:             IF ((PAIR1(J3).EQ.J2).AND.(PAIR2(J3).EQ.J1)) CYCLE loop2 ! do not repeat searches!
 68:                CYCLE loop2 ! do not repeat searches! 
 69:             ENDIF 
 70:             IF ((PAIR1(J3).EQ.J2).AND.(PAIR2(J3).EQ.J1)) THEN 
 71:                IF (DEBUG) PRINT '(3(A,I8),A,G20.10)','connectd> pair ',J1,' and ',J2,' already connected' 
 72:                CYCLE loop2 ! do not repeat searches! 
 73:             ENDIF 
 74:          ENDDO 63:          ENDDO
 75: !     ENDIF 64: !     ENDIF
 76:     65:    
 77:          READ(UMIN,REC=J2) FPOINTS(1:NOPT) 66:          READ(UMIN,REC=J2) FPOINTS(1:NOPT)
 78:       67:      
 79:          CALL MINPERMDIST(SPOINTS,FPOINTS,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGIDBODY,RMAT,.FALSE.) 68:          CALL MINPERMDIST(SPOINTS,FPOINTS,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGIDBODY,RMAT,.FALSE.)
 80:       IF (INTERPCOSTFUNCTION) CALL MINPERMDIST(SPOINTS,FPOINTS,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2, & 69:       IF (INTERPCOSTFUNCTION) CALL MINPERMDIST(SPOINTS,FPOINTS,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2, &
 81:   &                                            RIGIDBODY,RMAT,INTERPCOSTFUNCTION) 70:   &                                            RIGIDBODY,RMAT,INTERPCOSTFUNCTION)
 82:  71: 
 83: !     PRINT '(A,2G20.10)', 'DISTANCE,CONNECTDIST=',DISTANCE,CONNECTDIST 
 84:       IF (DISTANCE.LE.CONNECTDIST) THEN 72:       IF (DISTANCE.LE.CONNECTDIST) THEN
 85:  73: 
 86:          NAVAIL=NAVAIL+1 74:          NAVAIL=NAVAIL+1
 87:          IF (NAVAIL.GT.DMINMAX) THEN 75:          IF (NAVAIL.GT.DMINMAX) THEN
 88:             VINT(1:DMINMAX)=DMIN1(1:DMINMAX) 76:             VINT(1:DMINMAX)=DMIN1(1:DMINMAX)
 89:             DEALLOCATE(DMIN1) 77:             DEALLOCATE(DMIN1)
 90:             ALLOCATE(DMIN1(2*DMINMAX)) 78:             ALLOCATE(DMIN1(2*DMINMAX))
 91:             DMIN1(1:DMINMAX)=VINT(1:DMINMAX) 79:             DMIN1(1:DMINMAX)=VINT(1:DMINMAX)
 92:        80:       
 93:             VINT(1:DMINMAX)=DMIN2(1:DMINMAX) 81:             VINT(1:DMINMAX)=DMIN2(1:DMINMAX)
 94:             DEALLOCATE(DMIN2) 82:             DEALLOCATE(DMIN2)
 95:             ALLOCATE(DMIN2(2*DMINMAX)) 83:             ALLOCATE(DMIN2(2*DMINMAX))
 96:             DMIN2(1:DMINMAX)=VINT(1:DMINMAX) 84:             DMIN2(1:DMINMAX)=VINT(1:DMINMAX)
 97:             DMINMAX=2*DMINMAX 85:             DMINMAX=2*DMINMAX
 98:             DEALLOCATE(VINT) 86:             DEALLOCATE(VINT)
 99:             ALLOCATE(VINT(DMINMAX)) 87:             ALLOCATE(VINT(DMINMAX))
100:          ENDIF 88:          ENDIF
101:          DMIN1(NAVAIL)=J1 89:          DMIN1(NAVAIL)=J1
102:          DMIN2(NAVAIL)=J2 90:          DMIN2(NAVAIL)=J2
103:          IF (DEBUG) PRINT '(3(A,I8),A,G20.10)','connectd> connection ',NAVAIL,' pair ',J1,' and ',J2,' distance=',DISTANCE 91:          IF (DEBUG) PRINT '(3(A,I8),A,G20.10)','connectd> connection ',NAVAIL,' pair ',J1,' and ',J2,' distance=',DISTANCE
104: !        IF (DMINMAX.GT.NCPU) THEN ! set a maximum number of candidates for each call to CONNECTDIST 92:          IF (DMINMAX.GT.NCPU) THEN ! set a maximum number of candidates for each call to CONNECTDIST
105:          IF (NAVAIL.GE.NCPU) THEN ! set a maximum number of candidates for each call to CONNECTDIST 
106:             CONNECTMIN1=J1 93:             CONNECTMIN1=J1
107:             CONNECTMIN2=J2+1 94:             CONNECTMIN2=J2+1
108:             IF (CONNECTMIN2.GT.MIN(LOOP2END,NMIN)) THEN 
109:                CONNECTMIN1=J1+1 
110:                IF (CONNECTMIN1.EQ.LOOP2END) LOOP2END=NMIN 
111:                CONNECTMIN2=MAX(CONNECTMIN2SAVE,CONNECTMIN1+1) 
112:             ENDIF 
113:             GOTO 777 95:             GOTO 777
114:          ENDIF 96:          ENDIF
115:       ENDIF 97:       ENDIF
116:    ENDDO loop2 98:    ENDDO loop2
117: !  CONNECTMIN2=0 ! this is only to allow an efficient restart 99: !  CONNECTMIN2=0 ! this is only to allow an efficient restart
118:    CONNECTMIN2=CONNECTMIN2SAVE 
119: ENDDO100: ENDDO
120: ! JMC commenting out the line below and the CONNECTMIN2=0 after loop2 (above) so that ALL possible new pairs will be 101: ! JMC commenting out the line below and the CONNECTMIN2=0 after loop2 (above) so that ALL possible new pairs will be 
121: ! considered next time this double loop is executed. pairs.data will make sure that each pair is only tried once. 102: ! considered next time this double loop is executed. pairs.data will make sure that each pair is only tried once. 
122: ! CONNECTMIN1=NMIN+1103: ! CONNECTMIN1=NMIN+1
123: 777 CONTINUE104: 777 CONTINUE
124: PRINT '(A,I8)','connectd> Number of available connection pairs to try=',NAVAIL105: PRINT '(A,I8)','connectd> Number of available connection pairs to try=',NAVAIL
125: 106: 
126: CALL CPU_TIME(TNEW)107: CALL CPU_TIME(TNEW)
127: TCONNECTDIST=TCONNECTDIST+TNEW-ELAPSED108: TCONNECTDIST=TCONNECTDIST+TNEW-ELAPSED
128: DEALLOCATE(VINT)109: DEALLOCATE(VINT)


r31726/keywords.f 2017-01-21 10:38:14.587607274 +0000 r31725/keywords.f 2017-01-21 10:38:15.315668747 +0000
766:          IF (NITEMS.GT.2) CALL READI(MAXTSATTEMPTS)766:          IF (NITEMS.GT.2) CALL READI(MAXTSATTEMPTS)
767: C767: C
768: C  Specify that the database is grown by attempting all connections between768: C  Specify that the database is grown by attempting all connections between
769: C  known minima within a distance cutoff.769: C  known minima within a distance cutoff.
770: C770: C
771:       ELSE IF (WORD.EQ.'CONNECTREGION') THEN771:       ELSE IF (WORD.EQ.'CONNECTREGION') THEN
772:          CONNECTREGIONT=.TRUE.772:          CONNECTREGIONT=.TRUE.
773:          IF (NITEMS.GT.1) CALL READI(CONNECTMIN1)773:          IF (NITEMS.GT.1) CALL READI(CONNECTMIN1)
774:          IF (NITEMS.GT.2) CALL READI(CONNECTMIN2)774:          IF (NITEMS.GT.2) CALL READI(CONNECTMIN2)
775:          IF (NITEMS.GT.3) CALL READF(CONNECTDIST)775:          IF (NITEMS.GT.3) CALL READF(CONNECTDIST)
776:          IF (NITEMS.GT.4) CALL READI(CONNECTMIN2F)776:          IF (NITEMS.GT.5) CALL READI(CONNECTMIN2F)
777:          CONNECTMIN2SAVE=CONNECTMIN2777: 
778: C778: C
779: C Connect unceonnected minima to AB set using either the lowest energy minima779: C Connect unceonnected minima to AB set using either the lowest energy minima
780: C or the minima closest in energy or distance to a reference780: C or the minima closest in energy or distance to a reference
781: C781: C
782:       782:       
783:       ELSE IF (WORD.EQ.'CONNECTUNC') THEN783:       ELSE IF (WORD.EQ.'CONNECTUNC') THEN
784:          CONUNCONT=.TRUE.784:          CONUNCONT=.TRUE.
785:          PRINT '(A)',' keywords> Attempt to connect unconnected minima'785:          PRINT '(A)',' keywords> Attempt to connect unconnected minima'
786:          CALL READU(WW)786:          CALL READU(WW)
787:          IF (TRIM(ADJUSTL(WW))=='LOWEST') THEN787:          IF (TRIM(ADJUSTL(WW))=='LOWEST') THEN
1450:       ELSE IF (WORD.EQ.'MLLJAT3') THEN1450:       ELSE IF (WORD.EQ.'MLLJAT3') THEN
1451:          MLLJAT3=.TRUE.1451:          MLLJAT3=.TRUE.
1452: !1452: !
1453: ! Three layer neural network (multilayer perceptron) with1453: ! Three layer neural network (multilayer perceptron) with
1454: ! MLPIN inputs (columns per data item)1454: ! MLPIN inputs (columns per data item)
1455: ! MLPOUT outputs1455: ! MLPOUT outputs
1456: ! MLPHIDDEN hidden nodes1456: ! MLPHIDDEN hidden nodes
1457: ! MLPDATA data lines in MLPdata file (last column MLPIN+1 for correct outputs, numbered one to MLPOUT)1457: ! MLPDATA data lines in MLPdata file (last column MLPIN+1 for correct outputs, numbered one to MLPOUT)
1458: ! MLPLAMBDA coefficient for regularisation1458: ! MLPLAMBDA coefficient for regularisation
1459: !1459: !
1460:       ELSE IF (WORD.EQ.'MLPVB3') THEN 
1461:          MLPB3T=.TRUE. 
1462:          ZSYM='  ' 
1463:          CALL READI(MLPIN)      ! number of inputs (data items after outcome) 
1464:          CALL READI(MLPSTART) ! starting position in data list, not counting outcome 
1465:          CALL READI(MLPHIDDEN) 
1466:          CALL READI(MLPOUT) 
1467: !        CALL READI(MLPDATA) 
1468: !        IF (NITEMS.GT.5) CALL READF(MLPLAMBDA) 
1469:          WRITE(*,'(A,5I8,G20.10)') ' keywords> MLPVB3 vector bias nodes and Nin, Ninstart, Nhidden, Nout=', 
1470:      &                                MLPIN,MLPSTART,MLPHIDDEN,MLPOUT 
1471:          NMLP=MLPHIDDEN*(MLPIN+MLPOUT)+MLPHIDDEN+MLPOUT 
1472:          NATOMS=NMLP 
1473:          NOPT=NMLP 
1474:       ELSE IF (WORD.EQ.'MLPB3NEW') THEN1460:       ELSE IF (WORD.EQ.'MLPB3NEW') THEN
1475:          MLPB3T=.TRUE.1461:          MLPB3T=.TRUE.
1476:          ZSYM='  '1462:          ZSYM='  '
1477:          CALL READI(MLPIN)      ! number of inputs (data items after outcome)1463:          CALL READI(MLPIN)      ! number of inputs (data items after outcome)
1478:          CALL READI(MLPSTART) ! starting position in data list, not counting outcome1464:          CALL READI(MLPSTART) ! starting position in data list, not counting outcome
1479:          CALL READI(MLPHIDDEN)1465:          CALL READI(MLPHIDDEN)
1480:          CALL READI(MLPOUT)1466:          CALL READI(MLPOUT)
1481: !        CALL READI(MLPDATA)1467: !        CALL READI(MLPDATA)
1482: !        IF (NITEMS.GT.5) CALL READF(MLPLAMBDA)1468: !        IF (NITEMS.GT.5) CALL READF(MLPLAMBDA)
1483:          WRITE(*,'(A,5I8,G20.10)') ' keywords> MLP3 new potential bias nodes and Nin, Ninstart, Nhidden, Nout=',1469:          WRITE(*,'(A,5I8,G20.10)') ' keywords> MLP3 new potential bias nodes and Nin, Ninstart, Nhidden, Nout=',


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0