hdiff output

r29252/intlbfgs.f90 2015-11-17 23:32:45.320307873 +0000 r29251/intlbfgs.f90 2015-11-17 23:32:46.880328795 +0000
 27: USE KEY, ONLY : FREEZENODEST, FREEZETOL, MAXINTBFGS, INTNEBIMAGES, & 27: USE KEY, ONLY : FREEZENODEST, FREEZETOL, MAXINTBFGS, INTNEBIMAGES, &
 28:      & INTRMSTOL, INTIMAGE, NREPMAX, NREPULSIVE, INTMUPDATE, INTDGUESS, & 28:      & INTRMSTOL, INTIMAGE, NREPMAX, NREPULSIVE, INTMUPDATE, INTDGUESS, &
 29:      & NCONSTRAINT, CONI, CONJ, CONDISTREF, INTCONMAX, & 29:      & NCONSTRAINT, CONI, CONJ, CONDISTREF, INTCONMAX, &
 30:      & INTCONSTRAINREPCUT, REPCON, INTCONSTRAINTREP, INTREPSEP, NREPI, NREPJ, & 30:      & INTCONSTRAINREPCUT, REPCON, INTCONSTRAINTREP, INTREPSEP, NREPI, NREPJ, &
 31:      & CONDISTREFLOCAL, INTCONFRAC, CONACTIVE, NITSTART, REPI, & 31:      & CONDISTREFLOCAL, INTCONFRAC, CONACTIVE, NITSTART, REPI, &
 32:      & REPJ, NREPMAX, ATOMACTIVE, NCONSTRAINTON, CONION, CONJON, CONDISTREFLOCALON, CONDISTREFON, & 32:      & REPJ, NREPMAX, ATOMACTIVE, NCONSTRAINTON, CONION, CONJON, CONDISTREFLOCALON, CONDISTREFON, &
 33:      & NREPCUT, REPCUT, CHECKCONINT, INTCONSTEPS, INTRELSTEPS, MAXCONE, COLDFUSIONLIMIT, & 33:      & NREPCUT, REPCUT, CHECKCONINT, INTCONSTEPS, INTRELSTEPS, MAXCONE, COLDFUSIONLIMIT, &
 34:      & INTSTEPS1, DUMPINTXYZ, DUMPINTXYZFREQ, DUMPINTEOS, DUMPINTEOSFREQ, MUPDATE, BFGSSTEPS, INTTST, & 34:      & INTSTEPS1, DUMPINTXYZ, DUMPINTXYZFREQ, DUMPINTEOS, DUMPINTEOSFREQ, MUPDATE, BFGSSTEPS, INTTST, &
 35:      & BFGSTST, NSTEPS, IMSEPMIN, IMSEPMAX, MAXINTIMAGE, EDIFFTOL, INTFREEZET, INTFREEZETOL, FREEZE, & 35:      & BFGSTST, NSTEPS, IMSEPMIN, IMSEPMAX, MAXINTIMAGE, EDIFFTOL, INTFREEZET, INTFREEZETOL, FREEZE, &
 36:      & INTFROZEN, CHECKREPINTERVAL, NNREPULSIVE, INTFREEZEMIN, RIGIDBODY, TWOD, BULKT, INTIMAGECHECK, & 36:      & INTFROZEN, CHECKREPINTERVAL, NNREPULSIVE, INTFREEZEMIN, RIGIDBODY, TWOD, BULKT, INTIMAGECHECK, &
 37:      & CONCUT, NCONGEOM, CONCUTLOCAL, NONEBMAX, WHOLEDNEB, PERMGUESS, QCIPERMCHECK, QCIPERMCHECKINT 37:      & CONCUT, NCONGEOM, CONCUTLOCAL, NONEBMAX, WHOLEDNEB
 38: USE COMMONS, ONLY: NATOMS, NOPT, ZSYM, DEBUG, PARAM1, PARAM2, PARAM3, REDOPATH 38: USE COMMONS, ONLY: NATOMS, NOPT, ZSYM, DEBUG, PARAM1, PARAM2, PARAM3, REDOPATH
 39: USE MODEFOL 39: USE MODEFOL
 40:  40: 
 41: IMPLICIT NONE  41: IMPLICIT NONE 
 42:  42: 
 43: DOUBLE PRECISION, INTENT(IN) :: QSTART(NOPT), QFINISH(NOPT)  ! The two end points 43: DOUBLE PRECISION, INTENT(IN) :: QSTART(NOPT), QFINISH(NOPT)  ! The two end points
 44: INTEGER D, U 44: INTEGER D, U
 45: DOUBLE PRECISION DMAX, DF, DMIN 45: DOUBLE PRECISION DMAX, DF, DMIN
 46: INTEGER NDECREASE, NFAIL, NMAXINT, NMININT, JMAX, JMIN, INTIMAGESAVE, NOFF, J1, J2, ISTAT, POSITION, M1, M2 46: INTEGER NDECREASE, NFAIL, NMAXINT, NMININT, JMAX, JMIN, INTIMAGESAVE, NOFF, J1, J2, ISTAT, POSITION, M1, M2
 47: LOGICAL KNOWE, KNOWG, KNOWH, ADDATOM, PTEST, MFLAG, PRINTOPTIMIZETS, PRINTOPTIMIZEMIN, ADDREP(NATOMS), & 47: LOGICAL KNOWE, KNOWG, KNOWH, ADDATOM, PTEST, MFLAG, PRINTOPTIMIZETS, PRINTOPTIMIZEMIN, ADDREP(NATOMS), &
 60:   &                 ETOTAL, LASTGOODE, RMS, STEPTOT, LINTCONSTRAINTTOL, INTMAXE, INTMAXDIST, & 60:   &                 ETOTAL, LASTGOODE, RMS, STEPTOT, LINTCONSTRAINTTOL, INTMAXE, INTMAXDIST, &
 61:   &                 INTMAXCOORDS(NOPT), LXYZ(2*NOPT), EINITIAL, EFINAL, & 61:   &                 INTMAXCOORDS(NOPT), LXYZ(2*NOPT), EINITIAL, EFINAL, &
 62:   &                 VNEW(NOPT), ENERGY, RMS2, EREAL, LOCALCOORDS(3*NATOMS), DIST2, RMAT(3,3), CMIN1(3*NATOMS) 62:   &                 VNEW(NOPT), ENERGY, RMS2, EREAL, LOCALCOORDS(3*NATOMS), DIST2, RMAT(3,3), CMIN1(3*NATOMS)
 63: DOUBLE PRECISION, POINTER :: PINTERPCOORDS(:), PENERGY 63: DOUBLE PRECISION, POINTER :: PINTERPCOORDS(:), PENERGY
 64: INTEGER INVERT, INDEX(NATOMS), IMATCH 64: INTEGER INVERT, INDEX(NATOMS), IMATCH
 65: LOGICAL PERMUTE 65: LOGICAL PERMUTE
 66:  66: 
 67: LOGICAL TSCONVERGED, TSRESET 67: LOGICAL TSCONVERGED, TSRESET
 68: DOUBLE PRECISION, DIMENSION(INTMUPDATE)     :: RHO1,ALPHA 68: DOUBLE PRECISION, DIMENSION(INTMUPDATE)     :: RHO1,ALPHA
 69: DOUBLE PRECISION :: EOLD, DIFF, DIST, DTOTAL, DMOVED(NATOMS) 69: DOUBLE PRECISION :: EOLD, DIFF, DIST, DTOTAL, DMOVED(NATOMS)
 70: LOGICAL SWITCHED, LDEBUG 70: LOGICAL SWITCHED
 71: DOUBLE PRECISION, POINTER :: X(:), G(:) 71: DOUBLE PRECISION, POINTER :: X(:), G(:)
 72: DOUBLE PRECISION, ALLOCATABLE :: GLOCAL(:), EWINDOW(:) 72: DOUBLE PRECISION, ALLOCATABLE :: GLOCAL(:), EWINDOW(:)
 73: ! 73: !
 74: ! These declarations have to match those in NEB/ntc.f90 74: ! These declarations have to match those in NEB/ntc.f90
 75: ! 75: !
 76: ! TYPE MINFOUNDTYPE 76: ! TYPE MINFOUNDTYPE
 77: !    DOUBLE PRECISION,POINTER :: E 77: !    DOUBLE PRECISION,POINTER :: E
 78: !    DOUBLE PRECISION,POINTER :: COORD(:) 78: !    DOUBLE PRECISION,POINTER :: COORD(:)
 79: ! END TYPE MINFOUNDTYPE 79: ! END TYPE MINFOUNDTYPE
 80: ! INTEGER,PARAMETER :: NMINMAX = 3000 ! Maximal number of min to be checked in one intlbfgs run 80: ! INTEGER,PARAMETER :: NMINMAX = 3000 ! Maximal number of min to be checked in one intlbfgs run
727:             CALL CHECKREP(INTIMAGE,XYZ,NOPT,0,1)727:             CALL CHECKREP(INTIMAGE,XYZ,NOPT,0,1)
728:             IF (CHECKCONINT) THEN728:             IF (CHECKCONINT) THEN
729:                CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)729:                CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)
730:             ELSE730:             ELSE
731:                CALL CONGRAD(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)731:                CALL CONGRAD(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)
732:             ENDIF732:             ENDIF
733: !           GOTO 864733: !           GOTO 864
734:          ENDIF734:          ENDIF
735:       ENDIF735:       ENDIF
736:    ENDIF736:    ENDIF
737: ! 737: !
738: ! End of add/subtract images block.738: ! End of add/subtract images block.
739: !  739: !
740:    IF (QCIPERMCHECK.AND.(MOD(NITERDONE,QCIPERMCHECKINT).EQ.0)) THEN 
741:       LDEBUG=.FALSE. 
742:       DO J2=2,NIMAGE+2 
743:          CALL MINPERMDIST(XYZ((J2-2)*NOPT+1:(J2-1)*NOPT),XYZ((J2-1)*NOPT+1:J2*NOPT),NATOMS,LDEBUG, & 
744:   &                    PARAM1,PARAM2,PARAM3,BULKT,TWOD,D,DIST2,RIGIDBODY,RMAT) 
745:       ENDDO 
746:    ENDIF 
747:    IF (.NOT.SWITCHED) THEN740:    IF (.NOT.SWITCHED) THEN
748:       IF (MOD(NITERDONE,CHECKREPINTERVAL).EQ.0) CALL CHECKREP(INTIMAGE,XYZ,NOPT,0,1)741:       IF (MOD(NITERDONE,CHECKREPINTERVAL).EQ.0) CALL CHECKREP(INTIMAGE,XYZ,NOPT,0,1)
749:       IF (CHECKCONINT) THEN742:       IF (CHECKCONINT) THEN
750:          CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)743:          CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)
751:       ELSE744:       ELSE
752:          CALL CONGRAD(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)745:          CALL CONGRAD(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)
753:       ENDIF746:       ENDIF
754:       IF ((ETOTAL-EOLD.LT.1.0D100).OR.ADDATOM) THEN ! MAXERISE effectively set to 1.0D100 here747:       IF ((ETOTAL-EOLD.LT.1.0D100).OR.ADDATOM) THEN ! MAXERISE effectively set to 1.0D100 here
755:          EOLD=ETOTAL748:          EOLD=ETOTAL
756:          GLAST(1:D)=G(1:D)749:          GLAST(1:D)=G(1:D)


r29252/key.f90 2015-11-17 23:32:45.508310394 +0000 r29251/key.f90 2015-11-17 23:32:47.068331316 +0000
 14:      &        DPID, TIPID, PAHID, PAPID, NCARBON, NTSITES, NRBGROUP, INTIMAGE, DUMPINTXYZFREQ, DUMPINTEOSFREQ, & 14:      &        DPID, TIPID, PAHID, PAPID, NCARBON, NTSITES, NRBGROUP, INTIMAGE, DUMPINTXYZFREQ, DUMPINTEOSFREQ, &
 15:      &        NRBTRIES, REDOTSIM, REDOBFGSSTEPS, RPIMAGES, RPDOF, SDOXYGEN, SDHYDROGEN, SDCHARGE, BOWMANPES, & 15:      &        NRBTRIES, REDOTSIM, REDOBFGSSTEPS, RPIMAGES, RPDOF, SDOXYGEN, SDHYDROGEN, SDCHARGE, BOWMANPES, &
 16:      &        INTCONSEP, PATOM1, PATOM2, INTREPSEP, NCONSTRAINTON, CPREPSEP, CPCONSEP, NCONGEOM, & 16:      &        INTCONSEP, PATOM1, PATOM2, INTREPSEP, NCONSTRAINTON, CPREPSEP, CPCONSEP, NCONGEOM, &
 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
 25:  25: 
 26:  26: 
 27:       LOGICAL :: DTEST, MASST, RTEST, EFSTEPST, VECTORST, SUMMARYT, DUMPV, DUMPMAG, FREEZE, FREEZERANGE, GRADSQ, & 27:       LOGICAL :: DTEST, MASST, RTEST, EFSTEPST, VECTORST, SUMMARYT, DUMPV, DUMPMAG, FREEZE, FREEZERANGE, GRADSQ, &
 28:      &        PGRAD, VALUEST, ADMT, BFGSMINT, BFGSTST, CHECKINDEX, TOSI, CONTAINER, & 28:      &        PGRAD, VALUEST, ADMT, BFGSMINT, BFGSTST, CHECKINDEX, TOSI, CONTAINER, &
 29:      &        GAUSSIAN, CADPAC, PRESSURE, FTEST, DCHECK, CP2K, DFTP, CPMD, CPMDC, FREEZERES, DF1T, & 29:      &        GAUSSIAN, CADPAC, PRESSURE, FTEST, DCHECK, CP2K, DFTP, CPMD, CPMDC, FREEZERES, DF1T, &
 30:      &        VARIABLES, FIELDT, OHT, IHT, TDT, D5HT, TWOENDS, PV, FRACTIONAL, BLNT, HYBRIDMINT, & 30:      &        VARIABLES, FIELDT, OHT, IHT, TDT, D5HT, TWOENDS, PV, FRACTIONAL, BLNT, HYBRIDMINT, &
 31:      &        INDEXT, LANCZOST, NOSHIFT, GAMESSUS, GAMESSUK, PVTS, RIGIDBODY, CASTEP, ONETEP, QCHEM, QCHEMES, VASP, & 31:      &        INDEXT, LANCZOST, NOSHIFT, GAMESSUS, GAMESSUK, PVTS, RIGIDBODY, CASTEP, ONETEP, QCHEM, QCHEMES, VASP, &
 32:      &        BFGSSTEP, BULKT, HUPDATE, NOHESS, READV, NOIT, THOMSONT, SIO2T, SIO2C6T, BISECTT, BISECTDEBUG, & 32:      &        BFGSSTEP, BULKT, HUPDATE, NOHESS, READV, NOIT, THOMSONT, SIO2T, SIO2C6T, BISECTT, BISECTDEBUG, &
 33:      &        TOSIC6, TOSIPOL, FIXIMAGE, DFTBT, CHECKCONT, CHECKDT, SHIFTED, READSP, DUMPSP, NOFRQS, & 33:      &        TOSIC6, TOSIPOL, FIXIMAGE, DFTBT, CHECKCONT, CHECKDT, SHIFTED, READSP, DUMPSP, NOFRQS, &
 34:      &        ALLSTEPS, ALLVECTORS, MWVECTORS, WELCH, BINARY, READHESS, MOVIE, NORESET, TWOD, & 34:      &        ALLSTEPS, ALLVECTORS, MWVECTORS, WELCH, BINARY, READHESS, MOVIE, NORESET, TWOD, &
 43:      &        INSTANTONRATET,RINGPOLYMERT, SDT, BOWMANT, PULLT, RBSYMT, CONPOTT, GRAD4T, RPCYCLICT, RPFIXT, & 43:      &        INSTANTONRATET,RINGPOLYMERT, SDT, BOWMANT, PULLT, RBSYMT, CONPOTT, GRAD4T, RPCYCLICT, RPFIXT, &
 44:      &        CHECKCONINT, ATOMMATCHFULL, NIH2LEPST,NIHEAM7T,NIHLEPST, NIHPAIRONLYT, & 44:      &        CHECKCONINT, ATOMMATCHFULL, NIH2LEPST,NIHEAM7T,NIHLEPST, NIHPAIRONLYT, &
 45:      &        QSPCFWT, QTIP4PFT, CFUSIONT, DUMPINTXYZ, DUMPINTEOS, INTLJT, INTTST, EYTRAPT, OHCELLT, MKTRAPT, & 45:      &        QSPCFWT, QTIP4PFT, CFUSIONT, DUMPINTXYZ, DUMPINTEOS, INTLJT, INTTST, EYTRAPT, OHCELLT, MKTRAPT, &
 46:      &        INTFREEZET, LPERMDIST, CHECKNEGATIVET, CHECKOVERLAPT, ACK1, ACK2, CONDATT, USERPOTT, & 46:      &        INTFREEZET, LPERMDIST, CHECKNEGATIVET, CHECKOVERLAPT, ACK1, ACK2, CONDATT, USERPOTT, &
 47:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, & 47:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, &
 48:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, & 48:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, &
 49:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, & 49:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, &
 50:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, & 50:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, &
 51:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, & 51:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, &
 52:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, & 52:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, &
 53:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, & 53:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET
 54:      &        PERMGUESS, QCIPERMCHECK 
 55:  54: 
 56: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted) 55: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted)
 57:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential? 56:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential?
 58:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z) 57:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z)
 59:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1 58:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1
 60:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads 59:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads
 61:       DOUBLE PRECISION :: HARMPOLY_BONLEN = 0.0d0 ! equilibrium length of springs between beads 60:       DOUBLE PRECISION :: HARMPOLY_BONLEN = 0.0d0 ! equilibrium length of springs between beads
 62:       DOUBLE PRECISION :: HARMPOLY_K = 1.0d2 ! force constant of the springs 61:       DOUBLE PRECISION :: HARMPOLY_K = 1.0d2 ! force constant of the springs
 63:  62: 
 64: ! hk286 > generalised THOMSON problem 63: ! hk286 > generalised THOMSON problem


r29252/keywords.f 2015-11-17 23:32:45.700312969 +0000 r29251/keywords.f 2015-11-17 23:32:47.260333891 +0000
 72:  72: 
 73:          INTEGER NDUM, LUNIT, FUNIT, GETUNIT 73:          INTEGER NDUM, LUNIT, FUNIT, GETUNIT
 74:          INTEGER ITEM, NITEMS, LOC, LINE, NCR, NERROR, IR, LAST, NTYPEA, J1, J2, J3, J, I 74:          INTEGER ITEM, NITEMS, LOC, LINE, NCR, NERROR, IR, LAST, NTYPEA, J1, J2, J3, J, I
 75:          COMMON /BUFINF/ ITEM, NITEMS, LOC(132), LINE, SKIPBL, CLEAR, NCR, 75:          COMMON /BUFINF/ ITEM, NITEMS, LOC(132), LINE, SKIPBL, CLEAR, NCR,
 76:      &   NERROR, IR, ECHO, LAST, CAT 76:      &   NERROR, IR, ECHO, LAST, CAT
 77:          ! DOUBLE PRECISION ::AAA,AAB,ABB,PAA,PAB,PBB,QAA,QAB,QBB,ZAA,ZAB 77:          ! DOUBLE PRECISION ::AAA,AAB,ABB,PAA,PAB,PBB,QAA,QAB,QBB,ZAA,ZAB
 78:          ! DOUBLE PRECISION :: ZBB,R0AA,R0AB,R0BB 78:          ! DOUBLE PRECISION :: ZBB,R0AA,R0AB,R0BB
 79:          DOUBLE PRECISION :: XX, EPSAB, EPSBB, SIGAB, SIGBB, RANDOM, DPRAND 79:          DOUBLE PRECISION :: XX, EPSAB, EPSBB, SIGAB, SIGBB, RANDOM, DPRAND
 80:          LOGICAL END, SKIPBL, CLEAR, ECHO, CAT, CISTRANS, RBSYMTEST, YESNO 80:          LOGICAL END, SKIPBL, CLEAR, ECHO, CAT, CISTRANS, RBSYMTEST, YESNO
 81:          CHARACTER WORD*25, WW*20, PBC*3 81:          CHARACTER WORD*25, WW*20, PBC*3
 82:          CHARACTER(LEN=80) :: FILENAME,DUMMYS 
 83:          CHARACTER WORD2*25 82:          CHARACTER WORD2*25
 84:          ! COMMON /BIN/ NTYPEA,AAA,AAB,ABB,PAA,PAB,PBB,QAA,QAB,QBB,ZAA,ZAB 83:          ! COMMON /BIN/ NTYPEA,AAA,AAB,ABB,PAA,PAB,PBB,QAA,QAB,QBB,ZAA,ZAB
 85:          ! COMMON /BIN/ ZBB,R0AA,R0AB,R0BB 84:          ! COMMON /BIN/ ZBB,R0AA,R0AB,R0BB
 86:          COMMON /BIN/ EPSAB, EPSBB, SIGAB, SIGBB,NTYPEA 85:          COMMON /BIN/ EPSAB, EPSBB, SIGAB, SIGBB,NTYPEA
 87:  86: 
 88:          INTEGER NATOM, DMODE 87:          INTEGER NATOM, DMODE
 89:          DOUBLE PRECISION CHX(MXATMS), CHY(MXATMS), CHZ(MXATMS), CHMASS(MXATMS) 88:          DOUBLE PRECISION CHX(MXATMS), CHY(MXATMS), CHZ(MXATMS), CHMASS(MXATMS)
 90:          DOUBLE PRECISION DPERT, INTFREEZETOLSAVE 89:          DOUBLE PRECISION DPERT, INTFREEZETOLSAVE
 91:          DOUBLE PRECISION CHPMIN, CHPMAX, CHNMIN, CHNMAX 90:          DOUBLE PRECISION CHPMIN, CHPMAX, CHNMIN, CHNMAX
 92:          DOUBLE PRECISION, ALLOCATABLE :: LCONGEOM(:,:) 91:          DOUBLE PRECISION, ALLOCATABLE :: LCONGEOM(:,:)
299:          IVEC2=0298:          IVEC2=0
300: 299: 
301:          MXSTP=0.2D0300:          MXSTP=0.2D0
302:          MINMAX=0.01D0301:          MINMAX=0.01D0
303:          MAXMAX=0.5D0302:          MAXMAX=0.5D0
304:          MAXBFGS=0.2D0303:          MAXBFGS=0.2D0
305:          MAXXBFGS=0.2D0304:          MAXXBFGS=0.2D0
306:          MAXMBFGS=0.2D0305:          MAXMBFGS=0.2D0
307:          MAXNEBBFGS=0.2D0306:          MAXNEBBFGS=0.2D0
308:          MAXINTBFGS=0.2D0307:          MAXINTBFGS=0.2D0
309:          READGUESS=.FALSE. 
310:          PERMGUESS=.FALSE. 
311: 308: 
312:          DTEST=.FALSE.309:          DTEST=.FALSE.
313: 310: 
314:          MASST=.FALSE.311:          MASST=.FALSE.
315: 312: 
316:          VALUEST=.TRUE.313:          VALUEST=.TRUE.
317:          EFSTEPST=.FALSE.314:          EFSTEPST=.FALSE.
318:          EFSTEPS=1315:          EFSTEPS=1
319:          NVALUES=20316:          NVALUES=20
320:          NSTEPS=1317:          NSTEPS=1
515:          NCONNECT=100512:          NCONNECT=100
516:          NEWNEBT=.FALSE.513:          NEWNEBT=.FALSE.
517:          NEBT=.FALSE.514:          NEBT=.FALSE.
518:          NEWCONNECTT=.False.515:          NEWCONNECTT=.False.
519:          SQVVGuess=.FALSE.516:          SQVVGuess=.FALSE.
520:          SQVVGuessRMSTol=2.0D0517:          SQVVGuessRMSTol=2.0D0
521:          NIterSQVVGuessMax=300518:          NIterSQVVGuessMax=300
522:          DEBUG=.FALSE.519:          DEBUG=.FALSE.
523:          CHDEBUG=.FALSE.520:          CHDEBUG=.FALSE.
524:          EDEBUG=.FALSE.521:          EDEBUG=.FALSE.
525:          NIMAGE=1522:          NIMAGE=10
526:          RMSNEB=0.1523:          RMSNEB=0.1
527:          DTHRESH=2.0D0524:          DTHRESH=2.0D0
528:          NSTEPNEB=1525:          NSTEPNEB=1
529:          NEBMAG=0526:          NEBMAG=0
530:          NMOVE=1527:          NMOVE=1
531:          NPATHFRAME=0528:          NPATHFRAME=0
532:          FRAMEEDIFF=0.0D0529:          FRAMEEDIFF=0.0D0
533:          FRAMESDIFF=0.0D0530:          FRAMESDIFF=0.0D0
534:          CUBIC=.FALSE.531:          CUBIC=.FALSE.
535:          BULKT=.FALSE.532:          BULKT=.FALSE.
595:          NEBRESEEDPOW2=10592:          NEBRESEEDPOW2=10
596:          ADDREPT=.FALSE.593:          ADDREPT=.FALSE.
597: 594: 
598:          INTLJT=.FALSE.595:          INTLJT=.FALSE.
599:          INTLJSTEPS=1000596:          INTLJSTEPS=1000
600:          INTLJTOL=1.0D-3597:          INTLJTOL=1.0D-3
601:          INTLJDEL=0.1D0598:          INTLJDEL=0.1D0
602:          INTLJEPS=1.0D0599:          INTLJEPS=1.0D0
603: 600: 
604:          FREEZETOL=1.0D-3601:          FREEZETOL=1.0D-3
605:          QCIPERMCHECK=.FALSE. 
606:          QCIPERMCHECKINT=100 
607:          INTCONSTRAINTT=.FALSE.602:          INTCONSTRAINTT=.FALSE.
608:          INTCONSTRAINTTOL=0.1D0603:          INTCONSTRAINTTOL=0.1D0
609:          INTCONSTRAINTDEL=10.0D0604:          INTCONSTRAINTDEL=10.0D0
610:          INTCONSTRAINTREP=100.0D0605:          INTCONSTRAINTREP=100.0D0
611:          INTCONSTRAINREPCUT=1.7D0606:          INTCONSTRAINREPCUT=1.7D0
612:          INTFREEZET=.FALSE.607:          INTFREEZET=.FALSE.
613:          INTFREEZETOL=1.0D-3608:          INTFREEZETOL=1.0D-3
614:          INTFREEZEMIN=10609:          INTFREEZEMIN=10
615:          INTCONFRAC=0.9D0610:          INTCONFRAC=0.9D0
616:          INTCONSEP=15611:          INTCONSEP=15
3127:             FIELDT=.TRUE.3122:             FIELDT=.TRUE.
3128:             IHT=.TRUE.3123:             IHT=.TRUE.
3129:             CALL READF(FIH)3124:             CALL READF(FIH)
3130: ! 3125: ! 
3131: ! Search for a saddle of index INDEX if3126: ! Search for a saddle of index INDEX if
3132: ! SEARCH 2 is specified. See also KEEPINDEX. Also works with BFGSTS3127: ! SEARCH 2 is specified. See also KEEPINDEX. Also works with BFGSTS
3133: ! up to a maximum of index 50, but NOIT must be set and a Hessian is needed.3128: ! up to a maximum of index 50, but NOIT must be set and a Hessian is needed.
3134: ! 3129: ! 
3135:          ELSE IF (WORD.EQ.'INDEX') THEN3130:          ELSE IF (WORD.EQ.'INDEX') THEN
3136:             CALL READI(HINDEX)3131:             CALL READI(HINDEX)
3137:          ELSE IF (WORD.EQ.'QCIPERMCHECK') THEN 
3138:             QCIPERMCHECK=.TRUE. 
3139:             CALL READI(QCIPERMCHECKINT) 
3140: ! 3132: ! 
3141: ! Images for INTCONSTRAINT3133: ! Images for INTCONSTRAINT
3142: ! 3134: ! 
3143:          ELSE IF (WORD.EQ.'INTIMAGE') THEN3135:          ELSE IF (WORD.EQ.'INTIMAGE') THEN
3144:             IF (NITEMS.GT.1) CALL READF(IMSEPMIN)3136:             IF (NITEMS.GT.1) CALL READF(IMSEPMIN)
3145:             IF (NITEMS.GT.2) CALL READF(IMSEPMAX)3137:             IF (NITEMS.GT.2) CALL READF(IMSEPMAX)
3146:             IF (NITEMS.GT.3) CALL READI(INTIMAGE)3138:             IF (NITEMS.GT.3) CALL READI(INTIMAGE)
3147:             IF (NITEMS.GT.4) CALL READI(MAXINTIMAGE)3139:             IF (NITEMS.GT.4) CALL READI(MAXINTIMAGE)
3148:             IF (NITEMS.GT.5) CALL READI(INTNTRIESMAX)3140:             IF (NITEMS.GT.5) CALL READI(INTNTRIESMAX)
3149:             IF (NITEMS.GT.6) CALL READI(INTIMAGEINCR)3141:             IF (NITEMS.GT.6) CALL READI(INTIMAGEINCR)
3203:                ALLOCATE(CONACTIVE(NCONSTRAINTFIX))3195:                ALLOCATE(CONACTIVE(NCONSTRAINTFIX))
3204:             ELSE3196:             ELSE
3205:                INQUIRE(FILE='congeom',EXIST=CONFILE)3197:                INQUIRE(FILE='congeom',EXIST=CONFILE)
3206:                NCONGEOM=03198:                NCONGEOM=0
3207:                IF (.NOT.CONFILE) THEN3199:                IF (.NOT.CONFILE) THEN
3208:                   PRINT '(A)',' keyword> WARNING *** no congeom file found. Will use end point minima only.'3200:                   PRINT '(A)',' keyword> WARNING *** no congeom file found. Will use end point minima only.'
3209:                ELSE3201:                ELSE
3210:                   LUNIT=GETUNIT()3202:                   LUNIT=GETUNIT()
3211:                   OPEN(LUNIT,FILE='congeom',STATUS='OLD')3203:                   OPEN(LUNIT,FILE='congeom',STATUS='OLD')
3212:                   DO3204:                   DO
3213:                      READ(LUNIT,*,END=861) DUMMY1(1)3205:                      READ(LUNIT,*,END=864) DUMMY1(1)
3214:                      NCONGEOM=NCONGEOM+13206:                      NCONGEOM=NCONGEOM+1
3215:                   ENDDO3207:                   ENDDO
3216: 861               CONTINUE3208: 864               CONTINUE
3217:                   NCONGEOM=NCONGEOM/NATOMS3209:                   NCONGEOM=NCONGEOM/NATOMS
3218:                   ALLOCATE(CONGEOM(NCONGEOM,3*NATOMS))3210:                   ALLOCATE(CONGEOM(NCONGEOM,3*NATOMS))
3219:                   REWIND(LUNIT)3211:                   REWIND(LUNIT)
3220:                   DO J1=1,NCONGEOM3212:                   DO J1=1,NCONGEOM
3221:                      READ(LUNIT,*) CONGEOM(J1,1:3*NATOMS)3213:                      READ(LUNIT,*) CONGEOM(J1,1:3*NATOMS)
3222:                   ENDDO3214:                   ENDDO
3223:                   CLOSE(LUNIT)3215:                   CLOSE(LUNIT)
3224:                   PRINT '(A,I6,A)',' keyword> Read ',NCONGEOM,' reference geometries from congeom file'3216:                   PRINT '(A,I6,A)',' keyword> Read ',NCONGEOM,' reference geometries from congeom file'
3225:                   IF (NCONGEOM.LT.2) PRINT '(A)',' WARNING *** insufficient reference geometries - using end point minima'3217:                   IF (NCONGEOM.LT.2) PRINT '(A)',' WARNING *** insufficient reference geometries - using end point minima'
3226:                ENDIF3218:                ENDIF
3802:          ELSE IF (WORD == 'NEBK') THEN3794:          ELSE IF (WORD == 'NEBK') THEN
3803:             CALL READF(NEBK)3795:             CALL READF(NEBK)
3804:             NEBKFINAL=NEBK3796:             NEBKFINAL=NEBK
3805:             NEBKINITIAL=NEBK3797:             NEBKINITIAL=NEBK
3806:             NEBFACTOR=1.01D03798:             NEBFACTOR=1.01D0
3807:             IF (NITEMS.GT.2) CALL READF(NEBKFINAL)3799:             IF (NITEMS.GT.2) CALL READF(NEBKFINAL)
3808:             IF (NITEMS.GT.3) CALL READF(NEBFACTOR)3800:             IF (NITEMS.GT.3) CALL READF(NEBFACTOR)
3809: ! 3801: ! 
3810: ! Read dneb guess images from file GUESSFILE, default name guess.xyz3802: ! Read dneb guess images from file GUESSFILE, default name guess.xyz
3811: ! 3803: ! 
3812:          ELSE IF ((WORD.EQ.'NEBREADGUESS').OR.(WORD.EQ.'NEBREADGUESSPERM')) THEN3804:          ELSE IF (WORD.EQ.'NEBREADGUESS') THEN
3813:             IF (WORD.EQ.'NEBREADGUESSPERM') PERMGUESS=.TRUE. 
3814:             READGUESS=.TRUE.3805:             READGUESS=.TRUE.
3815:             NEWNEBT=.TRUE. 
3816:             FCD=.TRUE. 
3817:             IF (NITEMS.GT.1) CALL READA(GUESSFILE)3806:             IF (NITEMS.GT.1) CALL READA(GUESSFILE)
3818:             FILENAME=GUESSFILE 
3819:             LUNIT=GETUNIT() 
3820:             OPEN(UNIT=LUNIT,FILE=FILENAME,STATUS='old') 
3821:             NIMAGE=0 
3822: ! 
3823: ! Here we skip two lines, allowing for the second line to be blank. 
3824: ! 
3825: 753         READ(LUNIT,*,END=864) 
3826:             READ(LUNIT,*) 
3827:             DO J1=1,NATOMS 
3828:                READ(LUNIT,*) DUMMYS 
3829:             ENDDO 
3830:             NIMAGE=NIMAGE+1 
3831:             GOTO 753 
3832: 864         NIMAGE=NIMAGE-2 
3833:             PRINT '(A,I6,A)','nnutils> There are ',NIMAGE+2,' images in file ' // TRIM(ADJUSTL(GUESSFILE)) 
3834:             CLOSE(LUNIT) 
3835: ! 3807: ! 
3836: ! Reseed DNEB images if they exceed a certain energy.3808: ! Reseed DNEB images if they exceed a certain energy.
3837: ! 3809: ! 
3838:          ELSE IF (WORD.EQ.'NEBRESEED') THEN3810:          ELSE IF (WORD.EQ.'NEBRESEED') THEN
3839:             NEBRESEEDT=.TRUE.3811:             NEBRESEEDT=.TRUE.
3840:             IF (NITEMS.GT.1) CALL READI(NEBRESEEDINT)3812:             IF (NITEMS.GT.1) CALL READI(NEBRESEEDINT)
3841:             IF (NITEMS.GT.2) CALL READF(NEBRESEEDEMAX)3813:             IF (NITEMS.GT.2) CALL READF(NEBRESEEDEMAX)
3842:             IF (NITEMS.GT.3) CALL READF(NEBRESEEDBMAX)3814:             IF (NITEMS.GT.3) CALL READF(NEBRESEEDBMAX)
3843:             IF (NITEMS.GT.4) CALL READF(NEBRESEEDDEL1)3815:             IF (NITEMS.GT.4) CALL READF(NEBRESEEDDEL1)
3844:             IF (NITEMS.GT.5) CALL READI(NEBRESEEDPOW1)3816:             IF (NITEMS.GT.5) CALL READI(NEBRESEEDPOW1)
3848:             NEWCONNECTT = .TRUE.3820:             NEWCONNECTT = .TRUE.
3849:             CONNECTT = .TRUE.3821:             CONNECTT = .TRUE.
3850:             OPTIMIZETS = .TRUE.3822:             OPTIMIZETS = .TRUE.
3851:             IF (NITEMS.GT.1) CALL READI(NCONMAX)3823:             IF (NITEMS.GT.1) CALL READI(NCONMAX)
3852:             IF (NITEMS.GT.2) CALL READI(NTRIESMAX)3824:             IF (NITEMS.GT.2) CALL READI(NTRIESMAX)
3853:             IF (NITEMS.GT.3) CALL READF(IMAGEDENSITY)3825:             IF (NITEMS.GT.3) CALL READF(IMAGEDENSITY)
3854:             IF (NITEMS.GT.4) CALL READF(ITERDENSITY)3826:             IF (NITEMS.GT.4) CALL READF(ITERDENSITY)
3855:             IF (NITEMS.GT.5) CALL READI(IMAGEMAX)3827:             IF (NITEMS.GT.5) CALL READI(IMAGEMAX)
3856:             IF (NITEMS.GT.6) CALL READF(IMAGEINCR)3828:             IF (NITEMS.GT.6) CALL READF(IMAGEINCR)
3857:             IF (NITEMS.GT.7) CALL READF(RMSTOL)3829:             IF (NITEMS.GT.7) CALL READF(RMSTOL)
3858:             IMAGEMAX=MAX(IMAGEMAX,NIMAGE+2) 
3859: ! 3830: ! 
3860: ! If NEWCONNECT is specified the values read below are only used for the first cycle.3831: ! If NEWCONNECT is specified the values read below are only used for the first cycle.
3861: ! If NEWNEB is used with OLDCONNECT then the values read on the NEWNEB line are3832: ! If NEWNEB is used with OLDCONNECT then the values read on the NEWNEB line are
3862: ! used in every cycle. If NEWCONNECT is used then a NEWNEB line isn;t necessary.3833: ! used in every cycle. If NEWCONNECT is used then a NEWNEB line isn;t necessary.
3863: ! 3834: ! 
3864:          ELSE IF (WORD == 'NEWNEB') THEN3835:          ELSE IF (WORD == 'NEWNEB') THEN
3865:             NEWNEBT=.TRUE.3836:             NEWNEBT=.TRUE.
3866:             FCD=.TRUE.3837:             FCD=.TRUE.
3867:             IF (NITEMS.GT.1) CALL READI(NNNIMAGE)3838:             IF (NITEMS.GT.1) CALL READI(NNNIMAGE)
3868:             IF (NITEMS.GT.2) CALL READI(NITERMAX)3839:             IF (NITEMS.GT.2) CALL READI(NITERMAX)
3869:             IF (NITEMS.GT.3) CALL READF(RMSTOL)3840:             IF (NITEMS.GT.3) CALL READF(RMSTOL)
3870:             IF (READGUESS) NNNIMAGE=NIMAGE 
3871: ! 3841: ! 
3872: ! NGUESS specifies the number of transition state guesses tried in GUESSTS for CHARMM3842: ! NGUESS specifies the number of transition state guesses tried in GUESSTS for CHARMM
3873: ! before switching back to NEB or NEWNEB.3843: ! before switching back to NEB or NEWNEB.
3874: ! 3844: ! 
3875:          ELSE IF (WORD.EQ.'NGUESS') THEN3845:          ELSE IF (WORD.EQ.'NGUESS') THEN
3876:             CALL READI(NGUESS)3846:             CALL READI(NGUESS)
3877: ! 3847: ! 
3878: ! NIMET  turns ON/OFF the embedded diatomics-in-molecules Ni + H PES (EAM4)3848: ! NIMET  turns ON/OFF the embedded diatomics-in-molecules Ni + H PES (EAM4)
3879: ! default OFF3849: ! default OFF
3880: ! 3850: ! 


r29252/lbfgs.f90 2015-11-17 23:32:44.736300040 +0000 r29251/lbfgs.f90 2015-11-17 23:32:46.276320694 +0000
 83:      INTPTEST = .FALSE. 83:      INTPTEST = .FALSE.
 84:      IF (DESMDEBUG) MOREPRINTING = .TRUE. 84:      IF (DESMDEBUG) MOREPRINTING = .TRUE.
 85:      ADDATOM=.FALSE. 85:      ADDATOM=.FALSE.
 86:      NFAIL=0 86:      NFAIL=0
 87:      IF (FREEZENODEST) IMGFREEZE(1:NIMAGE)=.FALSE. 87:      IF (FREEZENODEST) IMGFREEZE(1:NIMAGE)=.FALSE.
 88:      BESTE=HUGE(1.0D0) 88:      BESTE=HUGE(1.0D0)
 89:  89: 
 90:      CALL CHECKINPUT 90:      CALL CHECKINPUT
 91:      IF (DEBUG) CALL DUMPFILES("b") 91:      IF (DEBUG) CALL DUMPFILES("b")
 92:      IF (DUMPNEBXYZ) CALL RWG("w",.False.,0) 92:      IF (DUMPNEBXYZ) CALL RWG("w",.False.,0)
 93:      IF (DUMPNEBEOS) CALL WRITEPROFILE(0) 
 94:      IF (MOREPRINTING) THEN 93:      IF (MOREPRINTING) THEN
 95:           WRITE(*,'(A)') '                  Iter   Energy per image      RMS Force       Av.Dev    Path     Step' 94:           WRITE(*,'(A)') '                  Iter   Energy per image      RMS Force       Av.Dev    Path     Step'
 96:      ENDIF 95:      ENDIF
 97:      IF (PREVGRAD.LT.DNEBSWITCH) THEN 96:      IF (PREVGRAD.LT.DNEBSWITCH) THEN
 98:         CALL OLDNEBGRADIENT 97:         CALL OLDNEBGRADIENT
 99:      ELSE 98:      ELSE
100:         CALL NEBGRADIENT 99:         CALL NEBGRADIENT
101:      ENDIF100:      ENDIF
102:      IF (ETOTAL/NIMAGE.LT.COLDFUSIONLIMIT) THEN101:      IF (ETOTAL/NIMAGE.LT.COLDFUSIONLIMIT) THEN
103:         WRITE(*,'(A,2G20.10)') ' lbfgs> Cold fusion diagnosed - step discarded, energy, limit=',ETOTAL/NIMAGE,COLDFUSIONLIMIT102:         WRITE(*,'(A,2G20.10)') ' lbfgs> Cold fusion diagnosed - step discarded, energy, limit=',ETOTAL/NIMAGE,COLDFUSIONLIMIT


r29252/lopermdist.f90 2015-11-17 23:32:45.892315544 +0000 r29251/lopermdist.f90 2015-11-17 23:32:47.452336466 +0000
 56: DOUBLE PRECISION TIME0, TIME1 56: DOUBLE PRECISION TIME0, TIME1
 57: DOUBLE PRECISION, ALLOCATABLE :: TEMPA(:), TEMPB(:) 57: DOUBLE PRECISION, ALLOCATABLE :: TEMPA(:), TEMPB(:)
 58: CHARACTER(LEN=5) ZSYMSAVE 58: CHARACTER(LEN=5) ZSYMSAVE
 59: COMMON /SYS/ ZSYMSAVE 59: COMMON /SYS/ ZSYMSAVE
 60: DOUBLE PRECISION XA, XB, YA, YB, ZA, ZB, DMEAN(NATOMS), DA, DB 60: DOUBLE PRECISION XA, XB, YA, YB, ZA, ZB, DMEAN(NATOMS), DA, DB
 61: INTEGER TRIED(NATOMS), DLIST(NATOMS), SORTLIST(NATOMS), NDUMMY2, INGROUP(NATOMS), NADDED 61: INTEGER TRIED(NATOMS), DLIST(NATOMS), SORTLIST(NATOMS), NDUMMY2, INGROUP(NATOMS), NADDED
 62:  62: 
 63: IF (DEBUG) THEN 63: IF (DEBUG) THEN
 64:    IF (CHRMMT) CALL UPDATENBONDS(COORDSA) 64:    IF (CHRMMT) CALL UPDATENBONDS(COORDSA)
 65:    CALL POTENTIAL(COORDSA,AINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.) 65:    CALL POTENTIAL(COORDSA,AINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
 66:    PRINT '(2(A,G25.15))',' initial energy for minimum A=             ',AINIT,' RMS=',RMS 66:    PRINT '(2(A,F25.15))',' initial energy for minimum A=             ',AINIT,' RMS=',RMS
 67:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN 67:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN
 68:       PRINT '(A)',' lopermdist> WARNING *** RMS for minimum A is outside tolerance' 68:       PRINT '(A)',' lopermdist> WARNING *** RMS for minimum A is outside tolerance'
 69:    ENDIF 69:    ENDIF
 70:    IF (CHRMMT) CALL UPDATENBONDS(COORDSB) 70:    IF (CHRMMT) CALL UPDATENBONDS(COORDSB)
 71:    CALL POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.) 71:    CALL POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
 72:    PRINT '(2(A,G25.15))',' initial energy for minimum B=             ',BINIT,' RMS=',RMS 72:    PRINT '(2(A,F25.15))',' initial energy for minimum B=             ',BINIT,' RMS=',RMS
 73:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN 73:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN
 74:       PRINT '(A)',' lopermdist> WARNING *** RMS for minimum B is outside tolerance' 74:       PRINT '(A)',' lopermdist> WARNING *** RMS for minimum B is outside tolerance'
 75:    ENDIF 75:    ENDIF
 76: ENDIF 76: ENDIF
 77:  77: 
 78: LPC2=LOCALPERMCUT**2 78: LPC2=LOCALPERMCUT**2
 79: LPC22=LOCALPERMCUT2**2 79: LPC22=LOCALPERMCUT2**2
 80: DBEST=1.0D100 80: DBEST=1.0D100
 81: PERMUTABLE(1:NATOMS)=.FALSE. 81: PERMUTABLE(1:NATOMS)=.FALSE.
 82: NDUMMY=1 82: NDUMMY=1
509: 509: 
510: COORDSA(1:3*NATOMS)=XBEST(1:3*NATOMS) ! finally, best COORDSA should include permutations for DNEB input!510: COORDSA(1:3*NATOMS)=XBEST(1:3*NATOMS) ! finally, best COORDSA should include permutations for DNEB input!
511: 511: 
512: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!512: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
513: ! IF (DEBUG) PRINT '(A)',' lopermdist> Overall permutation for COORDSA (second argument):'513: ! IF (DEBUG) PRINT '(A)',' lopermdist> Overall permutation for COORDSA (second argument):'
514: ! IF (DEBUG) PRINT '(20I6)',BESTPERM(1:NATOMS)514: ! IF (DEBUG) PRINT '(20I6)',BESTPERM(1:NATOMS)
515: 515: 
516: IF (DEBUG) THEN516: IF (DEBUG) THEN
517:    IF (CHRMMT) CALL UPDATENBONDS(COORDSA)517:    IF (CHRMMT) CALL UPDATENBONDS(COORDSA)
518:    CALL POTENTIAL(COORDSA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)518:    CALL POTENTIAL(COORDSA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
519:    PRINT '(2(A,G25.15))',' lopermdist> final   energy for minimum A=             ',ENERGY,' RMS=',RMS519:    PRINT '(2(A,F25.15))',' lopermdist> final   energy for minimum A=             ',ENERGY,' RMS=',RMS
520:    IF (ABS(ENERGY-AINIT).GT.EDIFFTOL) THEN520:    IF (ABS(ENERGY-AINIT).GT.EDIFFTOL) THEN
521:       PRINT '(A)',' minpermdist> WARNING *** energy change for minimum A is outside tolerance'521:       PRINT '(A)',' minpermdist> ERROR *** energy change for minimum A is outside tolerance'
 522:       STOP
522:    ENDIF523:    ENDIF
523:    IF (CHRMMT) CALL UPDATENBONDS(COORDSB)524:    IF (CHRMMT) CALL UPDATENBONDS(COORDSB)
524:    CALL POTENTIAL(COORDSB,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)525:    CALL POTENTIAL(COORDSB,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
525:    PRINT '(2(A,G25.15))',' lopermdist> final   energy for minimum B=             ',ENERGY,' RMS=',RMS526:    PRINT '(2(A,F25.15))',' lopermdist> final   energy for minimum B=             ',ENERGY,' RMS=',RMS
526:    IF (ABS(ENERGY-BINIT).GT.EDIFFTOL) THEN527:    IF (ABS(ENERGY-BINIT).GT.EDIFFTOL) THEN
527:       PRINT '(A)',' minpermdist> WARNING *** energy change for minimum B is outside tolerance'528:       PRINT '(A)',' minpermdist> ERROR *** energy change for minimum B is outside tolerance'
 529:       STOP
528:    ENDIF530:    ENDIF
529: ENDIF531: ENDIF
530: 532: 
531: RETURN533: RETURN
532: END SUBROUTINE LOPERMDIST534: END SUBROUTINE LOPERMDIST
533: 535: 
534: SUBROUTINE DEPTHSEARCH(PATOMS,MAXSEP,NDUMMY,NPG,NDIST1)536: SUBROUTINE DEPTHSEARCH(PATOMS,MAXSEP,NDUMMY,NPG,NDIST1)
535: USE KEY, ONLY : CONIFIX, CONJFIX, NCONSTRAINTFIX, CONCUTFIX, NPERMSIZE, PERMGROUP537: USE KEY, ONLY : CONIFIX, CONJFIX, NCONSTRAINTFIX, CONCUTFIX, NPERMSIZE, PERMGROUP
536: USE COMMONS, ONLY: NATOMS, DEBUG538: USE COMMONS, ONLY: NATOMS, DEBUG
537: IMPLICIT NONE539: IMPLICIT NONE


r29252/minpermdist.f90 2015-11-17 23:32:46.084318119 +0000 r29251/minpermdist.f90 2015-11-17 23:32:47.640338988 +0000
 11: !  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 11: !  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 12: !  GNU General Public License for more details. 12: !  GNU General Public License for more details.
 13: ! 13: !
 14: !  You should have received a copy of the GNU General Public License 14: !  You should have received a copy of the GNU General Public License
 15: !  along with this program; if not, write to the Free Software 15: !  along with this program; if not, write to the Free Software
 16: !  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 16: !  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 17: ! 17: !
 18: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 18: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 19: ! 19: !
 20: !  COORDSA becomes the optimal alignment of the optimal permutation(-inversion) 20: !  COORDSA becomes the optimal alignment of the optimal permutation(-inversion)
 21: !  isomer, WITH the permutations. DISTANCE is the residual square distance 21: !  isomer, but without the permutations. DISTANCE is the residual square distance
 22: !  for the best alignment with respect to permutation(-inversion)s as well as 22: !  for the best alignment with respect to permutation(-inversion)s as well as
 23: !  orientation and centre of mass. 23: !  orientation and centre of mass.
 24: ! 24: !
 25: !  MYORIENT is called first for both COORDSA and COORDSB to put them into 25: !  MYORIENT is called first for both COORDSA and COORDSB to put them into
 26: !  a standard orientation in DUMMYA and DUMMYB (which both have the centre of 26: !  a standard orientation in DUMMYA and DUMMYB (which both have the centre of
 27: !  coordinates at the origin).  27: !  coordinates at the origin). 
 28: !  The objective is to identify permutation-inversion isomers without fail.  28: !  The objective is to identify permutation-inversion isomers without fail. 
 29: !  However, we have to cycle over all equivalent atoms in two particular orbits for DUMMYA 29: !  However, we have to cycle over all equivalent atoms in two particular orbits for DUMMYA
 30: !  to achieve this. 30: !  to achieve this.
 31: !  We iterate permutations and newmindist minimisations up to a maximum number or 31: !  We iterate permutations and newmindist minimisations up to a maximum number or
255:    RETURN255:    RETURN
256: ELSEIF (LPERMDIST) THEN256: ELSEIF (LPERMDIST) THEN
257:    CALL LOPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST)257:    CALL LOPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST)
258:    IF (DEBUG) THEN258:    IF (DEBUG) THEN
259:       IF (CHRMMT) CALL UPDATENBONDS(COORDSA)259:       IF (CHRMMT) CALL UPDATENBONDS(COORDSA)
260:       IF (RIGIDINIT ) THEN260:       IF (RIGIDINIT ) THEN
261:          CALL GENRIGID_POTENTIAL(COORDSA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)261:          CALL GENRIGID_POTENTIAL(COORDSA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
262:       ELSE262:       ELSE
263:          CALL POTENTIAL(COORDSA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)263:          CALL POTENTIAL(COORDSA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
264:       ENDIF264:       ENDIF
265:       PRINT '(2(A,G25.15))',' minpermdist> final   energy for minimum A=             ',ENERGY,' RMS=',RMS265:       PRINT '(2(A,F25.15))',' minpermdist> final   energy for minimum A=             ',ENERGY,' RMS=',RMS
266:       IF (ABS(ENERGY-AINIT).GT.2*EDIFFTOL) THEN266:       IF (ABS(ENERGY-AINIT).GT.2*EDIFFTOL) THEN
267:          PRINT '(A)',' minpermdist> ERROR *** energy change for minimum A is outside tolerance - QCI/DNEB endpoint alignment?'267:          PRINT '(A)',' minpermdist> ERROR *** energy change for minimum A is outside tolerance'
 268:          STOP
268:       ENDIF269:       ENDIF
269:       IF (CHRMMT) CALL UPDATENBONDS(COORDSB)270:       IF (CHRMMT) CALL UPDATENBONDS(COORDSB)
270:       IF (RIGIDINIT) THEN271:       IF (RIGIDINIT) THEN
271:          CALL GENRIGID_POTENTIAL(COORDSB,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)272:          CALL GENRIGID_POTENTIAL(COORDSB,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
272:       ELSE273:       ELSE
273:          CALL POTENTIAL(COORDSB,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)274:          CALL POTENTIAL(COORDSB,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
274:       ENDIF275:       ENDIF
275:       PRINT '(2(A,G25.15))',' minpermdist> final   energy for minimum B=             ',ENERGY,' RMS=',RMS276:       PRINT '(2(A,F25.15))',' minpermdist> final   energy for minimum B=             ',ENERGY,' RMS=',RMS
276:       IF (ABS(ENERGY-BINIT).GT.2*EDIFFTOL) THEN277:       IF (ABS(ENERGY-BINIT).GT.2*EDIFFTOL) THEN
277:          PRINT '(A)',' minpermdist> ERROR *** energy change for minimum B is outside tolerance - QCI/DNEB endpoint alignment?'278:          PRINT '(A)',' minpermdist> ERROR *** energy change for minimum B is outside tolerance'
 279:          STOP
278:       ENDIF280:       ENDIF
279:    ENDIF281:    ENDIF
280: 282: 
281:    RETURN283:    RETURN
282: ENDIF284: ENDIF
283: 285: 
284: IF (INTMINPERMT.AND.(INTINTERPT.OR.DESMINT)) THEN286: IF (INTMINPERMT.AND.(INTINTERPT.OR.DESMINT)) THEN
285:     IF (CHRMMT.OR.OLDINTMINPERMT) THEN287:     IF (CHRMMT.OR.OLDINTMINPERMT) THEN
286:       !CALL MYCPU_TIME(TIME0,.FALSE.)288:       !CALL MYCPU_TIME(TIME0,.FALSE.)
287:       CALL OLD_INTMINPERM(COORDSB, COORDSA, DISTANCE, RMAT, DEBUG)289:       CALL OLD_INTMINPERM(COORDSB, COORDSA, DISTANCE, RMAT, DEBUG)


r29252/newneb.f90 2015-11-17 23:32:44.928302616 +0000 r29251/newneb.f90 2015-11-17 23:32:46.488323537 +0000
168:           X         => XYZ(NOPT+1:NOPT*(NIMAGE+1))168:           X         => XYZ(NOPT+1:NOPT*(NIMAGE+1))
169:           EIMAGE    => EEE(2:NIMAGE+1)169:           EIMAGE    => EEE(2:NIMAGE+1)
170:           G         => GGG(NOPT+1:NOPT*(NIMAGE+1))170:           G         => GGG(NOPT+1:NOPT*(NIMAGE+1))
171:           GSPR      => SSS(NOPT+1:NOPT*(NIMAGE+1))171:           GSPR      => SSS(NOPT+1:NOPT*(NIMAGE+1))
172:           RMSFIMAGE => RRR(2:NIMAGE+1)172:           RMSFIMAGE => RRR(2:NIMAGE+1)
173:           TANPTR => TANVEC173:           TANPTR => TANVEC
174:           EEE = 0.0D0174:           EEE = 0.0D0
175:           EEE(1)=EINITIAL175:           EEE(1)=EINITIAL
176:           EEE(NIMAGE+2)=EFINAL176:           EEE(NIMAGE+2)=EFINAL
177:           IF (DESMINT.AND..NOT.GROWSTRINGT) THEN177:           IF (DESMINT.AND..NOT.GROWSTRINGT) THEN
178:              PRINT*, "newneb>"178:           PRINT*, "newneb>"
179:              XYZCART(:3*NATOMS) = QQ179:              XYZCART(:3*NATOMS) = QQ
180:              XYZCART(3*NATOMS*(NIMAGE+1)+1:) = FINFIN180:              XYZCART(3*NATOMS*(NIMAGE+1)+1:) = FINFIN
181: 181: 
182:              PREVDIH => DIHINFO(1,:)182:              PREVDIH => DIHINFO(1,:)
183:              CALL CART2INT(QQ,XYZ(:NOPT))183:              CALL CART2INT(QQ,XYZ(:NOPT))
184: 184: 
185:              DO J1 = 2,NIMAGE+2185:              DO J1 = 2,NIMAGE+2
186:                 ! align all other dihedrals to start186:                 ! align all other dihedrals to start
187:                 DIHINFO(J1,:) = DIHINFO(1,:)187:                 DIHINFO(J1,:) = DIHINFO(1,:)
188:              ENDDO188:              ENDDO
406:                 IF(RIGIDINIT) THEN406:                 IF(RIGIDINIT) THEN
407:                     ! Seems strange to call this with the number of coords to407:                     ! Seems strange to call this with the number of coords to
408:                     ! optimise set to NOPT (which is the atomistic value)408:                     ! optimise set to NOPT (which is the atomistic value)
409:                     ! rather than DEGFREEDOMS. But in fact this is used to409:                     ! rather than DEGFREEDOMS. But in fact this is used to
410:                     ! initialise arrays, so if we use DEGFREEDOMS then we end up410:                     ! initialise arrays, so if we use DEGFREEDOMS then we end up
411:                     ! running over the ends of arrays.411:                     ! running over the ends of arrays.
412:                     call neb_example(NIMAGE,NOPT,XYZ,EEE,NITERMAX)412:                     call neb_example(NIMAGE,NOPT,XYZ,EEE,NITERMAX)
413: !                    call neb_example(RIGIDQ,RIGIDFIN,NIMAGE,NOPT,XYZ,EEE,NITERMAX)413: !                    call neb_example(RIGIDQ,RIGIDFIN,NIMAGE,NOPT,XYZ,EEE,NITERMAX)
414:                 ELSE414:                 ELSE
415: !                    call neb_example(QQ,FINFIN,NIMAGE,NOPT,XYZ,EEE,NITERMAX)415: !                    call neb_example(QQ,FINFIN,NIMAGE,NOPT,XYZ,EEE,NITERMAX)
416:                     CALL NEB_EXAMPLE(NIMAGE,NOPT,XYZ,EEE,NITERMAX)416:                     call neb_example(NIMAGE,NOPT,XYZ,EEE,NITERMAX)
417:                 ENDIF417:                 ENDIF
418:              ELSEIF ((.NOT.REDOPATH).OR.REDOPATHNEB) THEN418:              ELSEIF ((.NOT.REDOPATH).OR.REDOPATHNEB) THEN
419:                 SELECT CASE(MINTYPE)419:                 SELECT CASE(MINTYPE)
420:                 CASE("lbfgs")420:                 CASE("lbfgs")
421:                    IF (UNRST) THEN421:                    IF (UNRST) THEN
422:                       CALL NEBBFGSINT(NINTS*NIMAGE,NEBMUPDATE)422:                       CALL NEBBFGSINT(NINTS*NIMAGE,NEBMUPDATE)
423:                    ELSE423:                    ELSE
424:                       CALL NEBBFGS(NOPT*NIMAGE,NEBMUPDATE,NPERSIST,PERSISTENT)424:                       CALL NEBBFGS(NOPT*NIMAGE,NEBMUPDATE,NPERSIST,PERSISTENT)
425:                    END IF425:                    END IF
426:                 CASE("sqvv")426:                 CASE("sqvv")


r29252/nnutils.f90 2015-11-17 23:32:45.120305190 +0000 r29251/nnutils.f90 2015-11-17 23:32:46.684326166 +0000
1069:           WRITE(UNIT=UNIT,FMT='(2g24.13)') dummy,eee(Nimage+2)1069:           WRITE(UNIT=UNIT,FMT='(2g24.13)') dummy,eee(Nimage+2)
1070: 1070: 
1071: !         IF (.NOT.PRESENT(UNITIN)) THEN1071: !         IF (.NOT.PRESENT(UNITIN)) THEN
1072:                CLOSE(UNIT)1072:                CLOSE(UNIT)
1073: !         ENDIF1073: !         ENDIF
1074:           PRINT *, 'writeprofile> NEB profile was saved to file "'//trim(filename)//'"'1074:           PRINT *, 'writeprofile> NEB profile was saved to file "'//trim(filename)//'"'
1075:      END SUBROUTINE WRITEPROFILE1075:      END SUBROUTINE WRITEPROFILE
1076: 1076: 
1077:      SUBROUTINE RWG(WHAT,GUESS,NITER)1077:      SUBROUTINE RWG(WHAT,GUESS,NITER)
1078:           USE PORFUNCS1078:           USE PORFUNCS
1079:           USE KEY,ONLY: FILTH,FILTHSTR,UNRST,STOCKT,AMHT,SEQ,NUMGLY,STOCKAAT, RBAAT,NTSITES, GTHOMSONT, NGTHORI, PERMGUESS, &1079:           USE KEY,ONLY: FILTH,FILTHSTR,UNRST,STOCKT,AMHT,SEQ,NUMGLY,STOCKAAT, RBAAT,NTSITES, GTHOMSONT, NGTHORI ! hk286
1080:   &                     BULKT, NRBTRIES, NABT,TWOD, RIGIDBODY1080:           USE COMMONS, ONLY: ZSYM, NRBSITES 
1081:           USE COMMONS, ONLY: ZSYM, NRBSITES, PARAM1,PARAM2,PARAM3, NRBSITES, DEBUG 
1082:           USE INTCOMMONS, ONLY : DESMINT1081:           USE INTCOMMONS, ONLY : DESMINT
1083:           USE NEBDATA1082:           USE NEBDATA
1084:           USE AMHGLOBALS, ONLY : NMRES1083:           USE AMHGLOBALS, ONLY : NMRES
1085:           USE KEYNEB,ONLY: NIMAGE,XYZFILE,RBXYZFILE,GUESSFILE1084:           USE KEYNEB,ONLY: NIMAGE,XYZFILE,RBXYZFILE,GUESSFILE
1086:           IMPLICIT NONE1085:           IMPLICIT NONE
1087: 1086: 
1088:           CHARACTER,INTENT(IN) :: WHAT1087:           CHARACTER,INTENT(IN) :: WHAT
1089:           LOGICAL,INTENT(IN) :: GUESS1088:           LOGICAL,INTENT(IN) :: GUESS
1090:           INTEGER,INTENT(IN) :: NITER1089:           INTEGER,INTENT(IN) :: NITER
1091: 1090: 
1092:           INTEGER :: EOF,J1,J2,J3,J4,GLY_COUNT1091:           INTEGER :: EOF,J1,J2,J3,J4,GLY_COUNT
1093:           CHARACTER(LEN=80) :: FILENAME,FILENAME2,DUMMYS,DUMMYS21092:           CHARACTER(LEN=80) :: FILENAME,FILENAME2,DUMMYS,DUMMYS2
1094:           DOUBLE PRECISION :: PEPCOORDS(3*NATOMS-6), STXYZ(3*NTSITES)1093:           DOUBLE PRECISION :: PEPCOORDS(3*NATOMS-6), STXYZ(3*NTSITES)
1095: 1094: 
1096: ! hk2861095: ! hk286
1097:           DOUBLE PRECISION :: TMPCOORDS(9*NATOMS/2), RMAT(3,3), D, DIST21096:           DOUBLE PRECISION :: TMPCOORDS(9*NATOMS/2)
1098: 1097: 
1099:           IF (FILTH.EQ.0) THEN1098:           IF (FILTH.EQ.0) THEN
1100:              FILENAME=XYZFILE1099:              FILENAME=XYZFILE
1101:              FILENAME2='neb.path.unr.xyz'1100:              FILENAME2='neb.path.unr.xyz'
1102:              IF (GUESS) FILENAME=GUESSFILE1101:              IF (GUESS) FILENAME=GUESSFILE
1103:              IF (RBAAT) FILENAME2=RBXYZFILE1102:              IF (RBAAT) FILENAME2=RBXYZFILE
1104:           ELSE1103:           ELSE
1105:              FILENAME=TRIM(XYZFILE)//'.'//TRIM(ADJUSTL(FILTHSTR))1104:              FILENAME=TRIM(XYZFILE)//'.'//TRIM(ADJUSTL(FILTHSTR))
1106:              FILENAME2='neb.path.unr.xyz.'//TRIM(ADJUSTL(FILTHSTR))1105:              FILENAME2='neb.path.unr.xyz.'//TRIM(ADJUSTL(FILTHSTR))
1107:              IF (GUESS) FILENAME=TRIM(GUESSFILE) !  //'.'//TRIM(ADJUSTL(FILTHSTR))1106:              IF (GUESS) FILENAME=TRIM(GUESSFILE) !  //'.'//TRIM(ADJUSTL(FILTHSTR))
1226:                OPEN(UNIT=993,FILE=FILENAME,STATUS='old')1225:                OPEN(UNIT=993,FILE=FILENAME,STATUS='old')
1227: !              IF (.NOT.EOF==0) THEN1226: !              IF (.NOT.EOF==0) THEN
1228: !                   PRINT *, "WHERE IS "//TRIM(ADJUSTL(FILENAME))//" FILE? - CAN't find it!"1227: !                   PRINT *, "WHERE IS "//TRIM(ADJUSTL(FILENAME))//" FILE? - CAN't find it!"
1229: !                   CALL TSUMMARY1228: !                   CALL TSUMMARY
1230: !                   STOP1229: !                   STOP
1231: !              ENDIF1230: !              ENDIF
1232:                DO J2=1,NIMAGE+21231:                DO J2=1,NIMAGE+2
1233: !1232: !
1234: ! Here we skip two lines, allowing for the second line to be blank.1233: ! Here we skip two lines, allowing for the second line to be blank.
1235: !1234: !
1236:                   READ(993,*)1235:                      READ(993,'(A/)') DUMMYS 
1237:                   READ(993,*)1236:                      READ(993,*) (ZSYM((j1+2)/3),XYZ( (J2-1)*NOPT+J1),&
1238:                   READ(993,*) (DUMMYS,XYZ( (J2-1)*NOPT+J1),XYZ((J2-1)*NOPT+J1+1),XYZ((J2-1)*NOPT+J1+2),J1=1,NOPT,3)1237:                           & XYZ((J2-1)*NOPT+J1+1), XYZ((J2-1)*NOPT+J1+2),J1=1,NOPT,3)
1239:                   IF (PERMGUESS.AND.(J2.GT.1)) THEN  
1240:                      CALL MINPERMDIST(XYZ((J2-2)*NOPT+1:(J2-1)*NOPT),XYZ((J2-1)*NOPT+1:J2*NOPT),NATOMS,DEBUG, & 
1241:   &                    PARAM1,PARAM2,PARAM3,BULKT,TWOD,D,DIST2,RIGIDBODY,RMAT) 
1242:                   ENDIF 
1243:                ENDDO1238:                ENDDO
1244:                PRINT '(A,I6,A)','nnutils> ',NIMAGE+2,' images read from file ' // TRIM(ADJUSTL(GUESSFILE))1239:                PRINT '(A)','nnutils> Guess read from file ' // TRIM(ADJUSTL(GUESSFILE))
1245:           END SELECT1240:           END SELECT
1246:           CLOSE(UNIT=993)1241:           CLOSE(UNIT=993)
1247:      END SUBROUTINE RWG1242:      END SUBROUTINE RWG
1248: 1243: 
1249:      SUBROUTINE SAVEBANDCOORD1244:      SUBROUTINE SAVEBANDCOORD
1250:           USE NEBDATA,ONLY: XYZ,NOPT1245:           USE NEBDATA,ONLY: XYZ,NOPT
1251:           USE KEYNEB,ONLY:NIMAGE,PTSFILE1246:           USE KEYNEB,ONLY:NIMAGE,PTSFILE
1252:           IMPLICIT NONE1247:           IMPLICIT NONE
1253: 1248: 
1254:           INTEGER :: RECLEN,I1249:           INTEGER :: RECLEN,I


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0