hdiff output

r31966/key.f90 2017-02-23 17:30:14.283710369 +0000 r31965/key.f90 2017-02-23 17:30:15.399725075 +0000
 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 27:      &        QCIADDREP, QCIBONDS, QCISECOND, MAXNACTIVE, QCIIMAGE, NADDTARGET
 28:  28: 
 29:       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, &
 30:      &        PGRAD, VALUEST, ADMT, BFGSMINT, BFGSTST, CHECKINDEX, TOSI, CONTAINER, & 30:      &        PGRAD, VALUEST, ADMT, BFGSMINT, BFGSTST, CHECKINDEX, TOSI, CONTAINER, &
 31:      &        GAUSSIAN, CADPAC, PRESSURE, FTEST, DCHECK, CP2K, DFTP, CPMD, CPMDC, FREEZERES, DF1T, & 31:      &        GAUSSIAN, CADPAC, PRESSURE, FTEST, DCHECK, CP2K, DFTP, CPMD, CPMDC, FREEZERES, DF1T, &
 32:      &        VARIABLES, FIELDT, OHT, IHT, TDT, D5HT, TWOENDS, PV, FRACTIONAL, BLNT, HYBRIDMINT, & 32:      &        VARIABLES, FIELDT, OHT, IHT, TDT, D5HT, TWOENDS, PV, FRACTIONAL, BLNT, HYBRIDMINT, &
 33:      &        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, &
 34:      &        BFGSSTEP, BULKT, HUPDATE, NOHESS, READV, NOIT, THOMSONT, SIO2T, SIO2C6T, BISECTT, BISECTDEBUG, & 34:      &        BFGSSTEP, BULKT, HUPDATE, NOHESS, READV, NOIT, THOMSONT, SIO2T, SIO2C6T, BISECTT, BISECTDEBUG, &
 35:      &        TOSIC6, TOSIPOL, FIXIMAGE, DFTBT, CHECKCONT, CHECKDT, SHIFTED, READSP, DUMPSP, NOFRQS, & 35:      &        TOSIC6, TOSIPOL, FIXIMAGE, DFTBT, CHECKCONT, CHECKDT, SHIFTED, READSP, DUMPSP, NOFRQS, &
 36:      &        ALLSTEPS, ALLVECTORS, MWVECTORS, WELCH, BINARY, READHESS, MOVIE, NORESET, TWOD, & 36:      &        ALLSTEPS, ALLVECTORS, MWVECTORS, WELCH, BINARY, READHESS, MOVIE, NORESET, TWOD, &
 37:      &        DOUBLET, REOPT, PARALLEL, LINEMIN, FIXD, KEEPINDEX, BSMIN, PRINTPTS, RKMIN, REPELTST,& 37:      &        DOUBLET, REOPT, PARALLEL, LINEMIN, FIXD, KEEPINDEX, BSMIN, PRINTPTS, RKMIN, REPELTST,&
 49:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, & 49:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, &
 50:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, & 50:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, &
 51:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, & 51:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, &
 52:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, & 52:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, &
 53:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, & 53:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, &
 54:      &        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, &
 55:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, & 55:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, &
 56:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, & 56:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, &
 57:      &        MALONALDEHYDE, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, MLPB3NEWT, MLPVB3T, & 57:      &        MALONALDEHYDE, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, MLPB3NEWT, MLPVB3T, &
 58:      &        QCIPOTT, QCIPOT2T, QCIRADSHIFTT, QCINOREPINT, QCIAMBERT, SLERPT, NOTRANSROTT, MAXGAPT, BULKBOXT, GDSQT, FLATTESTT, & 58:      &        QCIPOTT, QCIPOT2T, QCIRADSHIFTT, QCINOREPINT, QCIAMBERT, SLERPT, NOTRANSROTT, MAXGAPT, BULKBOXT, GDSQT, FLATTESTT, &
 59:      &        MLQT, MLQPROB, LJADD2T, MACROIONT, NOREGBIAS, PYADDT, PYADD2T, SANDBOXT, LJADD3T, LJADD4T 59:      &        MLQT, MLQPROB, LJADD2T, MACROIONT, NOREGBIAS, PYADDT, PYADD2T, SANDBOXT
 60:  60: 
 61: ! sy349 > for testing the flatpath after dneb 61: ! sy349 > for testing the flatpath after dneb
 62:       !LOGICAL, ALLOCATABLE :: FLATPATHT(:) 62:       !LOGICAL, ALLOCATABLE :: FLATPATHT(:)
 63:       LOGICAL FLATPATHT 63:       LOGICAL FLATPATHT
 64:  64: 
 65: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted) 65: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted)
 66:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential? 66:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential?
 67:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z) 67:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z)
 68:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1 68:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1
 69:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads 69:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads
100:      &        NEBRESEEDDEL2, INTCONSTRAINTTOL, INTCONSTRAINTDEL, RBCUTOFF, INTCONSTRAINTREP, INTCONSTRAINREPCUT, &100:      &        NEBRESEEDDEL2, INTCONSTRAINTTOL, INTCONSTRAINTDEL, RBCUTOFF, INTCONSTRAINTREP, INTCONSTRAINREPCUT, &
101:      &        REDOK, REDOFRAC, D1INIT, D2INIT, REDOE1, REDOE2, RPBETA, REPCON, PFORCE, &101:      &        REDOK, REDOFRAC, D1INIT, D2INIT, REDOE1, REDOE2, RPBETA, REPCON, PFORCE, &
102:      &        CPCONSTRAINTTOL, CPCONSTRAINTDEL, CPCONSTRAINTREP, CPCONSTRAINREPCUT, CPCONFRAC, &102:      &        CPCONSTRAINTTOL, CPCONSTRAINTDEL, CPCONSTRAINTREP, CPCONSTRAINREPCUT, CPCONFRAC, &
103:      &        INTLJTOL, INTLJDEL, INTLJEPS, IMSEPMIN, IMSEPMAX, TRAPK, MINOVERLAP, &103:      &        INTLJTOL, INTLJDEL, INTLJEPS, IMSEPMIN, IMSEPMAX, TRAPK, MINOVERLAP, &
104:      &        INTFREEZETOL, LOCALPERMCUT, LOCALPERMCUT2, LOCALPERMCUTINC, CHECKREPCUTOFF, CONCUTABS, &104:      &        INTFREEZETOL, LOCALPERMCUT, LOCALPERMCUT2, LOCALPERMCUTINC, CHECKREPCUTOFF, CONCUTABS, &
105:      &        CONCUTFRAC, ENDNUMHESSDELTA, DNEBEFRAC, QCHEMSCALE, KAA, SIGMAAA, QUIPATOMMASS, TEMPERATURE1, &105:      &        CONCUTFRAC, ENDNUMHESSDELTA, DNEBEFRAC, QCHEMSCALE, KAA, SIGMAAA, QUIPATOMMASS, TEMPERATURE1, &
106:      &        DISTORTINST,DELTAINST,MOLPROSCALE,COVER,STTSRMSCONV,LAN_DIST,LANCONV,LANFACTOR, &106:      &        DISTORTINST,DELTAINST,MOLPROSCALE,COVER,STTSRMSCONV,LAN_DIST,LANCONV,LANFACTOR, &
107:      &        STOCKEXP, JPARAM, MCPATHTEMP, MCPATHDMAX, MCPATHSTEP, MCPATHACCRATIO, BIASFAC, &107:      &        STOCKEXP, JPARAM, MCPATHTEMP, MCPATHDMAX, MCPATHSTEP, MCPATHACCRATIO, BIASFAC, &
108:      &        MCADDDEV, MCPATHQMIN, MCPATHQMAX, RPHQMIN, RPHQMAX, RPHTEMP, TWISTF, TWISTREF, MCPATHADDREF, &108:      &        MCADDDEV, MCPATHQMIN, MCPATHQMAX, RPHQMIN, RPHQMAX, RPHTEMP, TWISTF, TWISTREF, MCPATHADDREF, &
109:      &        MCPATHGWS, MCPATHGWQ, MCPATHNEGLECT, MCPATHTOL, FRAMESDIFF,TMRATIO, INTMINFAC, MLPLAMBDA, COLL_TOL, KLIM, SCA, &109:      &        MCPATHGWS, MCPATHGWQ, MCPATHNEGLECT, MCPATHTOL, FRAMESDIFF,TMRATIO, INTMINFAC, MLPLAMBDA, COLL_TOL, KLIM, SCA, &
110:      &        NEBMAXERISE, GDSQ, FLATEDIFF, QCIADDREPCUT, QCIADDREPEPS, QCIRADSHIFT, INTCONCUT, MLQLAMBDA, FRQCONV, FRQCONV2, &110:      &        NEBMAXERISE, GDSQ, FLATEDIFF, QCIADDREPCUT, QCIADDREPEPS, QCIRADSHIFT, INTCONCUT, MLQLAMBDA, FRQCONV, FRQCONV2
111:      &        TANHFAC, LJADDCUTOFF,LJADDREFNORM 
112: 111: 
113: !     sf344112: !     sf344
114:       DOUBLE PRECISION :: PCUTOFF,PYA11(3),PYA21(3),PYA12(3),PYA22(3),PEPSILON1(3),PSCALEFAC1(2),PSCALEFAC2(2), &113:       DOUBLE PRECISION :: PCUTOFF,PYA11(3),PYA21(3),PYA12(3),PYA22(3),PEPSILON1(3),PSCALEFAC1(2),PSCALEFAC2(2), &
115:      &                     PEPSILONATTR(2),PSIGMAATTR(2), PYOVERLAPTHRESH, LJSITECOORDS(3), LJGSITESIGMA, LJGSITEEPS, &114:      &                     PEPSILONATTR(2),PSIGMAATTR(2), PYOVERLAPTHRESH, LJSITECOORDS(3), LJGSITESIGMA, LJGSITEEPS, &
116:      &                     PYLOCALSTEP(2),PYCFTHRESH,PYGRAVITYC1,PYGRAVITYC2,PERCCUT115:      &                     PYLOCALSTEP(2),PYCFTHRESH,PYGRAVITYC1,PYGRAVITYC2,PERCCUT
117:  116:  
118:       DOUBLE PRECISION, ALLOCATABLE :: PYADDEPS(:,:)117:       DOUBLE PRECISION, ALLOCATABLE :: PYADDEPS(:,:)
119:       LOGICAL, ALLOCATABLE :: uniaxarray(:)118:       LOGICAL, ALLOCATABLE :: uniaxarray(:)
120:       DOUBLE PRECISION, ALLOCATABLE :: PYADDREP(:,:), PYADDATT(:,:)119:       DOUBLE PRECISION, ALLOCATABLE :: PYADDREP(:,:), PYADDATT(:,:)
121:       DOUBLE PRECISION, ALLOCATABLE :: POINTSDECA(:), POINTSICOS(:)120:       DOUBLE PRECISION, ALLOCATABLE :: POINTSDECA(:), POINTSICOS(:)
164:       DOUBLE PRECISION, ALLOCATABLE :: EPSALPHA(:), DISTREF(:)163:       DOUBLE PRECISION, ALLOCATABLE :: EPSALPHA(:), DISTREF(:)
165:       DOUBLE PRECISION, ALLOCATABLE :: CPDISTREF(:)164:       DOUBLE PRECISION, ALLOCATABLE :: CPDISTREF(:)
166:       DOUBLE PRECISION, ALLOCATABLE :: MIN1REDO(:), MIN2REDO(:)165:       DOUBLE PRECISION, ALLOCATABLE :: MIN1REDO(:), MIN2REDO(:)
167:       DOUBLE PRECISION, ALLOCATABLE :: CONDISTREF(:), CONDISTREFLOCAL(:), CONDISTREFON(:), CONDISTREFLOCALON(:)166:       DOUBLE PRECISION, ALLOCATABLE :: CONDISTREF(:), CONDISTREFLOCAL(:), CONDISTREFON(:), CONDISTREFLOCALON(:)
168:       DOUBLE PRECISION, ALLOCATABLE :: CONCUT(:), CONCUTLOCAL(:)167:       DOUBLE PRECISION, ALLOCATABLE :: CONCUT(:), CONCUTLOCAL(:)
169:       DOUBLE PRECISION, ALLOCATABLE :: CONDISTREFFIX(:), CONCUTFIX(:)168:       DOUBLE PRECISION, ALLOCATABLE :: CONDISTREFFIX(:), CONCUTFIX(:)
170:       DOUBLE PRECISION, ALLOCATABLE :: CPCONDISTREF(:)169:       DOUBLE PRECISION, ALLOCATABLE :: CPCONDISTREF(:)
171:       DOUBLE PRECISION, ALLOCATABLE :: INTNEBIMAGES(:)170:       DOUBLE PRECISION, ALLOCATABLE :: INTNEBIMAGES(:)
172:       DOUBLE PRECISION, ALLOCATABLE :: CONGEOM(:,:)171:       DOUBLE PRECISION, ALLOCATABLE :: CONGEOM(:,:)
173:       DOUBLE PRECISION, ALLOCATABLE :: LJADDEPS(:,:)172:       DOUBLE PRECISION, ALLOCATABLE :: LJADDEPS(:,:)
174:       DOUBLE PRECISION, ALLOCATABLE :: LJADDREP(:,:), LJADDATT(:,:) 
175:       LOGICAL, ALLOCATABLE :: CONACTIVE(:)173:       LOGICAL, ALLOCATABLE :: CONACTIVE(:)
176:       LOGICAL, ALLOCATABLE :: ATOMACTIVE(:)174:       LOGICAL, ALLOCATABLE :: ATOMACTIVE(:)
177:       INTEGER, ALLOCATABLE :: NITSTART(:)175:       INTEGER, ALLOCATABLE :: NITSTART(:)
178:       DOUBLE PRECISION, ALLOCATABLE :: RPMASSES(:), XMINA(:), XMINB(:)176:       DOUBLE PRECISION, ALLOCATABLE :: RPMASSES(:), XMINA(:), XMINB(:)
179:       DOUBLE PRECISION, ALLOCATABLE :: RBOPS(:,:)177:       DOUBLE PRECISION, ALLOCATABLE :: RBOPS(:,:)
180:       DOUBLE PRECISION, ALLOCATABLE :: SAVES(:), SAVEF(:)178:       DOUBLE PRECISION, ALLOCATABLE :: SAVES(:), SAVEF(:)
181: !     LOGICAL, ALLOCATABLE :: CONTEST(:,:)179: !     LOGICAL, ALLOCATABLE :: CONTEST(:,:)
182:       INTEGER, ALLOCATABLE :: ORDERI(:), ORDERJ(:), REPPOW(:)180:       INTEGER, ALLOCATABLE :: ORDERI(:), ORDERJ(:), REPPOW(:)
183:       INTEGER, ALLOCATABLE :: CONI(:), CONJ(:), CONION(:), CONJON(:)181:       INTEGER, ALLOCATABLE :: CONI(:), CONJ(:), CONION(:), CONJON(:)
184:       INTEGER, ALLOCATABLE :: CONIFIX(:), CONJFIX(:), REPIFIX(:), REPJFIX(:)182:       INTEGER, ALLOCATABLE :: CONIFIX(:), CONJFIX(:), REPIFIX(:), REPJFIX(:)
318:       DOUBLE PRECISION, ALLOCATABLE ::  QCIXYZ(:)316:       DOUBLE PRECISION, ALLOCATABLE ::  QCIXYZ(:)
319: ! AMBER 12 variables317: ! AMBER 12 variables
320:       LOGICAL :: AMBER12T318:       LOGICAL :: AMBER12T
321:       LOGICAL :: CHIRALENDPOINTS319:       LOGICAL :: CHIRALENDPOINTS
322:       INTEGER, DIMENSION(:,:), ALLOCATABLE :: BONDS320:       INTEGER, DIMENSION(:,:), ALLOCATABLE :: BONDS
323: 321: 
324:       DOUBLE PRECISION, ALLOCATABLE ::  MLPDAT(:,:)322:       DOUBLE PRECISION, ALLOCATABLE ::  MLPDAT(:,:)
325:       INTEGER, ALLOCATABLE ::  MLPOUTCOME(:)323:       INTEGER, ALLOCATABLE ::  MLPOUTCOME(:)
326:       DOUBLE PRECISION, ALLOCATABLE ::  MLQDAT(:,:)324:       DOUBLE PRECISION, ALLOCATABLE ::  MLQDAT(:,:)
327:       INTEGER, ALLOCATABLE ::  MLQOUTCOME(:)325:       INTEGER, ALLOCATABLE ::  MLQOUTCOME(:)
328:       INTEGER, ALLOCATABLE ::  LJADDNN(:,:) 
329: 326: 
330: ! OPEP variables327: ! OPEP variables
331:       LOGICAL :: OPEPT, OPEP_RNAT328:       LOGICAL :: OPEPT, OPEP_RNAT
332: 329: 
333: 330: 
334: END MODULE KEY331: END MODULE KEY


r31966/keywords.f 2017-02-23 17:30:14.511713373 +0000 r31965/keywords.f 2017-02-23 17:30:15.631728129 +0000
730:          MIEF_PBCT=.FALSE.730:          MIEF_PBCT=.FALSE.
731:          MIEF_CUTT=.FALSE.731:          MIEF_CUTT=.FALSE.
732:          MIEF_BOX(1:3) = 1.0D9732:          MIEF_BOX(1:3) = 1.0D9
733:          MIEF_RCUT= 1.0D9733:          MIEF_RCUT= 1.0D9
734:          !734:          !
735:          ! UNDOCUMENTED keywords/parameters735:          ! UNDOCUMENTED keywords/parameters
736:          ! 736:          ! 
737:          TWISTT=.FALSE.737:          TWISTT=.FALSE.
738:          LJADDT=.FALSE.738:          LJADDT=.FALSE.
739:          LJADD2T=.FALSE.739:          LJADD2T=.FALSE.
740:          LJADD3T=.FALSE. 
741:          LJADD4T=.FALSE. 
742:          PYADDT=.FALSE.740:          PYADDT=.FALSE.
743:          PYADD2T=.FALSE.741:          PYADD2T=.FALSE.
744:          INVERTPT=.FALSE.742:          INVERTPT=.FALSE.
745:          DNEBEFRAC=0.0D0743:          DNEBEFRAC=0.0D0
746:          MORPHT=.FALSE.744:          MORPHT=.FALSE.
747:          GREATCIRCLET=.FALSE.745:          GREATCIRCLET=.FALSE.
748:          MAXTSENERGY=1.0D100746:          MAXTSENERGY=1.0D100
749:          MAXBARRIER=1.0D100747:          MAXBARRIER=1.0D100
750:          MAXMAXBARRIER=1.0D100748:          MAXMAXBARRIER=1.0D100
751:          ReoptimiseEndpoints=.False.749:          ReoptimiseEndpoints=.False.
3723:             LUNIT=GETUNIT()3721:             LUNIT=GETUNIT()
3724:             OPEN(LUNIT,FILE='epsilon',STATUS='OLD')3722:             OPEN(LUNIT,FILE='epsilon',STATUS='OLD')
3725:             IF (.NOT.ALLOCATED(LJADDEPS)) ALLOCATE(LJADDEPS(NADDTARGET,NADDTARGET))3723:             IF (.NOT.ALLOCATED(LJADDEPS)) ALLOCATE(LJADDEPS(NADDTARGET,NADDTARGET))
3726:             DO J1=1,NADDTARGET3724:             DO J1=1,NADDTARGET
3727:                DO J2=1,NADDTARGET3725:                DO J2=1,NADDTARGET
3728:                   READ(LUNIT,*) LJADDEPS(J2,J1)3726:                   READ(LUNIT,*) LJADDEPS(J2,J1)
3729:                   WRITE(*,'(2I6,G20.10)') J1,J2,LJADDEPS(J2,J1)3727:                   WRITE(*,'(2I6,G20.10)') J1,J2,LJADDEPS(J2,J1)
3730:                ENDDO3728:                ENDDO
3731:             ENDDO3729:             ENDDO
3732:             CLOSE(LUNIT)3730:             CLOSE(LUNIT)
3733:          ELSE IF (WORD.EQ.'LJADD3') THEN 
3734:             LJADDT=.TRUE. 
3735:             LJADD3T=.TRUE. 
3736:             CALL READI(NADDTARGET) 
3737:             WRITE(*,'(A,I6)') 'keyword> Target cluster size is ',NADDTARGET 
3738:             IF (MOD(NATOMS,NADDTARGET).NE.0) THEN 
3739:                WRITE(*,'(A,I6)') 'keyword> ERROR, target cluster size is not a factor of the number of the atoms ',NATOMS 
3740:                STOP 
3741:             ENDIF 
3742:             LUNIT=GETUNIT() 
3743:             OPEN(LUNIT,FILE='epsilon',STATUS='OLD') 
3744:             IF (.NOT.ALLOCATED(LJADDREP)) ALLOCATE(LJADDREP(NADDTARGET,NADDTARGET)) 
3745:             IF (.NOT.ALLOCATED(LJADDATT)) ALLOCATE(LJADDATT(NADDTARGET,NADDTARGET)) 
3746:             DO J1=1,NADDTARGET 
3747:                DO J2=1,NADDTARGET 
3748:                   READ(LUNIT,*) LJADDREP(J2,J1), LJADDATT(J2,J1) 
3749:                   WRITE(*,'(2I6,2G20.10)') J1,J2,LJADDREP(J2,J1),LJADDATT(J2,J1) 
3750:                ENDDO 
3751:             ENDDO 
3752:             CLOSE(LUNIT) 
3753:          ELSE IF (WORD.EQ.'LJADD4') THEN 
3754:             LJADDT=.TRUE. 
3755:             LJADD4T=.TRUE. 
3756:             CALL READI(NADDTARGET) 
3757:             WRITE(*,'(A,I6)') 'keyword> Target cluster size is ',NADDTARGET 
3758:             IF (MOD(NATOMS,NADDTARGET).NE.0) THEN 
3759:                WRITE(*,'(A,I6)') 'keyword> ERROR, target cluster size is not a factor of the number of the atoms ',NATOMS 
3760:                STOP 
3761:             ENDIF 
3762:             LUNIT=GETUNIT() 
3763:             OPEN(LUNIT,FILE='epsilon',STATUS='OLD') 
3764:             IF (.NOT.ALLOCATED(LJADDREP)) ALLOCATE(LJADDREP(NADDTARGET,NADDTARGET)) 
3765:             IF (.NOT.ALLOCATED(LJADDATT)) ALLOCATE(LJADDATT(NADDTARGET,NADDTARGET)) 
3766:             DO J1=1,NADDTARGET 
3767:                DO J2=1,NADDTARGET 
3768:                   READ(LUNIT,*) LJADDREP(J2,J1), LJADDATT(J2,J1) 
3769:                   WRITE(*,'(2I6,2G20.10)') J1,J2,LJADDREP(J2,J1),LJADDATT(J2,J1) 
3770:                ENDDO 
3771:             ENDDO 
3772:             READ(LUNIT,*) NUMNN, TANHFAC, LJADDCUTOFF 
3773:             IF (.NOT.ALLOCATED(LJADDNN)) ALLOCATE(LJADDNN(NUMNN,2)) 
3774:             DO J2=1,NUMNN 
3775:                READ(LUNIT,*) LJADDNN(J2,1), LJADDNN(J2,2) 
3776:                WRITE(*,'(2I6)') LJADDNN(J2,1), LJADDNN(J2,2) 
3777:             ENDDO 
3778:             READ(LUNIT,*) LJADDREFNORM 
3779:             WRITE(*,'(A,I6,3G20.10)')  
3780:      &           'keyword> Number of nearest neighbours in target structures, factor for step function, cutoff, norm=', 
3781:      &                                NUMNN,TANHFAC,LJADDCUTOFF,LJADDREFNORM 
3782:             CLOSE(LUNIT) 
3783: !3731: !
3784: ! Keyword for adding a general LJ site to PY ellipsoids3732: ! Keyword for adding a general LJ site to PY ellipsoids
3785: ! Coded by swo24 in July 20113733: ! Coded by swo24 in July 2011
3786: ! Keyword: LJGSITE ("LJ general site"), used in MULTISITEPY2 in multisitepy.f903734: ! Keyword: LJGSITE ("LJ general site"), used in MULTISITEPY2 in multisitepy.f90
3787: ! Syntax: LJGSITE sigma_0 epsilon3735: ! Syntax: LJGSITE sigma_0 epsilon
3788: ! Also requires: ljsites.xyz file as described in multisitepy.f903736: ! Also requires: ljsites.xyz file as described in multisitepy.f90
3789:          ELSE IF (WORD.EQ.'LJGSITE') THEN3737:          ELSE IF (WORD.EQ.'LJGSITE') THEN
3790: ! Turn on logical indicating that there is an LJ general site3738: ! Turn on logical indicating that there is an LJ general site
3791:             LJGSITET=.TRUE.3739:             LJGSITET=.TRUE.
3792: 3740: 


r31966/ljadd.f 2017-02-23 17:30:14.727716219 +0000 r31965/ljadd.f 2017-02-23 17:30:15.851731027 +0000
444: C  Symmetrise Hessian444: C  Symmetrise Hessian
445: C445: C
446:       DO J1=1,3*N446:       DO J1=1,3*N
447:          DO J2=J1+1,3*N447:          DO J2=J1+1,3*N
448:             HESS(J1,J2)=HESS(J2,J1)448:             HESS(J1,J2)=HESS(J2,J1)
449:          ENDDO449:          ENDDO
450:       ENDDO450:       ENDDO
451:       RETURN451:       RETURN
452:       END452:       END
453: 453: 
454: C 
455: C************************************************************************* 
456: C 
457: C  Subroutine LJADD3 calculates the cartesian gradient and second 
458: C  derivative matrix analytically for LJ with addressable epsilon values. Reduced units. 
459: C  This routine treats multiple copies of a target of cluster size NADDTARGET. 
460: C  The epsilon values are replicated via the MOD function. 
461: C  In LJADD3 we have separate scaling for repulsion and attraction. 
462: C 
463: C************************************************************************* 
464: C 
465:       SUBROUTINE LJADD3(N, X, V, ENERGY, GTEST, STEST) 
466:       USE KEY, ONLY : LJADDREP, LJADDATT, NADDTARGET, MYUNIT 
467:       IMPLICIT NONE 
468:       INTEGER N, J1, J2, J3, J4, MJ1, MJ2 
469:       LOGICAL GTEST, STEST 
470:       DOUBLE PRECISION X(3*N), ENERGY, R6, 
471:      1                 V(3*N), R2(N,N), R2T, 
472:      2                 R8(N,N), G(N,N), XG(N,N), 
473:      3                 R14(N,N), F(N,N), DUMMY, DUMMYX, DUMMYY, DUMMYZ, DIST, XMUL2 
474: C  
475: C  Store distance matrices. 
476: C 
477: !     WRITE(MYUNIT,'(A)') 'coords in LJADD3:' 
478: !     WRITE(MYUNIT,'(3G20.10)') X(1:3*N) 
479:       ENERGY=0.0D0 
480:       IF (GTEST.AND.(.NOT.STEST)) THEN 
481:          DO J1=1,N 
482:             MJ1=MOD(J1-1,NADDTARGET)+1 
483:             J3=3*J1 
484:             XG(J1,J1)=0.0D0 
485:             DO J2=J1+1,N 
486:                MJ2=MOD(J2-1,NADDTARGET)+1 
487:                J4=3*J2 
488:                DIST=(X(J3-2)-X(J4-2))**2+(X(J3-1)-X(J4-1))**2+(X(J3)-X(J4))**2 
489:                DIST=1.0D0/DIST 
490:                R6=DIST**3 
491:                DUMMY=R6*(R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATT(MJ2,MJ1)) 
492:                ENERGY=ENERGY+DUMMY 
493:                DIST=DIST*R6 
494:                XG(J2,J1)=-24.0D0*(2.0D0*R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATT(MJ2,MJ1))*DIST 
495:                XG(J1,J2)=XG(J2,J1) 
496:             ENDDO 
497:          ENDDO 
498:       ELSEIF (GTEST) THEN 
499:          DO J1=1,N 
500:             MJ1=MOD(J1-1,NADDTARGET)+1 
501:             XG(J1,J1)=0.0D0 
502:             R2(J1,J1)=0.0D0 
503:             R8(J1,J1)=0.0D0 
504:             R14(J1,J1)=0.0D0 
505:             DO J2=J1+1,N 
506:                MJ2=MOD(J2-1,NADDTARGET)+1 
507:                R2(J2,J1)=(X(3*(J1-1)+1)-X(3*(J2-1)+1))**2 
508:      1                  +(X(3*(J1-1)+2)-X(3*(J2-1)+2))**2 
509:      2                  +(X(3*(J1-1)+3)-X(3*(J2-1)+3))**2 
510:                R2(J2,J1)=1.0D0/R2(J2,J1) 
511:                R6=R2(J2,J1)**3 
512:                DUMMY=R6*(R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATT(MJ2,MJ1)) 
513:                ENERGY=ENERGY+DUMMY 
514:                R8(J2,J1)=R2(J2,J1)**4 
515:                R14(J2,J1)=R8(J2,J1)*R8(J2,J1)/R2(J2,J1) 
516:                R2(J1,J2)=R2(J2,J1) 
517:                XG(J2,J1)=-24.0D0*(2.0D0*R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATT(MJ2,MJ1))*R2(J1,J2)*R6 
518:                XG(J1,J2)=XG(J2,J1) 
519:             ENDDO 
520:          ENDDO  
521:       ELSE 
522:          DO J1=1,N 
523:             MJ1=MOD(J1-1,NADDTARGET)+1 
524:             J3=3*(J1-1) 
525:             DO J2=J1+1,N 
526:                MJ2=MOD(J2-1,NADDTARGET)+1 
527:                J4=3*(J2-1) 
528:                R2T=(X(J3+1)-X(J4+1))**2+(X(J3+2)-X(J4+2))**2+(X(J3+3)-X(J4+3))**2 
529:                R2T=1.0D0/R2T 
530:                R6=R2T**3 
531:                ENERGY=ENERGY+R6*(R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATT(MJ2,MJ1)) 
532:             ENDDO 
533:          ENDDO 
534:  
535:       ENDIF 
536:       ENERGY=4.0D0*ENERGY 
537:  
538:       IF (.NOT.GTEST) RETURN 
539:       DO J1=1,N 
540:          J3=3*J1 
541:          DUMMYX=0.0D0 
542:          DUMMYY=0.0D0 
543:          DUMMYZ=0.0D0 
544:          DO J4=1,N 
545:             J2=3*J4 
546:             XMUL2=XG(J4,J1) 
547:             DUMMYX=DUMMYX+XMUL2*(X(J3-2)-X(J2-2)) 
548:             DUMMYY=DUMMYY+XMUL2*(X(J3-1)-X(J2-1)) 
549:             DUMMYZ=DUMMYZ+XMUL2*(X(J3)  -X(J2)) 
550:          ENDDO 
551:          V(J3-2)=DUMMYX 
552:          V(J3-1)=DUMMYY 
553:          V(J3)=DUMMYZ 
554:       ENDDO 
555:  
556:       IF (.NOT.STEST) RETURN 
557:       CALL LJADDS3(G,F,R2,R14,R8,X,N) 
558:  
559:       RETURN 
560:       END 
561:  
562: C 
563: C************************************************************************* 
564: C 
565: C  Subroutine LJADD4 calculates the cartesian gradient and second 
566: C  derivative matrix analytically for LJ with addressable epsilon values. Reduced units. 
567: C  This routine treats multiple copies of a target of cluster size NADDTARGET. 
568: C  The epsilon values are replicated via the MOD function. 
569: C  In LJADD4 we have separate scaling for repulsion and attraction. 
570: C  The nearest-neighbour attractive term is scaled in LJADD4 by a cooperative term. 
571: C 
572: C************************************************************************* 
573: C 
574:       SUBROUTINE LJADD4(N, X, V, ENERGY, GTEST, STEST) 
575:       USE KEY, ONLY : LJADDREP, LJADDATT, NADDTARGET, MYUNIT, NUMNN, TANHFAC, LJADDCUTOFF, LJADDNN, LJADDREFNORM 
576:       IMPLICIT NONE 
577:       INTEGER N, J1, J2, J3, J4, MJ1, MJ2, MJ3, NCOPIES, K1, K2 
578:       LOGICAL GTEST, STEST 
579:       DOUBLE PRECISION X(3*N), ENERGY, R6, 
580:      1                 V(3*N), R2(N,N), R2T, 
581:      2                 R8(N,N), G(N,N), XG(N,N), 
582:      3                 R14(N,N), F(N,N), DUMMY, DUMMYX, DUMMYY, DUMMYZ, DIST, XMUL2, 
583:      &                 LJADDATTLOCAL(NADDTARGET,NADDTARGET), DUMMY2, DUMMYEPS 
584:       DOUBLE PRECISION GEXTRA(3*N) 
585:  
586:       NCOPIES=N/NADDTARGET 
587:       DUMMYEPS=0.0D0 
588:       GEXTRA(1:3*N)=0.0D0 
589:       DO J1=1,NUMNN 
590:          DO J2=1,NCOPIES 
591:             MJ2=LJADDNN(J1,1)+(J2-1)*NADDTARGET 
592:             DO J3=1,NCOPIES 
593:                MJ3=LJADDNN(J1,2)+(J3-1)*NADDTARGET 
594:                DIST=SQRT((X(3*(MJ2-1)+1)-X(3*(MJ3-1)+1))**2 +  
595:      &                   (X(3*(MJ2-1)+2)-X(3*(MJ3-1)+2))**2 + 
596:      &                   (X(3*(MJ2-1)+3)-X(3*(MJ3-1)+3))**2) 
597:                DUMMYEPS=DUMMYEPS+TANH(TANHFAC*(LJADDCUTOFF-DIST))+1.0D0 
598:                DUMMY2=(1.0D0/COSH(TANHFAC*(LJADDCUTOFF-DIST))**2)/DIST 
599:                GEXTRA(3*(MJ2-1)+1)=GEXTRA(3*(MJ2-1)+1)-DUMMY2*(X(3*(MJ2-1)+1)-X(3*(MJ3-1)+1)) 
600:                GEXTRA(3*(MJ2-1)+2)=GEXTRA(3*(MJ2-1)+2)-DUMMY2*(X(3*(MJ2-1)+2)-X(3*(MJ3-1)+2)) 
601:                GEXTRA(3*(MJ2-1)+3)=GEXTRA(3*(MJ2-1)+3)-DUMMY2*(X(3*(MJ2-1)+3)-X(3*(MJ3-1)+3)) 
602:                GEXTRA(3*(MJ3-1)+1)=GEXTRA(3*(MJ3-1)+1)-DUMMY2*(X(3*(MJ3-1)+1)-X(3*(MJ2-1)+1)) 
603:                GEXTRA(3*(MJ3-1)+2)=GEXTRA(3*(MJ3-1)+2)-DUMMY2*(X(3*(MJ3-1)+2)-X(3*(MJ2-1)+2)) 
604:                GEXTRA(3*(MJ3-1)+3)=GEXTRA(3*(MJ3-1)+3)-DUMMY2*(X(3*(MJ3-1)+3)-X(3*(MJ2-1)+3)) 
605:             ENDDO 
606:          ENDDO 
607:       ENDDO 
608:         
609:       DUMMYEPS=DUMMYEPS/(2.0D0*NCOPIES*LJADDREFNORM) 
610:       GEXTRA(1:3*N)=GEXTRA(1:3*N)*TANHFAC/(2.0D0*NCOPIES*LJADDREFNORM) 
611: !     PRINT '(A,G20.10)','eps att NN scale factor=',DUMMYEPS 
612:       LJADDATTLOCAL(1:NADDTARGET,1:NADDTARGET)=LJADDATT(1:NADDTARGET,1:NADDTARGET) 
613: !!!! debug 
614: !     DUMMYEPS=1.0D0 
615: !     GEXTRA(1:3*N)=0.0D0 
616: !!!! debug 
617:       DUMMY2=0.0D0 
618:       DO J1=1,NUMNN 
619:          K1=LJADDNN(J1,1) 
620:          K2=LJADDNN(J1,2) 
621:          DO J2=1,NCOPIES 
622:             MJ2=K1+(J2-1)*NADDTARGET 
623:             DO J3=1,NCOPIES 
624:                MJ3=K2+(J3-1)*NADDTARGET 
625:                LJADDATTLOCAL(K1,K2)=LJADDATT(K1,K2)*DUMMYEPS 
626:                LJADDATTLOCAL(K2,K1)=LJADDATT(K2,K1)*DUMMYEPS 
627:                DIST=(X(3*(MJ2-1)+1)-X(3*(MJ3-1)+1))**2 +  
628:      &              (X(3*(MJ2-1)+2)-X(3*(MJ3-1)+2))**2 + 
629:      &              (X(3*(MJ2-1)+3)-X(3*(MJ3-1)+3))**2 
630:                DIST=DIST**3 
631: ! 
632: ! We are assuming a constant NN att factor here, indepdendent of particle ids. 
633: ! 
634:                DUMMY2=DUMMY2-4.0D0*LJADDATT(K1,K2)/DIST 
635:             ENDDO 
636:          ENDDO 
637:       ENDDO 
638:       GEXTRA(1:3*N)=GEXTRA(1:3*N)*DUMMY2 
639:       ENERGY=0.0D0 
640:       IF (GTEST.AND.(.NOT.STEST)) THEN 
641:          DO J1=1,N 
642:             MJ1=MOD(J1-1,NADDTARGET)+1 
643:             J3=3*J1 
644:             XG(J1,J1)=0.0D0 
645:             DO J2=J1+1,N 
646:                MJ2=MOD(J2-1,NADDTARGET)+1 
647:                J4=3*J2 
648:                DIST=(X(J3-2)-X(J4-2))**2+(X(J3-1)-X(J4-1))**2+(X(J3)-X(J4))**2 
649:                DIST=1.0D0/DIST 
650:                R6=DIST**3 
651:                DUMMY=R6*(R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATTLOCAL(MJ2,MJ1)) 
652:                ENERGY=ENERGY+DUMMY 
653:                DIST=DIST*R6 
654:                XG(J2,J1)=-24.0D0*(2.0D0*R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATTLOCAL(MJ2,MJ1))*DIST 
655:                XG(J1,J2)=XG(J2,J1) 
656:             ENDDO 
657:          ENDDO 
658:       ELSEIF (GTEST) THEN 
659:          DO J1=1,N 
660:             MJ1=MOD(J1-1,NADDTARGET)+1 
661:             XG(J1,J1)=0.0D0 
662:             R2(J1,J1)=0.0D0 
663:             R8(J1,J1)=0.0D0 
664:             R14(J1,J1)=0.0D0 
665:             DO J2=J1+1,N 
666:                MJ2=MOD(J2-1,NADDTARGET)+1 
667:                R2(J2,J1)=(X(3*(J1-1)+1)-X(3*(J2-1)+1))**2 
668:      1                  +(X(3*(J1-1)+2)-X(3*(J2-1)+2))**2 
669:      2                  +(X(3*(J1-1)+3)-X(3*(J2-1)+3))**2 
670:                R2(J2,J1)=1.0D0/R2(J2,J1) 
671:                R6=R2(J2,J1)**3 
672:                DUMMY=R6*(R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATTLOCAL(MJ2,MJ1)) 
673:                ENERGY=ENERGY+DUMMY 
674:                R8(J2,J1)=R2(J2,J1)**4 
675:                R14(J2,J1)=R8(J2,J1)*R8(J2,J1)/R2(J2,J1) 
676:                R2(J1,J2)=R2(J2,J1) 
677:                XG(J2,J1)=-24.0D0*(2.0D0*R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATTLOCAL(MJ2,MJ1))*R2(J1,J2)*R6 
678:                XG(J1,J2)=XG(J2,J1) 
679:             ENDDO 
680:          ENDDO  
681:       ELSE 
682:          DO J1=1,N 
683:             MJ1=MOD(J1-1,NADDTARGET)+1 
684:             J3=3*(J1-1) 
685:             DO J2=J1+1,N 
686:                MJ2=MOD(J2-1,NADDTARGET)+1 
687:                J4=3*(J2-1) 
688:                R2T=(X(J3+1)-X(J4+1))**2+(X(J3+2)-X(J4+2))**2+(X(J3+3)-X(J4+3))**2 
689:                R2T=1.0D0/R2T 
690:                R6=R2T**3 
691:                ENERGY=ENERGY+R6*(R6*LJADDREP(MJ2,MJ1)-1.0D0*LJADDATTLOCAL(MJ2,MJ1)) 
692:             ENDDO 
693:          ENDDO 
694:  
695:       ENDIF 
696:       ENERGY=4.0D0*ENERGY 
697:  
698:       IF (.NOT.GTEST) RETURN 
699:       DO J1=1,N 
700:          J3=3*J1 
701:          DUMMYX=0.0D0 
702:          DUMMYY=0.0D0 
703:          DUMMYZ=0.0D0 
704:          DO J4=1,N 
705:             J2=3*J4 
706:             XMUL2=XG(J4,J1) 
707:             DUMMYX=DUMMYX+XMUL2*(X(J3-2)-X(J2-2)) 
708:             DUMMYY=DUMMYY+XMUL2*(X(J3-1)-X(J2-1)) 
709:             DUMMYZ=DUMMYZ+XMUL2*(X(J3)  -X(J2)) 
710:          ENDDO 
711:          V(J3-2)=DUMMYX+GEXTRA(J3-2) 
712:          V(J3-1)=DUMMYY+GEXTRA(J3-1) 
713:          V(J3)=DUMMYZ+GEXTRA(J3) 
714:       ENDDO 
715:  
716:       IF (.NOT.STEST) RETURN 
717:       CALL LJADDS4(G,F,R2,R14,R8,X,N,LJADDATTLOCAL) 
718:  
719:       RETURN 
720:       END 
721: C***************************************************************************** 
722:  
723:       SUBROUTINE LJADDS4(G,F,R2,R14,R8,X,N,LJADDATTLOCAL) 
724:       USE MODHESS 
725:       USE KEY, ONLY : LJADDREP, LJADDATT, NADDTARGET 
726:       IMPLICIT NONE 
727:       INTEGER N, J1, J2, J3, J4, J5, J6, MJ1, MJ2 
728:       DOUBLE PRECISION G(N,N), R14(N,N), R8(N,N), 
729:      1                 R2(N,N), F(N,N), LJADDATTLOCAL(N,N), 
730:      2                 X(3*N),DUMMY 
731:  
732: C 
733: C  Calculate the g tensor. 
734: C 
735:       DO J1=1,N 
736:          MJ1=MOD(J1-1,NADDTARGET)+1 
737:          G(J1,J1)=0.0D0 
738:          DO J2=J1+1,N 
739:             MJ2=MOD(J2-1,NADDTARGET)+1 
740:                G(J2,J1)=-24.0D0*(2.0D0*R14(J2,J1)*LJADDREP(J2,J1)-R8(J2,J1)*LJADDATTLOCAL(J2,J1)) 
741:             G(J1,J2)=G(J2,J1) 
742:          ENDDO 
743:       ENDDO 
744:  
745:       DO J1=1,N 
746:          MJ1=MOD(J1-1,NADDTARGET)+1 
747:          F(J1,J1)=0.0D0 
748:          DO J2=J1+1,N  
749:             MJ2=MOD(J2-1,NADDTARGET)+1 
750:             F(J2,J1)=LJADDREP(MJ2,MJ1)*672.0D0*R14(J2,J1)-LJADDATTLOCAL(MJ2,MJ1)*192.0D0*R8(J2,J1) 
751:             F(J1,J2)=F(J2,J1) 
752:          ENDDO 
753:       ENDDO 
754: C 
755: C  Now do the hessian. First are the entirely diagonal terms. 
756: C 
757:       DO J1=1,N 
758:          DO J2=1,3 
759:             J3=3*(J1-1)+J2 
760:             DUMMY=0.0D0 
761:             DO J4=1,N 
762:                DUMMY=DUMMY+F(J4,J1)*R2(J4,J1)* 
763:      1                 (X(J3)-X(3*(J4-1)+J2))**2 + G(J4,J1)    
764:             ENDDO 
765:             HESS(J3,J3)=DUMMY 
766:          ENDDO 
767:       ENDDO 
768: C 
769: C  Next are the terms where x_i and x_j are on the same atom 
770: C  but are different, e.g. y and z. 
771: C 
772:       DO J1=1,N 
773:          DO J2=1,3 
774:             J3=3*(J1-1)+J2 
775:             DO J4=J2+1,3 
776:                DUMMY=0.0D0 
777:                DO J5=1,N 
778:                   DUMMY=DUMMY + F(J5,J1)*R2(J5,J1)*  
779:      1           (X(J3)-X(3*(J5-1)+J2))*(X(3*(J1-1)+J4)-X(3*(J5-1)+J4))  
780:                ENDDO 
781:                HESS(3*(J1-1)+J4,J3)=DUMMY 
782:             ENDDO 
783:          ENDDO 
784:       ENDDO 
785: C 
786: C  Case III, different atoms, same cartesian coordinate. 
787: C 
788:       DO J1=1,N 
789:          DO J2=1,3 
790:             J3=3*(J1-1)+J2 
791:             DO J4=J1+1,N 
792:                HESS(3*(J4-1)+J2,J3)=-F(J4,J1)*R2(J4,J1)* 
793:      1                           (X(J3)-X(3*(J4-1)+J2))**2-G(J4,J1)  
794:             ENDDO 
795:          ENDDO 
796:       ENDDO 
797: C 
798: C  Case IV: different atoms and different cartesian coordinates. 
799: C 
800:       DO J1=1,N 
801:          DO J2=1,3 
802:             J3=3*(J1-1)+J2 
803:             DO J4=J1+1,N 
804:                DO J5=1,J2-1 
805:                   J6=3*(J4-1)+J5 
806:                   HESS(J6,J3)=-F(J4,J1)*R2(J4,J1) 
807:      1                    *(X(J3)-X(3*(J4-1)+J2)) 
808:      2                    *(X(3*(J1-1)+J5)-X(J6)) 
809:                   HESS(3*(J4-1)+J2,3*(J1-1)+J5)=HESS(J6,J3) 
810:                ENDDO 
811:             ENDDO 
812:          ENDDO 
813:       ENDDO 
814: C 
815: C  Symmetrise Hessian 
816: C 
817:       DO J1=1,3*N 
818:          DO J2=J1+1,3*N 
819:             HESS(J1,J2)=HESS(J2,J1) 
820:          ENDDO 
821:       ENDDO 
822:       RETURN 
823:       END 
824:  
825: C***************************************************************************** 
826:  
827:       SUBROUTINE LJADDS3(G,F,R2,R14,R8,X,N) 
828:       USE MODHESS 
829:       USE KEY, ONLY : LJADDREP, LJADDATT, NADDTARGET 
830:       IMPLICIT NONE 
831:       INTEGER N, J1, J2, J3, J4, J5, J6, MJ1, MJ2 
832:       DOUBLE PRECISION G(N,N), R14(N,N), R8(N,N), 
833:      1                 R2(N,N), F(N,N),  
834:      2                 X(3*N),DUMMY 
835:  
836: C 
837: C  Calculate the g tensor. 
838: C 
839:       DO J1=1,N 
840:          MJ1=MOD(J1-1,NADDTARGET)+1 
841:          G(J1,J1)=0.0D0 
842:          DO J2=J1+1,N 
843:             MJ2=MOD(J2-1,NADDTARGET)+1 
844:                G(J2,J1)=-24.0D0*(2.0D0*R14(J2,J1)*LJADDREP(J2,J1)-R8(J2,J1)*LJADDATT(J2,J1)) 
845:             G(J1,J2)=G(J2,J1) 
846:          ENDDO 
847:       ENDDO 
848:  
849:       DO J1=1,N 
850:          MJ1=MOD(J1-1,NADDTARGET)+1 
851:          F(J1,J1)=0.0D0 
852:          DO J2=J1+1,N  
853:             MJ2=MOD(J2-1,NADDTARGET)+1 
854:             F(J2,J1)=LJADDREP(MJ2,MJ1)*672.0D0*R14(J2,J1)-LJADDATT(MJ2,MJ1)*192.0D0*R8(J2,J1) 
855:             F(J1,J2)=F(J2,J1) 
856:          ENDDO 
857:       ENDDO 
858: C 
859: C  Now do the hessian. First are the entirely diagonal terms. 
860: C 
861:       DO J1=1,N 
862:          DO J2=1,3 
863:             J3=3*(J1-1)+J2 
864:             DUMMY=0.0D0 
865:             DO J4=1,N 
866:                DUMMY=DUMMY+F(J4,J1)*R2(J4,J1)* 
867:      1                 (X(J3)-X(3*(J4-1)+J2))**2 + G(J4,J1)    
868:             ENDDO 
869:             HESS(J3,J3)=DUMMY 
870:          ENDDO 
871:       ENDDO 
872: C 
873: C  Next are the terms where x_i and x_j are on the same atom 
874: C  but are different, e.g. y and z. 
875: C 
876:       DO J1=1,N 
877:          DO J2=1,3 
878:             J3=3*(J1-1)+J2 
879:             DO J4=J2+1,3 
880:                DUMMY=0.0D0 
881:                DO J5=1,N 
882:                   DUMMY=DUMMY + F(J5,J1)*R2(J5,J1)*  
883:      1           (X(J3)-X(3*(J5-1)+J2))*(X(3*(J1-1)+J4)-X(3*(J5-1)+J4))  
884:                ENDDO 
885:                HESS(3*(J1-1)+J4,J3)=DUMMY 
886:             ENDDO 
887:          ENDDO 
888:       ENDDO 
889: C 
890: C  Case III, different atoms, same cartesian coordinate. 
891: C 
892:       DO J1=1,N 
893:          DO J2=1,3 
894:             J3=3*(J1-1)+J2 
895:             DO J4=J1+1,N 
896:                HESS(3*(J4-1)+J2,J3)=-F(J4,J1)*R2(J4,J1)* 
897:      1                           (X(J3)-X(3*(J4-1)+J2))**2-G(J4,J1)  
898:             ENDDO 
899:          ENDDO 
900:       ENDDO 
901: C 
902: C  Case IV: different atoms and different cartesian coordinates. 
903: C 
904:       DO J1=1,N 
905:          DO J2=1,3 
906:             J3=3*(J1-1)+J2 
907:             DO J4=J1+1,N 
908:                DO J5=1,J2-1 
909:                   J6=3*(J4-1)+J5 
910:                   HESS(J6,J3)=-F(J4,J1)*R2(J4,J1) 
911:      1                    *(X(J3)-X(3*(J4-1)+J2)) 
912:      2                    *(X(3*(J1-1)+J5)-X(J6)) 
913:                   HESS(3*(J4-1)+J2,3*(J1-1)+J5)=HESS(J6,J3) 
914:                ENDDO 
915:             ENDDO 
916:          ENDDO 
917:       ENDDO 
918: C 
919: C  Symmetrise Hessian 
920: C 
921:       DO J1=1,3*N 
922:          DO J2=J1+1,3*N 
923:             HESS(J1,J2)=HESS(J2,J1) 
924:          ENDDO 
925:       ENDDO 
926:       RETURN 
927:       END 
928:  
929: 454: 


r31966/potential.f 2017-02-23 17:30:14.951719171 +0000 r31965/potential.f 2017-02-23 17:30:16.079734033 +0000
1012:             IF (PTEST) THEN1012:             IF (PTEST) THEN
1013:                WRITE(*,20) ' potential> Energy for last cycle=',ENERGY1013:                WRITE(*,20) ' potential> Energy for last cycle=',ENERGY
1014:                WRITE(ESTRING,20) ' potential> Energy for last cycle=',ENERGY1014:                WRITE(ESTRING,20) ' potential> Energy for last cycle=',ENERGY
1015:             ENDIF1015:             ENDIF
1016:          ELSE IF (ZSYM(NATOMS).EQ.'DZ') THEN1016:          ELSE IF (ZSYM(NATOMS).EQ.'DZ') THEN
1017:             CALL DZUGUTOV(NATOMS, COORDS, VNEW, ENERGY, GTEST, SSTEST,PARAM1,PARAM2,PARAM3,PARAM4,PARAM5,PARAM6,PARAM7)1017:             CALL DZUGUTOV(NATOMS, COORDS, VNEW, ENERGY, GTEST, SSTEST,PARAM1,PARAM2,PARAM3,PARAM4,PARAM5,PARAM6,PARAM7)
1018:             IF (PTEST) THEN1018:             IF (PTEST) THEN
1019:                WRITE(*,20) ' potential> Energy for last cycle=',ENERGY1019:                WRITE(*,20) ' potential> Energy for last cycle=',ENERGY
1020:                WRITE(ESTRING,20) ' potential> Energy for last cycle=',ENERGY1020:                WRITE(ESTRING,20) ' potential> Energy for last cycle=',ENERGY
1021:             ENDIF1021:             ENDIF
1022:          ELSE IF (LJADD4T) THEN 
1023:             CALL LJADD4(NATOMS, COORDS, VNEW, ENERGY, GTEST, SSTEST) 
1024: !                 DIFF=1.0D-4 
1025: !                 PRINT*,'analytic and numerical gradients:' 
1026: !                 IF (.NOT.(ALLOCATED(HESS))) ALLOCATE(HESS(3*NATOMS,3*NATOMS)) 
1027: !                 CALL LJADD4(NATOMS, COORDS, VNEW, ENERGY, .TRUE., .TRUE.) 
1028: !                 PRINT '(A,I8)','SIZE(HESS)=',SIZE(HESS) 
1029: !                 HESSDUM(1:3*NATOMS,1:3*NATOMS)=HESS(1:3*NATOMS,1:3*NATOMS) 
1030: !                 DO J1=1,3*NATOMS 
1031: !                    COORDS(J1)=COORDS(J1)+DIFF 
1032: !                    CALL LJADD4(NATOMS,COORDS,VPLUS,EPLUS,.FALSE.,.FALSE.) 
1033: !                    COORDS(J1)=COORDS(J1)-2.0D0*DIFF 
1034: !                    CALL LJADD4(NATOMS,COORDS,VMINUS,EMINUS,.FALSE.,.FALSE.) 
1035: !                    COORDS(J1)=COORDS(J1)+DIFF 
1036: !                    IF ((ABS(VNEW(J1)).NE.0.0D0).AND. 
1037: !     &                (ABS(100.0D0*(VNEW(J1)-(EPLUS-EMINUS)/(2.0D0*DIFF))/VNEW(J1)).GT.1.0D0)) THEN 
1038: !                       WRITE(*,'(A,I5,3G20.10,A)') 'anal, num, ratio ',J1,VNEW(J1),(EPLUS-EMINUS)/(2.0D0*DIFF), 
1039: !     &                            VNEW(J1)*2.0D0*DIFF/(EPLUS-EMINUS),'   X' 
1040: !                    ELSE 
1041: !                       WRITE(*,'(A,I5,2F20.10)') 'anal and num ',J1,VNEW(J1),(EPLUS-EMINUS)/(2.0D0*DIFF) 
1042: !                    ENDIF 
1043: !                 ENDDO 
1044: !!                PRINT*,'analytic and numerical second derivatives:' 
1045: !!                DO J1=1,NATOMS 
1046: !!                   COORDS(J1)=COORDS(J1)+DIFF 
1047: !!                   CALL LJADD4(NATOMS,COORDS,VPLUS,EPLUS,.TRUE.,.FALSE.) 
1048: !!                   COORDS(J1)=COORDS(J1)-2.0D0*DIFF 
1049: !!                   CALL LJADD4(NATOMS,COORDS,VMINUS,EMINUS,.TRUE.,.FALSE.) 
1050: !!                   COORDS(J1)=COORDS(J1)+DIFF 
1051: !!                   DO J2=1,NATOMS 
1052: !!                      IF ((ABS(HESS(J1,J2)).NE.0.0D0).AND. 
1053: !!    &                   (ABS(100.0D0*(HESS(J1,J2)-(VPLUS(J2)-VMINUS(J2))/(2.0D0*DIFF))/HESS(J1,J2)).GT.1.0D0)) THEN 
1054: !!                      WRITE(*,'(2I5,2G20.10,A)') J1,J2,HESS(J1,J2),(VPLUS(J2)-VMINUS(J2))/(2.0D0*DIFF),'   X' 
1055: !!                      ELSE 
1056: !!                         WRITE(*,'(2I5,2G20.10,A)') J1,J2,HESS(J1,J2),(VPLUS(J2)-VMINUS(J2))/(2.0D0*DIFF) 
1057: !!                      ENDIF 
1058: !!                   ENDDO 
1059: !!                ENDDO 
1060: !                 STOP 
1061:  
1062:             IF (PTEST) THEN 
1063:                WRITE(*,20) ' potential> Energy for last cycle=',ENERGY 
1064:                WRITE(ESTRING,20) ' potential> Energy for last cycle=',ENERGY 
1065:             ENDIF 
1066:          ELSE IF (LJADD3T) THEN 
1067:             CALL LJADD3(NATOMS, COORDS, VNEW, ENERGY, GTEST, SSTEST) 
1068:             IF (PTEST) THEN 
1069:                WRITE(*,20) ' potential> Energy for last cycle=',ENERGY 
1070:                WRITE(ESTRING,20) ' potential> Energy for last cycle=',ENERGY 
1071:             ENDIF 
1072:          ELSE IF (LJADD2T) THEN1022:          ELSE IF (LJADD2T) THEN
1073:             CALL LJADD2(NATOMS, COORDS, VNEW, ENERGY, GTEST, SSTEST)1023:             CALL LJADD2(NATOMS, COORDS, VNEW, ENERGY, GTEST, SSTEST)
1074: !                DIFF=1.0D-41024: !                DIFF=1.0D-4
1075: !                PRINT*,'analytic and numerical gradients:'1025: !                PRINT*,'analytic and numerical gradients:'
1076: !                IF (.NOT.(ALLOCATED(HESS))) ALLOCATE(HESS(3*NATOMS,3*NATOMS))1026: !                IF (.NOT.(ALLOCATED(HESS))) ALLOCATE(HESS(3*NATOMS,3*NATOMS))
1077: !                CALL LJADD2(NATOMS, COORDS, VNEW, ENERGY, .TRUE., .TRUE.)1027: !                CALL LJADD2(NATOMS, COORDS, VNEW, ENERGY, .TRUE., .TRUE.)
1078: !                PRINT '(A,I8)','SIZE(HESS)=',SIZE(HESS)1028: !                PRINT '(A,I8)','SIZE(HESS)=',SIZE(HESS)
1079: !                HESSDUM(1:3*NATOMS,1:3*NATOMS)=HESS(1:3*NATOMS,1:3*NATOMS)1029: !                HESSDUM(1:3*NATOMS,1:3*NATOMS)=HESS(1:3*NATOMS,1:3*NATOMS)
1080: !                DO J1=1,NATOMS1030: !                DO J1=1,NATOMS
1081: !                   COORDS(J1)=COORDS(J1)+DIFF1031: !                   COORDS(J1)=COORDS(J1)+DIFF


r31966/secdiag.f90 2017-02-23 17:30:15.175722124 +0000 r31965/secdiag.f90 2017-02-23 17:30:16.307737038 +0000
 55:                        RMS,GRAD2(3*NATOMS), VECL, ZETA, PROJ 55:                        RMS,GRAD2(3*NATOMS), VECL, ZETA, PROJ
 56:       double precision diag4 ! the curvature computed with the first order forward finite differences method 56:       double precision diag4 ! the curvature computed with the first order forward finite differences method
 57:  57: 
 58:       DIAG2 = 0.0D0 58:       DIAG2 = 0.0D0
 59:       DIAG3 = 0.0D0 59:       DIAG3 = 0.0D0
 60: !      EPLUS = 0.0D0 60: !      EPLUS = 0.0D0
 61:       EMINUS = 0.0D0 61:       EMINUS = 0.0D0
 62: !      XRMS = 0.0D0 62: !      XRMS = 0.0D0
 63:       DIFF=1.0D-3 63:       DIFF=1.0D-3
 64:       IF (NIH2LEPST .or. NIMET .or. NIHEAM7T .or. NIHLEPST .or. NIHPAIRONLYT) DIFF=1.0D-5 64:       IF (NIH2LEPST .or. NIMET .or. NIHEAM7T .or. NIHLEPST .or. NIHPAIRONLYT) DIFF=1.0D-5
 65:       IF (PYADD2T) DIFF=1.0D-5 
 66:       IF (CHARMMDFTBT) DIFF=1.0D-2 65:       IF (CHARMMDFTBT) DIFF=1.0D-2
 67:       IF (AMHT) DIFF=1.0D-2 66:       IF (AMHT) DIFF=1.0D-2
 68:       IF (ZSYM(NATOMS).EQ.'GO') DIFF=2.0D-3 67:       IF (ZSYM(NATOMS).EQ.'GO') DIFF=2.0D-3
 69:       IF (GAMESSUK.OR.GAMESSUS) DIFF=1.0D-2 68:       IF (GAMESSUK.OR.GAMESSUS) DIFF=1.0D-2
 70:       IF (CADPAC) DIFF=1.0D-2 69:       IF (CADPAC) DIFF=1.0D-2
 71:       IF (CASTEP) DIFF=0.01D0 70:       IF (CASTEP) DIFF=0.01D0
 72:       IF (GAUSSIAN03) DIFF=1.0D-2 71:       IF (GAUSSIAN03) DIFF=1.0D-2
 73:       IF (QCHEM) DIFF=0.01D0 72:       IF (QCHEM) DIFF=0.01D0
 74:       IF (VASP) DIFF=0.01D0 73:       IF (VASP) DIFF=0.01D0
 75:       IF (ONETEP) DIFF=0.01D0 74:       IF (ONETEP) DIFF=0.01D0


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0