hdiff output

r29785/commons.f90 2016-07-06 15:39:24.442318908 +0100 r29784/commons.f90 2016-07-06 15:39:25.446332478 +0100
165:       LOGICAL :: GTHOMSONT165:       LOGICAL :: GTHOMSONT
166:       INTEGER :: GTHOMMET166:       INTEGER :: GTHOMMET
167:       DOUBLE PRECISION :: GTHOMSONZ167:       DOUBLE PRECISION :: GTHOMSONZ
168: 168: 
169: ! RIGIDINIT - hk286169: ! RIGIDINIT - hk286
170:       LOGICAL :: RIGIDINIT170:       LOGICAL :: RIGIDINIT
171:       INTEGER :: DEGFREEDOMS171:       INTEGER :: DEGFREEDOMS
172: 172: 
173: ! Get frqs173: ! Get frqs
174:       LOGICAL :: GETMINFRQST, GETTSFRQST174:       LOGICAL :: GETMINFRQST, GETTSFRQST
175:  
176: ! MINGAP 
177:       LOGICAL :: MINGAPT, MINGAPRATIOT 
178:       DOUBLE PRECISION :: MINGAPINP 
179:  
180: END MODULE COMMONS175: END MODULE COMMONS


r29785/Dijinit.f90 2016-07-06 15:39:24.114314474 +0100 r29784/Dijinit.f90 2016-07-06 15:39:25.122328098 +0100
 21: ! 21: !
 22: !  Dijkstra connection algorithm for pathsample. 22: !  Dijkstra connection algorithm for pathsample.
 23: ! 23: !
 24: SUBROUTINE DIJINIT(NWORST) 24: SUBROUTINE DIJINIT(NWORST)
 25: USE PORFUNCS 25: USE PORFUNCS
 26: USE COMMONS 26: USE COMMONS
 27: USE UTILS,ONLY : GETUNIT 27: USE UTILS,ONLY : GETUNIT
 28: IMPLICIT NONE 28: IMPLICIT NONE
 29:  29: 
 30: INTEGER J1, J2, J4, PARENT(NMIN), JMINW, NPERM, J5, LJ1, LJ2, NWORST, NSTEPS, NMINSTART, NMINEND, J6, MUNIT 30: INTEGER J1, J2, J4, PARENT(NMIN), JMINW, NPERM, J5, LJ1, LJ2, NWORST, NSTEPS, NMINSTART, NMINEND, J6, MUNIT
 31: INTEGER NMINGAP 
 32: INTEGER, ALLOCATABLE :: LOCATIONSTART(:), LOCATIONEND(:) 31: INTEGER, ALLOCATABLE :: LOCATIONSTART(:), LOCATIONEND(:)
 33: LOGICAL PERMANENT(NMIN), ISA(NMIN), ISB(NMIN), ISSTART(NMIN), NOTDONE 32: LOGICAL PERMANENT(NMIN), ISA(NMIN), ISB(NMIN), ISSTART(NMIN), NOTDONE
 34: DOUBLE PRECISION MINWEIGHT, DUMMY, TNEW, ELAPSED, PFTOTALSTART, HUGESAVE, THRESH 33: DOUBLE PRECISION MINWEIGHT, DUMMY, TNEW, ELAPSED, PFTOTALSTART, HUGESAVE, THRESH
 35: DOUBLE PRECISION MAXWEIGHT, SCALEFAC, PDMAX, PD, MINGAPTHRESH 34: DOUBLE PRECISION MAXWEIGHT, SCALEFAC, PDMAX, PD
 36: INTEGER, DIMENSION(:), ALLOCATABLE :: PATHMINS 35: INTEGER, DIMENSION(:), ALLOCATABLE :: PATHMINS
 37: ! 36: !
 38: ! KIND=16 is not supported by Portland. If you want extra precision, uncomment the following line 37: ! KIND=16 is not supported by Portland. If you want extra precision, uncomment the following line
 39: ! and use NAG. 38: ! and use NAG.
 40: ! 39: !
 41: ! REAL(KIND=16) :: TMPWEIGHT, WEIGHT(NMIN) 40: ! REAL(KIND=16) :: TMPWEIGHT, WEIGHT(NMIN)
 42: REAL(KIND=8) :: TMPWEIGHT, WEIGHT(NMIN) 41: REAL(KIND=8) :: TMPWEIGHT, WEIGHT(NMIN)
 43:  42: 
 44:  43: 
 45: CALL CPU_TIME(ELAPSED) 44: CALL CPU_TIME(ELAPSED)
 46: 121 DEALLOCATE(DMIN1,DMIN2) 45: DEALLOCATE(DMIN1,DMIN2)
 47: ALLOCATE(DMIN1(10000),DMIN2(10000)) ! surely this will be enough room! 46: ALLOCATE(DMIN1(10000),DMIN2(10000)) ! surely this will be enough room!
 48: IF (DIJPRUNET) THEN 47: IF (DIJPRUNET) THEN
 49:    MUNIT=GETUNIT() 48:    MUNIT=GETUNIT()
 50:    ALLOCATE(PATHMINS(10000)) !change if more needed, but 10000 should be enough for most uses 49:    ALLOCATE(PATHMINS(10000)) !change if more needed, but 10000 should be enough for most uses
 51:    PRINT '(A)',' dijprune> Maximum number of minima on path is 10000.' 50:    PRINT '(A)',' dijprune> Maximum number of minima on path is 10000.'
 52: ENDIF 51: ENDIF
 53: ISA(1:NMIN)=.FALSE. 52: ISA(1:NMIN)=.FALSE.
 54: ISB(1:NMIN)=.FALSE. 53: ISB(1:NMIN)=.FALSE.
 55: DO J1=1,NMINA 54: DO J1=1,NMINA
 56:    ISA(LOCATIONA(J1))=.TRUE. 55:    ISA(LOCATIONA(J1))=.TRUE.
 86: DO J2=1,NMIN 85: DO J2=1,NMIN
 87:    DO J5=1,PAIRDISTMAX 86:    DO J5=1,PAIRDISTMAX
 88:       IF (PAIRDIST(J2,J5).GT.PDMAX) THEN 87:       IF (PAIRDIST(J2,J5).GT.PDMAX) THEN
 89:          PDMAX=PAIRDIST(J2,J5) 88:          PDMAX=PAIRDIST(J2,J5)
 90: !        IF (DEBUG) PRINT '(A,G20.10)','Dijinit> maximum neighbour metric value increased to',PDMAX  89: !        IF (DEBUG) PRINT '(A,G20.10)','Dijinit> maximum neighbour metric value increased to',PDMAX 
 91: !        IF (DEBUG) PRINT '(A,2I8,G20.10)','Dijinit> J2,J5,PAIRDIST=',J2,J5,PAIRDIST(J2,J5) 90: !        IF (DEBUG) PRINT '(A,2I8,G20.10)','Dijinit> J2,J5,PAIRDIST=',J2,J5,PAIRDIST(J2,J5)
 92:       ENDIF 91:       ENDIF
 93:    ENDDO 92:    ENDDO
 94: ENDDO 93: ENDDO
 95: PRINT '(A,G20.10)','Dijinit> maximum neighbour metric value=',PDMAX 94: PRINT '(A,G20.10)','Dijinit> maximum neighbour metric value=',PDMAX
 96:  
 97: IF (MINGAPT) THEN 
 98:    IF (MINGAPRATIOT) THEN 
 99:       MINGAPTHRESH=PDMAX*MINGAPINP 
100:    ELSE 
101:       MINGAPTHRESH=MINGAPINP 
102:    ENDIF 
103: ENDIF 
104:  
105: ! 95: !
106: !  Find largest weight for each B(A) minimum to all A(B) minima. 96: !  Find largest weight for each B(A) minimum to all A(B) minima.
107: ! 97: !
108: !  Added maximum weight condition via a scale factor. 98: !  Added maximum weight condition via a scale factor.
109: !  Otherwise loss of precision can cause connections to be missed completely. DJW 29/7/08 99: !  Otherwise loss of precision can cause connections to be missed completely. DJW 29/7/08
110: !100: !
111: MAXWEIGHT=HUGE(1.0D0)/1.0D1101: MAXWEIGHT=HUGE(1.0D0)/1.0D1
112: ! MAXWEIGHT=1.0D6102: ! MAXWEIGHT=1.0D6
113: loopstart: DO J1=1,NMINSTART ! cycle over all minima in the starting state103: loopstart: DO J1=1,NMINSTART ! cycle over all minima in the starting state
114:    SCALEFAC=1.0D0104:    SCALEFAC=1.0D0
230: 220: 
231: ENDDO loopstart221: ENDDO loopstart
232: ! 222: ! 
233: !  Summarise the best path for any A(B) and any B(A)223: !  Summarise the best path for any A(B) and any B(A)
234: !224: !
235: LJ2=LOCATIONEND(1)225: LJ2=LOCATIONEND(1)
236: LJ1=LOCATIONSTART(1)226: LJ1=LOCATIONSTART(1)
237: J5=LJ2227: J5=LJ2
238: NWORST=0228: NWORST=0
239: NSTEPS=0229: NSTEPS=0
240: IF (MINGAPT) NMINGAP=0 
241: PRINT '(A)','Dijinit> Summary of best path based on missing connection metric - note distance scaling is removed'230: PRINT '(A)','Dijinit> Summary of best path based on missing connection metric - note distance scaling is removed'
242: PRINT '(A)','    min1          energy        min2          energy             metric          edge weight            weight'231: PRINT '(A)','    min1          energy        min2          energy             metric          edge weight            weight'
243: IF (DIJPRUNET) OPEN(MUNIT,FILE='min.retain',POSITION='APPEND',ACTION='WRITE',STATUS='NEW')232: IF (DIJPRUNET) OPEN(MUNIT,FILE='min.retain',POSITION='APPEND',ACTION='WRITE',STATUS='NEW')
244: DO 233: DO 
245:    IF (PARENT(J5).EQ.0) THEN234:    IF (PARENT(J5).EQ.0) THEN
246:       PRINT '(A,I6,A)','Dijinit> ERROR - parent for J5=',J5,' is zero'235:       PRINT '(A,I6,A)','Dijinit> ERROR - parent for J5=',J5,' is zero'
247:       PRINT '(A)',     'Dijinit> Suggests all possible pairs have been tried!'236:       PRINT '(A)',     'Dijinit> Suggests all possible pairs have been tried!'
248:       STOP237:       STOP
249:    ENDIF238:    ENDIF
250: !  DUMMY=PAIRDIST(MAX(J5,PARENT(J5))*(MAX(J5,PARENT(J5))-1)/2+MIN(J5,PARENT(J5)))*SCALEFAC239: !  DUMMY=PAIRDIST(MAX(J5,PARENT(J5))*(MAX(J5,PARENT(J5))-1)/2+MIN(J5,PARENT(J5)))*SCALEFAC
310:    IF (DIJPRUNET) PATHMINS(NSTEPS)=J5299:    IF (DIJPRUNET) PATHMINS(NSTEPS)=J5
311:    THRESH=0.0D0300:    THRESH=0.0D0
312:    IF (BHINTERPT) THRESH=BHDISTTHRESH ! for bhinterp runs raise the threshold to BHDISTTHRESH301:    IF (BHINTERPT) THRESH=BHDISTTHRESH ! for bhinterp runs raise the threshold to BHDISTTHRESH
313:    IF (BISECTT) THRESH=BISECTMINDIST ! for bisect runs raise the threshold to BISECTMINDIST302:    IF (BISECTT) THRESH=BISECTMINDIST ! for bisect runs raise the threshold to BISECTMINDIST
314:    IF ((DUMMY/SCALEFAC.GT.THRESH).AND.(TMPWEIGHT.LT.HUGE(1.0D0)/10.0D0)) THEN303:    IF ((DUMMY/SCALEFAC.GT.THRESH).AND.(TMPWEIGHT.LT.HUGE(1.0D0)/10.0D0)) THEN
315:       NWORST=NWORST+1304:       NWORST=NWORST+1
316:       IF (NWORST.GT.10000) THEN305:       IF (NWORST.GT.10000) THEN
317:          PRINT '(A,I8)','ERROR in Dijinit, too many gaps, NWORST=',NWORST306:          PRINT '(A,I8)','ERROR in Dijinit, too many gaps, NWORST=',NWORST
318:          STOP307:          STOP
319:       ENDIF308:       ENDIF
320:       IF (.NOT.MINGAPT) THEN309:       DMIN1(NWORST)=J5
321:          DMIN1(NWORST)=J5310:       DMIN2(NWORST)=PARENT(J5)
322:          DMIN2(NWORST)=PARENT(J5)311: !
323:       ELSE 
324:          IF (DUMMY/SCALEFAC.GT.MINGAPTHRESH) THEN 
325:             NMINGAP=NMINGAP+1 
326:             DMIN1(NMINGAP)=J5 
327:             DMIN2(NMINGAP)=PARENT(J5) 
328:             PRINT '(A,2I8)',' Dijinit> Pair with distance larger than minimum required:',J5,PARENT(J5) 
329:          ELSE 
330:             PRINT '(A,2I8)',' Dijinit> Pair with distance smaller than minimum required.' 
331:          ENDIF 
332:       ENDIF 
333: !      
334: !  On the first attempt there may only be two minima, and with more than one cpu available312: !  On the first attempt there may only be two minima, and with more than one cpu available
335: !  we may need to choose the same best path several times before we can get313: !  we may need to choose the same best path several times before we can get
336: !  more than one distinct candidate.314: !  more than one distinct candidate.
337: !315: !
338: !      IF (NMIN.GT.2) THEN316: !      IF (NMIN.GT.2) THEN
339: !         DO J4=1,PAIRDISTMAX317: !         DO J4=1,PAIRDISTMAX
340: !            IF (PAIRLIST(J5,J4).EQ.PARENT(J5)) THEN318: !            IF (PAIRLIST(J5,J4).EQ.PARENT(J5)) THEN
341: !               PAIRDIST(J5,J4)=HUGE(1.0D0)319: !               PAIRDIST(J5,J4)=HUGE(1.0D0)
342: !               GOTO 753320: !               GOTO 753
343: !            ENDIF321: !            ENDIF
350: !            ENDIF328: !            ENDIF
351: !         ENDDO329: !         ENDDO
352: !751      CONTINUE330: !751      CONTINUE
353: !      ENDIF331: !      ENDIF
354:    ENDIF332:    ENDIF
355:    J5=PARENT(J5)333:    J5=PARENT(J5)
356:    IF (J5.EQ.LJ1) EXIT334:    IF (J5.EQ.LJ1) EXIT
357:    IF (J5.EQ.0) EXIT335:    IF (J5.EQ.0) EXIT
358: ENDDO336: ENDDO
359: PRINT '(2(A,I8))','Dijinit> Number of steps=',NSTEPS,' number of missing connections=',NWORST337: PRINT '(2(A,I8))','Dijinit> Number of steps=',NSTEPS,' number of missing connections=',NWORST
360: IF (MINGAPT) THEN 
361:    IF (NMINGAP.GT.0) THEN 
362:       PRINT '(A,I8)','Dijinit> Number of connections larger than minimum distance:',NMINGAP 
363:       NWORST=NMINGAP 
364:    ELSE 
365:       PRINT '(A)','Dijinit> No missing connection is above the required distance cut off.' 
366:       PRINT '(A)','Dijinit> Set MINGAP to false and redo analysis' 
367:       MINGAPT=.FALSE. 
368:       GOTO 121 
369:    ENDIF 
370: ENDIF 
371: IF (DIJPRUNET) THEN !write the best path out to min.retain and then terminate338: IF (DIJPRUNET) THEN !write the best path out to min.retain and then terminate
372:    PATHMINS(NSTEPS+1)=J5339:    PATHMINS(NSTEPS+1)=J5
373:    WRITE(MUNIT,'(I8)') NSTEPS+1340:    WRITE(MUNIT,'(I8)') NSTEPS+1
374:    DO J6=1,NSTEPS+1341:    DO J6=1,NSTEPS+1
375:       WRITE(MUNIT,'(I8)') PATHMINS(J6)342:       WRITE(MUNIT,'(I8)') PATHMINS(J6)
376:    ENDDO343:    ENDDO
377:    CLOSE(MUNIT)344:    CLOSE(MUNIT)
378:    PRINT '(A)','Dijprune> Best path written to min.retain'345:    PRINT '(A)','Dijprune> Best path written to min.retain'
379:    DEALLOCATE(PATHMINS)346:    DEALLOCATE(PATHMINS)
380:    STOP347:    STOP


r29785/keywords.f 2016-07-06 15:39:24.778323449 +0100 r29784/keywords.f 2016-07-06 15:39:25.786337074 +0100
178:       DIJPRUNET=.FALSE.178:       DIJPRUNET=.FALSE.
179:       PAIRDISTMAX=100179:       PAIRDISTMAX=100
180:       NRANDOMMETRIC=100180:       NRANDOMMETRIC=100
181:       RANDOMMETRICT=.FALSE.181:       RANDOMMETRICT=.FALSE.
182:       PAIRDIST1=0182:       PAIRDIST1=0
183:       PAIRDIST2=0183:       PAIRDIST2=0
184:       TSTHRESH=HUGE(1.0D0)184:       TSTHRESH=HUGE(1.0D0)
185:       MAXBARRIER=HUGE(1.0D0)185:       MAXBARRIER=HUGE(1.0D0)
186:       MAXDOWNBARRIER=HUGE(1.0D0)186:       MAXDOWNBARRIER=HUGE(1.0D0)
187:       MINBARRIER=-HUGE(1.0D0)187:       MINBARRIER=-HUGE(1.0D0)
188:       MINGAPT=.FALSE. 
189:       MINGAPRATIOT=.FALSE. 
190:       MINGAPINP=0.0D0 
191:       COSTFUNCTIONPOWER=1188:       COSTFUNCTIONPOWER=1
192:       EXPCOSTFUNCTION=.FALSE.189:       EXPCOSTFUNCTION=.FALSE.
193:       INDEXCOSTFUNCTION=.FALSE.190:       INDEXCOSTFUNCTION=.FALSE.
194:       COPYFILES=''191:       COPYFILES=''
195:       COPYOPTIMT=.FALSE.192:       COPYOPTIMT=.FALSE.
196:       NPFOLD=0193:       NPFOLD=0
197:       PFOLDCONV=1.0D-4194:       PFOLDCONV=1.0D-4
198:       TFOLDT=.FALSE.195:       TFOLDT=.FALSE.
199:       NTFOLD=1.0D4 ! real not integer !196:       NTFOLD=1.0D4 ! real not integer !
200:       TOMEGA=1.0D0197:       TOMEGA=1.0D0
1424:          CALL READF(MICROEINC)1421:          CALL READF(MICROEINC)
1425:          CALL READF(MICROT)1422:          CALL READF(MICROT)
1426: C1423: C
1427: C  MINBARRIER - set this in order to exclude from the analysis bad TSs that are lower in1424: C  MINBARRIER - set this in order to exclude from the analysis bad TSs that are lower in
1428: C  potential energy than either of the connected minima (see checkTS.f90).1425: C  potential energy than either of the connected minima (see checkTS.f90).
1429: C  NB use with caution - TSs may legitimately be lower in FREE energy.1426: C  NB use with caution - TSs may legitimately be lower in FREE energy.
1430: C1427: C
1431:       ELSE IF (WORD.EQ.'MINBARRIER') THEN1428:       ELSE IF (WORD.EQ.'MINBARRIER') THEN
1432:          CALL READF(MINBARRIER)1429:          CALL READF(MINBARRIER)
1433: 1430: 
1434: C 
1435: C  MINGAP - exclude missing connections if their separation is smaller than MINGAPINP, 
1436: C  or alternatively if ratio is set smaller than MINGAPINP*(max. pair dist.), with 
1437: C  DIJINIT to focus on large separation rather than short connections 
1438: C 
1439:       ELSE IF (WORD.EQ.'MINGAP') THEN 
1440:          MINGAPT=.TRUE. 
1441:          CALL READF(MINGAPINP) 
1442:          IF (NITEMS.GT.2) CALL READA(UNSTRING) 
1443:          IF (TRIM(ADJUSTL(UNSTRING)).EQ.'RATIO') MINGAPRATIOT=.TRUE. 
1444:  
1445:  
1446:       ELSE IF (WORD.EQ.'MSSTOCK') THEN1431:       ELSE IF (WORD.EQ.'MSSTOCK') THEN
1447:          MSSTOCKT = .TRUE.1432:          MSSTOCKT = .TRUE.
1448:          CALL READI(NRBSITES)1433:          CALL READI(NRBSITES)
1449:          ALLOCATE(RBSITE(NRBSITES,3))1434:          ALLOCATE(RBSITE(NRBSITES,3))
1450:          CALL DEFMULTSTOCK()1435:          CALL DEFMULTSTOCK()
1451: 1436: 
1452: C1437: C
1453: C  Number of atoms - essential unless RIGIDBODIES/RBAA keyword is present.1438: C  Number of atoms - essential unless RIGIDBODIES/RBAA keyword is present.
1454: C1439: C
1455:       ELSE IF (WORD.EQ.'NATOMS') THEN1440:       ELSE IF (WORD.EQ.'NATOMS') THEN


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0