hdiff output

r32665/geopt.f 2017-06-01 11:30:24.106627680 +0100 r32664/geopt.f 2017-06-01 11:30:25.254642929 +0100
120:          NSTEP=ITDONE120:          NSTEP=ITDONE
121:          IF (.NOT.MFLAG) THEN121:          IF (.NOT.MFLAG) THEN
122:             PRINT '(A,I8,A)',' geopt> switching to LBFGS minimisation after ',NSTEP,' hybrid minimisation steps'122:             PRINT '(A,I8,A)',' geopt> switching to LBFGS minimisation after ',NSTEP,' hybrid minimisation steps'
123:             KNOWE=.FALSE.123:             KNOWE=.FALSE.
124:             KNOWG=.FALSE.124:             KNOWG=.FALSE.
125:             IF (INTWRAP_USEINTERNALS()) THEN125:             IF (INTWRAP_USEINTERNALS()) THEN
126:                CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,126:                CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
127:      1                      .TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)127:      1                      .TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)
128:             ELSE128:             ELSE
129:                CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,129:                CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
130:      1                      .TRUE.,ITDONE,DEBUG,VNEW,.FALSE.,.FALSE.)130:      1                      .TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)
131:             ENDIF131:             ENDIF
132:             NSTEP=NSTEP+ITDONE132:             NSTEP=NSTEP+ITDONE
133:          ENDIF133:          ENDIF
134:       ELSE IF ((BFGSMINT.AND.(.NOT.BFGSTST).AND.(.NOT.BFGSSTEP).AND. 134:       ELSE IF ((BFGSMINT.AND.(.NOT.BFGSTST).AND.(.NOT.BFGSSTEP).AND. 
135:      &                    (.NOT.(INR.EQ.1)).AND.(.NOT.(INR.EQ.2))).OR.(BFGSTST.AND.(HINDEX.EQ.0))) THEN135:      &                    (.NOT.(INR.EQ.1)).AND.(.NOT.(INR.EQ.2))).OR.(BFGSTST.AND.(HINDEX.EQ.0))) THEN
136:          IF (UNRST.OR.INTWRAP_USEINTERNALS()) THEN136:          IF (UNRST.OR.INTWRAP_USEINTERNALS()) THEN
137:             CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,137:             CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
138:      1                   .TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)138:      1                   .TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)
139:          ELSE139:          ELSE
140:             IF (CUDAT) THEN140:             IF (CUDAT) THEN
141:                CALL CUDA_LBFGS_WRAPPER(NOPT,MUPDATE,Q,MFLAG,ENERGY,RMS,BFGSSTEPS,ITDONE,.FALSE.)141:                CALL CUDA_LBFGS_WRAPPER(NOPT,MUPDATE,Q,MFLAG,ENERGY,RMS,BFGSSTEPS,ITDONE,.FALSE.)
142:                WRITE(*,'(A,G25.17)') ' geopt> Final energy is ',ENERGY142:                WRITE(*,'(A,G25.17)') ' geopt> Final energy is ',ENERGY
143:             ELSE143:             ELSE
144:                CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,144:                CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
145:      1                   .TRUE.,ITDONE,DEBUG,VNEW,.FALSE.,.FALSE.)145:      1                   .TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)
146:             END IF146:             END IF
147:          ENDIF147:          ENDIF
148: C148: C
149: C  ******** great circle interpolation between end points ********************149: C  ******** great circle interpolation between end points ********************
150: C150: C
151:       ELSE IF (GREATCIRCLET.AND.(.NOT.CONNECTT)) THEN151:       ELSE IF (GREATCIRCLET.AND.(.NOT.CONNECTT)) THEN
152:           IF (UNRST) THEN152:           IF (UNRST) THEN
153:              PRINT *,'not available'153:              PRINT *,'not available'
154:              CALL FLUSH(6)154:              CALL FLUSH(6)
155:              STOP155:              STOP
190:              ENDDO 190:              ENDDO 
191:              CALL VECNORM(VECS,NOPT)191:              CALL VECNORM(VECS,NOPT)
192: 192: 
193:              IF (CUDAT) THEN193:              IF (CUDAT) THEN
194:                  CALL CUDA_BFGSTS_WRAPPER(NSTEPS,Q,ENERGY,MFLAG,RMS,EVALMIN,VECS,ITDONE)194:                  CALL CUDA_BFGSTS_WRAPPER(NSTEPS,Q,ENERGY,MFLAG,RMS,EVALMIN,VECS,ITDONE)
195:              ELSE195:              ELSE
196:                  CALL BFGSTS(NSTEPS,Q,ENERGY,VNEW,MFLAG,RMS,EVALMIN,EVALMAX,VECS,ITDONE,.TRUE.,.TRUE.)196:                  CALL BFGSTS(NSTEPS,Q,ENERGY,VNEW,MFLAG,RMS,EVALMIN,EVALMAX,VECS,ITDONE,.TRUE.,.TRUE.)
197:              END IF197:              END IF
198:              IF (MFLAG) THEN198:              IF (MFLAG) THEN
199:                  WRITE(*,'(1X,A,I6)') 'Converged to TS (number of iterations):     ',ITDONE199:                  WRITE(*,'(1X,A,I6)') 'Converged to TS (number of iterations):     ',ITDONE
200:                  write(*,*) "Energy:", ENERGY 
201:              ELSE200:              ELSE
202:                  WRITE(*,'(1X,A,I6)') 'DID NOT converge to TS (number of iterations):     ',ITDONE201:                  WRITE(*,'(1X,A,I6)') 'DID NOT converge to TS (number of iterations):     ',ITDONE
203:              END IF202:              END IF
204:              WRITE(*,'(A,F20.10)') 'Energy of TS is:                    ',ENERGY203:              WRITE(*,'(A,F20.10)') 'Energy of TS is:                    ',ENERGY
205: 204: 
206:           ENDIF205:           ENDIF
207: 206: 
208: C207: C
209: C  We may now have the energy and gradient, so the first energy and gradient call in208: C  We may now have the energy and gradient, so the first energy and gradient call in
210: C  mylbfgs for BFGSSTEP may be unnecessary209: C  mylbfgs for BFGSSTEP may be unnecessary
219: C            NOSHIFT=.TRUE.218: C            NOSHIFT=.TRUE.
220:              BFGSSTEP=.FALSE.219:              BFGSSTEP=.FALSE.
221:              BFGSTST=.FALSE.220:              BFGSTST=.FALSE.
222:              IF (.NOT.BFGSMINT) WRITE(*,'(A,26X,F20.10)') ' Energy after pushoff=  ',ENERGY221:              IF (.NOT.BFGSMINT) WRITE(*,'(A,26X,F20.10)') ' Energy after pushoff=  ',ENERGY
223:              IF (BFGSMINT) THEN222:              IF (BFGSMINT) THEN
224:                 IF (UNRST.OR.INTWRAP_USEINTERNALS()) THEN223:                 IF (UNRST.OR.INTWRAP_USEINTERNALS()) THEN
225:                    CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,224:                    CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,
226:      1                       BFGSSTEPS,.TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)225:      1                       BFGSSTEPS,.TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)
227:                 ELSE226:                 ELSE
228:                    CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,227:                    CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
229:      1                          .TRUE.,ITDONE,DEBUG,VNEW,.FALSE.,.FALSE.)228:      1                          .TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)
230:                 ENDIF229:                 ENDIF
231:              ELSE IF (BSMIN.OR.RKMIN) THEN230:              ELSE IF (BSMIN.OR.RKMIN) THEN
232:                 CALL ODESD(NSTEPS,Q,MFLAG,ITDONE,.TRUE.)231:                 CALL ODESD(NSTEPS,Q,MFLAG,ITDONE,.TRUE.)
233:              ENDIF232:              ENDIF
234:           ENDIF233:           ENDIF
235: 234: 
236: C235: C
237: C Using xmylbfgs to locate the lowest eigenvalue and the corresponding eigenvector236: C Using xmylbfgs to locate the lowest eigenvalue and the corresponding eigenvector
238: C237: C
239:       ELSE IF (EIGENONLY) THEN238:       ELSE IF (EIGENONLY) THEN
277:       ELSE IF ((BSMIN.OR.RKMIN).AND.(.NOT.BFGSTST).AND.(.NOT.BFGSSTEP).AND.276:       ELSE IF ((BSMIN.OR.RKMIN).AND.(.NOT.BFGSTST).AND.(.NOT.BFGSSTEP).AND.
278:      &          (.NOT.(INR.EQ.1)).AND.(.NOT.(INR.EQ.2))) THEN277:      &          (.NOT.(INR.EQ.1)).AND.(.NOT.(INR.EQ.2))) THEN
279:          CALL ODESD(NSTEPS,Q,MFLAG,ITDONE,.TRUE.)278:          CALL ODESD(NSTEPS,Q,MFLAG,ITDONE,.TRUE.)
280:          IF (.NOT.MFLAG) THEN279:          IF (.NOT.MFLAG) THEN
281:             BSMIN=.FALSE.280:             BSMIN=.FALSE.
282:             RKMIN=.FALSE.281:             RKMIN=.FALSE.
283:             BFGSMINT=.TRUE.282:             BFGSMINT=.TRUE.
284:             KNOWE=.FALSE.283:             KNOWE=.FALSE.
285:             KNOWG=.FALSE.284:             KNOWG=.FALSE.
286:             CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,285:             CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
287:      1                   .TRUE.,ITDONE,DEBUG,VNEW,.FALSE.,.FALSE.)286:      1                   .TRUE.,ITDONE,.TRUE.,VNEW,.FALSE.,.FALSE.)
288:          ENDIF287:          ENDIF
289:       ELSE288:       ELSE
290: C289: C
291: C  *************** EF optimization (or Page-McIver second order SD) ***************290: C  *************** EF optimization (or Page-McIver second order SD) ***************
292: C291: C
293:          NEWINR=INR292:          NEWINR=INR
294:          CALL EFOL(Q,MFLAG,NSTEPS,ENERGY,ITDONE,EVALMIN,.TRUE.,DIAG,NEWINR)293:          CALL EFOL(Q,MFLAG,NSTEPS,ENERGY,ITDONE,EVALMIN,.TRUE.,DIAG,NEWINR)
295:       ENDIF294:       ENDIF
296: C295: C
297: C  *************** End of optimisation possibilities. Checkindex if required. *****296: C  *************** End of optimisation possibilities. Checkindex if required. *****
1541:                      WRITE(881,*)Q(9*(J2-1)+1-GLY_COUNT*3),Q(9*(J2-1)+2-GLY_COUNT*3),Q(9*(J2-1)+3-GLY_COUNT*3)   1540:                      WRITE(881,*)Q(9*(J2-1)+1-GLY_COUNT*3),Q(9*(J2-1)+2-GLY_COUNT*3),Q(9*(J2-1)+3-GLY_COUNT*3)   
1542:                      WRITE(881,*)Q(9*(J2-1)+4-GLY_COUNT*3),Q(9*(J2-1)+5-GLY_COUNT*3),Q(9*(J2-1)+6-GLY_COUNT*3)1541:                      WRITE(881,*)Q(9*(J2-1)+4-GLY_COUNT*3),Q(9*(J2-1)+5-GLY_COUNT*3),Q(9*(J2-1)+6-GLY_COUNT*3)
1543:                      WRITE(881,*)Q(9*(J2-1)+7-GLY_COUNT*3),Q(9*(J2-1)+8-GLY_COUNT*3),Q(9*(J2-1)+9-GLY_COUNT*3)1542:                      WRITE(881,*)Q(9*(J2-1)+7-GLY_COUNT*3),Q(9*(J2-1)+8-GLY_COUNT*3),Q(9*(J2-1)+9-GLY_COUNT*3)
1544:                  ENDIF1543:                  ENDIF
1545: 1544: 
1546:                ENDDO1545:                ENDDO
1547:                CALL FLUSH(881)1546:                CALL FLUSH(881)
1548:             ELSE1547:             ELSE
1549: 1548: 
1550:                ! Now we write the coordinates, which is the main part of the min.data.info file. 1549:                ! Now we write the coordinates, which is the main part of the min.data.info file. 
1551:  
1552:                IF (DUMPDATA_MACHINET) THEN 
1553:                    RECCOUNT = RECCOUNT + 1 
1554:                ENDIF 
1555:  
1556: ! hk2861550: ! hk286
1557:                IF (RIGIDINIT) THEN1551:                IF (RIGIDINIT) THEN
1558:                   CALL TRANSFORMRIGIDTOC (1, NRIGIDBODY, XCOORDS, Q(1:DEGFREEDOMS))1552:                   CALL TRANSFORMRIGIDTOC (1, NRIGIDBODY, XCOORDS, Q(1:DEGFREEDOMS))
1559:                   IF (DUMPDATA_MACHINET) THEN1553:                   WRITE(881,'(3F25.15)') XCOORDS(1:3*NATOMS)
1560: !                      WRITE(882, REC=RECCOUNT) XCOORDS(1:3*NATOMS) 
1561:                       WRITE(882, REC=RECCOUNT) XCOORDS(1:3*NATOMS) 
1562:                   ELSE 
1563:                       WRITE(881,'(3F25.15)') XCOORDS(1:3*NATOMS) 
1564:                   ENDIF 
1565: 1554: 
1566:                ELSE IF (GTHOMSONT) THEN1555:                ELSE IF (GTHOMSONT) THEN
1567:                   CALL GTHOMSONANGTOC(TMPC(1:3*NATOMS), Q(1:3*NATOMS), NATOMS)1556:                   CALL GTHOMSONANGTOC(TMPC(1:3*NATOMS), Q(1:3*NATOMS), NATOMS)
1568:                   IF (DUMPDATA_MACHINET) THEN1557:                   WRITE(881,'(3F25.15)') TMPC(1:3*NATOMS)
1569:                       WRITE(882, REC=RECCOUNT) TMPC(1:3*NATOMS) 
1570:                   ELSE 
1571:                       WRITE(881,'(3F25.15)') TMPC(1:3*NATOMS) 
1572:                   ENDIF 
1573:  
1574:                ELSE IF (VARIABLES) THEN1558:                ELSE IF (VARIABLES) THEN
1575:                   IF (DUMPDATA_MACHINET) THEN1559:                   WRITE(881,'(F25.15)') Q(1:NATOMS)
1576:                       WRITE(882, REC=RECCOUNT) Q(1:NATOMS) 
1577:                   ELSE 
1578:                       WRITE(881,'(F25.15)') Q(1:NATOMS) 
1579:                   ENDIF 
1580:  
1581:                ELSE1560:                ELSE
1582:                   IF (DUMPDATA_MACHINET) THEN1561:                   WRITE(881,'(3F25.15)') Q(1:3*NATOMS)
1583:                       WRITE(882, REC=RECCOUNT) Q(1:3*NATOMS) 
1584:                   ELSE 
1585:                       WRITE(881,'(3F25.15)') Q(1:3*NATOMS) 
1586:                   ENDIF 
1587:                ENDIF1562:                ENDIF
1588:                CALL FLUSH(881)1563:                CALL FLUSH(881)
1589:                IF (DUMPDATA_MACHINET) CALL FLUSH(882) 
1590:             ENDIF1564:             ENDIF
1591:          ELSE1565:          ELSE
1592:             PRINT '(A)',' geopt> WARNING - DUMPDATA is set, but MFLAG is false; not creating entry in min.data.info'1566:             PRINT '(A)',' geopt> WARNING - DUMPDATA is set, but MFLAG is false; not creating entry in min.data.info'
1593:          ENDIF1567:          ENDIF
1594:       ENDIF1568:       ENDIF
1595: 1569: 
1596:       RETURN1570:       RETURN
1597: 1571: 
1598:       END  ! END GEOPT!1572:       END  ! END GEOPT!
1599: 1573: 


r32665/key.f90 2017-06-01 11:30:24.326630603 +0100 r32664/key.f90 2017-06-01 11:30:25.470645798 +0100
 17:      &        NCPREPULSIVE, NCPCONSTRAINT, MAXCONUSE, INTCONSTEPS, INTRELSTEPS, INTSTEPS1, INTLJSTEPS, & 17:      &        NCPREPULSIVE, NCPCONSTRAINT, MAXCONUSE, INTCONSTEPS, INTRELSTEPS, INTSTEPS1, INTLJSTEPS, &
 18:      &        NTRAPPOW, MAXINTIMAGE, CHECKDID, CHECKREPINTERVAL, INTFREEZEMIN, INTNTRIESMAX, INTIMAGEINCR, & 18:      &        NTRAPPOW, MAXINTIMAGE, CHECKDID, CHECKREPINTERVAL, INTFREEZEMIN, INTNTRIESMAX, INTIMAGEINCR, &
 19:      &        NCONSTRAINTFIX, INTIMAGECHECK, NREPULSIVEFIX, NRANROT, NENDDUP, LOCALPERMNEIGH, & 19:      &        NCONSTRAINTFIX, INTIMAGECHECK, NREPULSIVEFIX, NRANROT, NENDDUP, LOCALPERMNEIGH, &
 20:      &        LOCALPERMMAXSEP, NONEDAPBC, STRUC, QCHEMESNAO, QCHEMESNMO, QCHEMESNZERO, QCHEMESNELEC, PMPATHINR, & 20:      &        LOCALPERMMAXSEP, NONEDAPBC, STRUC, QCHEMESNAO, QCHEMESNMO, QCHEMESNZERO, QCHEMESNELEC, PMPATHINR, &
 21:      &        MULTISUNIT, MULTIFUNIT,NIMAGEINST,NGLJ,ST_TSSTEP,LANSTEP,NONFREEZE, & 21:      &        MULTISUNIT, MULTIFUNIT,NIMAGEINST,NGLJ,ST_TSSTEP,LANSTEP,NONFREEZE, &
 22:      &        MCPATHBINS,MCPATHEQUIL,MCPATHSTEPS,MCPATHPRTFRQ,MCPATHTS,MCPATHSCHECK,RPHSLICES,RPHQBINS, & 22:      &        MCPATHBINS,MCPATHEQUIL,MCPATHSTEPS,MCPATHPRTFRQ,MCPATHTS,MCPATHSCHECK,RPHSLICES,RPHQBINS, &
 23:      &        ITWIST, JTWIST, KTWIST, LTWIST, MCPATHSTART, MCPATHBLOCK, MCPATHOVER, NCPU, MCPATHDOBLOCK, MCMERGES, MCMERGEQ, & 23:      &        ITWIST, JTWIST, KTWIST, LTWIST, MCPATHSTART, MCPATHBLOCK, MCPATHOVER, NCPU, MCPATHDOBLOCK, MCMERGES, MCMERGEQ, &
 24:      &        MCMERGEI,GAUSSIANCHARGE,GAUSSIANMULTI,ITG03, REDOTS, QCIPERMCHECKINT, & 24:      &        MCMERGEI,GAUSSIANCHARGE,GAUSSIANMULTI,ITG03, REDOTS, QCIPERMCHECKINT, &
 25:      &        MLPIN, MLPSTART, MLPOUT, MLPHIDDEN, MLPDATA, NMLP, N_TO_ALIGN, DJWRBID, STM, NHEXAMERS, & 25:      &        MLPIN, MLPSTART, MLPOUT, MLPHIDDEN, MLPDATA, NMLP, N_TO_ALIGN, DJWRBID, STM, NHEXAMERS, &
 26:      &        MLQIN, MLQSTART, MLQOUT, MLQDATA, NMLQ, & 26:      &        MLQIN, MLQSTART, MLQOUT, MLQDATA, NMLQ, &
 27:      &        QCIADDREP, QCIBONDS, QCISECOND, MAXNACTIVE, QCIIMAGE, NADDTARGET, NUMNN, MULTI_COUNT, MULTI_LAST, MULTI_STEP, & 27:      &        QCIADDREP, QCIBONDS, QCISECOND, MAXNACTIVE, QCIIMAGE, NADDTARGET, NUMNN
 28:      &        NDOF, RECCOUNT 
 29:  28: 
 30:       LOGICAL :: DTEST, MASST, RTEST, EFSTEPST, VECTORST, SUMMARYT, DUMPV, DUMPMAG, FREEZE, FREEZERANGE, GRADSQ, & 29:       LOGICAL :: DTEST, MASST, RTEST, EFSTEPST, VECTORST, SUMMARYT, DUMPV, DUMPMAG, FREEZE, FREEZERANGE, GRADSQ, &
 31:      &        PGRAD, VALUEST, ADMT, BFGSMINT, BFGSTST, CHECKINDEX, TOSI, CONTAINER, & 30:      &        PGRAD, VALUEST, ADMT, BFGSMINT, BFGSTST, CHECKINDEX, TOSI, CONTAINER, &
 32:      &        GAUSSIAN, CADPAC, PRESSURE, FTEST, DCHECK, CP2K, DFTP, CPMD, CPMDC, FREEZERES, DF1T, & 31:      &        GAUSSIAN, CADPAC, PRESSURE, FTEST, DCHECK, CP2K, DFTP, CPMD, CPMDC, FREEZERES, DF1T, &
 33:      &        VARIABLES, FIELDT, OHT, IHT, TDT, D5HT, TWOENDS, PV, FRACTIONAL, BLNT, HYBRIDMINT, & 32:      &        VARIABLES, FIELDT, OHT, IHT, TDT, D5HT, TWOENDS, PV, FRACTIONAL, BLNT, HYBRIDMINT, &
 34:      &        INDEXT, LANCZOST, NOSHIFT, GAMESSUS, GAMESSUK, PVTS, RIGIDBODY, CASTEP, ONETEP, QCHEM, QCHEMES, VASP, & 33:      &        INDEXT, LANCZOST, NOSHIFT, GAMESSUS, GAMESSUK, PVTS, RIGIDBODY, CASTEP, ONETEP, QCHEM, QCHEMES, VASP, &
 35:      &        BFGSSTEP, BULKT, HUPDATE, NOHESS, READV, NOIT, THOMSONT, SIO2T, SIO2C6T, BISECTT, BISECTDEBUG, & 34:      &        BFGSSTEP, BULKT, HUPDATE, NOHESS, READV, NOIT, THOMSONT, SIO2T, SIO2C6T, BISECTT, BISECTDEBUG, &
 36:      &        TOSIC6, TOSIPOL, FIXIMAGE, DFTBT, CHECKCONT, CHECKDT, SHIFTED, READSP, DUMPSP, NOFRQS, & 35:      &        TOSIC6, TOSIPOL, FIXIMAGE, DFTBT, CHECKCONT, CHECKDT, SHIFTED, READSP, DUMPSP, NOFRQS, &
 37:      &        ALLSTEPS, ALLVECTORS, MWVECTORS, WELCH, BINARY, READHESS, MOVIE, NORESET, TWOD, & 36:      &        ALLSTEPS, ALLVECTORS, MWVECTORS, WELCH, BINARY, READHESS, MOVIE, NORESET, TWOD, &
 38:      &        DOUBLET, REOPT, PARALLEL, LINEMIN, FIXD, KEEPINDEX, BSMIN, PRINTPTS, RKMIN, REPELTST,& 37:      &        DOUBLET, REOPT, PARALLEL, LINEMIN, FIXD, KEEPINDEX, BSMIN, PRINTPTS, RKMIN, REPELTST,&
 51:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, & 50:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, &
 52:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, & 51:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, &
 53:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, & 52:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, &
 54:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, & 53:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, &
 55:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, & 54:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, &
 56:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, & 55:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, &
 57:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, & 56:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, &
 58:      &        MALONALDEHYDE, SIO2PT, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, MLPB3NEWT, MLPVB3T, & 57:      &        MALONALDEHYDE, SIO2PT, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, MLPB3NEWT, MLPVB3T, &
 59:      &        QCIPOTT, QCIPOT2T, QCIRADSHIFTT, QCINOREPINT, QCIAMBERT, SLERPT, NOTRANSROTT, MAXGAPT, BULKBOXT, GDSQT, FLATTESTT, & 58:      &        QCIPOTT, QCIPOT2T, QCIRADSHIFTT, QCINOREPINT, QCIAMBERT, SLERPT, NOTRANSROTT, MAXGAPT, BULKBOXT, GDSQT, FLATTESTT, &
 60:      &        MLQT, MLQPROB, LJADD2T, MACROIONT, NOREGBIAS, PYADDT, PYADD2T, SANDBOXT, LJADD3T, LJADD4T, & 59:      &        MLQT, MLQPROB, LJADD2T, MACROIONT, NOREGBIAS, PYADDT, PYADD2T, SANDBOXT, LJADD3T, LJADD4T, &
 61:      &        MBPOLT, MULTIJOB_MACHINET, DUMPDATA_MACHINET 60:      &        MBPOLT
 62:  61: 
 63: ! sy349 > for testing the flatpath after dneb 62: ! sy349 > for testing the flatpath after dneb
 64:       !LOGICAL, ALLOCATABLE :: FLATPATHT(:) 63:       !LOGICAL, ALLOCATABLE :: FLATPATHT(:)
 65:       LOGICAL FLATPATHT 64:       LOGICAL FLATPATHT
 66:  65: 
 67: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted) 66: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted)
 68:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential? 67:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential?
 69:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z) 68:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z)
 70:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1 69:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1
 71:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads 70:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads


r32665/keywords.f 2017-06-01 11:30:24.574633896 +0100 r32664/keywords.f 2017-06-01 11:30:25.702648880 +0100
123:          ! LOGICAL REPELTST, REPEL123:          ! LOGICAL REPELTST, REPEL
124:          ! COMMON /OTS/ NREPELTS, REPELTST, REPELPUSH, REPEL, REPELFROM124:          ! COMMON /OTS/ NREPELTS, REPELTST, REPELPUSH, REPEL, REPELFROM
125:          INTEGER ISTAT, NDUMMY125:          INTEGER ISTAT, NDUMMY
126:          DOUBLE PRECISION STOPDISP126:          DOUBLE PRECISION STOPDISP
127:          LOGICAL STOPDISPT, PERMFILE, CONFILE127:          LOGICAL STOPDISPT, PERMFILE, CONFILE
128:          COMMON /STOPD/ STOPDISP, STOPDISPT128:          COMMON /STOPD/ STOPDISP, STOPDISPT
129:          DOUBLE PRECISION CAPSRHO, CAPSEPS2, CAPSRAD, HEIGHT129:          DOUBLE PRECISION CAPSRHO, CAPSEPS2, CAPSRAD, HEIGHT
130:          COMMON /CAPS/ CAPSRHO, CAPSEPS2, CAPSRAD, HEIGHT130:          COMMON /CAPS/ CAPSRHO, CAPSEPS2, CAPSRAD, HEIGHT
131:          CHARACTER(LEN=20) OSTRING, OTEMP131:          CHARACTER(LEN=20) OSTRING, OTEMP
132:          CHARACTER(LEN=20) :: PINFOSTRING132:          CHARACTER(LEN=20) :: PINFOSTRING
133:          CHARACTER(LEN=20) :: MINPOINTSSTRING 
134:          CHARACTER(LEN=5) :: TEMPSTRING133:          CHARACTER(LEN=5) :: TEMPSTRING
135:          CHARACTER(LEN=9) UNSTRING134:          CHARACTER(LEN=9) UNSTRING
136:          CHARACTER(LEN=1) DUMMYCH135:          CHARACTER(LEN=1) DUMMYCH
137:          CHARACTER(LEN=100) TOPFILE,PARFILE136:          CHARACTER(LEN=100) TOPFILE,PARFILE
138:          DOUBLE PRECISION LJREPBB, LJATTBB, LJREPLL, LJATTLL, LJREPNN, LJATTNN,137:          DOUBLE PRECISION LJREPBB, LJATTBB, LJREPLL, LJATTLL, LJREPNN, LJATTNN,
139:      &   HABLN, HBBLN, HCBLN, HDBLN, EABLN, EBBLN, ECBLN, EDBLN, TABLN, TBBLN, TCBLN, TDBLN138:      &   HABLN, HBBLN, HCBLN, HDBLN, EABLN, EBBLN, ECBLN, EDBLN, TABLN, TBBLN, TCBLN, TDBLN
140:          INTEGER IGBNAB, NUNIAX ! sf344139:          INTEGER IGBNAB, NUNIAX ! sf344
141:          ! LOCAL AMH VARIABLES140:          ! LOCAL AMH VARIABLES
142:          INTEGER NRES_AMH, I_RES, GLY_COUNT141:          INTEGER NRES_AMH, I_RES, GLY_COUNT
143:          ! CHARACTER(LEN=5) TARFL142:          ! CHARACTER(LEN=5) TARFL
714:          MODEDOWNT=.FALSE.713:          MODEDOWNT=.FALSE.
715:          NOINVERSION=.FALSE.714:          NOINVERSION=.FALSE.
716:          PMPATHT=.FALSE.715:          PMPATHT=.FALSE.
717:          PMPATHINR=6716:          PMPATHINR=6
718:          AAORIENTT=.FALSE.717:          AAORIENTT=.FALSE.
719:          KAA=1.0D0718:          KAA=1.0D0
720:          SIGMAAA=0.0D0719:          SIGMAAA=0.0D0
721:          MULTIJOBT=.FALSE.720:          MULTIJOBT=.FALSE.
722:          MULTISTART=''721:          MULTISTART=''
723:          MULTIFINISH=''722:          MULTIFINISH=''
724:          MULTI_COUNT = 1 
725:          MULTI_LAST = HUGE(100000)  ! By default, we will carry on adding configurations until the end of the file, or we reach this ridiculously large number 
726:          MULTI_STEP = 1 
727:  
728:          DJWRBT=.FALSE.723:          DJWRBT=.FALSE.
729:          NHEXAMERS=0724:          NHEXAMERS=0
730:          ! 725:          ! 
731:          ! General mixed LJ systems726:          ! General mixed LJ systems
732:          ! 727:          ! 
733:          GLJT=.FALSE.728:          GLJT=.FALSE.
734:          NGLJ=1 ! number of atom types729:          NGLJ=1 ! number of atom types
735:          ! 730:          ! 
736:          ! ds656> substrate field(s)731:          ! ds656> substrate field(s)
737:          MIEFT=.FALSE.732:          MIEFT=.FALSE.
799:          FD5H=0.0D0794:          FD5H=0.0D0
800:          MAXERISE=1.0D-10795:          MAXERISE=1.0D-10
801:          XMAXERISE=1.0D-3796:          XMAXERISE=1.0D-3
802:          NEBMAXERISE=1.0D-3797:          NEBMAXERISE=1.0D-3
803:          INTEPSILON=1.0D-6798:          INTEPSILON=1.0D-6
804: 799: 
805:          EFIELD=0.0D0800:          EFIELD=0.0D0
806:          COLDFUSIONLIMIT=-1.0D6801:          COLDFUSIONLIMIT=-1.0D6
807:          BLNT=.FALSE.802:          BLNT=.FALSE.
808:          DUMPDATAT=.FALSE.803:          DUMPDATAT=.FALSE.
809:          DUMPDATA_MACHINET=.FALSE. 
810:          NDOF = 0  ! Given as an argument to DUMPDATA_MACHINET to specify how many coords go in each record. 
811:          LOWESTFRQT=.FALSE.804:          LOWESTFRQT=.FALSE.
812:          REDOPATH=.FALSE.805:          REDOPATH=.FALSE.
813:          REDOFRAC=0.5D0806:          REDOFRAC=0.5D0
814:          REDOK=0.0D0807:          REDOK=0.0D0
815:          REDOKADD=.FALSE.808:          REDOKADD=.FALSE.
816:          REDOPATHNEB=.FALSE.809:          REDOPATHNEB=.FALSE.
817:          REDOBFGSSTEPS=100810:          REDOBFGSSTEPS=100
818:          REDOPATHXYZ=.FALSE.811:          REDOPATHXYZ=.FALSE.
819:          REDOTS = 2812:          REDOTS = 2
820:          REALIGNXYZ=.FALSE.813:          REALIGNXYZ=.FALSE.
1510: ! since RMS cannot be negative1503: ! since RMS cannot be negative
1511:             IF (NITEMS.GT.1) THEN1504:             IF (NITEMS.GT.1) THEN
1512:                CALL READF(GMAXINT)1505:                CALL READF(GMAXINT)
1513:             ENDIF1506:             ENDIF
1514: 1507: 
1515:          ELSE IF (WORD.EQ.'BFGSMIN') THEN1508:          ELSE IF (WORD.EQ.'BFGSMIN') THEN
1516: ! 1509: ! 
1517: ! instructs the program to perform an LBFGS minimisation.1510: ! instructs the program to perform an LBFGS minimisation.
1518: ! it gmax\/} is the convergence criterion1511: ! it gmax\/} is the convergence criterion
1519: ! for the root-mean-square gradient, default $0.001$.1512: ! for the root-mean-square gradient, default $0.001$.
1520: !1513: ! 
1521:             BFGSMINT=.TRUE.1514:             BFGSMINT=.TRUE.
1522:             IF (NITEMS.GT.1) THEN1515:             IF (NITEMS.GT.1) THEN
1523:                CALL READF(GMAX)1516:                CALL READF(GMAX)
1524:             ENDIF1517:             ENDIF
1525: 1518: 
1526:          ELSE IF (WORD.EQ.'BFGSSTEP') THEN1519:          ELSE IF (WORD.EQ.'BFGSSTEP') THEN
1527: ! 1520: ! 
1528: ! If starting from a transition state we just want to take one EF step using1521: ! If starting from a transition state we just want to take one EF step using
1529: ! BFGSTS before calling MYLBFGS (or something else).1522: ! BFGSTS before calling MYLBFGS (or something else).
1530: ! 1523: ! 
1533:             IF (NITEMS.GT.1) CALL READF(PUSHOFF)1526:             IF (NITEMS.GT.1) CALL READF(PUSHOFF)
1534: 1527: 
1535:          ELSE IF (WORD .EQ. 'BFGSSTEPS') THEN1528:          ELSE IF (WORD .EQ. 'BFGSSTEPS') THEN
1536: ! 1529: ! 
1537: ! BFGSSTEPS n sets the number of BFGS optimisation steps to perform1530: ! BFGSSTEPS n sets the number of BFGS optimisation steps to perform
1538: ! per call to OPTIM                                    - default n=11531: ! per call to OPTIM                                    - default n=1
1539: ! If BFGSSTEPS is not specified then it is set to the same value as NSTEPS1532: ! If BFGSSTEPS is not specified then it is set to the same value as NSTEPS
1540: ! 1533: ! 
1541:             CALL READI(BFGSSTEPS)1534:             CALL READI(BFGSSTEPS)
1542:             IF (NSTEPS.EQ.1) NSTEPS=BFGSSTEPS1535:             IF (NSTEPS.EQ.1) NSTEPS=BFGSSTEPS
 1536: 
1543:          ELSE IF (WORD.EQ.'BFGSTS') THEN1537:          ELSE IF (WORD.EQ.'BFGSTS') THEN
1544: ! 1538: ! 
1545: ! Hybrid BFGS/eigenvector-following transition state search.1539: ! Hybrid BFGS/eigenvector-following transition state search.
1546: ! 1540: ! 
1547:             BFGSTST=.TRUE.1541:             BFGSTST=.TRUE.
1548:             IF (NITEMS.GT.1) CALL READI(NEVS)1542:             IF (NITEMS.GT.1) CALL READI(NEVS)
1549:             IF (NITEMS.GT.2) CALL READI(NBFGSMAX1)1543:             IF (NITEMS.GT.2) CALL READI(NBFGSMAX1)
1550:             IF (NITEMS.GT.3) CALL READI(NBFGSMAX2)1544:             IF (NITEMS.GT.3) CALL READI(NBFGSMAX2)
1551:             IF (NITEMS.GT.4) CALL READF(CEIG)1545:             IF (NITEMS.GT.4) CALL READF(CEIG)
1552:             IF (NITEMS.GT.5) CALL READI(NEVL)1546:             IF (NITEMS.GT.5) CALL READI(NEVL)
2629:             IF (FILTH.EQ.0) THEN2623:             IF (FILTH.EQ.0) THEN
2630:                WRITE(PINFOSTRING,'(A13)') 'min.data.info'2624:                WRITE(PINFOSTRING,'(A13)') 'min.data.info'
2631:             ELSE2625:             ELSE
2632:                WRITE(PINFOSTRING,'(A)') 'min.data.info.'//TRIM(ADJUSTL(FILTHSTR))2626:                WRITE(PINFOSTRING,'(A)') 'min.data.info.'//TRIM(ADJUSTL(FILTHSTR))
2633:             ENDIF2627:             ENDIF
2634:             IF (MACHINE) THEN2628:             IF (MACHINE) THEN
2635:                OPEN(UNIT=881,FILE=PINFOSTRING,STATUS='UNKNOWN',FORM='UNFORMATTED')2629:                OPEN(UNIT=881,FILE=PINFOSTRING,STATUS='UNKNOWN',FORM='UNFORMATTED')
2636:             ELSE2630:             ELSE
2637:                OPEN(UNIT=881,FILE=PINFOSTRING,STATUS='UNKNOWN')2631:                OPEN(UNIT=881,FILE=PINFOSTRING,STATUS='UNKNOWN')
2638:             ENDIF2632:             ENDIF
2639:  
2640: ! Write output coords of minima in an unformatted file, min.points. This 
2641: ! has a similar effect to DUMPDATA.AND.MACHINE, but we can be more 
2642: ! flexible about the input format (e.g. can use MULTIJOB and/or formatted 
2643: ! input). Also, the header lines will not be written to the unformatted 
2644: ! file (unlike DUMPDATA.AND.MACHINE). They are written to min.data.info 
2645: ! as normal. 
2646:          ELSE IF (WORD.EQ.'DUMPDATA_MACHINE') THEN 
2647:             CALL READI(NDOF) 
2648:             DUMPDATAT=.TRUE. 
2649:             DUMPDATA_MACHINET=.TRUE. 
2650:             IF (FILTH.EQ.0) THEN 
2651:                WRITE(PINFOSTRING,'(A13)') 'min.data.info' 
2652:                WRITE(MINPOINTSSTRING,'(A10)') 'min.points' 
2653:             ELSE 
2654:                WRITE(PINFOSTRING,'(A)') 'min.data.info.'//TRIM(ADJUSTL(FILTHSTR)) 
2655:                WRITE(MINPOINTSSTRING,'(A)') 'min.points.'//TRIM(ADJUSTL(FILTHSTR)) 
2656:             ENDIF 
2657:              
2658: !            OPEN(UNIT=882,FILE=MINPOINTSSTRING,STATUS='UNKNOWN',FORM='UNFORMATTED') 
2659:             OPEN(UNIT=882,FILE=MINPOINTSSTRING,ACCESS='DIRECT',STATUS='UNKNOWN',FORM='UNFORMATTED', RECL=8*NDOF) 
2660:             RECCOUNT = 0  ! Need this if we're using multijob or similar: counts how many coords have already been written. 
2661:             OPEN(UNIT=881,FILE=PINFOSTRING,STATUS='UNKNOWN') 
2662:  
2663: ! 2633: ! 
2664: ! Explicit dump of interpolation EofS for intlbfgs. Should be set .TRUE. if DEBUG is set.2634: ! Explicit dump of interpolation EofS for intlbfgs. Should be set .TRUE. if DEBUG is set.
2665: ! 2635: ! 
2666:          ELSE IF (WORD == 'DUMPINTEOS') THEN2636:          ELSE IF (WORD == 'DUMPINTEOS') THEN
2667:             DUMPINTEOS=.TRUE.2637:             DUMPINTEOS=.TRUE.
2668:             IF (NITEMS>1) CALL READI(DUMPINTEOSFREQ)2638:             IF (NITEMS>1) CALL READI(DUMPINTEOSFREQ)
2669: ! 2639: ! 
2670: ! Explicit dump of EofS.neb for DNEB. Should be set .TRUE. if DEBUG is set.2640: ! Explicit dump of EofS.neb for DNEB. Should be set .TRUE. if DEBUG is set.
2671: ! 2641: ! 
2672:          ELSE IF (WORD == 'DUMPNEBEOS') THEN2642:          ELSE IF (WORD == 'DUMPNEBEOS') THEN
4457:      &      // TRIM(ADJUSTL(MULTISTART))4427:      &      // TRIM(ADJUSTL(MULTISTART))
4458:             MULTIFUNIT=-14428:             MULTIFUNIT=-1
4459:             IF (NITEMS.GT.2) THEN4429:             IF (NITEMS.GT.2) THEN
4460:                CALL READA(MULTIFINISH)4430:                CALL READA(MULTIFINISH)
4461:                MULTIFUNIT=GETUNIT()4431:                MULTIFUNIT=GETUNIT()
4462:                OPEN(MULTIFUNIT,FILE=TRIM(ADJUSTL(MULTIFINISH)),STATUS='OLD')4432:                OPEN(MULTIFUNIT,FILE=TRIM(ADJUSTL(MULTIFINISH)),STATUS='OLD')
4463:                PRINT '(A)',' keywords>                            reading additional finish coordinates from file '4433:                PRINT '(A)',' keywords>                            reading additional finish coordinates from file '
4464:      &         // TRIM(ADJUSTL(MULTIFINISH))4434:      &         // TRIM(ADJUSTL(MULTIFINISH))
4465:             ENDIF4435:             ENDIF
4466: 4436: 
4467: ! MULTIJOB_MACHINE - as MULTIJOB but coordinates are read from an unformatted file. Coordinates do not need to be read consecutively if the file 
4468: ! is very large. 
4469:  
4470:          ELSE IF (WORD .EQ. 'MULTIJOB_MACHINE') THEN 
4471:             MULTIJOBT=.TRUE. 
4472:             MULTIJOB_MACHINET = .TRUE. 
4473:             CALL READA(MULTISTART) 
4474:             CALL READI(NDOF) 
4475:             MULTISUNIT=GETUNIT() 
4476:             PRINT '(A)',' keywords> Multiple jobs will be run, reading additional starting coordinates from unformatted file ' 
4477:      &      // TRIM(ADJUSTL(MULTISTART)) 
4478:             MULTIFUNIT=-1 
4479:             IF (NITEMS.GT.2) THEN 
4480:                CALL READA(MULTIFINISH) 
4481:                IF( TRIM(ADJUSTL(MULTIFINISH)).NE.'NONE') THEN 
4482:                   MULTIFUNIT=GETUNIT() 
4483:                   OPEN(MULTIFUNIT,FILE=TRIM(ADJUSTL(MULTIFINISH)),ACCESS='DIRECT',FORM='UNFORMATTED',STATUS='OLD',RECL=8*NDOF) 
4484:                   PRINT '(A)',' keywords>                            reading additional finish coordinates from unformatted file ' 
4485:      &            // TRIM(ADJUSTL(MULTIFINISH)) 
4486:                ENDIF 
4487:             ENDIF 
4488:             IF (NITEMS.GT.3) THEN 
4489:                CALL READI(MULTI_COUNT)   ! The index of the first configuration to be read in 
4490:             ENDIF 
4491:             IF (NITEMS.GT.4) THEN 
4492:                CALL READI(MULTI_LAST)    ! The index of the last configuration to be read in 
4493:             ENDIF 
4494:             IF (NITEMS.GT.5) THEN 
4495:                CALL READI(MULTI_STEP)    ! 1+(the number of configurations to skip each time) 
4496:             ENDIF 
4497:             WRITE(*,*) "keywords> Reading from configuration ", MULTI_COUNT, "to ", MULTI_LAST 
4498:             WRITE(*,*) "keywords> skipping ", MULTI_STEP-1, "each time." 
4499:  
4500:          ELSE IF (WORD .EQ. 'MULTIPOT') THEN ! Activate the multiple-potential scheme4437:          ELSE IF (WORD .EQ. 'MULTIPOT') THEN ! Activate the multiple-potential scheme
4501:             4438:             
4502:             MULTIPOTT = .TRUE.4439:             MULTIPOTT = .TRUE.
4503:             CALL MULTIPOT_INITIALISE4440:             CALL MULTIPOT_INITIALISE
4504: 4441: 
4505:          ELSE IF (WORD .EQ. 'MULTISITEPY') THEN4442:          ELSE IF (WORD .EQ. 'MULTISITEPY') THEN
4506: ! Syntax: MULTISITEPY sig_0 eps_0 [cut] [XYZ boxx boxy boxz]4443: ! Syntax: MULTISITEPY sig_0 eps_0 [cut] [XYZ boxx boxy boxz]
4507: ! Notes: The cutoff length is the raw length. It is not scaled4444: ! Notes: The cutoff length is the raw length. It is not scaled
4508: ! by the PY sigma_0 since it is also used for the LJ potential.4445: ! by the PY sigma_0 since it is also used for the LJ potential.
4509: ! The box length is in units of cutoff distance, so it should be4446: ! The box length is in units of cutoff distance, so it should be
5399:             INQUIRE(FILE='perm.allow',EXIST=PERMFILE)5336:             INQUIRE(FILE='perm.allow',EXIST=PERMFILE)
5400:             IF (PERMFILE) THEN5337:             IF (PERMFILE) THEN
5401:                OPEN(UNIT=1,FILE='perm.allow',STATUS='OLD')5338:                OPEN(UNIT=1,FILE='perm.allow',STATUS='OLD')
5402:                READ(1,*) NPERMGROUP5339:                READ(1,*) NPERMGROUP
5403:                IF (ALLOCATED(PERMGROUP)) THEN5340:                IF (ALLOCATED(PERMGROUP)) THEN
5404:                   PRINT '(A)',' keywords> ERROR *** array PERMGROUP already allocated. Incompatible keywords?'5341:                   PRINT '(A)',' keywords> ERROR *** array PERMGROUP already allocated. Incompatible keywords?'
5405:                   STOP5342:                   STOP
5406:                ENDIF5343:                ENDIF
5407:                ! ALLOCATE(NPERMSIZE(NATOMS),PERMGROUP(NATOMS),NSWAP(NATOMS),SWAP1(NATOMS,3),SWAP2(NATOMS,3))5344:                ! ALLOCATE(NPERMSIZE(NATOMS),PERMGROUP(NATOMS),NSWAP(NATOMS),SWAP1(NATOMS,3),SWAP2(NATOMS,3))
5408:                ALLOCATE(NPERMSIZE(3*NATOMS),PERMGROUP(3*NATOMS),NSETS(3*NATOMS),SETS(NATOMS,MAXNSETS))5345:                ALLOCATE(NPERMSIZE(3*NATOMS),PERMGROUP(3*NATOMS),NSETS(3*NATOMS),SETS(NATOMS,MAXNSETS))
5409:                NPERMSIZE(:) = 05346: 
5410:                PERMGROUP(:) = 0 
5411:                NSETS(:) = 0 
5412:                SETS(:,:) = 0 
5413:                ! 5347:                ! 
5414:                ! The above dimensions were fixed at NATOMS because:5348:                ! The above dimensions were fixed at NATOMS because:
5415:                ! (a) Atoms were not allowed to appear in more than one group.5349:                ! (a) Atoms were not allowed to appear in more than one group.
5416:                ! (b) The maximum number of pair exchanges associated with a group is three.5350:                ! (b) The maximum number of pair exchanges associated with a group is three.
5417:                ! 5351:                ! 
5418:                ! However, for flexible water models we need to exchange all waters,5352:                ! However, for flexible water models we need to exchange all waters,
5419:                ! and we can exchange H's attached to the same O. The dimension required5353:                ! and we can exchange H's attached to the same O. The dimension required
5420:                ! becomes 3*NATOMS5354:                ! becomes 3*NATOMS
5421:                ! 5355:                ! 
5422: 5356: 


r32665/OPTIM.F 2017-06-01 11:30:23.882624705 +0100 r32664/OPTIM.F 2017-06-01 11:30:25.030639954 +0100
   1: 
   2: 
  1: C   OPTIM: A program for optimizing geometries and calculating reaction pathways  3: C   OPTIM: A program for optimizing geometries and calculating reaction pathways
  2: C   Copyright (C) 1999-2006 David J. Wales  4: C   Copyright (C) 1999-2006 David J. Wales
  3: C   This file is part of OPTIM.  5: C   This file is part of OPTIM.
  4: C  6: C
  5: C   OPTIM is free software; you can redistribute it and/or modify  7: C   OPTIM is free software; you can redistribute it and/or modify
  6: C   it under the terms of the GNU General Public License as published by  8: C   it under the terms of the GNU General Public License as published by
  7: C   the Free Software Foundation; either version 2 of the License, or  9: C   the Free Software Foundation; either version 2 of the License, or
  8: C   (at your option) any later version. 10: C   (at your option) any later version.
  9: C 11: C
 10: C   OPTIM is distributed in the hope that it will be useful, 12: C   OPTIM is distributed in the hope that it will be useful,
 95:       IF (DEBUG) PRINT *,' OPTIM> allocated ZSYM with dimension NATOMS=',NATOMS 97:       IF (DEBUG) PRINT *,' OPTIM> allocated ZSYM with dimension NATOMS=',NATOMS
 96:       ALLOCATE (FROZENRES(NATOMS)) 98:       ALLOCATE (FROZENRES(NATOMS))
 97: C      STPMAX(:)=0.0D0 99: C      STPMAX(:)=0.0D0
 98: 100: 
 99:       FILTH=F1 ; FILTH2=F2 ; FILTHSTR=TRIM(ADJUSTL(FLSTRING))101:       FILTH=F1 ; FILTH2=F2 ; FILTHSTR=TRIM(ADJUSTL(FLSTRING))
100:       KNOWE=.FALSE. ; KNOWG=.FALSE. ; KNOWH=.FALSE.102:       KNOWE=.FALSE. ; KNOWG=.FALSE. ; KNOWH=.FALSE.
101:       RBATOMSMAX=10103:       RBATOMSMAX=10
102: 104: 
103:       CALL KEYWORDS(Q)105:       CALL KEYWORDS(Q)
104:       ALLOCATE (STPMAX(NOPT))106:       ALLOCATE (STPMAX(NOPT))
 107: 
105:       IF (UNRST.AND.(RKMIN.OR.BSMIN.OR.(INR.GT.-1))) THEN108:       IF (UNRST.AND.(RKMIN.OR.BSMIN.OR.(INR.GT.-1))) THEN
106:          PRINT '(A)','UNRES not coded for requested optimisation option'109:          PRINT '(A)','UNRES not coded for requested optimisation option'
107:          CALL FLUSH(6)110:          CALL FLUSH(6)
108:          STOP111:          STOP
109:       ENDIF112:       ENDIF
110: 113: 
111:       IF (PYGPERIODICT.OR.PYBINARYT) CALL INITIALISEPYGPERIODIC114:       IF (PYGPERIODICT.OR.PYBINARYT) CALL INITIALISEPYGPERIODIC
112:       IF (MULTISITEPYT) CALL DEFINEPYMULTISITES115:       IF (MULTISITEPYT) CALL DEFINEPYMULTISITES
113:       IF (LJGSITET) CALL DEFINELJMULTISITES116:       IF (LJGSITET) CALL DEFINELJMULTISITES
114:       IF (LOCALPERMDIST) THEN117:       IF (LOCALPERMDIST) THEN
918:             READ(MULTISUNIT,'(A)',END=864) DUMMYS921:             READ(MULTISUNIT,'(A)',END=864) DUMMYS
919: !           PRINT '(2A)','DUMMYS=',DUMMYS922: !           PRINT '(2A)','DUMMYS=',DUMMYS
920:             DO J1=1,NATOMS923:             DO J1=1,NATOMS
921: !              READ(MULTISUNIT,'(A2,1X,3G20.10)',END=864) DUMMYS,Q(3*(J1-1)+1:3*(J1-1)+3)924: !              READ(MULTISUNIT,'(A2,1X,3G20.10)',END=864) DUMMYS,Q(3*(J1-1)+1:3*(J1-1)+3)
922:                IF (VARIABLES) THEN925:                IF (VARIABLES) THEN
923:                   READ(MULTISUNIT,*,END=864) Q(3*(J1-1)+1:3*(J1-1)+3)926:                   READ(MULTISUNIT,*,END=864) Q(3*(J1-1)+1:3*(J1-1)+3)
924:                ELSE927:                ELSE
925:                   READ(MULTISUNIT,*,END=864) DUMMYS,Q(3*(J1-1)+1:3*(J1-1)+3)928:                   READ(MULTISUNIT,*,END=864) DUMMYS,Q(3*(J1-1)+1:3*(J1-1)+3)
926:                ENDIF929:                ENDIF
927:             ENDDO930:             ENDDO
928:          ELSE IF (MULTIJOB_MACHINET) THEN 
929:  
930:             IF (MULTI_COUNT .GT. MULTI_LAST) THEN 
931:                WRITE(*,*) "optim> Reached MULTIJOB_MACHINET configuration ", MULTI_COUNT 
932:                WRITE(*,*) "optim> Past last configuration specified by MULTIJOB_MACHINE:", MULTI_LAST 
933:                GOTO 864         ! Exit the loop over input coordinates 
934:             ENDIF 
935:  
936:             IF(DEBUG) WRITE(*,*) "Reading new configuration ", MULTI_COUNT, "from file ", TRIM(ADJUSTL(MULTISTART)) 
937:             OPEN(MULTISUNIT,FILE=TRIM(ADJUSTL(MULTISTART)),ACCESS='DIRECT',FORM='UNFORMATTED',STATUS='OLD',RECL=8*NOPT) 
938:             READ(MULTISUNIT, REC=MULTI_COUNT) Q(1:NOPT) 
939:             CLOSE(MULTISUNIT) 
940:  
941:             IF(MULTIFUNIT.GT.0) THEN 
942:                OPEN(MULTISUNIT,FILE=TRIM(ADJUSTL(MULTISTART)),ACCESS='DIRECT',FORM='UNFORMATTED',STATUS='OLD',RECL=8*NOPT) 
943:                READ(MULTISUNIT, REC=MULTI_COUNT) FIN(1:NOPT) 
944:                CLOSE(MULTIFUNIT) 
945:             ENDIF 
946:  
947:             MULTI_COUNT = MULTI_COUNT+MULTI_STEP 
948:  
949:          ELSE931:          ELSE
950:             READ(MULTISUNIT,*,END=864) Q(1:NOPT)932:             READ(MULTISUNIT,*,END=864) Q(1:NOPT)
951:          ENDIF933:          ENDIF
952:          PRINT '(A)',' OPTIM> Start coordinates overwritten from file '//TRIM(ADJUSTL(MULTISTART))934:          PRINT '(A)',' OPTIM> Start coordinates overwritten from file '//TRIM(ADJUSTL(MULTISTART))
953: !         PRINT '(3G20.10)',Q(1:NOPT)935:          PRINT '(3G20.10)',Q(1:NOPT)
954:          IF (GTHOMSONT) THEN936:          IF (GTHOMSONT) THEN
955: ! Convert Cartesian input coordiantes to polars937: ! Convert Cartesian input coordiantes to polars
956:             CALL GTHOMSONCTOANG(Q(1:3*NATOMS), THTEMP(1:3*NATOMS), NATOMS, 6)938:             CALL GTHOMSONCTOANG(Q(1:3*NATOMS), THTEMP(1:3*NATOMS), NATOMS, 6)
957:             Q(1:3*NATOMS)=THTEMP(1:3*NATOMS)939:             Q(1:3*NATOMS)=THTEMP(1:3*NATOMS)
958:          ENDIF940:          ENDIF
959:          IF (MULTIFUNIT.GT.0) THEN941:          IF (MULTIFUNIT.GT.0) THEN
960:             IF (INDEX(MULTIFINISH,'xyz').NE.0) THEN942:             IF (INDEX(MULTIFINISH,'xyz').NE.0) THEN
961:                READ(MULTIFUNIT,'(A2)',END=864) DUMMYS943:                READ(MULTIFUNIT,'(A2)',END=864) DUMMYS
962:                READ(MULTIFUNIT,'(A2)',END=864) DUMMYS944:                READ(MULTIFUNIT,'(A2)',END=864) DUMMYS
963:                DO J1=1,NATOMS945:                DO J1=1,NATOMS
1027:       IF (ALLOCATED(START)) DEALLOCATE(START)1009:       IF (ALLOCATED(START)) DEALLOCATE(START)
1028:       IF (ALLOCATED(QW)) DEALLOCATE(QW)1010:       IF (ALLOCATED(QW)) DEALLOCATE(QW)
1029:       IF (ALLOCATED(MIEF_SIG)) DEALLOCATE(MIEF_SIG)1011:       IF (ALLOCATED(MIEF_SIG)) DEALLOCATE(MIEF_SIG)
1030:       IF (ALLOCATED(MIEF_EPS)) DEALLOCATE(MIEF_EPS)1012:       IF (ALLOCATED(MIEF_EPS)) DEALLOCATE(MIEF_EPS)
1031:       IF (ALLOCATED(MIEF_SITES)) DEALLOCATE(MIEF_SITES)1013:       IF (ALLOCATED(MIEF_SITES)) DEALLOCATE(MIEF_SITES)
1032:       IF (ALLOCATED(MIEF_U_RCUT)) DEALLOCATE(MIEF_U_RCUT)1014:       IF (ALLOCATED(MIEF_U_RCUT)) DEALLOCATE(MIEF_U_RCUT)
1033:       IF (ALLOCATED(MIEF_DUDR_RCUT)) DEALLOCATE(MIEF_DUDR_RCUT)1015:       IF (ALLOCATED(MIEF_DUDR_RCUT)) DEALLOCATE(MIEF_DUDR_RCUT)
1034:       IF (ALLOCATED(MLPDAT)) DEALLOCATE(MLPDAT) 1016:       IF (ALLOCATED(MLPDAT)) DEALLOCATE(MLPDAT) 
1035:       IF (ALLOCATED(MLPOUTCOME)) DEALLOCATE(MLPOUTCOME) 1017:       IF (ALLOCATED(MLPOUTCOME)) DEALLOCATE(MLPOUTCOME) 
1036:       1018:       
1037:       IF (DUMPDATAT .OR. DUMPDATA_MACHINET) CLOSE(881) 
1038:       IF (DUMPDATA_MACHINET) CLOSE(882)      
1039:       IF (DUMPMAG) CLOSE(321)1019:       IF (DUMPMAG) CLOSE(321)
1040:       CALL FLUSH(6) 1020:       CALL FLUSH(6) 
1041:       1021:       
1042:       RETURN1022:       RETURN
1043: 1023: 
1044:       END1024:       END
1045: 1025: 
1046:       SUBROUTINE TSUMMARY1026:       SUBROUTINE TSUMMARY
1047:       USE KEY,ONLY : TSTART1027:       USE KEY,ONLY : TSTART
1048:       IMPLICIT NONE1028:       IMPLICIT NONE
1065:       ENDIF1045:       ENDIF
1066: 1046: 
1067: 1047: 
1068:       RETURN1048:       RETURN
1069:       END1049:       END
1070: 1050: 
1071:       SUBROUTINE INITIALBOX(QC)1051:       SUBROUTINE INITIALBOX(QC)
1072:       USE KEY, ONLY: BULK_BOXVEC1052:       USE KEY, ONLY: BULK_BOXVEC
1073:       USE COMMONS, ONLY: NATOMS1053:       USE COMMONS, ONLY: NATOMS
1074:       IMPLICIT NONE1054:       IMPLICIT NONE
1075:       DOUBLE PRECISION QC(3*NATOMS)1055:       DOUBLE PRECISION QC(NATOMS)
1076:       INTEGER J11056:       INTEGER J1
1077:       1057:       
1078:       DO J1=1, NATOMS1058:       DO J1=1, NATOMS
1079:          QC(3*(J1-1)+1)=QC(3*(J1-1)+1)-BULK_BOXVEC(1)*NINT(QC(3*(J1-1)+1)/BULK_BOXVEC(1))1059:          QC(3*(J1-1)+1)=QC(3*(J1-1)+1)-BULK_BOXVEC(1)*NINT(QC(3*(J1-1)+1)/BULK_BOXVEC(1))
1080:          QC(3*(J1-1)+2)=QC(3*(J1-1)+2)-BULK_BOXVEC(2)*NINT(QC(3*(J1-1)+2)/BULK_BOXVEC(2))1060:          QC(3*(J1-1)+2)=QC(3*(J1-1)+2)-BULK_BOXVEC(2)*NINT(QC(3*(J1-1)+2)/BULK_BOXVEC(2))
1081:          QC(3*(J1-1)+3)=QC(3*(J1-1)+3)-BULK_BOXVEC(3)*NINT(QC(3*(J1-1)+3)/BULK_BOXVEC(3))1061:          QC(3*(J1-1)+3)=QC(3*(J1-1)+3)-BULK_BOXVEC(3)*NINT(QC(3*(J1-1)+3)/BULK_BOXVEC(3))
1082:       ENDDO1062:       ENDDO
1083: 1063: 
1084:       END1064:       END


r32665/OPTIM.tex 2017-06-01 11:30:23.662621804 +0100 r32664/OPTIM.tex 2017-06-01 11:30:24.810637031 +0100
877: keyword in the PATHSAMPLE program.877: keyword in the PATHSAMPLE program.
878: 878: 
879: \item {\it DUMPBESTPATH\/}: after the last cycle in {\it NEWCONNECT\/} another Dijkstra analysis is run,879: \item {\it DUMPBESTPATH\/}: after the last cycle in {\it NEWCONNECT\/} another Dijkstra analysis is run,
880: the best path according to this analysis is then written to {\tt path.info}. Useful to prevent a880: the best path according to this analysis is then written to {\tt path.info}. Useful to prevent a
881: fast increase in the database size in PATHSAMPLE.881: fast increase in the database size in PATHSAMPLE.
882: 882: 
883: \item {\it DUMPFRQS\/}: if the frequency of a stationary point is calculated, it is written to a file883: \item {\it DUMPFRQS\/}: if the frequency of a stationary point is calculated, it is written to a file
884: {\tt frqs.dump}. The keyword is mainly meant for the {\it GETMINFRQS} and {\it GETTSFRQS} options in PATHSAMPLE. It requires884: {\tt frqs.dump}. The keyword is mainly meant for the {\it GETMINFRQS} and {\it GETTSFRQS} options in PATHSAMPLE. It requires
885: that {\it ENDHESS} or {\tt ENDNUMHESS} are used.885: that {\it ENDHESS} or {\tt ENDNUMHESS} are used.
886: 886: 
887: \item {\it DUMPDATA\/}: creates a file in PATHSAMPLE {\tt min.data.info} format for the minimum found887: \item {\it DUMPDATA\/}: creates a file in PATHSAMPLE {\tt min.data} format for the minimum found
888: following a minimisation. Useful for a discrete path sampling initial path run to888: following a minimisation. Useful for a discrete path sampling initial path run to
889: create entries for the two endpoints.889: create entries for the two endpoints.
890: 890: 
891: \item {\it DUMPDATA_MACHINE ndof\/}: to be used instead of {\it DUMPDATA} when lots of data will be produced (e.g. using {\it MULTIJOB}). The normal output from {\it DUMPDATA} is split into two files. The energy, frequency log product, point group order and moments of inertia of each minimum found are written to {\tt min.data.info} as normal (formatted output). The coordinates of the minima are written to an unformatted file {\tt min.data.info}, which readable only by the machine and therefore is quicker to read/write and takes up less disk space. Each minimum is written as a single record of length {\it ndof}, which is the number of coordinates (degrees of freedom) in the system. 
892:  
893: \item {\it DUMPINTEOS n\/}: creates the file {\tt EofS.int} for QCI runs. 891: \item {\it DUMPINTEOS n\/}: creates the file {\tt EofS.int} for QCI runs. 
894: {\it n\/} is the dump frequency.892: {\it n\/} is the dump frequency.
895: 893: 
896: \item {\it DUMPINTXYZ n\/}: creates the file {\tt int.xyz} for DNEB runs. 894: \item {\it DUMPINTXYZ n\/}: creates the file {\tt int.xyz} for DNEB runs. 
897: {\it n\/} is the dump frequency.895: {\it n\/} is the dump frequency.
898: 896: 
899: \item {\it DUMPMODE n1 n2 etc\/}: must be used with and below {\it DUMPVECTOR ALLVECTORS MWVECTORS}. Produces PDB files {\tt mode.n1.pdb, mode.n2.pdb} etc containing information on the relative per atom and per residue displacement caused by that mode. This information can be visualised in VMD by colouring with the {\tt Beta} (per residue) or {\tt Occupancy} (per atom) options.897: \item {\it DUMPMODE n1 n2 etc\/}: must be used with and below {\it DUMPVECTOR ALLVECTORS MWVECTORS}. Produces PDB files {\tt mode.n1.pdb, mode.n2.pdb} etc containing information on the relative per atom and per residue displacement caused by that mode. This information can be visualised in VMD by colouring with the {\tt Beta} (per residue) or {\tt Occupancy} (per atom) options.
900: 898: 
901: \item {\it DUMPNEBEOS n\/}: creates the file {\tt EofS.neb} for DNEB runs. This file is899: \item {\it DUMPNEBEOS n\/}: creates the file {\tt EofS.neb} for DNEB runs. This file is
902: also created if {\it DEBUG\/} is set; the default is false.900: also created if {\it DEBUG\/} is set; the default is false.
1643: \item {\it MULTIJOB startfile finishfile\/}: the same job will be rerun sequentially1641: \item {\it MULTIJOB startfile finishfile\/}: the same job will be rerun sequentially
1644: for input coordinates read from files {\it startfile\/} and {\it finishfile\/}.1642: for input coordinates read from files {\it startfile\/} and {\it finishfile\/}.
1645: The usual coordinates are expected, for most systems after the {\it POINTS\/}1643: The usual coordinates are expected, for most systems after the {\it POINTS\/}
1646: keyword in {\tt odata}, and the {\tt finish} file, if applicable.1644: keyword in {\tt odata}, and the {\tt finish} file, if applicable.
1647: After running this task, fresh coordinates are read from {\it startfile\/}1645: After running this task, fresh coordinates are read from {\it startfile\/}
1648: and {\it finishfile\/}, if applicable to the run type.1646: and {\it finishfile\/}, if applicable to the run type.
1649: If the file names contain the string `xyz' then the coordinates are assumed to1647: If the file names contain the string `xyz' then the coordinates are assumed to
1650: be in xyz format. Otherwise they are read as an uninterrupted sequence of numbers1648: be in xyz format. Otherwise they are read as an uninterrupted sequence of numbers
1651: in free format.1649: in free format.
1652: 1650: 
1653: \item {\it MULTIJOB_MACHINE startfile ndof [finishfile] [i] [n] [step]\/}: as {\it multijob} but the files containing restart  
1654: coordinates are unformatted non-human-readable files. Each file contains one configuration per record. {\it ndof} is the 
1655: number of degrees of freedom in the system, i.e. the number of entries in the record. {\it i} and {\it n} are the first and last 
1656: records to read from the file, respectively. {\it step} is the interval between consecutive record numbers which will be read. 
1657: So if {\it i} = 2, {\it n} = 10 and {\it step} = 3, the record numbers used to run {\tt OPTIM} jobs will be 2,5,8. 
1658: Default values of the optional parameters are {\it NONE} (i.e. no {\tt finish} file required), 1, {\tt <eof>}, 1. {\tt <eof>} means 
1659: the loop will run until the end of the input files. 
1660: WARNING: fortran unformatted files may not be readable on a computer other than the one where they were produced, or if your {\tt OPTIM} 
1661: executable was compiled with a different compiler to the one which produced the unformatted file. 
1662:  
1663: \item {\it MULTIPOT\/}: Use the flexible multiple potential scheme to define your system.1651: \item {\it MULTIPOT\/}: Use the flexible multiple potential scheme to define your system.
1664: Different atoms can interact via different types of potential and a particular atom can be associated 1652: Different atoms can interact via different types of potential and a particular atom can be associated 
1665: with more than one type of potential. Detailed instructions to use this scheme are given1653: with more than one type of potential. Detailed instructions to use this scheme are given
1666: as comments in {\tt multipot.f90}, { \tt pairwise\_potentials.f90} and {\tt isotropic\_potentials.f90}.1654: as comments in {\tt multipot.f90}, { \tt pairwise\_potentials.f90} and {\tt isotropic\_potentials.f90}.
1667: 1655: 
1668: In theory, any subroutine with the correct signature can be used as a potential function. Only1656: In theory, any subroutine with the correct signature can be used as a potential function. Only
1669: the potentials in {\tt pairwise\_potentials.f90} and {\tt isotropic\_potentials.f90} have been tested.1657: the potentials in {\tt pairwise\_potentials.f90} and {\tt isotropic\_potentials.f90} have been tested.
1670: At the time of writing, these are the LJ, WCA and harmonic-spring potentials. {\tt pairwise\_potentials.f90}1658: At the time of writing, these are the LJ, WCA and harmonic-spring potentials. {\tt pairwise\_potentials.f90}
1671: contains functions which are called for a pair of atoms at a time (e.g. harmonic springs). {\tt isotropic\_potentials.f90}1659: contains functions which are called for a pair of atoms at a time (e.g. harmonic springs). {\tt isotropic\_potentials.f90}
1672: contains functions which require coordinates of all the atoms involved in the interaction. Although LJ and WCA are1660: contains functions which require coordinates of all the atoms involved in the interaction. Although LJ and WCA are


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0