hdiff output

r31027/decide.f90 2016-08-16 15:30:16.795734374 +0100 r31026/decide.f90 2016-08-16 15:30:17.551744444 +0100
 18: ! 18: !
 19: MODULE DECIDEWHATTOCONNECT 19: MODULE DECIDEWHATTOCONNECT
 20:      IMPLICIT NONE 20:      IMPLICIT NONE
 21:  21: 
 22:      CONTAINS 22:      CONTAINS
 23:  23: 
 24:      SUBROUTINE DECIDE 24:      SUBROUTINE DECIDE
 25:           USE PORFUNCS 25:           USE PORFUNCS
 26:           USE CONNECTDATA 26:           USE CONNECTDATA
 27:           USE CONNECTUTILS,ONLY: GETDISTANCE,SETDISTANCE,GETINTERP,NREDO 27:           USE CONNECTUTILS,ONLY: GETDISTANCE,SETDISTANCE,GETINTERP,NREDO
 28:           USE KEY, ONLY : INTCONSTRAINTT, INTLJT, MAXGAPT 28:           USE KEY, ONLY : INTCONSTRAINTT, INTLJT
 29:           USE KEYDECIDE 29:           USE KEYDECIDE
 30:           USE KEYCONNECT, ONLY : IMAGEMAX 30:           USE KEYCONNECT, ONLY : IMAGEMAX
 31:           IMPLICIT NONE 31:           IMPLICIT NONE
 32:  32: 
 33:           ! use Dijkstra's algorithm to find the shortest path between the original two endpoints. 33:           ! use Dijkstra's algorithm to find the shortest path between the original two endpoints.
 34:           ! The edge weights are zero for minima connected by a single ts, infinity for pairs 34:           ! The edge weights are zero for minima connected by a single ts, infinity for pairs
 35:           ! where we have already tried the maximum allowed connections, and the minimum distance from 35:           ! where we have already tried the maximum allowed connections, and the minimum distance from
 36:           ! mind (possibly squared) otherwise. 36:           ! mind (possibly squared) otherwise.
 37:           ! DIJKSTRA should return the number of connections to try from this shortest path, and the 37:           ! DIJKSTRA should return the number of connections to try from this shortest path, and the
 38:           ! corresponding pairs of minima. 38:           ! corresponding pairs of minima.
 39:           ! Implementation of Dijkstra's algorithm for finding shortest paths in an UNconnected database 39:           ! Implementation of Dijkstra's algorithm for finding shortest paths in an UNconnected database
 40:           ! Weights edges of graph according to mi(i)%data%D(j) or mi(i)%data%INTERP(j) (i>j) 40:           ! Weights edges of graph according to mi(i)%data%D(j) or mi(i)%data%INTERP(j) (i>j)
 41:           ! Weight=0 if connected by a single ts 41:           ! Weight=0 if connected by a single ts
 42:           ! Weight=infinity if the maximum tryconnect attempts have been done for this pair 42:           ! Weight=infinity if the maximum tryconnect attempts have been done for this pair
 43:           ! Weight=mind(i,j) otherwise 43:           ! Weight=mind(i,j) otherwise
 44: INTEGER :: I, NDUMMY, BEGIN, END, NSTEP, J, ISTAT, NDMAX 44: INTEGER :: I, NDUMMY, BEGIN, END, NSTEP, J, ISTAT
 45: TYPE MINIMUM 45: TYPE MINIMUM
 46:    INTEGER :: PREVMIN                             ! PREVIOUS MIN/TS IN SHORTEST PATH 46:    INTEGER :: PREVMIN                             ! PREVIOUS MIN/TS IN SHORTEST PATH
 47:    DOUBLE PRECISION :: D                          ! DISTANCE FROM STARTING POINT 47:    DOUBLE PRECISION :: D                          ! DISTANCE FROM STARTING POINT
 48:    LOGICAL :: PERMANENT                           ! ONCE IN PERMANENT SET, THE MINIMUM's 48:    LOGICAL :: PERMANENT                           ! ONCE IN PERMANENT SET, THE MINIMUM's
 49:                                                   ! label cannot be changed 49:                                                   ! label cannot be changed
 50: END TYPE MINIMUM 50: END TYPE MINIMUM
 51: TYPE(MINIMUM), DIMENSION(:), ALLOCATABLE :: DIJMIN 51: TYPE(MINIMUM), DIMENSION(:), ALLOCATABLE :: DIJMIN
 52: TYPE PATHWAY 52: TYPE PATHWAY
 53:    INTEGER :: DIJMIN, DIJTS 53:    INTEGER :: DIJMIN, DIJTS
 54: END TYPE PATHWAY 54: END TYPE PATHWAY
 55: DOUBLE PRECISION :: WEIGHT, MINWEIGHT, DUMMYDJW, DIST, DMAX 55: DOUBLE PRECISION :: WEIGHT, MINWEIGHT, DUMMYDJW, DIST
 56: INTEGER JS, JF, J1, J2 56: INTEGER JS, JF, J1, J2
 57:  57: 
 58: 975 CONTINUE 58: 975 CONTINUE
 59:  59: 
 60: ! Initialise connections 60: ! Initialise connections
 61:    ALLOCATE(DIJMIN(NMIN)) 61:    ALLOCATE(DIJMIN(NMIN))
 62:    DIJMIN(1:NMIN)%PREVMIN=0 62:    DIJMIN(1:NMIN)%PREVMIN=0
 63:    DIJMIN(1:NMIN)%D=HUGE(1.0D0) 63:    DIJMIN(1:NMIN)%D=HUGE(1.0D0)
 64:    DIJMIN(1:NMIN)%PERMANENT=.FALSE. 64:    DIJMIN(1:NMIN)%PERMANENT=.FALSE.
 65:  65: 
224: !         MINWEIGHT=MINWEIGHT224: !         MINWEIGHT=MINWEIGHT
225: !    ELSE225: !    ELSE
226: !         MINWEIGHT=MINWEIGHT**(1.0D0/COSTFUNCTIONPOWER)226: !         MINWEIGHT=MINWEIGHT**(1.0D0/COSTFUNCTIONPOWER)
227: !    ENDIF227: !    ENDIF
228:      WRITE(*,'(A,I6,A,I6,A,G15.5)') ' decide> Shortest path in Dijkstra has ',nstep,' steps with ',NDIJPAIRS, &228:      WRITE(*,'(A,I6,A,I6,A,G15.5)') ' decide> Shortest path in Dijkstra has ',nstep,' steps with ',NDIJPAIRS, &
229:                                  ' missing connections, weight=',MINWEIGHT229:                                  ' missing connections, weight=',MINWEIGHT
230:      WRITE(*,'(A)') ' decide> The unconnected minima in the chain and their distances are:'230:      WRITE(*,'(A)') ' decide> The unconnected minima in the chain and their distances are:'
231:   I=END231:   I=END
232:   NSTEP=0232:   NSTEP=0
233:   NDIJPAIRS=0233:   NDIJPAIRS=0
234:   DMAX=-1.0D0 
235:   DO 234:   DO 
236:      IF (I==BEGIN) EXIT235:      IF (I==BEGIN) EXIT
237:      NSTEP=NSTEP + 1236:      NSTEP=NSTEP + 1
238:      DUMMYDJW=GETDISTANCE(I,DIJMIN(I)%PREVMIN)237:      DUMMYDJW=GETDISTANCE(I,DIJMIN(I)%PREVMIN)
239: !    WRITE(*,'(I6,F12.2)',ADVANCE="NO") I,DUMMYDJW238: !    WRITE(*,'(I6,F12.2)',ADVANCE="NO") I,DUMMYDJW
240:      IF (DUMMYDJW>0.0D0) THEN239:      IF (DUMMYDJW>0.0D0) THEN
241: !        PRINT *, I,DUMMYDJW,DIJMIN(I)%PREVMIN240: !        PRINT *, I,DUMMYDJW,DIJMIN(I)%PREVMIN
242:         WRITE(*,'(I6,F12.2,I6)',ADVANCE="NO") I,DUMMYDJW,DIJMIN(I)%PREVMIN241:         WRITE(*,'(I6,F12.2,I6)',ADVANCE="NO") I,DUMMYDJW,DIJMIN(I)%PREVMIN
243:         NDIJPAIRS=NDIJPAIRS+1242:         NDIJPAIRS=NDIJPAIRS+1
244:         DIJPAIR(NDIJPAIRS,1)=I243:         DIJPAIR(NDIJPAIRS,1)=I
245:         DIJPAIR(NDIJPAIRS,2)=DIJMIN(I)%PREVMIN244:         DIJPAIR(NDIJPAIRS,2)=DIJMIN(I)%PREVMIN
246:         DIJPAIRDIST(NDIJPAIRS)=DUMMYDJW245:         DIJPAIRDIST(NDIJPAIRS)=DUMMYDJW
247:         IF (DUMMYDJW.GT.DMAX) THEN 
248:            DMAX=DUMMYDJW 
249:            NDMAX=NDIJPAIRS 
250:         ENDIF 
251:      ENDIF246:      ENDIF
252:      I=DIJMIN(I)%PREVMIN247:      I=DIJMIN(I)%PREVMIN
253:   ENDDO248:   ENDDO
254: ! WRITE(*,'(I6)') BEGIN249: ! WRITE(*,'(I6)') BEGIN
255:   WRITE(*,'(A)') ' '250:   WRITE(*,'(A)') ' '
256:   IF (MAXGAPT) THEN 
257:      PRINT '(A,G20.10,A,I8)',' decide> Largest distance is ',DMAX,' for gap ',NDMAX 
258:      DIJPAIRDIST(1)=DMAX 
259:      NDIJPAIRS=1 
260:      DIJPAIR(1,1)=DIJPAIR(NDMAX,1) 
261:      DIJPAIR(1,2)=DIJPAIR(NDMAX,2) 
262:   ENDIF 
263: 251: 
264:   DEALLOCATE(DIJMIN)252:   DEALLOCATE(DIJMIN)
265: 253: 
266:      END SUBROUTINE DECIDE254:      END SUBROUTINE DECIDE
267: 255: 
268: END MODULE DECIDEWHATTOCONNECT256: END MODULE DECIDEWHATTOCONNECT


r31027/key.f90 2016-08-16 15:30:17.043737679 +0100 r31026/key.f90 2016-08-16 15:30:17.799747743 +0100
 47:      &        INTFREEZET, LPERMDIST, CHECKNEGATIVET, CHECKOVERLAPT, ACK1, ACK2, CONDATT, USERPOTT, & 47:      &        INTFREEZET, LPERMDIST, CHECKNEGATIVET, CHECKOVERLAPT, ACK1, ACK2, CONDATT, USERPOTT, &
 48:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, & 48:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, &
 49:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, & 49:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, &
 50:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, & 50:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, &
 51:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, & 51:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, &
 52:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, & 52:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, &
 53:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, & 53:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, &
 54:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, & 54:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, &
 55:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, & 55:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, &
 56:      &        MALONALDEHYDE, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, MLPB3NEWT, & 56:      &        MALONALDEHYDE, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, MLPB3NEWT, &
 57:      &        QCIPOTT, QCIPOT2T, QCIRADSHIFTT, QCINOREPINT, QCIAMBERT, SLERPT, NOTRANSROTT, MAXGAPT 57:      &        QCIPOTT, QCIPOT2T, QCIRADSHIFTT, QCINOREPINT, QCIAMBERT, SLERPT, NOTRANSROTT
 58:  58: 
 59: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted) 59: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted)
 60:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential? 60:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential?
 61:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z) 61:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z)
 62:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1 62:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1
 63:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads 63:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads
 64:       DOUBLE PRECISION :: HARMPOLY_BONLEN = 0.0d0 ! equilibrium length of springs between beads 64:       DOUBLE PRECISION :: HARMPOLY_BONLEN = 0.0d0 ! equilibrium length of springs between beads
 65:       DOUBLE PRECISION :: HARMPOLY_K = 1.0d2 ! force constant of the springs 65:       DOUBLE PRECISION :: HARMPOLY_K = 1.0d2 ! force constant of the springs
 66:  66: 
 67: ! hk286 > generalised THOMSON problem 67: ! hk286 > generalised THOMSON problem


r31027/keywords.f 2016-08-16 15:30:17.303741138 +0100 r31026/keywords.f 2016-08-16 15:30:18.063751258 +0100
937:          MLP3T=.FALSE.937:          MLP3T=.FALSE.
938:          MLPB3T=.FALSE.938:          MLPB3T=.FALSE.
939:          MLPB3NEWT=.FALSE.939:          MLPB3NEWT=.FALSE.
940:          MLPNEWREG=.FALSE.940:          MLPNEWREG=.FALSE.
941:          MLPPROB=.FALSE.941:          MLPPROB=.FALSE.
942:          MLPDONE=.FALSE.942:          MLPDONE=.FALSE.
943:          MLPNORM=.FALSE.943:          MLPNORM=.FALSE.
944:          MLPLAMBDA=0.0D0944:          MLPLAMBDA=0.0D0
945:          MLPDATSTART=1945:          MLPDATSTART=1
946: 946: 
947:          MAXGAPT=.FALSE. 
948:  
949:          MALONALDEHYDE=.FALSE.947:          MALONALDEHYDE=.FALSE.
950: 948: 
951:          CLSTRINGT=.FALSE.949:          CLSTRINGT=.FALSE.
952:          CLSTRINGTST=.FALSE.950:          CLSTRINGTST=.FALSE.
953:          IF (FILTH2.EQ.0) THEN951:          IF (FILTH2.EQ.0) THEN
954:             OPEN (5,FILE='odata',STATUS='OLD')952:             OPEN (5,FILE='odata',STATUS='OLD')
955:          ELSE953:          ELSE
956:             WRITE(OTEMP,*) FILTH2954:             WRITE(OTEMP,*) FILTH2
957:             WRITE(OSTRING,'(A)') 'odata.' // TRIM(ADJUSTL(OTEMP))955:             WRITE(OSTRING,'(A)') 'odata.' // TRIM(ADJUSTL(OTEMP))
958:             OPEN (5,FILE=OSTRING,STATUS='OLD')956:             OPEN (5,FILE=OSTRING,STATUS='OLD')
3675: ! The maximum energy increase above which mylbfgs will reject a proposed step.3673: ! The maximum energy increase above which mylbfgs will reject a proposed step.
3676: ! 3674: ! 
3677:          ELSE IF (WORD.EQ.'MAXERISE') THEN3675:          ELSE IF (WORD.EQ.'MAXERISE') THEN
3678:             CALL READF(MAXERISE)3676:             CALL READF(MAXERISE)
3679:             IF (NITEMS.GT.1) CALL READF(XMAXERISE)3677:             IF (NITEMS.GT.1) CALL READF(XMAXERISE)
3680: ! 3678: ! 
3681: ! Maximum number of failures allowed in a minimisation before giving up.3679: ! Maximum number of failures allowed in a minimisation before giving up.
3682: ! 3680: ! 
3683:          ELSE IF (WORD.EQ.'MAXFAIL') THEN3681:          ELSE IF (WORD.EQ.'MAXFAIL') THEN
3684:             IF (NITEMS.GT.1) CALL READI(NFAILMAX)3682:             IF (NITEMS.GT.1) CALL READI(NFAILMAX)
3685: ! 
3686: ! Specify single connection attempt for largest gap in current Dijkstra selected chain. 
3687: !  
3688:          ELSE IF (WORD.EQ.'MAXGAP') THEN 
3689:             MAXGAPT=.TRUE. 
3690: ! 3683: ! 
3691: ! For the growing string double-ended connection3684: ! For the growing string double-ended connection
3692: ! method, specify a maximum number of steps allowed before another image is3685: ! method, specify a maximum number of steps allowed before another image is
3693: ! added to the growing string. Default is 1000.3686: ! added to the growing string. Default is 1000.
3694: ! 3687: ! 
3695:          ELSE IF (WORD.EQ.'MAXGROWSTEPS') THEN3688:          ELSE IF (WORD.EQ.'MAXGROWSTEPS') THEN
3696:             CALL READI(MAXGROWSTEPS)3689:             CALL READI(MAXGROWSTEPS)
3697: ! 3690: ! 
3698: ! Will stop the entire job if the total string3691: ! Will stop the entire job if the total string
3699: ! length for the growing strings or evolving strings method goes above {\it x}3692: ! length for the growing strings or evolving strings method goes above {\it x}


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0