hdiff output

r29159/commons.f90 2015-11-17 23:34:50.941992562 +0000 r29158/commons.f90 2015-11-17 23:34:52.086007898 +0000
 97:      &        PERMDIST, PERMISOMER, RIGIDBODY, DIJINITSTARTT, DIJINITCONTT, RETAINSP, REMOVESP, NOFRQS, & 97:      &        PERMDIST, PERMISOMER, RIGIDBODY, DIJINITSTARTT, DIJINITCONTT, RETAINSP, REMOVESP, NOFRQS, &
 98:      &        BARRIERSHORT, FREEZE, RATESHORT, DUMMYRUNT, REWEIGHTT, REGROUPFREET, RFMULTIT, REGROUPFREEABT, READMINT, & 98:      &        BARRIERSHORT, FREEZE, RATESHORT, DUMMYRUNT, REWEIGHTT, REGROUPFREET, RFMULTIT, REGROUPFREEABT, READMINT, &
 99:      &        DUMPGROUPST, FREEPAIRT, KSHORTESTPATHST, KSHORT_FULL_PRINTT, DIJINITFLYT, BHINTERPT, ICINTERPT, & 99:      &        DUMPGROUPST, FREEPAIRT, KSHORTESTPATHST, KSHORT_FULL_PRINTT, DIJINITFLYT, BHINTERPT, ICINTERPT, &
100:      &        DUMMYTST, DOCKT, DSTAGE(6), USEPAIRST, LOWESTFRQT, BISECTT, NGTDISCONNECTALL, ANGLEAXIS2, TFOLDT, &100:      &        DUMMYTST, DOCKT, DSTAGE(6), USEPAIRST, LOWESTFRQT, BISECTT, NGTDISCONNECTALL, ANGLEAXIS2, TFOLDT, &
101:      &        SLURMT, INDEXCOSTFUNCTION, CVT, DOST, IMFRQT, CLOSEFILEST, PULLT, FRICTIONT, ATOMMATCHFULL, &101:      &        SLURMT, INDEXCOSTFUNCTION, CVT, DOST, IMFRQT, CLOSEFILEST, PULLT, FRICTIONT, ATOMMATCHFULL, &
102:      &        INTCONSTRAINTT, CHECKCONINT, INTLJT, INTERPCOSTFUNCTION, REMOVEUNCONNECTEDT, ATOMMATCHDIST, &102:      &        INTCONSTRAINTT, CHECKCONINT, INTLJT, INTERPCOSTFUNCTION, REMOVEUNCONNECTEDT, ATOMMATCHDIST, &
103:      &        DBPT, DBPTDT, DMBLPYT, EFIELDT, MSSTOCKT, NTIPT, PAHAT, PAPT, PATCHYDT, STOCKAAT, RBAAT, RBSYMT, TRAPT, SILANET, &103:      &        DBPT, DBPTDT, DMBLPYT, EFIELDT, MSSTOCKT, NTIPT, PAHAT, PAPT, PATCHYDT, STOCKAAT, RBAAT, RBSYMT, TRAPT, SILANET, &
104:      &        OHCELLT, INTFREEZET, LPERMDIST, PBST, RANDOMMETRICT, SSHT, ALLTST, USERPOTT, CHECKMINT, &104:      &        OHCELLT, INTFREEZET, LPERMDIST, PBST, RANDOMMETRICT, SSHT, ALLTST, USERPOTT, CHECKMINT, &
105:      &        CHECKTST, CHECKSPT, FROMLOWESTT, ADDMINXYZT, MACHINE, RATESCYCLET, NOINVERSION, NEWCONNECTIONST, NIMET, NIHEAM7T, &105:      &        CHECKTST, CHECKSPT, FROMLOWESTT, ADDMINXYZT, MACHINE, RATESCYCLET, NOINVERSION, NEWCONNECTIONST, NIMET, NIHEAM7T, &
106:      &        NIH2LEPST, DISTANCET, RATETARGETT, TARGETHIT, ALLOWABT, MICROTHERMT, RFKMCT, REGROUPKMCT, ONEREGROUPT, PHI4MODT, &106:      &        NIH2LEPST, DISTANCET, RATETARGETT, TARGETHIT, ALLOWABT, MICROTHERMT, RFKMCT, REGROUPKMCT, ONEREGROUPT, PHI4MODT, &
107:      &        PERSISTT, REGROUPPERSISTT, NOLABELST, SHANNONT, MAKEPAIRS, SKIPPAIRST, PERSISTAPPROXT, ALLCOMPONENTST107:      &        PERSISTT, REGROUPPERSISTT, NOLABELST, SHANNONT, MAKEPAIRS, SKIPPAIRST
108: 108: 
109:       LOGICAL, ALLOCATABLE :: SHIFTABLE(:)109:       LOGICAL, ALLOCATABLE :: SHIFTABLE(:)
110:       CHARACTER(LEN=80) COORDSLIGANDSTR, COORDSCOMPLEXSTR, COORDSPROTEINSTR110:       CHARACTER(LEN=80) COORDSLIGANDSTR, COORDSCOMPLEXSTR, COORDSPROTEINSTR
111:       CHARACTER(LEN=80) EXEC,EXECGMIN111:       CHARACTER(LEN=80) EXEC,EXECGMIN
112:       CHARACTER(LEN=80) PATHNAME, MINNAME, ADDMINXYZNAME, ALLCOMPS112:       CHARACTER(LEN=80) PATHNAME, MINNAME, ADDMINXYZNAME
113:       CHARACTER(LEN=150) COPYFILES113:       CHARACTER(LEN=150) COPYFILES
114:       CHARACTER(LEN=80) USEPAIRSFILE114:       CHARACTER(LEN=80) USEPAIRSFILE
115:       CHARACTER(LEN=80) MAKEPAIRSFILE115:       CHARACTER(LEN=80) MAKEPAIRSFILE
116:       CHARACTER(LEN=2) DIRECTION116:       CHARACTER(LEN=2) DIRECTION
117:       CHARACTER(LEN=5) UNCONNECTEDS117:       CHARACTER(LEN=5) UNCONNECTEDS
118:       CHARACTER(LEN=5) ZSYM118:       CHARACTER(LEN=5) ZSYM
119:       CHARACTER(LEN=2), ALLOCATABLE ::  ZSYMBOL(:)119:       CHARACTER(LEN=2), ALLOCATABLE ::  ZSYMBOL(:)
120:       CHARACTER(LEN=1) ENSEMBLE120:       CHARACTER(LEN=1) ENSEMBLE
121:       CHARACTER(LEN=120) :: HOSTNAME121:       CHARACTER(LEN=120) :: HOSTNAME
122: 122: 


r29159/get_exact_persistence.f90 2015-11-17 23:34:51.133995130 +0000 r29158/get_exact_persistence.f90 2015-11-17 23:34:52.274010418 +0000
  1: !  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/PATHSAMPLE/source/get_exact_persistence.f90' in revision 29158
  2: !  Persistence analysis using exact TS energy, rather  
  3: !  than an estimate from a superbasin analysis. 
  4: !  Persistence diagram is a plot of local minimum energy 
  5: !  versus transition state energy where that minimum joins a 
  6: !  superbasin with a lower minimum in it. 
  7: ! 
  8: !  uses a sorted list of ts energies 
  9: ! 
 10: SUBROUTINE GETEXACTBARRIER(BARRIER,MINTARG,GMIN) 
 11: USE COMMONS,ONLY : NMIN, NTS, ETS, EMIN, PLUS, MINUS, KPLUS, KMINUS, NCONNMIN, NCONN, EUNTRAPTHRESH, ALLCOMPONENTST 
 12: IMPLICIT NONE 
 13: DOUBLE PRECISION LOWESTTARG, BARRIER(NMIN), DUMMY, GMIN, TEMP, NEWETS(NTS), E1, E2 
 14: DOUBLE PRECISION :: CUT_UNDERFLOW=-300.0D0 ! set here but NOT used in the current coding of checkTS 
 15: INTEGER NEWPLUS(NTS), NEWMINUS(NTS), L, J2, NTEMP 
 16: INTEGER J1, MINTARG, NDEAD, NDISTA(NMIN), NDISTB(NMIN), NCYCLE 
 17: INTEGER NUNCONA, NLEFTMIN, NLEFTTS, COMPONENT(NMIN) 
 18: LOGICAL CHANGED, DEADTS(NTS), PERSIST(NMIN), LTEMP, NEWDEADTS(NTS) 
 19:  
 20: CALL GETNCONN 
 21: DEADTS(1:NTS)=.FALSE. 
 22: IF (NCONNMIN.GE.0) THEN 
 23:    NDEAD=0 
 24:    DO J1=1,NMIN 
 25:       IF (NCONN(J1).LE.NCONNMIN) THEN 
 26:          NDEAD=NDEAD+1 
 27:       ENDIF  
 28:    ENDDO 
 29:    PRINT '(3(I8,A))',NDEAD,' minima with ',NCONNMIN,' connections or fewer will not be considered' 
 30: ENDIF 
 31: ! 
 32: ! Determine position of global minimum 
 33: ! 
 34: GMIN=1.0D100 
 35: DO J1=1,NMIN 
 36:    IF (EMIN(J1).LT.GMIN .AND. (NCONN(J1).GT.NCONNMIN)) THEN 
 37:       GMIN=EMIN(J1) 
 38:       MINTARG=J1 
 39:    ENDIF 
 40: ENDDO 
 41: ! 
 42: !  Flag transition states to underconnected minima as DEAD. 
 43: !  NCONN only counts non-degenerate rearrangements as connections. 
 44: ! 
 45: NLEFTTS=0 
 46: DO J1=1,NTS 
 47:    CALL CHECKTS(ETS(J1),EMIN(PLUS(J1)),EMIN(MINUS(J1)),KPLUS(J1),KMINUS(J1),NCONN(PLUS(J1)),NCONN(MINUS(J1)), & 
 48:                 PLUS(J1),MINUS(J1),.FALSE.,CUT_UNDERFLOW,DEADTS(J1)) 
 49:    IF (.NOT.DEADTS(J1)) NLEFTTS=NLEFTTS+1 
 50: ENDDO 
 51: ! 
 52: !  Check that the stationary point database is actually connected, and remove 
 53: !  minima that lie in disjoint graphs. 
 54: !  Calculate minimum number of steps of each minimum from the global minimum. 
 55: ! 
 56: NDISTA(1:NMIN)=1000000 
 57: NDISTA(MINTARG)=0 
 58: NCYCLE=0 
 59: 5  CHANGED=.FALSE. 
 60: NCYCLE=NCYCLE+1 
 61: DO J1=1,NTS 
 62:    IF (DEADTS(J1)) CYCLE 
 63:    IF (NDISTA(MINUS(J1))+1.LT.NDISTA(PLUS(J1))) THEN 
 64:       CHANGED=.TRUE. 
 65:       NDISTA(PLUS(J1))=NDISTA(MINUS(J1))+1 
 66:    ENDIF 
 67:    IF (NDISTA(PLUS(J1))+1.LT.NDISTA(MINUS(J1))) THEN 
 68:       CHANGED=.TRUE. 
 69:       NDISTA(MINUS(J1))=NDISTA(PLUS(J1))+1 
 70:    ENDIF 
 71: ENDDO 
 72: IF (CHANGED) GOTO 5 
 73: NUNCONA=0 
 74: NLEFTMIN=0 
 75: DO J1=1,NMIN 
 76:    IF (NDISTA(J1).EQ.1000000) THEN 
 77:       NUNCONA=NUNCONA+1 
 78:       NCONN(J1)=0 
 79:       NDISTA(MINTARG)=0 
 80:    ELSEIF (NCONN(J1).GT.NCONNMIN) THEN 
 81:       NLEFTMIN=NLEFTMIN+1 
 82:    ENDIF 
 83: ENDDO 
 84: PRINT '(2(A,I8))','Steps to global minimum converged in ',NCYCLE-1,' cycles; disconnected=',NUNCONA 
 85: PRINT '(A,2I8)','Number of remaining minima and transition states=',NLEFTMIN,NLEFTTS 
 86:  
 87: LOWESTTARG=EMIN(MINTARG) ! energy of global minimum, which has no culminance 
 88:  
 89: BARRIER(1:NMIN)=-1.0D0 
 90:  
 91: DO J1=1,NMIN 
 92:    COMPONENT(J1)=J1 ! which connected component J1 belongs to. Initially all min 
 93:                     ! are in their own component; later the label for the 
 94:                     ! component is determined by the lowest minimum in that set. 
 95:    PERSIST(J1)=.FALSE. 
 96: ENDDO 
 97:  
 98: ! sort TSs lowest to highest 
 99: NEWPLUS=PLUS 
100: NEWMINUS=MINUS 
101: NEWETS=ETS 
102: NEWDEADTS=DEADTS 
103: DO J1=1,NTS-1 
104:    L=J1 
105:    DO J2=J1+1,NTS 
106:       IF (NEWETS(L).GT.NEWETS(J2)) L=J2 
107:    ENDDO 
108:    TEMP=NEWETS(L) 
109:    NEWETS(L)=NEWETS(J1) 
110:    NEWETS(J1)=TEMP 
111:    NTEMP=NEWPLUS(L) 
112:    NEWPLUS(L)=NEWPLUS(J1) 
113:    NEWPLUS(J1)=NTEMP 
114:    NTEMP=NEWMINUS(L) 
115:    NEWMINUS(L)=NEWMINUS(J1) 
116:    NEWMINUS(J1)=NTEMP 
117:    LTEMP=NEWDEADTS(L) 
118:    NEWDEADTS(L)=NEWDEADTS(J1) 
119:    NEWDEADTS(J1)=LTEMP 
120: ENDDO 
121:  
122: DO J1=1,NTS 
123:    IF (NEWDEADTS(J1)) CYCLE ! ignore this ts 
124: ! do nothing if the two minima connected by the TS are already in the same component 
125:    IF (COMPONENT(NEWPLUS(J1)).EQ.COMPONENT(NEWMINUS(J1))) CYCLE 
126:    IF ((EMIN(NEWPLUS(J1))-LOWESTTARG).GT.EUNTRAPTHRESH) CYCLE 
127:    IF ((EMIN(NEWMINUS(J1))-LOWESTTARG).GT.EUNTRAPTHRESH) CYCLE 
128:    IF (EMIN(NEWPLUS(J1)).GT.EMIN(NEWMINUS(J1))) THEN 
129:       IF (.NOT.PERSIST(NEWPLUS(J1))) THEN 
130:          BARRIER(NEWPLUS(J1))=NEWETS(J1)-EMIN(NEWPLUS(J1)) 
131:          PERSIST(NEWPLUS(J1))=.TRUE. 
132: ! set the component of all min already connected to NEWPLUS(J1) (and NEWPLUS(J1) itself)  
133: ! to that of the lower-energy minimum 
134:          WHERE (COMPONENT.EQ.COMPONENT(NEWPLUS(J1))) COMPONENT=COMPONENT(NEWMINUS(J1)) 
135:       ELSE 
136: ! we dont reset the persistence of NEWPLUS(J1), but because this TS now links two 
137: ! separate components we set the barrier for the higher of the two min that are 
138: ! lowest in their respective components (NB this barrier should not previously have 
139: ! been set). We also put all minima in this new component into the component of the  
140: ! lowest member of this set. 
141:          E1=EMIN(COMPONENT(NEWPLUS(J1))) 
142:          E2=EMIN(COMPONENT(NEWMINUS(J1))) 
143:          IF (E1.GT.E2) THEN 
144:             BARRIER(COMPONENT(NEWPLUS(J1)))=NEWETS(J1)-EMIN(COMPONENT(NEWPLUS(J1))) 
145:             PERSIST(COMPONENT(NEWPLUS(J1)))=.TRUE. 
146:             WHERE (COMPONENT.EQ.COMPONENT(NEWPLUS(J1))) COMPONENT=COMPONENT(NEWMINUS(J1)) 
147:          ELSEIF (E2.GT.E1) THEN 
148:             BARRIER(COMPONENT(NEWMINUS(J1)))=NEWETS(J1)-EMIN(COMPONENT(NEWMINUS(J1))) 
149:             PERSIST(COMPONENT(NEWMINUS(J1)))=.TRUE. 
150:             WHERE (COMPONENT.EQ.COMPONENT(NEWMINUS(J1))) COMPONENT=COMPONENT(NEWPLUS(J1)) 
151:          ELSE 
152:             PRINT *,'degeneracy here: ',J1, E1, E2 
153:             WHERE (COMPONENT.EQ.COMPONENT(NEWPLUS(J1))) COMPONENT=COMPONENT(NEWMINUS(J1)) 
154:          ENDIF 
155:       ENDIF 
156: ! and if the two connected minima are the other way round in energy... 
157:    ELSEIF (EMIN(NEWMINUS(J1)).GT.EMIN(NEWPLUS(J1))) THEN 
158:       IF (.NOT.PERSIST(NEWMINUS(J1))) THEN 
159:          BARRIER(NEWMINUS(J1))=NEWETS(J1)-EMIN(NEWMINUS(J1)) 
160:          PERSIST(NEWMINUS(J1))=.TRUE. 
161:          WHERE (COMPONENT.EQ.COMPONENT(NEWMINUS(J1))) COMPONENT=COMPONENT(NEWPLUS(J1)) 
162:       ELSE 
163:          E1=EMIN(COMPONENT(NEWPLUS(J1))) 
164:          E2=EMIN(COMPONENT(NEWMINUS(J1))) 
165:          IF (E1.GT.E2) THEN 
166:             BARRIER(COMPONENT(NEWPLUS(J1)))=NEWETS(J1)-EMIN(COMPONENT(NEWPLUS(J1))) 
167:             PERSIST(COMPONENT(NEWPLUS(J1)))=.TRUE. 
168:             WHERE (COMPONENT.EQ.COMPONENT(NEWPLUS(J1))) COMPONENT=COMPONENT(NEWMINUS(J1)) 
169:          ELSEIF (E2.GT.E1) THEN 
170:             BARRIER(COMPONENT(NEWMINUS(J1)))=NEWETS(J1)-EMIN(COMPONENT(NEWMINUS(J1))) 
171:             PERSIST(COMPONENT(NEWMINUS(J1)))=.TRUE. 
172:             WHERE (COMPONENT.EQ.COMPONENT(NEWMINUS(J1))) COMPONENT=COMPONENT(NEWPLUS(J1)) 
173:          ELSE 
174:             PRINT *,'degeneracy here ',J1, E1, E2 
175:             WHERE (COMPONENT.EQ.COMPONENT(NEWPLUS(J1))) COMPONENT=COMPONENT(NEWMINUS(J1)) 
176:          ENDIF 
177:       ENDIF 
178: ! if the two connected minima are degenerate, then dont set their own persistence but see  
179: ! what they are connected to and at least update their connectivity. 
180:    ELSE 
181:       print *,'degeneracy here ',J1,NEWETS(J1),EMIN(NEWMINUS(J1)),EMIN(NEWPLUS(J1)) 
182:       E1=EMIN(COMPONENT(NEWPLUS(J1))) 
183:       E2=EMIN(COMPONENT(NEWMINUS(J1))) 
184:       IF (E1.GT.E2) THEN 
185:          BARRIER(COMPONENT(NEWPLUS(J1)))=NEWETS(J1)-EMIN(COMPONENT(NEWPLUS(J1))) 
186:          PERSIST(COMPONENT(NEWPLUS(J1)))=.TRUE. 
187:          WHERE (COMPONENT.EQ.COMPONENT(NEWPLUS(J1))) COMPONENT=COMPONENT(NEWMINUS(J1)) 
188:       ELSEIF (E2.GT.E1) THEN 
189:          BARRIER(COMPONENT(NEWMINUS(J1)))=NEWETS(J1)-EMIN(COMPONENT(NEWMINUS(J1))) 
190:          PERSIST(COMPONENT(NEWMINUS(J1)))=.TRUE. 
191:          WHERE (COMPONENT.EQ.COMPONENT(NEWMINUS(J1))) COMPONENT=COMPONENT(NEWPLUS(J1)) 
192:       ELSE 
193:          PRINT *,'degeneracy here ',J1, E1, E2 
194:          WHERE (COMPONENT.EQ.COMPONENT(NEWPLUS(J1))) COMPONENT=COMPONENT(NEWMINUS(J1)) 
195:       ENDIF 
196:    ENDIF 
197: ENDDO 
198:  
199: IF (.NOT.ALLCOMPONENTST) THEN 
200:    DO J1=1,NMIN 
201:       IF (NCONN(J1).EQ.0) BARRIER(J1)=-1.0D0 
202: ! as NCONN is set to zero earlier in this routine if this minimum is not connected to the global min. 
203: ! NB in persistence.f90, a min is only processed if it has a positive barrier. 
204:    ENDDO 
205: ENDIF 
206:  
207: END SUBROUTINE GETEXACTBARRIER 


r29159/keywords.f 2015-11-17 23:34:51.325997704 +0000 r29158/keywords.f 2015-11-17 23:34:52.462012938 +0000
202:       CONNECTMIN1=1202:       CONNECTMIN1=1
203:       CONNECTMIN2=1203:       CONNECTMIN2=1
204:       CONNECTDIST=1.0D10204:       CONNECTDIST=1.0D10
205:       SHORTCUTT=.FALSE.205:       SHORTCUTT=.FALSE.
206: !     PTAUT=.FALSE.206: !     PTAUT=.FALSE.
207:       NPAIRFRQ=0207:       NPAIRFRQ=0
208:       MERGEDBT=.FALSE.208:       MERGEDBT=.FALSE.
209:       PERSISTT=.FALSE.209:       PERSISTT=.FALSE.
210:       PEQTHRESH=1.0D-100210:       PEQTHRESH=1.0D-100
211:       PERTHRESH=0.0D0211:       PERTHRESH=0.0D0
212:       PERSISTAPPROXT=.TRUE. 
213:       ALLCOMPONENTST=.FALSE. 
214:       ALLCOMPS='' 
215:       UNTRAPT=.FALSE.212:       UNTRAPT=.FALSE.
216:       UNTRAPMETRICT=.FALSE.213:       UNTRAPMETRICT=.FALSE.
217:       METRICUPAIR=0214:       METRICUPAIR=0
218:       METMATMAX=2000 215:       METMATMAX=2000 
219:       EUNTRAPTHRESH=1.0D100216:       EUNTRAPTHRESH=1.0D100
220:       FREEPAIRT=.FALSE.217:       FREEPAIRT=.FALSE.
221:       PERMDIST=.FALSE.218:       PERMDIST=.FALSE.
222:       ORBITTOL=1.0D-3219:       ORBITTOL=1.0D-3
223:       LPERMDIST=.FALSE.220:       LPERMDIST=.FALSE.
224:       LPDGEOMDIFFTOL=0.3D0221:       LPDGEOMDIFFTOL=0.3D0
1688:          ENDIF1685:          ENDIF
1689: C1686: C
1690: C  Persistence analysis.1687: C  Persistence analysis.
1691: C1688: C
1692:       ELSE IF (WORD.EQ.'PERSIST') THEN1689:       ELSE IF (WORD.EQ.'PERSIST') THEN
1693:          PERSISTT=.TRUE.1690:          PERSISTT=.TRUE.
1694:          CALL READF(EINC)1691:          CALL READF(EINC)
1695:          CALL READF(EUNTRAPTHRESH)1692:          CALL READF(EUNTRAPTHRESH)
1696:          IF (NITEMS.GT.3) CALL READF(PEQTHRESH)1693:          IF (NITEMS.GT.3) CALL READF(PEQTHRESH)
1697:          IF (NITEMS.GT.4) CALL READF(PERTHRESH)1694:          IF (NITEMS.GT.4) CALL READF(PERTHRESH)
1698:       ELSE IF (WORD.EQ.'PERSISTEXACT') THEN 
1699:          PERSISTAPPROXT=.FALSE. 
1700:          IF (NITEMS.GT.1) CALL READA(ALLCOMPS) 
1701:          IF (TRIM(ADJUSTL(ALLCOMPS)).EQ.'ALL') ALLCOMPONENTST=.TRUE. 
1702: C1695: C
1703: C  Initial PERT parameter for geometry perturbations used in single-ended ts searches1696: C  Initial PERT parameter for geometry perturbations used in single-ended ts searches
1704: C1697: C
1705:       ELSE IF (WORD.EQ.'PERTURB') THEN1698:       ELSE IF (WORD.EQ.'PERTURB') THEN
1706:          CALL READF(PERTVALUE)1699:          CALL READF(PERTVALUE)
1707:          PERTMIN=PERTVALUE/2.0D01700:          PERTMIN=PERTVALUE/2.0D0
1708:          PERTMAX=PERTVALUE*2.0D01701:          PERTMAX=PERTVALUE*2.0D0
1709:          IF (NITEMS.GT.2) CALL READF(PERTMIN)1702:          IF (NITEMS.GT.2) CALL READF(PERTMIN)
1710:          IF (NITEMS.GT.3) CALL READF(PERTMAX)1703:          IF (NITEMS.GT.3) CALL READF(PERTMAX)
1711: C1704: C


r29159/main.F 2015-11-17 23:34:51.518000286 +0000 r29158/main.F 2015-11-17 23:34:52.654015514 +0000
 40:       USE UTILS,ONLY : GETUNIT 40:       USE UTILS,ONLY : GETUNIT
 41:       USE DOCKMODULE 41:       USE DOCKMODULE
 42:       USE RIGIDBODYMOD, ONLY: INITIALISERIGiDBODY, CLEANRIGIDBODIES 42:       USE RIGIDBODYMOD, ONLY: INITIALISERIGiDBODY, CLEANRIGIDBODIES
 43:       IMPLICIT NONE 43:       IMPLICIT NONE
 44:       INTEGER J1, NSIZE, NWORST, NAVAIL, NDUMMY, LUNIT, NMINSAVE 44:       INTEGER J1, NSIZE, NWORST, NAVAIL, NDUMMY, LUNIT, NMINSAVE
 45:       INTEGER, ALLOCATABLE :: FREEMINLIST(:), FREEMINPOINT(:) 45:       INTEGER, ALLOCATABLE :: FREEMINLIST(:), FREEMINPOINT(:)
 46:       CHARACTER(LEN=200) :: VERSIONTEMP 46:       CHARACTER(LEN=200) :: VERSIONTEMP
 47:       INTEGER, ALLOCATABLE :: MINMAP(:) 47:       INTEGER, ALLOCATABLE :: MINMAP(:)
 48: !     INTEGER, ALLOCATABLE :: NSEED(:) 48: !     INTEGER, ALLOCATABLE :: NSEED(:)
 49:       LOGICAL MASSFILE, YESNOT 49:       LOGICAL MASSFILE, YESNOT
 50:       DOUBLE PRECISION TINIT, TNEW, XDUMMY 50:       DOUBLE PRECISION TINIT, TNEW, DUMMY1(1), DUMMY2(1), XDUMMY
 51:  51: 
 52: !     AMH LOCAL VARIABLES 52: !     AMH LOCAL VARIABLES
 53:       INTEGER :: NRES,I_RES,J2 53:       INTEGER :: NRES,I_RES,J2
 54:       CHARACTER(LEN=5) :: TARFL 54:       CHARACTER(LEN=5) :: TARFL
 55:       CHARACTER(LEN=2) :: SDUMMY 55:       CHARACTER(LEN=2) :: SDUMMY
 56:       INTEGER :: SEQ(500) 56:       INTEGER :: SEQ(500)
 57:  57: 
 58:       VERSIONTEMP=SVNVERSION 58:       VERSIONTEMP=SVNVERSION
 59:       VERSIONTEMP=TRIM(ADJUSTL(VERSIONTEMP)) 59:       VERSIONTEMP=TRIM(ADJUSTL(VERSIONTEMP))
 60: C 60: C
443:       ELSEIF (UNTRAPT) THEN443:       ELSEIF (UNTRAPT) THEN
444:          PRINT '(A,I8,A)','Pairs of minima will be chosen according to their lowest barrier to a minimum in a product superbasin'444:          PRINT '(A,I8,A)','Pairs of minima will be chosen according to their lowest barrier to a minimum in a product superbasin'
445:          PRINT '(A,F15.5,A)','Connections will not be attempted to minima higher than ',EUNTRAPTHRESH, 445:          PRINT '(A,F15.5,A)','Connections will not be attempted to minima higher than ',EUNTRAPTHRESH, 
446:      &                      ' energy units above the first minimum'446:      &                      ' energy units above the first minimum'
447:          IF (NPAIRFRQ.LT.1) THEN447:          IF (NPAIRFRQ.LT.1) THEN
448:             PRINT '(A,F12.3)','Pairs will not be recalculated unless we run out of possibilities'448:             PRINT '(A,F12.3)','Pairs will not be recalculated unless we run out of possibilities'
449:          ELSE449:          ELSE
450:             PRINT '(A,I10,A)','Pairs will be recalculated every ',NPAIRFRQ,' cycles'450:             PRINT '(A,I10,A)','Pairs will be recalculated every ',NPAIRFRQ,' cycles'
451:          ENDIF451:          ENDIF
452:       ELSEIF (PERSISTT) THEN452:       ELSEIF (PERSISTT) THEN
453:          PRINT '(A)','Persistence analysis'453:          PRINT '(A,I8,A)','Persistence analysis'
454:          PRINT '(A,F15.5,A)','Minima will not be included higher than ',EUNTRAPTHRESH, 454:          PRINT '(A,F15.5,A)','Minima will not be included higher than ',EUNTRAPTHRESH, 
455:      &                      ' energy units above the global minimum'455:      &                      ' energy units above the global minimum'
456:          IF (PERSISTAPPROXT) THEN 
457:             PRINT '(A)','Superbasin approach will be used to estimate persistences' 
458:          ELSE 
459:             PRINT '(A)','Exact calculation of persistences' 
460:          ENDIF 
461:          IF (ALLCOMPONENTST) PRINT '(A)','Persistence information will be reported for all valid minima' 
462:       ELSEIF (NEWCONNECTIONST) THEN456:       ELSEIF (NEWCONNECTIONST) THEN
463:          PRINT '(A)','Database will be extended using single-ended transition state searches'457:          PRINT '(A)','Database will be extended using single-ended transition state searches'
464:          PRINT '(A,F12.3)','Minima will be perturbed using random Cartesian displacements up to magnitude ',PERTVALUE458:          PRINT '(A,F12.3)','Minima will be perturbed using random Cartesian displacements up to magnitude ',PERTVALUE
465:          PRINT '(4(A,I10))','Minima will be perturbed starting from ',CONNMINSTART,459:          PRINT '(4(A,I10))','Minima will be perturbed starting from ',CONNMINSTART,
466:      &                     ' in order until they have ',CONNECTIONS,460:      &                     ' in order until they have ',CONNECTIONS,
467:      &                     ' connections up to a maximum ',MAXTSATTEMPTS,' attempts each'461:      &                     ' connections up to a maximum ',MAXTSATTEMPTS,' attempts each'
468:       ELSEIF (NATTEMPT.GT.0) THEN462:       ELSEIF (NATTEMPT.GT.0) THEN
469:          PRINT '(A,F12.3)','Pairs of minima will be chosen based upon a minimum committor probability difference of ',PSCALE463:          PRINT '(A,F12.3)','Pairs of minima will be chosen based upon a minimum committor probability difference of ',PSCALE
470:          IF (NPAIRFRQ.LT.1) THEN464:          IF (NPAIRFRQ.LT.1) THEN
471:             PRINT '(A,F12.3)','Pairs will not be recalculated unless we run out of possibilities'465:             PRINT '(A,F12.3)','Pairs will not be recalculated unless we run out of possibilities'


r29159/Makefile 2015-11-17 23:34:50.753990033 +0000 r29158/Makefile 2015-11-17 23:34:51.898005377 +0000
 11:         minperm.o minpermdist.o rigidbodymod.o mathsconstants.o quaternionmatch.o \ 11:         minperm.o minpermdist.o rigidbodymod.o mathsconstants.o quaternionmatch.o \
 12:         regroupfree.o regroup.o dsort.o savestate.o orderodata.o regroupfree2.o \ 12:         regroupfree.o regroup.o dsort.o savestate.o orderodata.o regroupfree2.o \
 13:         probacc.o newconn.o getfreepair.o getfreebarrier.o kshortestpaths.o Dijinitfly.o \ 13:         probacc.o newconn.o getfreepair.o getfreebarrier.o kshortestpaths.o Dijinitfly.o \
 14:         getallmin.o myorient.o getusepair.o NGTmem.o NGTrealloc.o NGTrenorm.o \ 14:         getallmin.o myorient.o getusepair.o NGTmem.o NGTrealloc.o NGTrenorm.o \
 15:         NGTremoveid.o NGTremovei.o swapnode.o mymerge.o rbinertia.o rigidb.o diagonalise2.o reweight.o \ 15:         NGTremoveid.o NGTremovei.o swapnode.o mymerge.o rbinertia.o rigidb.o diagonalise2.o reweight.o \
 16:         rbperm.o minpermdistrbcom.o Cv.o DOS.o bulkmindist.o frictionfac.o make_conpot.o setup_sis.o \ 16:         rbperm.o minpermdistrbcom.o Cv.o DOS.o bulkmindist.o frictionfac.o make_conpot.o setup_sis.o \
 17:         rateconst_setup.o checkspodata.o addminxyz.o \ 17:         rateconst_setup.o checkspodata.o addminxyz.o \
 18:         checkTS.o remove_unconnected.o getupairmetric.o \ 18:         checkTS.o remove_unconnected.o getupairmetric.o \
 19:         NGT_crstorage.o NGTremovei_crstorage.o NGTremoveid_crstorage.o NGTrenorm_crstorage.o \ 19:         NGT_crstorage.o NGTremovei_crstorage.o NGTremoveid_crstorage.o NGTrenorm_crstorage.o \
 20:         NGTrealloc_crstorage.o lopermdist.o getmetric.o rotations.o vec3.o newconnodata.o Gthomson.o \ 20:         NGTrealloc_crstorage.o lopermdist.o getmetric.o rotations.o vec3.o newconnodata.o Gthomson.o \
 21:         microtherm.o getbarrier2.o persistence.o regrouppersist.o shannon.o get_exact_persistence.o 21:         microtherm.o getbarrier2.o persistence.o regrouppersist.o shannon.o
 22:  22: 
 23:  23: 
 24: # note that nag64/5.1-216 fails for large memory, but version 365 works 24: # note that nag64/5.1-216 fails for large memory, but version 365 works
 25: # large memory for pgi and ifort requires the -mcmodel flag! 25: # large memory for pgi and ifort requires the -mcmodel flag!
 26:  26: 
 27: # WARNING - points.min and point.ts created with ifort executables cannot be 27: # WARNING - points.min and point.ts created with ifort executables cannot be
 28: # read by NAG or PGI executables, and vice versa, unless -assume byterecl is used 28: # read by NAG or PGI executables, and vice versa, unless -assume byterecl is used
 29:  29: 
 30: # Preprocessing 30: # Preprocessing
 31:    DEFS = 31:    DEFS =
234: make_conpot.o: commons.o234: make_conpot.o: commons.o
235: rateconst_setup.o: commons.o porfuncs.o235: rateconst_setup.o: commons.o porfuncs.o
236: checkTS.o: commons.o porfuncs.o236: checkTS.o: commons.o porfuncs.o
237: lopermdist.o: commons.o 237: lopermdist.o: commons.o 
238: getmetric.o: commons.o porfuncs.o238: getmetric.o: commons.o porfuncs.o
239: myorient.o: commons.o 239: myorient.o: commons.o 
240: microtherm.o: commons.o utils.o240: microtherm.o: commons.o utils.o
241: getbarrier2.o: commons.o241: getbarrier2.o: commons.o
242: persistence.o: commons.o242: persistence.o: commons.o
243: shannon.o: commons.o porfuncs.o savestate.o utils.o243: shannon.o: commons.o porfuncs.o savestate.o utils.o
244: get_exact_persistence.o: commons.o 


r29159/persistence.f90 2015-11-17 23:34:51.706002800 +0000 r29158/persistence.f90 2015-11-17 23:34:52.838017984 +0000
  1: !  1: !
  2: !  Persistence analysis using getbarrier2 routine.  2: !  Persistence analysis using getbarrier2 routine.
  3: !  Persistence diagram is a plot of local minimum energy  3: !  Persistance diagram is a plot of local minimum energy
  4: !  versus transition state energy where that minimum joins a  4: !  versus transition state energy where that minimum joins a
  5: !  superbasin with a lower minimum in it. The corresponding downhill   5: !  superbasin with a lower minimum in it. The corresponding downhill 
  6: !  barrier height is called the culminance of the minimum in question.  6: !  barrier height is called the culminance of the minimum in question.
  7: !  7: !
  8: ! Approximate method: 
  9: !  Usual superbasin analysis at fine grained total energies.  8: !  Usual superbasin analysis at fine grained total energies.
   9: !  Could use the sorted list of ts energies?
 10: !  Check if minimum has a threshold assigned. 10: !  Check if minimum has a threshold assigned.
 11: !  If not, check if it is the lowest minimum in the superbasin. 11: !  If not, check if it is the lowest minimum in the superbasin.
 12: !  If not, assign that threshold as its culminance, and mark it done. 12: !  If not, assign that threshold as its culminance, and mark it done.
 13: ! 13: !
 14: ! Exact method uses a sorted list of ts energies and a Union-Find algorithm  
 15: ! (see Introduction to Algorithms; Cormen, Leiserson, Rivest and Stein; Chapter 21 Data structures for disjoint sets) 
 16: ! 
 17: SUBROUTINE PERSISTENCE 14: SUBROUTINE PERSISTENCE
 18: USE COMMONS,ONLY : NMIN, NTS, EMIN, DEBUG, TSTHRESH, FVIBMIN, HORDERMIN, TEMPERATURE, TSTHRESH, & 15: USE COMMONS,ONLY : NMIN, NTS, ETS, EMIN, PLUS, MINUS, EINC, DEBUG, TSTHRESH, FVIBMIN, HORDERMIN, TEMPERATURE, TSTHRESH, &
 19:   &                PEQTHRESH, PERTHRESH, PERSISTAPPROXT 16:   &                PEQTHRESH, PERTHRESH
 20: USE UTILS,ONLY : GETUNIT 17: USE UTILS,ONLY : GETUNIT
 21: IMPLICIT NONE 18: IMPLICIT NONE
 22: DOUBLE PRECISION HIGHESTTS, LOWESTTARG, ETHRESH, BARRIER(NMIN), GMIN, SLOPE, INTERCEPT, CORRELATION, EDISC(NMIN) 19: DOUBLE PRECISION HIGHESTTS, LOWESTTARG, ETHRESH, BARRIER(NMIN), GMIN, SLOPE, INTERCEPT, CORRELATION, EDISC(NMIN)
 23: DOUBLE PRECISION SUMX, SUMY, SUMX2, SUMY2, SUMXY, XTEMP(NMIN), PEQ(NMIN), PFNORM, DUMMY, LOCPFMIN(NMIN) 20: DOUBLE PRECISION SUMX, SUMY, SUMX2, SUMY2, SUMXY, XTEMP(NMIN), PEQ(NMIN), PFNORM, DUMMY, LOCPFMIN(NMIN)
 24: INTEGER J1, BASIN(NMIN), NBASIN, MINTARG, NGMIN, NCONNECTED, MINID(NMIN), LUNIT 21: INTEGER J1, BASIN(NMIN), NBASIN, MINTARG, NGMIN, NCONNECTED, MINID(NMIN)
  22: INTEGER BASINS2(NMIN), LUNIT
 25: LOGICAL CHANGED, BASINT(NMIN) 23: LOGICAL CHANGED, BASINT(NMIN)
 26:  24: 
 27: IF (PERSISTAPPROXT) THEN 25: CALL GETBARRIER2(BARRIER,NGMIN,GMIN)
 28:   CALL GETBARRIER2(BARRIER,NGMIN,GMIN) 
 29: ELSE 
 30:   CALL GETEXACTBARRIER(BARRIER,NGMIN,GMIN) 
 31: ENDIF 
 32: PRINT '(A,I6,G20.10)','persistence> global minimum position and energy: ',NGMIN,GMIN 26: PRINT '(A,I6,G20.10)','persistence> global minimum position and energy: ',NGMIN,GMIN
 33: SUMX=0.0D0  27: SUMX=0.0D0 
 34: SUMX2=0.0D0  28: SUMX2=0.0D0 
 35: SUMXY=0.0D0  29: SUMXY=0.0D0 
 36: SUMY=0.0D0  30: SUMY=0.0D0 
 37: SUMY2=0.0D0  31: SUMY2=0.0D0 
 38:  32: 
 39: NCONNECTED=0 33: NCONNECTED=0
 40: EDISC(1:NMIN)=-1.0D0 34: EDISC(1:NMIN)=-1.0D0
 41: XTEMP(1:NMIN)=-1.0D0 35: XTEMP(1:NMIN)=-1.0D0


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0