hdiff output

r32086/commons.f90 2017-03-13 22:30:23.482900633 +0000 r32085/commons.f90 2017-03-13 22:30:25.426926640 +0000
  1: MODULE COMMONS  1: MODULE COMMONS
  2:   2: 
  3:       INTEGER NMINA, NMINB, NMIN, NTS, SAVELENGTH, NPFOLD, PFOLDINT, NRWBINS, NUSEPAIRS, NCONNECTPAIRS, &  3:       INTEGER NMINA, NMINB, NMIN, NTS, SAVELENGTH, NPFOLD, PFOLDINT, NRWBINS, NUSEPAIRS, &
  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, NZEROS 14:      &        CONNECTMIN2F, CONNECTMIN2SAVE, NZEROS
 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:       INTEGER, ALLOCATABLE :: CONNECTPAIRSMIN(:,:) 
 21: ! 20: !
 22: ! I/O unit numbers 21: ! I/O unit numbers
 23: ! 22: !
 24:       INTEGER, PARAMETER :: UMINDATA=11, UTSDATA=12, UMIN=13, UTS=15 23:       INTEGER, PARAMETER :: UMINDATA=11, UTSDATA=12, UMIN=13, UTS=15
 25:  24: 
 26:       INTEGER :: MAXMIN=26 25:       INTEGER :: MAXMIN=26
 27:       INTEGER :: DMINMAX=10 26:       INTEGER :: DMINMAX=10
 28:       INTEGER :: MAXTS=10 27:       INTEGER :: MAXTS=10
 29:       INTEGER :: MAXPAIRS=10 28:       INTEGER :: MAXPAIRS=10
 30:       INTEGER :: MAXDONE=10 29:       INTEGER :: MAXDONE=10
101:      &        DUMPGROUPST, FREEPAIRT, KSHORTESTPATHST, KSHORT_FULL_PRINTT, DIJINITFLYT, BHINTERPT, ICINTERPT, &100:      &        DUMPGROUPST, FREEPAIRT, KSHORTESTPATHST, KSHORT_FULL_PRINTT, DIJINITFLYT, BHINTERPT, ICINTERPT, &
102:      &        DUMMYTST, DOCKT, DSTAGE(6), USEPAIRST, LOWESTFRQT, BISECTT, NGTDISCONNECTALL, ANGLEAXIS2, MULTISITEPYT, TFOLDT, &101:      &        DUMMYTST, DOCKT, DSTAGE(6), USEPAIRST, LOWESTFRQT, BISECTT, NGTDISCONNECTALL, ANGLEAXIS2, MULTISITEPYT, TFOLDT, &
103:      &        SLURMT, INDEXCOSTFUNCTION, CVT, CVMINIMAT, DOST, IMFRQT, CLOSEFILEST, PULLT, FRICTIONT, ATOMMATCHFULL, &102:      &        SLURMT, INDEXCOSTFUNCTION, CVT, CVMINIMAT, DOST, IMFRQT, CLOSEFILEST, PULLT, FRICTIONT, ATOMMATCHFULL, &
104:      &        INTCONSTRAINTT, CHECKCONINT, INTLJT, INTERPCOSTFUNCTION, REMOVEUNCONNECTEDT, ATOMMATCHDIST, &103:      &        INTCONSTRAINTT, CHECKCONINT, INTLJT, INTERPCOSTFUNCTION, REMOVEUNCONNECTEDT, ATOMMATCHDIST, &
105:      &        DBPT, DBPTDT, DMBLPYT, EFIELDT, MSSTOCKT, NTIPT, PAHAT, PAPT, PATCHYDT, STOCKAAT, RBAAT, RBSYMT, TRAPT, SILANET, &104:      &        DBPT, DBPTDT, DMBLPYT, EFIELDT, MSSTOCKT, NTIPT, PAHAT, PAPT, PATCHYDT, STOCKAAT, RBAAT, RBSYMT, TRAPT, SILANET, &
106:      &        OHCELLT, INTFREEZET, LPERMDIST, PBST, RANDOMMETRICT, SSHT, ALLTST, USERPOTT, CHECKMINT, &105:      &        OHCELLT, INTFREEZET, LPERMDIST, PBST, RANDOMMETRICT, SSHT, ALLTST, USERPOTT, CHECKMINT, &
107:      &        CHECKTST, CHECKSPT, FROMLOWESTT, ADDMINXYZT, MACHINE, RATESCYCLET, NOINVERSION, NEWCONNECTIONST, NIMET, NIHEAM7T, &106:      &        CHECKTST, CHECKSPT, FROMLOWESTT, ADDMINXYZT, MACHINE, RATESCYCLET, NOINVERSION, NEWCONNECTIONST, NIMET, NIHEAM7T, &
108:      &        NIH2LEPST, DISTANCET, RATETARGETT, TARGETHIT, ALLOWABT, MICROTHERMT, RFKMCT, REGROUPKMCT, ONEREGROUPT, PHI4MODT, &107:      &        NIH2LEPST, DISTANCET, RATETARGETT, TARGETHIT, ALLOWABT, MICROTHERMT, RFKMCT, REGROUPKMCT, ONEREGROUPT, PHI4MODT, &
109:      &        PERSISTT, REGROUPPERSISTT, NOLABELST, SHANNONT, MAKEPAIRS, SKIPPAIRST, PERSISTAPPROXT, ALLCOMPONENTST, &108:      &        PERSISTT, REGROUPPERSISTT, NOLABELST, SHANNONT, MAKEPAIRS, SKIPPAIRST, PERSISTAPPROXT, ALLCOMPONENTST, &
110:      &        SHANNONRT, SHANNONZT, CUDAT, MLLJAT3, MLP3T, DIJPRUNET, PRINTSUMMARYT, MKTRAPT, MLPB3T, PRUNECYCLET, PAIRSIGNORET, &109:      &        SHANNONRT, SHANNONZT, CUDAT, MLLJAT3, MLP3T, DIJPRUNET, PRINTSUMMARYT, MKTRAPT, MLPB3T, PRUNECYCLET, PAIRSIGNORET, &
111:      &        NOTRANSROTT, NOPOINTGROUPT, MACROIONT, CONNECTPAIRST110:      &        NOTRANSROTT, NOPOINTGROUPT, MACROIONT
112: 111: 
113:       LOGICAL, ALLOCATABLE :: SHIFTABLE(:)112:       LOGICAL, ALLOCATABLE :: SHIFTABLE(:)
114:       CHARACTER(LEN=80) COORDSLIGANDSTR, COORDSCOMPLEXSTR, COORDSPROTEINSTR113:       CHARACTER(LEN=80) COORDSLIGANDSTR, COORDSCOMPLEXSTR, COORDSPROTEINSTR
115:       CHARACTER(LEN=80) EXEC,EXECGMIN114:       CHARACTER(LEN=80) EXEC,EXECGMIN
116:       CHARACTER(LEN=80) PATHNAME, MINNAME, ADDMINXYZNAME, ALLCOMPS115:       CHARACTER(LEN=80) PATHNAME, MINNAME, ADDMINXYZNAME, ALLCOMPS
117:       CHARACTER(LEN=150) COPYFILES116:       CHARACTER(LEN=150) COPYFILES
118:       CHARACTER(LEN=80) USEPAIRSFILE117:       CHARACTER(LEN=80) USEPAIRSFILE
119:       CHARACTER(LEN=80) CONNECTPAIRSFILE 
120:       CHARACTER(LEN=80) MAKEPAIRSFILE118:       CHARACTER(LEN=80) MAKEPAIRSFILE
121:       CHARACTER(LEN=2) DIRECTION119:       CHARACTER(LEN=2) DIRECTION
122:       CHARACTER(LEN=5) UNCONNECTEDS120:       CHARACTER(LEN=5) UNCONNECTEDS
123:       CHARACTER(LEN=5) ZSYM121:       CHARACTER(LEN=5) ZSYM
124:       CHARACTER(LEN=2), ALLOCATABLE ::  ZSYMBOL(:)122:       CHARACTER(LEN=2), ALLOCATABLE ::  ZSYMBOL(:)
125:       CHARACTER(LEN=1) ENSEMBLE123:       CHARACTER(LEN=1) ENSEMBLE
126: 124: 
127:       CHARACTER(LEN=4), ALLOCATABLE :: RESLABEL(:), ATOMLABEL(:)125:       CHARACTER(LEN=4), ALLOCATABLE :: RESLABEL(:), ATOMLABEL(:)
128:       INTEGER, ALLOCATABLE :: RESNUMBER(:)126:       INTEGER, ALLOCATABLE :: RESNUMBER(:)
129:       INTEGER, ALLOCATABLE :: NCONNGROUP(:) ! jmc127:       INTEGER, ALLOCATABLE :: NCONNGROUP(:) ! jmc


r32086/connectd.f90 2017-03-13 22:30:23.702903576 +0000 r32085/connectd.f90 2017-03-13 22:30:25.654929691 +0000
108:             IF (CONNECTMIN2.GT.MIN(LOOP2END,NMIN)) THEN108:             IF (CONNECTMIN2.GT.MIN(LOOP2END,NMIN)) THEN
109:                CONNECTMIN1=J1+1109:                CONNECTMIN1=J1+1
110:                IF (CONNECTMIN1.EQ.LOOP2END) LOOP2END=NMIN110:                IF (CONNECTMIN1.EQ.LOOP2END) LOOP2END=NMIN
111:                CONNECTMIN2=MAX(CONNECTMIN2SAVE,CONNECTMIN1+1)111:                CONNECTMIN2=MAX(CONNECTMIN2SAVE,CONNECTMIN1+1)
112:             ENDIF112:             ENDIF
113:             GOTO 777113:             GOTO 777
114:          ENDIF114:          ENDIF
115:       ENDIF115:       ENDIF
116:    ENDDO loop2116:    ENDDO loop2
117: !  CONNECTMIN2=0 ! this is only to allow an efficient restart117: !  CONNECTMIN2=0 ! this is only to allow an efficient restart
118:    PRINT '(A,I8,A,I8)','setting CONNECTMIN2 ',CONNECTMIN2,' to CONNECTMIN2SAVE ',CONNECTMIN2SAVE 
119:    CONNECTMIN2=CONNECTMIN2SAVE118:    CONNECTMIN2=CONNECTMIN2SAVE
120: ENDDO119: ENDDO
121: ! JMC commenting out the line below and the CONNECTMIN2=0 after loop2 (above) so that ALL possible new pairs will be 120: ! JMC commenting out the line below and the CONNECTMIN2=0 after loop2 (above) so that ALL possible new pairs will be 
122: ! considered next time this double loop is executed. pairs.data will make sure that each pair is only tried once. 121: ! considered next time this double loop is executed. pairs.data will make sure that each pair is only tried once. 
123: ! CONNECTMIN1=NMIN+1122: ! CONNECTMIN1=NMIN+1
124: 777 CONTINUE123: 777 CONTINUE
125: PRINT '(A,I8)','connectd> Number of available connection pairs to try=',NAVAIL124: PRINT '(A,I8)','connectd> Number of available connection pairs to try=',NAVAIL
126: 125: 
127: CALL CPU_TIME(TNEW)126: CALL CPU_TIME(TNEW)
128: TCONNECTDIST=TCONNECTDIST+TNEW-ELAPSED127: TCONNECTDIST=TCONNECTDIST+TNEW-ELAPSED


r32086/cycle2.f90 2017-03-13 22:30:23.930906624 +0000 r32085/cycle2.f90 2017-03-13 22:30:25.878932689 +0000
149:    ELSEIF (CONUNCONT) THEN149:    ELSEIF (CONUNCONT) THEN
150:       CALL GETCUPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)150:       CALL GETCUPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)
151: !  ELSEIF (PTAUT) THEN151: !  ELSEIF (PTAUT) THEN
152: !     CALL GETPPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)152: !     CALL GETPPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)
153:    ELSEIF (SHORTCUTT) THEN153:    ELSEIF (SHORTCUTT) THEN
154:       CALL GETSPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)154:       CALL GETSPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)
155:    ELSEIF (UNTRAPT) THEN155:    ELSEIF (UNTRAPT) THEN
156:       CALL GETUPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)156:       CALL GETUPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)
157:    ELSEIF (FREEPAIRT) THEN157:    ELSEIF (FREEPAIRT) THEN
158:       CALL GETFREEPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)158:       CALL GETFREEPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)
159:    ELSEIF (CONNECTPAIRST) THEN 
160:       IF (.NOT.NOMORE) THEN 
161:          IF (NPAIRDONE.GE.NCONNECTPAIRS) THEN 
162:             NOMORE=.TRUE. 
163:             PRINT '(A)','cycle2> Completed sweep through all available pairs of minima' 
164:          ELSE 
165:             CALL GETNCONN ! must call this first to set NCONNMAX - used for declarations in GETCONNECTPAIR 
166:             CALL GETCONNECTPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS) 
167:          ENDIF 
168:       ENDIF 
169:    ELSEIF (USEPAIRST) THEN159:    ELSEIF (USEPAIRST) THEN
170:       CALL GETNCONN ! must call this first to set NCONNMAX - used for declarations in GETUSEPAIR160:       CALL GETNCONN ! must call this first to set NCONNMAX - used for declarations in GETUSEPAIR
171:       CALL GETUSEPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)161:       CALL GETUSEPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)
172:    ELSEIF (ADDMINXYZT) THEN162:    ELSEIF (ADDMINXYZT) THEN
173:       ADDMINXYZCHECK=ADDMINXYZCHECK+1163:       ADDMINXYZCHECK=ADDMINXYZCHECK+1
174:       IF (ADDMINXYZCHECK.LE.NMINADDXYZ) THEN164:       IF (ADDMINXYZCHECK.LE.NMINADDXYZ) THEN
175:          READ(XYZUNIT,'(I6)') NDUMMY165:          READ(XYZUNIT,'(I6)') NDUMMY
176:          READ(XYZUNIT,'(A)') SDUMMY166:          READ(XYZUNIT,'(A)') SDUMMY
177:          READ(XYZUNIT,*) (SDUMMY,SPOINTS(3*(J1-1)+1:3*(J1-1)+3),J1=1,NATOMS)167:          READ(XYZUNIT,*) (SDUMMY,SPOINTS(3*(J1-1)+1:3*(J1-1)+3),J1=1,NATOMS)
178:       ENDIF168:       ENDIF
223:       ENDIF213:       ENDIF
224:    ELSE214:    ELSE
225:       CALL GETPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)215:       CALL GETPAIR(NAVAIL,NUSED,MINS(J3),MINF(J3),SPOINTS,FPOINTS)
226:    ENDIF216:    ENDIF
227:    IF (ADDMINXYZT) THEN 217:    IF (ADDMINXYZT) THEN 
228:       IF (ADDMINXYZCHECK.LE.NMINADDXYZ) CALL ADDMINXYZODATA(J3,SPOINTS) 218:       IF (ADDMINXYZCHECK.LE.NMINADDXYZ) CALL ADDMINXYZODATA(J3,SPOINTS) 
229:    ELSEIF (CHECKSPT) THEN 219:    ELSEIF (CHECKSPT) THEN 
230:       IF (NSPCHECK.LE.CHECKSPF) CALL CHECKSPODATA(J3,SPOINTS) 220:       IF (NSPCHECK.LE.CHECKSPF) CALL CHECKSPODATA(J3,SPOINTS) 
231:    ELSEIF (NEWCONNECTIONST) THEN 221:    ELSEIF (NEWCONNECTIONST) THEN 
232:       IF (.NOT.NOMORE) CALL NEWCONNODATA(J3,SPOINTS) 222:       IF (.NOT.NOMORE) CALL NEWCONNODATA(J3,SPOINTS) 
233:    ELSEIF (CONNECTPAIRST) THEN  
234:       IF (.NOT.NOMORE) CALL CONNECTODATA(J3,SPOINTS,FPOINTS) 
235:    ELSE223:    ELSE
236:       CALL CONNECTODATA(J3,SPOINTS,FPOINTS)224:       CALL CONNECTODATA(J3,SPOINTS,FPOINTS)
237:    ENDIF225:    ENDIF
238:    CALL FLUSH(6) ! the child process may duplicate output without this line!226:    CALL FLUSH(6) ! the child process may duplicate output without this line!
239:    IF (.NOT.(NOMORE.OR.(CHECKSPT.AND.(NSPCHECK.GT.CHECKSPF)).OR.(ADDMINXYZT.AND.(ADDMINXYZCHECK.GT.NMINADDXYZ)))) THEN227:    IF (.NOT.(NOMORE.OR.(CHECKSPT.AND.(NSPCHECK.GT.CHECKSPF)).OR.(ADDMINXYZT.AND.(ADDMINXYZCHECK.GT.NMINADDXYZ)))) THEN
240:       IF (CHECKSPT) MINID(J3)=NSPCHECK228:       IF (CHECKSPT) MINID(J3)=NSPCHECK
241:       IF (ADDMINXYZT) MINID(J3)=ADDMINXYZCHECK229:       IF (ADDMINXYZT) MINID(J3)=ADDMINXYZCHECK
242:       CALL FORK_SUBR(PID(J3)) ! PID is zero in the child, non-zero in the parent230:       CALL FORK_SUBR(PID(J3)) ! PID is zero in the child, non-zero in the parent
243:       IF (DEBUG.AND.(PID(J3).NE.0)) WRITE(*,'(A,I8)') 'cycle2> forked connect run process id=',PID(J3)231:       IF (DEBUG.AND.(PID(J3).NE.0)) WRITE(*,'(A,I8)') 'cycle2> forked connect run process id=',PID(J3)
244:       CALL FLUSH(6) 232:       CALL FLUSH(6) 
472:                CONNDOING=CONNDOING+1460:                CONNDOING=CONNDOING+1
473:                CONNATTEMPTS=0461:                CONNATTEMPTS=0
474:                IF (CONNDOING.GT.NMIN) THEN462:                IF (CONNDOING.GT.NMIN) THEN
475:                   PRINT '(A)','cycle2> Completed sweep through all available minima'463:                   PRINT '(A)','cycle2> Completed sweep through all available minima'
476:                   NOMORE=.TRUE.464:                   NOMORE=.TRUE.
477:                ENDIF465:                ENDIF
478:             ENDIF466:             ENDIF
479:          ENDIF467:          ENDIF
480:       ELSEIF (FREEPAIRT) THEN468:       ELSEIF (FREEPAIRT) THEN
481:          CALL GETFREEPAIR(NAVAIL,NUSED,MINS(NEWJOB),MINF(NEWJOB),SPOINTS,FPOINTS)469:          CALL GETFREEPAIR(NAVAIL,NUSED,MINS(NEWJOB),MINF(NEWJOB),SPOINTS,FPOINTS)
482:       ELSEIF (CONNECTPAIRST) THEN 
483:          IF (.NOT.NOMORE) THEN 
484:             IF (NPAIRDONE.GE.NCONNECTPAIRS) THEN 
485:                NOMORE=.TRUE. 
486:                PRINT '(A)','cycle2> Completed sweep through all available pairs of minima' 
487:             ELSE 
488:                CALL GETNCONN ! must call this first to set NCONNMAX - used for declarations in GETCONNECTPAIR 
489:                CALL GETCONNECTPAIR(NAVAIL,NUSED,MINS(NEWJOB),MINF(NEWJOB),SPOINTS,FPOINTS) 
490:             ENDIF 
491:          ENDIF 
492:       ELSEIF (USEPAIRST) THEN470:       ELSEIF (USEPAIRST) THEN
493:          CALL GETNCONN ! must call this first to set NCONNMAX - used for declarations in GETUSEPAIR471:          CALL GETNCONN ! must call this first to set NCONNMAX - used for declarations in GETUSEPAIR
494:          CALL GETUSEPAIR(NAVAIL,NUSED,MINS(NEWJOB),MINF(NEWJOB),SPOINTS,FPOINTS)472:          CALL GETUSEPAIR(NAVAIL,NUSED,MINS(NEWJOB),MINF(NEWJOB),SPOINTS,FPOINTS)
495:       ELSEIF (ADDMINXYZT) THEN473:       ELSEIF (ADDMINXYZT) THEN
496:          ADDMINXYZCHECK=ADDMINXYZCHECK+1474:          ADDMINXYZCHECK=ADDMINXYZCHECK+1
497:          IF (ADDMINXYZCHECK.LE.NMINADDXYZ) THEN475:          IF (ADDMINXYZCHECK.LE.NMINADDXYZ) THEN
498:             READ(XYZUNIT,'(I6)') NDUMMY476:             READ(XYZUNIT,'(I6)') NDUMMY
499:             READ(XYZUNIT,'(A)') SDUMMY477:             READ(XYZUNIT,'(A)') SDUMMY
500:             READ(XYZUNIT,*) (SDUMMY,SPOINTS(3*(J1-1)+1:3*(J1-1)+3),J1=1,NATOMS)478:             READ(XYZUNIT,*) (SDUMMY,SPOINTS(3*(J1-1)+1:3*(J1-1)+3),J1=1,NATOMS)
501:          ENDIF479:          ENDIF
504:          IF (NSPCHECK.LE.CHECKSPF) THEN482:          IF (NSPCHECK.LE.CHECKSPF) THEN
505:             IF (CHECKMINT) THEN483:             IF (CHECKMINT) THEN
506:                READ(UMIN,REC=NSPCHECK) SPOINTS(1:NOPT)484:                READ(UMIN,REC=NSPCHECK) SPOINTS(1:NOPT)
507:             ELSE485:             ELSE
508:                READ(UTS,REC=NSPCHECK) SPOINTS(1:NOPT)486:                READ(UTS,REC=NSPCHECK) SPOINTS(1:NOPT)
509:             ENDIF487:             ENDIF
510:          ENDIF488:          ENDIF
511:       ELSE489:       ELSE
512:          CALL GETPAIR(NAVAIL,NUSED,MINS(NEWJOB),MINF(NEWJOB),SPOINTS,FPOINTS)490:          CALL GETPAIR(NAVAIL,NUSED,MINS(NEWJOB),MINF(NEWJOB),SPOINTS,FPOINTS)
513:       ENDIF491:       ENDIF
514:  
515: !     WRITE(*,'(2(A,I6),A,F12.1,A,F12.3,A,I8)') 'cycle2> connecting minima ',MINS(NEWJOB),' and ', &492: !     WRITE(*,'(2(A,I6),A,F12.1,A,F12.3,A,I8)') 'cycle2> connecting minima ',MINS(NEWJOB),' and ', &
516: ! &      MINF(NEWJOB), ' distance=',DISTANCE,' |Pfold diff|=',ABS(GPFOLD(MINS(NEWJOB))-GPFOLD(MINF(NEWJOB))),' rejects=',NREJ493: ! &      MINF(NEWJOB), ' distance=',DISTANCE,' |Pfold diff|=',ABS(GPFOLD(MINS(NEWJOB))-GPFOLD(MINF(NEWJOB))),' rejects=',NREJ
517:       IF (CHECKSPT) THEN 494:       IF (CHECKSPT) THEN 
518:          IF (NSPCHECK.LE.CHECKSPF) CALL CHECKSPODATA(NEWJOB,SPOINTS) 495:          IF (NSPCHECK.LE.CHECKSPF) CALL CHECKSPODATA(NEWJOB,SPOINTS) 
519:       ELSEIF (NEWCONNECTIONST) THEN 496:       ELSEIF (NEWCONNECTIONST) THEN 
520:          IF (.NOT.NOMORE) CALL NEWCONNODATA(NEWJOB,SPOINTS) 497:          IF (.NOT.NOMORE) CALL NEWCONNODATA(NEWJOB,SPOINTS) 
521:       ELSEIF (CONNECTPAIRST) THEN  
522:          IF (.NOT.NOMORE) CALL CONNECTODATA(NEWJOB,SPOINTS,FPOINTS) 
523:       ELSEIF (ADDMINXYZT) THEN 498:       ELSEIF (ADDMINXYZT) THEN 
524:          IF (ADDMINXYZCHECK.LE.NMINADDXYZ) CALL ADDMINXYZODATA(NEWJOB,SPOINTS) 499:          IF (ADDMINXYZCHECK.LE.NMINADDXYZ) CALL ADDMINXYZODATA(NEWJOB,SPOINTS) 
525:       ELSE500:       ELSE
526:          CALL CONNECTODATA(NEWJOB,SPOINTS,FPOINTS)501:          CALL CONNECTODATA(NEWJOB,SPOINTS,FPOINTS)
527:       ENDIF502:       ENDIF
528:       CALL FLUSH(6) ! the child process may duplicate output without this line!503:       CALL FLUSH(6) ! the child process may duplicate output without this line!
529:       IF (.NOT.(NOMORE.OR.(CHECKSPT.AND.(NSPCHECK.GT.CHECKSPF)).OR.(ADDMINXYZT.AND.(ADDMINXYZCHECK.GT.NMINADDXYZ)))) THEN504:       IF (.NOT.(NOMORE.OR.(CHECKSPT.AND.(NSPCHECK.GT.CHECKSPF)).OR.(ADDMINXYZT.AND.(ADDMINXYZCHECK.GT.NMINADDXYZ)))) THEN
530:          IF (CHECKSPT) MINID(NEWJOB)=NSPCHECK505:          IF (CHECKSPT) MINID(NEWJOB)=NSPCHECK
531:          IF (ADDMINXYZT) MINID(NEWJOB)=ADDMINXYZCHECK506:          IF (ADDMINXYZT) MINID(NEWJOB)=ADDMINXYZCHECK
532:          CALL FORK_SUBR(PID(NEWJOB))507:          CALL FORK_SUBR(PID(NEWJOB))


r32086/getconnectpair.f90 2017-03-13 22:30:24.514914662 +0000 r32085/getconnectpair.f90 2017-03-13 22:30:26.102935702 +0000
  1: !   PATHSAMPLE: A driver for OPTIM to create stationary point databases using discrete path sampling and perform kinetic analysis  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/PATHSAMPLE/source/getconnectpair.f90' in revision 32085
  2: !   Copyright (C) 1999-2009 David J. Wales 
  3: !   This file is part of PATHSAMPLE. 
  4: ! 
  5: !   PATHSAMPLE is free software; you can redistribute it and/or modify 
  6: !   it under the terms of the GNU General Public License as published by 
  7: !   the Free Software Foundation; either version 2 of the License, or 
  8: !   (at your option) any later version. 
  9: ! 
 10: !   PATHSAMPLE is distributed in the hope that it will be useful, 
 11: !   but WITHOUT ANY WARRANTY; without even the implied warranty of 
 12: !   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 13: !   GNU General Public License for more details. 
 14: ! 
 15: !   You should have received a copy of the GNU General Public License 
 16: !   along with this program; if not, write to the Free Software 
 17: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 18: ! 
 19:  
 20: ! 
 21: !  Subroutine to provide candidate pairs of minima based on the list 
 22: !  of NUSEPAIRS in array USEPAIRSMIN 
 23: ! 
 24: SUBROUTINE GETCONNECTPAIR(NAVAIL,NUSED,MINS,MINF,SPOINTS,FPOINTS) 
 25: USE COMMONS, ONLY: NCONNECTPAIRS, CONNECTPAIRSMIN, UMIN, NATOMS, DMIN1, DMIN2, NATTEMPT, NCPU, MAXBARRIER,  & 
 26:   &               DEBUG, NPAIRFRQ, PAIR1, PAIR2, NPAIRFRQ, NPAIRDONE, MAXPAIRS, LOCATIONA, LOCATIONB, NCONNMAX, & 
 27:                   NTS, NMIN, NMINA, NMINB, DIRECTION, PLUS, MINUS, KPLUS, KMINUS, NCONN, & 
 28:   &               ETS, EMIN, SKIPPAIRST 
 29: USE PORFUNCS 
 30: IMPLICIT NONE 
 31: INTEGER NUSED, MINS, MINF, NAVAIL, PAIRSTODO, J1, J2, J3, NDIFF 
 32: DOUBLE PRECISION SPOINTS(3*NATOMS), FPOINTS(3*NATOMS) 
 33: DOUBLE PRECISION DMATMC(NCONNMAX,NMIN), KSUM(NMIN) 
 34: INTEGER NCOL(NMIN), NVAL(NCONNMAX,NMIN), NDISTA(NMIN), NDISTB(NMIN), NCYCLE, DMIN 
 35: INTEGER :: NDISTSTART(NMIN), NUNCONSTART ! sn402 
 36: LOGICAL DEADTS(NTS), ISA(NMIN), ISB(NMIN), CHANGED, CHECKCONN 
 37: INTEGER DMAX, NUNCONA, NUNCONB 
 38: DOUBLE PRECISION :: CUT_UNDERFLOW=-300.0D0 
 39:  
 40: IF (NAVAIL.EQ.0) THEN 
 41: ! 
 42: ! If called a second time we won't get any more candidate pairs because the routine 
 43: ! will detect each pair has been tried before.  
 44: ! 
 45:    PAIRSTODO=NCONNECTPAIRS 
 46:    IF (ALLOCATED(DMIN1)) DEALLOCATE(DMIN1,DMIN2) 
 47:    ALLOCATE(DMIN1(PAIRSTODO),DMIN2(PAIRSTODO)) 
 48:  
 49:    minloop: DO J1=1,NCONNECTPAIRS 
 50:       DO J3=1,NPAIRDONE 
 51:          IF ((PAIR1(J3).EQ.CONNECTPAIRSMIN(J1,1)).AND.(PAIR2(J3).EQ.CONNECTPAIRSMIN(J1,2))) CYCLE minloop ! do not repeat searches 
 52:          IF ((PAIR1(J3).EQ.CONNECTPAIRSMIN(J1,2)).AND.(PAIR2(J3).EQ.CONNECTPAIRSMIN(J1,1))) CYCLE minloop ! do not repeat searches 
 53:       ENDDO 
 54:       NAVAIL=NAVAIL+1 
 55:       DMIN1(NAVAIL)=CONNECTPAIRSMIN(J1,1) 
 56:       DMIN2(NAVAIL)=CONNECTPAIRSMIN(J1,2) 
 57:  
 58:       IF (DEBUG) PRINT '(3(A,I8))','getconnectpair> connection ',NAVAIL,' pair ',CONNECTPAIRSMIN(J1,1),' and ',CONNECTPAIRSMIN(J1,2) 
 59:    ENDDO minloop 
 60:  
 61:    NAVAIL=MIN(NAVAIL,PAIRSTODO)  
 62:    PRINT '(A,I8,A)','getconnectpair> list of ',NAVAIL,' pairs' 
 63:    PRINT '(2I8)',(DMIN1(J1),DMIN2(J1),J1=1,NAVAIL) 
 64:    IF (NAVAIL.EQ.0) THEN 
 65:       PRINT '(A)','getconnectpair> No more candidate pairs of minima in getconnectpair - quit' 
 66:       STOP 
 67:    ENDIF 
 68:    NUSED=0 
 69: ENDIF 
 70:  
 71: NUSED=NUSED+1 
 72: NAVAIL=NAVAIL-1 
 73: IF (NAVAIL.LT.0) THEN 
 74:    PRINT '(A)','getconnectpair> No more candidate pairs of minima in getusepair - quit' 
 75:     STOP 
 76: ENDIF 
 77:  
 78: MINS=DMIN1(NUSED) 
 79: MINF=DMIN2(NUSED) 
 80:  
 81: WRITE(*,'(5(A,I8))') 'getconnectpair> connecting minima ',MINS,' and ',MINF, ' pairs used=',  & 
 82:   &  NUSED,' remaining=',NAVAIL,' total pairs=',NPAIRDONE 
 83: NPAIRDONE=NPAIRDONE+1 
 84: IF (NPAIRDONE.GT.MAXPAIRS) CALL PAIRDOUBLE 
 85: PAIR1(NPAIRDONE)=DMIN1(NUSED) 
 86: PAIR2(NPAIRDONE)=DMIN2(NUSED) 
 87: CALL FLUSH(6) 
 88: READ(UMIN,REC=MINS) SPOINTS(1:3*NATOMS) 
 89: READ(UMIN,REC=MINF) FPOINTS(1:3*NATOMS) 
 90:  
 91: END SUBROUTINE GETCONNECTPAIR 


r32086/keywords.f 2017-03-13 22:30:24.742917494 +0000 r32085/keywords.f 2017-03-13 22:30:26.334938786 +0000
256:       BHINTERPT=.FALSE.256:       BHINTERPT=.FALSE.
257:       BHACCREJ=0.5D0257:       BHACCREJ=0.5D0
258:       BHSTEPSIZE=0.4D0258:       BHSTEPSIZE=0.4D0
259:       BHCONV=0.01D0259:       BHCONV=0.01D0
260:       BHSTEPS=1000260:       BHSTEPS=1000
261:       BHTEMP=1.0D0261:       BHTEMP=1.0D0
262:       BHK=1.0D0262:       BHK=1.0D0
263:       ICINTERPT=.FALSE.263:       ICINTERPT=.FALSE.
264: 264: 
265:       USEPAIRST=.FALSE.265:       USEPAIRST=.FALSE.
266:       CONNECTPAIRST=.FALSE. 
267:       LOWESTFRQT=.FALSE.266:       LOWESTFRQT=.FALSE.
268:       IMFRQT=.FALSE.267:       IMFRQT=.FALSE.
269:       EVCUT=2.0D-6268:       EVCUT=2.0D-6
270: 269: 
271:       BISECTT=.FALSE.270:       BISECTT=.FALSE.
272:       DIAGT=.FALSE.271:       DIAGT=.FALSE.
273:       ARNOLDIT=.FALSE.272:       ARNOLDIT=.FALSE.
274:       SLURMT=.FALSE.273:       SLURMT=.FALSE.
275:       CUDAT=.FALSE.274:       CUDAT=.FALSE.
276:       CVMINIMAT=.FALSE.275:       CVMINIMAT=.FALSE.
762: C761: C
763:       ELSE IF (WORD.EQ.'CLOSEFILES') THEN762:       ELSE IF (WORD.EQ.'CLOSEFILES') THEN
764:          CLOSEFILEST=.TRUE.763:          CLOSEFILEST=.TRUE.
765: C764: C
766: C  Minimum number of connections for each minimum.765: C  Minimum number of connections for each minimum.
767: C766: C
768:       ELSE IF (WORD.EQ.'CONNECTIONS') THEN767:       ELSE IF (WORD.EQ.'CONNECTIONS') THEN
769:          CALL READI(CONNECTIONS)768:          CALL READI(CONNECTIONS)
770:          IF (NITEMS.GT.2) CALL READI(MAXTSATTEMPTS)769:          IF (NITEMS.GT.2) CALL READI(MAXTSATTEMPTS)
771: C770: C
772: C  Connection attempts from airs of minima in user specified file 
773: C 
774:       ELSE IF (WORD.EQ.'CONNECTPAIRS') THEN 
775:          CONNECTPAIRST=.TRUE. 
776:          CALL READA(CONNECTPAIRSFILE) 
777: C 
778: C  Specify that the database is grown by attempting all connections between771: C  Specify that the database is grown by attempting all connections between
779: C  known minima within a distance cutoff.772: C  known minima within a distance cutoff.
780: C773: C
781:       ELSE IF (WORD.EQ.'CONNECTREGION') THEN774:       ELSE IF (WORD.EQ.'CONNECTREGION') THEN
782:          CONNECTREGIONT=.TRUE.775:          CONNECTREGIONT=.TRUE.
783:          IF (NITEMS.GT.1) CALL READI(CONNECTMIN1)776:          IF (NITEMS.GT.1) CALL READI(CONNECTMIN1)
784:          IF (NITEMS.GT.2) CALL READI(CONNECTMIN2)777:          IF (NITEMS.GT.2) CALL READI(CONNECTMIN2)
785:          IF (NITEMS.GT.3) CALL READF(CONNECTDIST)778:          IF (NITEMS.GT.3) CALL READF(CONNECTDIST)
786:          IF (NITEMS.GT.4) CALL READI(CONNECTMIN2F)779:          IF (NITEMS.GT.4) CALL READI(CONNECTMIN2F)
787:          CONNECTMIN2SAVE=CONNECTMIN2780:          CONNECTMIN2SAVE=CONNECTMIN2


r32086/main.F 2017-03-13 22:30:24.966920485 +0000 r32085/main.F 2017-03-13 22:30:26.562941839 +0000
503:      &                     ' connections up to a maximum ',MAXTSATTEMPTS,' attempts each'503:      &                     ' connections up to a maximum ',MAXTSATTEMPTS,' attempts each'
504:       ELSEIF (NATTEMPT.GT.0) THEN504:       ELSEIF (NATTEMPT.GT.0) THEN
505:          PRINT '(A,F12.3)','Pairs of minima will be chosen based upon a minimum committor probability difference of ',PSCALE505:          PRINT '(A,F12.3)','Pairs of minima will be chosen based upon a minimum committor probability difference of ',PSCALE
506:          IF (NPAIRFRQ.LT.1) THEN506:          IF (NPAIRFRQ.LT.1) THEN
507:             PRINT '(A,F12.3)','Pairs will not be recalculated unless we run out of possibilities'507:             PRINT '(A,F12.3)','Pairs will not be recalculated unless we run out of possibilities'
508:          ELSE508:          ELSE
509:             PRINT '(A,I10,A)','Pairs will be recalculated every ',NPAIRFRQ,' cycles'509:             PRINT '(A,I10,A)','Pairs will be recalculated every ',NPAIRFRQ,' cycles'
510:          ENDIF510:          ENDIF
511:       ELSEIF (USEPAIRST) THEN511:       ELSEIF (USEPAIRST) THEN
512:          PRINT '(A,A)','Pairs of minima will be chosen from the sequence in file ',TRIM(ADJUSTL(USEPAIRSFILE))512:          PRINT '(A,A)','Pairs of minima will be chosen from the sequence in file ',TRIM(ADJUSTL(USEPAIRSFILE))
513:       ELSEIF (CONNECTPAIRST) THEN 
514:          PRINT '(A,A)','Pairs of minima will be taken from the file ',TRIM(ADJUSTL(CONNECTPAIRSFILE)) 
515:       ENDIF513:       ENDIF
516:       IF (DUMMYTST) THEN514:       IF (DUMMYTST) THEN
517:          IF (BHINTERPT) PRINT '(A)','Dummy ts entries will be created for closest pairs of minima found via basin-hopping.'515:          IF (BHINTERPT) PRINT '(A)','Dummy ts entries will be created for closest pairs of minima found via basin-hopping.'
518:          IF (BISECTT) PRINT '(A)','Dummy ts entries will be created for pairs of minima found by bisection.'516:          IF (BISECTT) PRINT '(A)','Dummy ts entries will be created for pairs of minima found by bisection.'
519:       ENDIF517:       ENDIF
520:       IF (CLOSEFILEST) PRINT '(A)','The min.data and ts.data files will not be kept open'518:       IF (CLOSEFILEST) PRINT '(A)','The min.data and ts.data files will not be kept open'
521:       IF (INTLJT) THEN519:       IF (INTLJT) THEN
522:          PRINT '(A,F15.5)',   'Using interpLJ potential metric'520:          PRINT '(A,F15.5)',   'Using interpLJ potential metric'
523:          PRINT '(A,F20.10)',  'minimum distance difference for internal minimum=',INTLJDEL521:          PRINT '(A,F20.10)',  'minimum distance difference for internal minimum=',INTLJDEL
524:          PRINT '(A,F20.10)',  'multiplying factor for internal minimum penalty function=',INTLJEPS522:          PRINT '(A,F20.10)',  'multiplying factor for internal minimum penalty function=',INTLJEPS


r32086/setup.f 2017-03-13 22:30:25.194923538 +0000 r32085/setup.f 2017-03-13 22:30:26.790944889 +0000
1599: C1599: C
1600:       IF (NOPOINTGROUPT) THEN1600:       IF (NOPOINTGROUPT) THEN
1601:          DO J3=1,NMIN1601:          DO J3=1,NMIN
1602:             HORDERMIN(J3)=11602:             HORDERMIN(J3)=1
1603:          ENDDO1603:          ENDDO
1604:          DO J3=1,NTS1604:          DO J3=1,NTS
1605:             HORDERTS(J3)=11605:             HORDERTS(J3)=1
1606:          ENDDO1606:          ENDDO
1607:       ENDIF1607:       ENDIF
1608: C1608: C
1609: C If CONNECTPAIRST is true then read the pairs of minima to connect from file CONNECTPAIRSFILE 
1610: C 
1611:       IF (CONNECTPAIRST) THEN 
1612:          LUNIT=GETUNIT() 
1613:          OPEN(UNIT=LUNIT,FILE=TRIM(ADJUSTL(CONNECTPAIRSFILE)),STATUS='OLD') 
1614:          NCONNECTPAIRS=0 
1615:          DO 
1616:             READ(LUNIT,*,END=119) NDUMMY, NDUMMY 
1617:             NCONNECTPAIRS=NCONNECTPAIRS+1 
1618:          ENDDO 
1619: 119      REWIND(LUNIT) 
1620:          PRINT '(A,A,A,I8)','setup> Number of minima pairs in file ',TRIM(ADJUSTL(CONNECTPAIRSFILE)),' is ',NCONNECTPAIRS 
1621:          ALLOCATE(CONNECTPAIRSMIN(NCONNECTPAIRS,2)) 
1622:          PRINT '(A)','setup> Connection pairs of local minima:' 
1623:          DO J1=1,NCONNECTPAIRS 
1624:             READ(LUNIT,*) CONNECTPAIRSMIN(J1,1),CONNECTPAIRSMIN(J1,2) 
1625:             WRITE(*,'(2I10)') CONNECTPAIRSMIN(J1,1),CONNECTPAIRSMIN(J1,2) 
1626:          ENDDO 
1627:          CLOSE(LUNIT) 
1628:       ENDIF 
1629: C 
1630: C If USEPAIRST is true then read the sequence of minima from file USEPAIRSFILE1609: C If USEPAIRST is true then read the sequence of minima from file USEPAIRSFILE
1631: C USEPAIRSFILE must be formatted as a single Epath file1610: C USEPAIRSFILE must be formatted as a single Epath file
1632: C1611: C
1633:       IF (USEPAIRST) THEN1612:       IF (USEPAIRST) THEN
1634:          OPEN(UNIT=1,FILE=TRIM(ADJUSTL(USEPAIRSFILE)),STATUS='OLD')1613:          OPEN(UNIT=1,FILE=TRIM(ADJUSTL(USEPAIRSFILE)),STATUS='OLD')
1635:          NUSEPAIRS=01614:          NUSEPAIRS=0
1636:          DO1615:          DO
1637:             READ(1,*,END=111) NDUMMY, DUMMY, NDUMMY1616:             READ(1,*,END=111) NDUMMY, DUMMY, NDUMMY
1638:             NUSEPAIRS=NUSEPAIRS+11617:             NUSEPAIRS=NUSEPAIRS+1
1639:          ENDDO1618:          ENDDO


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0