hdiff output

r33094/commons.f90 2017-07-31 15:30:15.907657993 +0100 r33093/commons.f90 2017-07-31 15:30:18.207688360 +0100
 78:      &                 PEPSILONATTR(2),PSIGMAATTR(2), PYOVERLAPTHRESH, PYCFTHRESH, LJSITECOORDS(3), & 78:      &                 PEPSILONATTR(2),PSIGMAATTR(2), PYOVERLAPTHRESH, PYCFTHRESH, LJSITECOORDS(3), &
 79:      &                 MSTART,MFINISH,MBSTART1,MBFINISH1,MBSTART2,MBFINISH2,MBHEIGHT1,MBHEIGHT2,ME1,ME2,ME3, & 79:      &                 MSTART,MFINISH,MBSTART1,MBFINISH1,MBSTART2,MBFINISH2,MBHEIGHT1,MBHEIGHT2,ME1,ME2,ME3, &
 80:      &                 BSPTQMAX, BSPTQMIN, PFORCE, CSMNORM, CSMGUIDENORM, CSMEPS, PERCCUT, PERCGROUPCUT, & 80:      &                 BSPTQMAX, BSPTQMIN, PFORCE, CSMNORM, CSMGUIDENORM, CSMEPS, PERCCUT, PERCGROUPCUT, &
 81:      &                 LOWESTE, PERTSTEP, GCPLUS, & 81:      &                 LOWESTE, PERTSTEP, GCPLUS, &
 82:      &                 KINT, INTFREEZETOL, IMSEPMIN, IMSEPMAX, CONCUTABS, CONCUTFRAC, & 82:      &                 KINT, INTFREEZETOL, IMSEPMIN, IMSEPMAX, CONCUTABS, CONCUTFRAC, &
 83:      &                 LPDGEOMDIFFTOL, INTCONFRAC, MAXCONE, INTRMSTOL, BFGSTSTOL, ORBITTOL, & 83:      &                 LPDGEOMDIFFTOL, INTCONFRAC, MAXCONE, INTRMSTOL, BFGSTSTOL, ORBITTOL, &
 84:      &                 INTCONSTRAINTTOL, INTCONSTRAINTDEL, RBCUTOFF, INTCONSTRAINTREP, INTCONSTRAINREPCUT, & 84:      &                 INTCONSTRAINTTOL, INTCONSTRAINTDEL, RBCUTOFF, INTCONSTRAINTREP, INTCONSTRAINREPCUT, &
 85:      &                 INTLJTOL, INTLJDEL, INTLJEPS, REPCON, INTDGUESS, CHECKREPCUTOFF, INTMINFAC, FREEZETOL, & 85:      &                 INTLJTOL, INTLJDEL, INTLJEPS, REPCON, INTDGUESS, CHECKREPCUTOFF, INTMINFAC, FREEZETOL, &
 86:      &                 LOCALPERMCUT, LOCALPERMCUT2, INTCONCUT, QCIRADSHIFT, MLPLAMBDA, & 86:      &                 LOCALPERMCUT, LOCALPERMCUT2, INTCONCUT, QCIRADSHIFT, MLPLAMBDA, &
 87:      &                 CAPSIDRHO,CAPSIDEPS,SIGMAPENT,RADPENT,SIGMAHEX,RADHEX,SIGMAPH, KLIM, SCA, & 87:      &                 CAPSIDRHO,CAPSIDEPS,SIGMAPENT,RADPENT,SIGMAHEX,RADHEX,SIGMAPH, KLIM, SCA, &
 88:      &                 QCIADDREPCUT, QCIADDREPEPS, MLQLAMBDA, TANHFAC, LJADDCUTOFF,LJADDREFNORM, & 88:      &                 QCIADDREPCUT, QCIADDREPEPS, MLQLAMBDA, TANHFAC, LJADDCUTOFF,LJADDREFNORM
 89:      &                 ALPHAATT, NNCUTOFF 
 90:  89: 
 91:       LOGICAL DEBUG, TARGET, MORSET, CUTT, SEEDT, CENT, TSALLIST, FREEZECORE, NEWJUMP, RENORM, CAPSID, FREEZE, & 90:       LOGICAL DEBUG, TARGET, MORSET, CUTT, SEEDT, CENT, TSALLIST, FREEZECORE, NEWJUMP, RENORM, CAPSID, FREEZE, &
 92:      &        OTPT, LJMFT, STRANDT, PAHT, SWT, MSTRANST, STOCKT, STICKYT, BLNT, MYSDT, FREEZERES, CENTXY, & 91:      &        OTPT, LJMFT, STRANDT, PAHT, SWT, MSTRANST, STOCKT, STICKYT, BLNT, MYSDT, FREEZERES, CENTXY, &
 93:      &        MSORIGT, SQUEEZET, PERIODIC, SCT, MSCT, MGUPTAT, RESIZET, TIP, RIGID, CALCQT, MPIT, GBHT, JMT, LJCOULT, LJ_GAUSST, OPPT, SETCENT, & 92:      &        MSORIGT, SQUEEZET, PERIODIC, SCT, MSCT, MGUPTAT, RESIZET, TIP, RIGID, CALCQT, MPIT, GBHT, JMT, LJCOULT, LJ_GAUSST, OPPT, SETCENT, &
 94:      &        SORTT, HIT, SAVEQ, PARALLELT, FIXD, RKMIN, BSMIN, PERMDIST, PERMOPT, BSWL, BSPT, BSPTRESTART, & 93:      &        SORTT, HIT, SAVEQ, PARALLELT, FIXD, RKMIN, BSMIN, PERMDIST, PERMOPT, BSWL, BSPT, BSPTRESTART, &
 95:      &        SYMMETRIZE, SYMMETRIZECSM, PRINT_PTGRP, PRINT_MINDATA, DUMPT, NEON, ARGON, P46, NORESET, TABOOT, EVSTEPT, PACHECO, DL_POLY, QUCENTRE, & 94:      &        SYMMETRIZE, SYMMETRIZECSM, PRINT_PTGRP, PRINT_MINDATA, DUMPT, NEON, ARGON, P46, NORESET, TABOOT, EVSTEPT, PACHECO, DL_POLY, QUCENTRE, &
 96:      &        STAR, PLUS, TWOPLUS, GROUND, DIPOLE, DFTBT, DFTBCT, SW, SUPERSTEP, EAMLJT, PBGLUET, TRACKDATAT, & 95:      &        STAR, PLUS, TWOPLUS, GROUND, DIPOLE, DFTBT, DFTBCT, SW, SUPERSTEP, EAMLJT, PBGLUET, TRACKDATAT, &
 97:      &        EAMALT, ALGLUET, MGGLUET, GUPTAT, LJATT, FST, DECAY, COOP, FIXBIN, GAUSST, QUENCHDOS, FIXDIHEFLAG, & 96:      &        EAMALT, ALGLUET, MGGLUET, GUPTAT, LJATT, FST, DECAY, COOP, FIXBIN, GAUSST, QUENCHDOS, FIXDIHEFLAG, &
 98:      &        FRAUSIT, ANGST, SELFT, STEPOUT, WENZEL, THRESHOLDT, THOMSONT, MULLERBROWNT, CHARMMENERGIES, & 97:      &        FRAUSIT, ANGST, SELFT, STEPOUT, WENZEL, THRESHOLDT, THOMSONT, MULLERBROWNT, CHARMMENERGIES, &
 99:      &        PROJ, RGCL2, TOSI, WELCH, AXTELL, AMBER, FIXIMAGE, BINARY, SHIFTCUT, ARNO, TUNNELT, TWOD, & 98:      &        PROJ, RGCL2, TOSI, WELCH, AXTELL, AMBER, FIXIMAGE, BINARY, SHIFTCUT, ARNO, TUNNELT, TWOD, &
115:      &        RESERVOIRT, DISTOPT, ONEDAPBCT, ONEDPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, THREEDPBCT, RATIOT, &114:      &        RESERVOIRT, DISTOPT, ONEDAPBCT, ONEDPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, THREEDPBCT, RATIOT, &
116:      &        PTRANDOM, PTINTERVAL, PTSINGLE, PTSETS, CHEMSHIFT, CHEMSHIFT2, CSH, DEBUGss2029, UNIFORMMOVE, RANSEEDT, &115:      &        PTRANDOM, PTINTERVAL, PTSINGLE, PTSETS, CHEMSHIFT, CHEMSHIFT2, CSH, DEBUGss2029, UNIFORMMOVE, RANSEEDT, &
117:      &        TTM3T, NOINVERSION, RIGIDCONTOURT, UPDATERIGIDREFT, HYBRIDMINT, COMPRESSRIGIDT, MWFILMT, &116:      &        TTM3T, NOINVERSION, RIGIDCONTOURT, UPDATERIGIDREFT, HYBRIDMINT, COMPRESSRIGIDT, MWFILMT, &
118:      &        SUPPRESST, MFETT, POLIRT, QUIPT, SWPOTT, MWPOTT, REPMATCHT, GLJT, MLJT, READMASST, SPECMASST, NEWTSALLIST, &117:      &        SUPPRESST, MFETT, POLIRT, QUIPT, SWPOTT, MWPOTT, REPMATCHT, GLJT, MLJT, READMASST, SPECMASST, NEWTSALLIST, &
119:      &        PHI4MODELT, CUDAT, CUDATIMET, AMBER12T, ENERGY_DECOMPT, NEWMOVEST, DUMPMINT, MBPOLT, MOLECULART, GCBHT, SEMIGRAND_MUT, USEROT, &118:      &        PHI4MODELT, CUDAT, CUDATIMET, AMBER12T, ENERGY_DECOMPT, NEWMOVEST, DUMPMINT, MBPOLT, MOLECULART, GCBHT, SEMIGRAND_MUT, USEROT, &
120:      &        SAVEMULTIMINONLY, GRADPROBLEMT, INTLJT, CONDATT, QCIPERMCHECK, RIGIDMBPOLT, &119:      &        SAVEMULTIMINONLY, GRADPROBLEMT, INTLJT, CONDATT, QCIPERMCHECK, RIGIDMBPOLT, &
121:      &        INTCONSTRAINTT, INTFREEZET, CHECKCONINT, CONCUTABST, CONCUTFRACT, INTERPCOSTFUNCTION, &120:      &        INTCONSTRAINTT, INTFREEZET, CHECKCONINT, CONCUTABST, CONCUTFRACT, INTERPCOSTFUNCTION, &
122:      &        RBAAT, FREEZENODEST, DUMPINTEOS, DUMPINTXYZ, QCIPOTT, QCIPOT2T, INTSPRINGACTIVET, LPERMDIST, LOCALPERMDIST, QCIRADSHIFTT, &121:      &        RBAAT, FREEZENODEST, DUMPINTEOS, DUMPINTXYZ, QCIPOTT, QCIPOT2T, INTSPRINGACTIVET, LPERMDIST, LOCALPERMDIST, QCIRADSHIFTT, &
123:      &        MLP3T, MKTRAPT, MLPB3T, MLPB3NEWT, MULTIPOTT, QCIAMBERT, MLPNEWREG, DJWRBT, STEALTHYT, LJADDT, QCINOREPINT, RIGIDMDT, &122:      &        MLP3T, MKTRAPT, MLPB3T, MLPB3NEWT, MULTIPOTT, QCIAMBERT, MLPNEWREG, DJWRBT, STEALTHYT, LJADDT, QCINOREPINT, RIGIDMDT, &
124:      &        DUMPMQT, MLQT, MLQPROB, LJADD2T, MLPVB3T, NOREGBIAS, PYADDT, PYADD2T, LJADD3T, REORDERADDT,  LJADD4T, &123:      &        DUMPMQT, MLQT, MLQPROB, LJADD2T, MLPVB3T, NOREGBIAS, PYADDT, PYADD2T, LJADD3T, REORDERADDT,  LJADD4T, &
125:      &        SQNMT, SQNM_DEBUGT, SQNM_BIOT, BENZRIGIDEWALDT, ORTHO, EWALDT, WATERMETHANET, MLPVB3NNT, CLATHRATET, LJADD3GUIDET124:      &        SQNMT, SQNM_DEBUGT, SQNM_BIOT, BENZRIGIDEWALDT, ORTHO, EWALDT, WATERMETHANET, MLPVB3NNT, CLATHRATET
126: !125: !
127:       DOUBLE PRECISION, ALLOCATABLE :: SEMIGRAND_MU(:)126:       DOUBLE PRECISION, ALLOCATABLE :: SEMIGRAND_MU(:)
128:       DOUBLE PRECISION, ALLOCATABLE :: ATMASS(:)127:       DOUBLE PRECISION, ALLOCATABLE :: ATMASS(:)
129:       DOUBLE PRECISION, ALLOCATABLE :: SPECMASS(:)128:       DOUBLE PRECISION, ALLOCATABLE :: SPECMASS(:)
130: 129: 
131: ! dj337: Ewald summation variables130: ! dj337: Ewald summation variables
132:       DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:,:,:) :: RERHOARRAY, IMRHOARRAY131:       DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:,:,:) :: RERHOARRAY, IMRHOARRAY
133: 132: 
134: ! csw34> FREEZEGROUP variables133: ! csw34> FREEZEGROUP variables
135: !134: !


r33094/finalq.f 2017-07-31 15:30:16.171661479 +0100 r33093/finalq.f 2017-07-31 15:30:18.475691902 +0100
195:          ENDIF195:          ENDIF
196:       ENDDO196:       ENDDO
197: C197: C
198: C       sf344> sometimes we can have a lower number of minima found than NSAVE. Resetting198: C       sf344> sometimes we can have a lower number of minima found than NSAVE. Resetting
199: C              NSAVE to the number of minima found should get rid of entries with null 199: C              NSAVE to the number of minima found should get rid of entries with null 
200: C              coordinates in the file 'lowest' (and other final output files)200: C              coordinates in the file 'lowest' (and other final output files)
201: C201: C
202: C  DJW - this may not work because we may not have found enough minima considered 202: C  DJW - this may not work because we may not have found enough minima considered 
203: C        different according to the EDIFF criterion.203: C        different according to the EDIFF criterion.
204: C204: C
205: !     IF (DEBUG) WRITE(MYUNIT,'(A,8I6)') 'finalq> NQ=',NQ(1:NPAR)205:       IF (DEBUG) WRITE(MYUNIT,'(A,8I6)') 'finalq> NQ=',NQ(1:NPAR)
206: !     IF (DEBUG) WRITE(MYUNIT,'(A,8I6)') 'finalq> NP=',NP206:       IF (DEBUG) WRITE(MYUNIT,'(A,8I6)') 'finalq> NP=',NP
207: !      WRITE(MYUNIT,'(A,8I6)') 'finalq> NQ=',NQ(1:NPAR)207: !      WRITE(MYUNIT,'(A,8I6)') 'finalq> NQ=',NQ(1:NPAR)
208: !      WRITE(MYUNIT,'(A,8I6)') 'finalq> NP=',NP208: !      WRITE(MYUNIT,'(A,8I6)') 'finalq> NP=',NP
209:       NSAVE=MIN(NSAVE,NQ(NP))209:       NSAVE=MIN(NSAVE,NQ(NP))
210: ! csw34> Re-sort the saved minima now that they have been tightly converged210: ! csw34> Re-sort the saved minima now that they have been tightly converged
211:       CALL GSORT2(NSAVE,NATOMSALLOC)211:       CALL GSORT2(NSAVE,NATOMSALLOC)
212: ! csw34> Print a list of sorted minima energies which will 100% match other output files212: ! csw34> Print a list of sorted minima energies which will 100% match other output files
213:       WRITE(MYUNIT,'(A)') 'After re-sorting, the lowest found minima are (lowest free energy subtracted if applicable):'213:       WRITE(MYUNIT,'(A)') 'After re-sorting, the lowest found minima are (lowest free energy subtracted if applicable):'
214:       DO J1=1,NSAVE214:       DO J1=1,NSAVE
215:          WRITE(MYUNIT,'(A,I6,A,G20.10)') 'Lowest Minimum ',J1,' Energy= ',QMIN(J1)215:          WRITE(MYUNIT,'(A,I6,A,G20.10)') 'Lowest Minimum ',J1,' Energy= ',QMIN(J1)
216:       ENDDO216:       ENDDO


r33094/keywords.f 2017-07-31 15:30:16.471665439 +0100 r33093/keywords.f 2017-07-31 15:30:18.755695596 +0100
1000:       ACKLANDT=.FALSE.1000:       ACKLANDT=.FALSE.
1001:       ACKLANDID=51001:       ACKLANDID=5
1002:       ACK1=.FALSE.1002:       ACK1=.FALSE.
1003:       ACK2=.FALSE.1003:       ACK2=.FALSE.
1004: 1004: 
1005:       STEEREDMINT=.FALSE.1005:       STEEREDMINT=.FALSE.
1006:       DF1T=.FALSE.1006:       DF1T=.FALSE.
1007:       PULLT=.FALSE.1007:       PULLT=.FALSE.
1008:       CSMT=.FALSE.1008:       CSMT=.FALSE.
1009:       CSMGUIDET=.FALSE.1009:       CSMGUIDET=.FALSE.
1010:       LJADD3GUIDET=.FALSE. 
1011:       CSMEPS=1.0D-61010:       CSMEPS=1.0D-6
1012:       CSMSTEPS=11011:       CSMSTEPS=1
1013:       CSMQUENCHES=11012:       CSMQUENCHES=1
1014:       CSMMAXIT=01013:       CSMMAXIT=0
1015:       CHECKMARKOVT=.FALSE.1014:       CHECKMARKOVT=.FALSE.
1016:       PERCOLATET=.FALSE.1015:       PERCOLATET=.FALSE.
1017:       PERCCUT=1.0D1001016:       PERCCUT=1.0D100
1018:       PERCGROUPCUT=1.0D1001017:       PERCGROUPCUT=1.0D100
1019:       PERCGROUPT=.FALSE.1018:       PERCGROUPT=.FALSE.
1020:       PERCGROUPRESEEDT=.FALSE.1019:       PERCGROUPRESEEDT=.FALSE.
4818:          OPEN(LUNIT,FILE='epsilon',STATUS='OLD')4817:          OPEN(LUNIT,FILE='epsilon',STATUS='OLD')
4819:          IF (.NOT.ALLOCATED(LJADDREP)) ALLOCATE(LJADDREP(NADDTARGET,NADDTARGET))4818:          IF (.NOT.ALLOCATED(LJADDREP)) ALLOCATE(LJADDREP(NADDTARGET,NADDTARGET))
4820:          IF (.NOT.ALLOCATED(LJADDATT)) ALLOCATE(LJADDATT(NADDTARGET,NADDTARGET))4819:          IF (.NOT.ALLOCATED(LJADDATT)) ALLOCATE(LJADDATT(NADDTARGET,NADDTARGET))
4821:          DO J1=1,NADDTARGET4820:          DO J1=1,NADDTARGET
4822:             DO J2=1,NADDTARGET4821:             DO J2=1,NADDTARGET
4823:                READ(LUNIT,*) LJADDREP(J2,J1), LJADDATT(J2,J1)4822:                READ(LUNIT,*) LJADDREP(J2,J1), LJADDATT(J2,J1)
4824:                WRITE(MYUNIT,'(2I6,2G20.10)') J1,J2,LJADDREP(J2,J1),LJADDATT(J2,J1)4823:                WRITE(MYUNIT,'(2I6,2G20.10)') J1,J2,LJADDREP(J2,J1),LJADDATT(J2,J1)
4825:             ENDDO4824:             ENDDO
4826:          ENDDO4825:          ENDDO
4827:          CLOSE(LUNIT)4826:          CLOSE(LUNIT)
4828:       ELSE IF (WORD.EQ.'LJADD3GUIDE') THEN 
4829:          LJADD3GUIDET=.TRUE. 
4830:          NADDTARGET=NATOMS 
4831:          CALL READF(ALPHAATT) ! just change non-nearest-neighbour attraction 
4832:          CALL READF(NNCUTOFF) ! cutoff to define nearest-neighbours in reference 
4833:          WRITE(MYUNIT,'(2(A,G20.10))') 'keyword> LJADD3 guiding potential, NN cutoff=',NNCUTOFF,' NNN attractive fraction=',ALPHAATT 
4834:          IF (.NOT.ALLOCATED(LJADDREP)) ALLOCATE(LJADDREP(NADDTARGET,NADDTARGET)) 
4835:          IF (.NOT.ALLOCATED(LJADDATT)) ALLOCATE(LJADDATT(NADDTARGET,NADDTARGET)) 
4836: !4827: !
4837: ! LJAT4828: ! LJAT
4838: !4829: !
4839:       ELSE IF (WORD.EQ.'LJAT') THEN4830:       ELSE IF (WORD.EQ.'LJAT') THEN
4840:          LJATT=.TRUE.4831:          LJATT=.TRUE.
4841:          CALL READF(ZSTAR)4832:          CALL READF(ZSTAR)
4842:          LJATTOC=2.423D04833:          LJATTOC=2.423D0
4843:          IF (NITEMS.EQ.3) CALL READF(LJATTOC)4834:          IF (NITEMS.EQ.3) CALL READF(LJATTOC)
4844:       ELSE IF (WORD.EQ.'LOCALSAMPLE') THEN4835:       ELSE IF (WORD.EQ.'LOCALSAMPLE') THEN
4845:          LOCALSAMPLET=.TRUE.4836:          LOCALSAMPLET=.TRUE.


r33094/mc.F 2017-07-31 15:30:17.127673782 +0100 r33093/mc.F 2017-07-31 15:30:19.039699347 +0100
 48:  48: 
 49:       INTEGER J1, NSUCCESS(NPAR), NFAIL(NPAR), NFAILT(NPAR), NSUCCESST(NPAR), J2, NSTEPS, JP, REJSTREAK, 49:       INTEGER J1, NSUCCESS(NPAR), NFAIL(NPAR), NFAILT(NPAR), NSUCCESST(NPAR), J2, NSTEPS, JP, REJSTREAK,
 50:      1        UNT, ITERATIONS, NSUPERCOUNT, NQTOT, JACCPREV, NREN, NLAST, NSTEPREN, BRUN,QDONE,JBEST(NPAR),GCJBEST(NPAR), 50:      1        UNT, ITERATIONS, NSUPERCOUNT, NQTOT, JACCPREV, NREN, NLAST, NSTEPREN, BRUN,QDONE,JBEST(NPAR),GCJBEST(NPAR),
 51:      2        NRMS, NDONE, I, RNDSEED, J, NTOT, ITRAJ, NEACCEPT, J3, J4, ISTAT, LOCALCOUNT, QNEWRES, QGCBH, GCNATOMSBEST(NPAR), 51:      2        NRMS, NDONE, I, RNDSEED, J, NTOT, ITRAJ, NEACCEPT, J3, J4, ISTAT, LOCALCOUNT, QNEWRES, QGCBH, GCNATOMSBEST(NPAR),
 52:      &        GCJESTP(NPAR), GCNATOMSBESTP(NPAR), GCJBESTP(NPAR) 52:      &        GCJESTP(NPAR), GCNATOMSBESTP(NPAR), GCJBESTP(NPAR)
 53:       INTEGER :: NSYMCALL=0, NULLMOVES(NPAR), NULLMOVEST(NPAR), NSWAPS=0 53:       INTEGER :: NSYMCALL=0, NULLMOVES(NPAR), NULLMOVEST(NPAR), NSWAPS=0
 54:       DOUBLE PRECISION POTEL, SCALEFAC, RANDOM, DPRAND, DPRAND_UNIVERSAL, SAVECOORDS(3*NATOMSALLOC), TEMPCOORDS(3*NATOMSALLOC), 54:       DOUBLE PRECISION POTEL, SCALEFAC, RANDOM, DPRAND, DPRAND_UNIVERSAL, SAVECOORDS(3*NATOMSALLOC), TEMPCOORDS(3*NATOMSALLOC),
 55:      1                 TIME, SPOTEL(NSUPER), SCOORDS(3*NATOMSALLOC,NSUPER), SCREENC(3*NATOMSALLOC), 55:      1                 TIME, SPOTEL(NSUPER), SCOORDS(3*NATOMSALLOC,NSUPER), SCREENC(3*NATOMSALLOC),
 56:      2                 EPPREV(NPAR), QSTART, QFINISH, RANNJ, RMIN, RMINO, RCOORDS(3*NATOMSALLOC),ELASTSYM(NPAR), 56:      2                 EPPREV(NPAR), QSTART, QFINISH, RANNJ, RMIN, RMINO, RCOORDS(3*NATOMSALLOC),ELASTSYM(NPAR),
 57:      3                 RCOORDSO(3*NATOMSALLOC), RVAT(NATOMSALLOC), RVATO(NATOMSALLOC), EPSSAVE, EBEST(NPAR), GCEBEST(NPAR),  57:      3                 RCOORDSO(3*NATOMSALLOC), RVAT(NATOMSALLOC), RVATO(NATOMSALLOC), EPSSAVE, EBEST(NPAR), GCEBEST(NPAR), 
 58:      4                 GCEBESTP(NPAR),  58:      4                 GCEBESTP(NPAR),
 59:      4                 BESTCOORDS(3*NATOMSALLOC,NPAR), RMSD, VINIT, CTE, TEMPTRAJ(0:NPAR-1), GCBESTCOORDS(3*NATOMSALLOC,NPAR), 59:      4                 BESTCOORDS(3*NATOMSALLOC,NPAR), RMSD, VINIT, CTE, TEMPTRAJ(0:NPAR-1), GCBESTCOORDS(3*NATOMSALLOC,NPAR),
 60:      5                 T, BETA(0:NPAR-1), GRAD(3*NATOMSALLOC), E, W, GCBESTCOORDSP(3*NATOMSALLOC,NPAR), 60:      5                 T, BETA(0:NPAR-1), GRAD(3*NATOMSALLOC), E, W, GCBESTCOORDSP(3*NATOMSALLOC,NPAR),
 61:      &                 DUMMY1, DUMMY2, DUMMY3, INTE, OPOTEL, GCBESTVAT(NATOMSALLOC,NPAR), GCBESTVATP(NATOMSALLOC,NPAR),  61:      &                 DUMMY1, DUMMY2, DUMMY3, INTE, OPOTEL, GCBESTVAT(NATOMSALLOC,NPAR), GCBESTVATP(NATOMSALLOC,NPAR), 
 62:      &                 XMASS, YMASS, ZMASS, CMMAX 62:      &                 XMASS, YMASS, ZMASS, CMMAX
 63:       LOGICAL CHANGEDE, RES1, RES2, COMPON, QUENCHCOMP, MARKOVSTEP 63:       LOGICAL CHANGEDE, RES1, RES2, COMPON, QUENCHCOMP, MARKOVSTEP
 64:       LOGICAL CHIRALFAIL,AMIDEFAIL, LOGDUMMY, DISTOK 64:       LOGICAL CHIRALFAIL,AMIDEFAIL, LOGDUMMY, DISTOK
 65:       CHARACTER FNAME*9 65:       CHARACTER FNAME*9
 66:       CHARACTER (LEN= 3)  ISTR 66:       CHARACTER (LEN= 3)  ISTR
 67:       CHARACTER (LEN=20) QUENCHNUM, QUNAME 67:       CHARACTER (LEN=20) QUENCHNUM, QUNAME
 68:       CHARACTER (LEN=20) BESTNAME 68:       CHARACTER (LEN=20) BESTNAME
3032:       use genrigid3032:       use genrigid
3033:       USE modamber9, only : mdstept 3033:       USE modamber9, only : mdstept 
3034:       USE ROTATIONS3034:       USE ROTATIONS
3035:       USE VEC33035:       USE VEC3
3036:  3036:  
3037:       IMPLICIT NONE3037:       IMPLICIT NONE
3038:       INTEGER J1, JP, JBEST(NPAR), ITERATIONS, J2, JACCPREV, BRUN, QDONE, J4, NEWRESATTEMPTS3038:       INTEGER J1, JP, JBEST(NPAR), ITERATIONS, J2, JACCPREV, BRUN, QDONE, J4, NEWRESATTEMPTS
3039:       DOUBLE PRECISION EBEST(NPAR), BESTCOORDS(3*NATOMS,NPAR), EPPREV(NPAR), POTEL, TIME, RCOORDS(3*NATOMS), DIST2, DUMMY2,3039:       DOUBLE PRECISION EBEST(NPAR), BESTCOORDS(3*NATOMS,NPAR), EPPREV(NPAR), POTEL, TIME, RCOORDS(3*NATOMS), DIST2, DUMMY2,
3040:      1                 RVAT(NATOMS), RMIN, RANDOM, SR3, SCREENC(3*NATOMS), DPRAND, FCOORDS(3*NATOMS), 3040:      1                 RVAT(NATOMS), RMIN, RANDOM, SR3, SCREENC(3*NATOMS), DPRAND, FCOORDS(3*NATOMS), 
3041:      2                 DUMMY(3*NATOMS), DISTANCE, XMSB(3*NATOMS), EBESTP, BESTCOORDSP(3*NATOMS), RMAT(3,3), QENERGY,3041:      2                 DUMMY(3*NATOMS), DISTANCE, XMSB(3*NATOMS), EBESTP, BESTCOORDSP(3*NATOMS), RMAT(3,3), QENERGY,
3042:      &                 ROTA(3,3), ROTINVA(3,3), ALPHAATTSAVE3042:      &                 ROTA(3,3), ROTINVA(3,3)
3043:       INTEGER NSUCCESS(NPAR), NFAIL(NPAR), NORBIT1, NORBIT2, NPOSITION,  NSUCCESST(NPAR), NFAILT(NPAR)3043:       INTEGER NSUCCESS(NPAR), NFAIL(NPAR), NORBIT1, NORBIT2, NPOSITION,  NSUCCESST(NPAR), NFAILT(NPAR)
3044:       LOGICAL RES1, RES2, HIGHEST3044:       LOGICAL RES1, RES2, HIGHEST
3045:       COMMON /MYPOT/ QENERGY3045:       COMMON /MYPOT/ QENERGY
3046: ! hk2863046: ! hk286
3047:       DOUBLE PRECISION :: GRAD(3*NATOMS)3047:       DOUBLE PRECISION :: GRAD(3*NATOMS)
3048: ! hk2863048: ! hk286
3049: 3049: 
3050:       SR3=DSQRT(3.0D0)3050:       SR3=DSQRT(3.0D0)
3051: 3051: 
3052: ! csw34> initialise the attempts counter3052: ! csw34> initialise the attempts counter
3070:       RES1=.FALSE.3070:       RES1=.FALSE.
3071:       IF (J1-JBEST(JP).GT.NRELAX) RES1=.TRUE.3071:       IF (J1-JBEST(JP).GT.NRELAX) RES1=.TRUE.
3072: !     WRITE(MYUNIT,'(A,I5,2G17.7,3I5,L8)') 'J1,POTEL,EBEST,JBEST,J1-JBEST,NRELAX,RES1=',3072: !     WRITE(MYUNIT,'(A,I5,2G17.7,3I5,L8)') 'J1,POTEL,EBEST,JBEST,J1-JBEST,NRELAX,RES1=',
3073: !    1                                J1,POTEL,EBEST(JP),JBEST(JP),J1-JBEST(JP),NRELAX,RES13073: !    1                                J1,POTEL,EBEST(JP),JBEST(JP),J1-JBEST(JP),NRELAX,RES1
3074:       RES2=.FALSE.3074:       RES2=.FALSE.
3075: !     IF ((.NOT.RES1).AND.AVOID) THEN3075: !     IF ((.NOT.RES1).AND.AVOID) THEN
3076: !     PRINT*,'RES1,AVOID,J1,JBEST(JP)=',RES1,AVOID,J1,JBEST(JP)3076: !     PRINT*,'RES1,AVOID,J1,JBEST(JP)=',RES1,AVOID,J1,JBEST(JP)
3077:       IF ((.NOT.RES1).AND.AVOID.AND.(J1.EQ.JBEST(JP)).AND.(NMSBSAVE.GT.0)) THEN ! best minimum has just changed.3077:       IF ((.NOT.RES1).AND.AVOID.AND.(J1.EQ.JBEST(JP)).AND.(NMSBSAVE.GT.0)) THEN ! best minimum has just changed.
3078:          FCOORDS(1:3*NATOMS)=COORDS(1:3*NATOMS,JP)3078:          FCOORDS(1:3*NATOMS)=COORDS(1:3*NATOMS,JP)
3079:          savedloop: DO J2=1,MIN(NMSBSAVE,MAXSAVE)3079:          savedloop: DO J2=1,MIN(NMSBSAVE,MAXSAVE)
 3080: 
3080:             IF (DEBUG) THEN3081:             IF (DEBUG) THEN
3081:                XMSB(1:3*NATOMS)=MSBCOORDS(1:3*NATOMS,J2) 
3082:                CALL MINPERMDIST(FCOORDS,XMSB,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,PERIODIC,TWOD,DISTANCE,DIST2,RIGID,RMAT)3082:                CALL MINPERMDIST(FCOORDS,XMSB,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,PERIODIC,TWOD,DISTANCE,DIST2,RIGID,RMAT)
3083:                WRITE(MYUNIT,'(A,F10.3)')'newres> minimum distance is ',DISTANCE3083:                WRITE(MYUNIT,'(A,F10.3)')'newres> minimum distance is ',DISTANCE
3084:             ENDIF3084:             ENDIF
3085: 3085: 
3086: !3086: !
3087: !  Bipartite matching routine for permutations. Coordinates in FCOORDS do not change3087: !  Bipartite matching routine for permutations. Coordinates in FCOORDS do not change
3088: !  but the coordinates in XMSB do. DISTANCE is the distance in this case.3088: !  but the coordinates in XMSB do. DISTANCE is the distance in this case.
3089: !3089: !
3090: ! If the energy is lower no reseeding regardless of separation ? DJW3090: ! If the energy is lower no reseeding regardless of separation ? DJW
3091: !           PRINT '(A,2G20.10,L8)','POTEL,MSBE(J2)-ECONV,POTEL.LT.MSBE(J2)-ECONV=',3091: !           PRINT '(A,2G20.10,L8)','POTEL,MSBE(J2)-ECONV,POTEL.LT.MSBE(J2)-ECONV=',
3287:             ENDDO3287:             ENDDO
3288:          ENDIF3288:          ENDIF
3289: 3289: 
3290: !3290: !
3291: !  This step will be accepted because EPREV(JP)=POTEL. However, there3291: !  This step will be accepted because EPREV(JP)=POTEL. However, there
3292: !  could be additional steps, so we need3292: !  could be additional steps, so we need
3293: !  to change COORDSO and VATO. Should reset EBEST and BESTCOORDS as well.3293: !  to change COORDSO and VATO. Should reset EBEST and BESTCOORDS as well.
3294: !3294: !
3295: !  next line should be uncommented if routine is made available to use with CHARMM3295: !  next line should be uncommented if routine is made available to use with CHARMM
3296: !         IF (CHRMMT.AND.ACESOLV) NCHENCALLS=ACEUPSTEP-13296: !         IF (CHRMMT.AND.ACESOLV) NCHENCALLS=ACEUPSTEP-1
3297: 654      IF (LJADD3GUIDET) THEN3297: 654      CALL QUENCH(.FALSE.,JP,ITERATIONS,TIME,BRUN,QDONE,SCREENC)
3298:             ALPHAATTSAVE=ALPHAATT 
3299:          ENDIF 
3300:          CALL QUENCH(.FALSE.,JP,ITERATIONS,TIME,BRUN,QDONE,SCREENC) 
3301:          IF (LJADD3GUIDET) THEN 
3302:             ALPHAATT=ALPHAATTSAVE 
3303:          ENDIF 
3304: ! csw34> Include a check for the number of restart attempts to prevent infinate loop behaviour3298: ! csw34> Include a check for the number of restart attempts to prevent infinate loop behaviour
3305:          IF ((RMS.GT.BQMAX).AND.(NEWRESATTEMPTS.LE.10)) THEN3299:          IF ((RMS.GT.BQMAX).AND.(NEWRESATTEMPTS.LE.10)) THEN
3306: ! csw34> Increment the attempts counter3300: ! csw34> Increment the attempts counter
3307:             NEWRESATTEMPTS=NEWRESATTEMPTS+13301:             NEWRESATTEMPTS=NEWRESATTEMPTS+1
3308:             WRITE(MYUNIT,'(A)') 'newres> Quench from reseeded geometry failed - try again'3302:             WRITE(MYUNIT,'(A)') 'newres> Quench from reseeded geometry failed - try again'
3309: 3303: 
3310: ! hk286 - first revision3304: ! hk286 - first revision
3311:             IF (NEWRESTART_MD) THEN3305:             IF (NEWRESTART_MD) THEN
3312:                CHANGE_TEMP = .true.3306:                CHANGE_TEMP = .true.
3313:                WRITE(MYUNIT,'(A)') 'newres> Running high temperature MD'3307:                WRITE(MYUNIT,'(A)') 'newres> Running high temperature MD'


r33094/minpermdist.f90 2017-07-31 15:30:17.399677688 +0100 r33093/minpermdist.f90 2017-07-31 15:30:19.311702938 +0100
695:       WRITE(MYUNIT,'(2(A,F20.10))') 'minpermdist> ERROR *** distance between transformed XBEST and COORDSB=',SQRT(XDUMMY), &695:       WRITE(MYUNIT,'(2(A,F20.10))') 'minpermdist> ERROR *** distance between transformed XBEST and COORDSB=',SQRT(XDUMMY), &
696:   &                         ' should be ',SQRT(DISTANCE)696:   &                         ' should be ',SQRT(DISTANCE)
697:    ENDIF697:    ENDIF
698: 698: 
699:    IF ((NFREEZE.GT.0).OR.MKTRAPT) THEN699:    IF ((NFREEZE.GT.0).OR.MKTRAPT) THEN
700:       RMATBEST(1:3,1:3)=0.0D0700:       RMATBEST(1:3,1:3)=0.0D0
701:       RMATBEST(1,1)=1.0D0; RMATBEST(2,2)=1.0D0; RMATBEST(3,3)=1.0D0701:       RMATBEST(1,1)=1.0D0; RMATBEST(2,2)=1.0D0; RMATBEST(3,3)=1.0D0
702:    ELSE702:    ELSE
703:       RMATBEST=MATMUL(ROTINVB,RMATBEST)703:       RMATBEST=MATMUL(ROTINVB,RMATBEST)
704:    ENDIF704:    ENDIF
705: !  IF (DEBUG) THEN 705:    IF (DEBUG) THEN 
706: !     WRITE(MYUNIT, '(A)') 'RMATBEST:'706:       WRITE(MYUNIT, '(A)') 'RMATBEST:'
707: !     WRITE(MYUNIT, '(3F20.10)') RMATBEST(1:3,1:3)707:       WRITE(MYUNIT, '(3F20.10)') RMATBEST(1:3,1:3)
708: !  ENDIF708:    ENDIF
709:    COORDSA(1:3*NATOMS)=XBEST(1:3*NATOMS) ! finally, best COORDSA should include permutations for DNEB input!709:    COORDSA(1:3*NATOMS)=XBEST(1:3*NATOMS) ! finally, best COORDSA should include permutations for DNEB input!
710: 710: 
711: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!711: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
712: !  DO J1=1,(NATOMS/2)712: !  DO J1=1,(NATOMS/2)
713: !     XDUMMY=XDUMMY+(COORDSB(3*(J1-1)+1)-COORDSA(3*(J1-1)+1))**2+ &713: !     XDUMMY=XDUMMY+(COORDSB(3*(J1-1)+1)-COORDSA(3*(J1-1)+1))**2+ &
714: ! &                 (COORDSB(3*(J1-1)+2)-COORDSA(3*(J1-1)+2))**2+ &714: ! &                 (COORDSB(3*(J1-1)+2)-COORDSA(3*(J1-1)+2))**2+ &
715: ! &                 (COORDSB(3*(J1-1)+3)-COORDSA(3*(J1-1)+3))**2715: ! &                 (COORDSB(3*(J1-1)+3)-COORDSA(3*(J1-1)+3))**2
716: !  ENDDO716: !  ENDDO
717: !  PRINT '(A,F20.10)','XDUMMY=',XDUMMY717: !  PRINT '(A,F20.10)','XDUMMY=',XDUMMY
718: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!718: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


r33094/potential.f90 2017-07-31 15:30:17.667681230 +0100 r33093/potential.f90 2017-07-31 15:30:19.575706424 +0100
 71:    CHARACTER                  :: FNAME*80, DUMM*4 71:    CHARACTER                  :: FNAME*80, DUMM*4
 72:    REAL(REAL64)               :: DUMMY2, GEMAX, RMAT(3, 3), XTEMP(3*NATOMS), AVVAL, & 72:    REAL(REAL64)               :: DUMMY2, GEMAX, RMAT(3, 3), XTEMP(3*NATOMS), AVVAL, &
 73:                                  DUMMY(3*NATOMS), DIST2, QE, QX, AA(3), SAVECSMNORM, & 73:                                  DUMMY(3*NATOMS), DIST2, QE, QX, AA(3), SAVECSMNORM, &
 74:                                  CSMRMS, CSMGRAD(3), SAVECSMPMAT(3, 3), & 74:                                  CSMRMS, CSMGRAD(3), SAVECSMPMAT(3, 3), &
 75:                                  SAVECSMIMAGES(3*NATOMS*CSMGPINDEX)!, BOXPARAMS(6) 75:                                  SAVECSMIMAGES(3*NATOMS*CSMGPINDEX)!, BOXPARAMS(6)
 76:    CHARACTER(LEN=3)           :: CSMGPSAVE 76:    CHARACTER(LEN=3)           :: CSMGPSAVE
 77:    INTEGER(INT32)             :: CSMGPINDEXSAVE 77:    INTEGER(INT32)             :: CSMGPINDEXSAVE
 78:    REAL(REAL64)               :: PTGPSAVE(3, 3, 2*CSMGPINDEX), CSMNORMSAVE, ENERGY, VNEW(3*NATOMS) 78:    REAL(REAL64)               :: PTGPSAVE(3, 3, 2*CSMGPINDEX), CSMNORMSAVE, ENERGY, VNEW(3*NATOMS)
 79: !   INTEGER(INT32)             :: BRUN 79: !   INTEGER(INT32)             :: BRUN
 80:    INTEGER(INT32)             :: NQTOT 80:    INTEGER(INT32)             :: NQTOT
 81:    LOGICAL                    :: SOCOUPLE, GUIDECHANGET, CSMDOGUIDET, COMTEST, LJADD3DOGUIDET 81:    LOGICAL                    :: SOCOUPLE, GUIDECHANGET, CSMDOGUIDET, COMTEST
 82: ! khs26 > AMBER12 energy decomposition, type defined in AMBER12 interface 82: ! khs26 > AMBER12 energy decomposition, type defined in AMBER12 interface
 83:    TYPE(POT_ENE_REC_C)        :: AMBER12_ENERGY_DECOMP 83:    TYPE(POT_ENE_REC_C)        :: AMBER12_ENERGY_DECOMP
 84: !Used only in commented sections 84: !Used only in commented sections
 85:    REAL(REAL64)               :: GRADDUM(3*NATOMS), EPLUS, EMINUS, DIFF!, TERMLJ, TERMMF, & 85:    REAL(REAL64)               :: GRADDUM(3*NATOMS), EPLUS, EMINUS, DIFF!, TERMLJ, TERMMF, &
 86:                                  !, XG, YG, ZG, RMS1, RMS2, GRADLJ(3*NATOMS), GRADMF(3*NATOMS), & 86:                                  !, XG, YG, ZG, RMS1, RMS2, GRADLJ(3*NATOMS), GRADMF(3*NATOMS), &
 87: !                                GRADDUM1(3*NATOMS), GRADDUM2(3*NATOMS), EREALLJ, EREALMF, EDUM1, EDUM2 87: !                                GRADDUM1(3*NATOMS), GRADDUM2(3*NATOMS), EREALLJ, EREALMF, EDUM1, EDUM2
 88: !DS656> GRADIENT/HESSIAN TESTING 88: !DS656> GRADIENT/HESSIAN TESTING
 89:    DOUBLE PRECISION :: GPLUS(3*NATOMS), GMINUS(3*NATOMS) 89:    DOUBLE PRECISION :: GPLUS(3*NATOMS), GMINUS(3*NATOMS)
 90:  90: 
 91: ! TODO: Delete common blocks 91: ! TODO: Delete common blocks
 92:    COMMON /CO/ COMPON 92:    COMMON /CO/ COMPON
 93:    COMMON /FAIL/ FTEST 93:    COMMON /FAIL/ FTEST
 94:    COMMON /EV/ EVAP, EVAPREJECT 94:    COMMON /EV/ EVAP, EVAPREJECT
 95:    COMMON /GD/ GUIDECHANGET, GUIDET, CSMDOGUIDET, LJADD3DOGUIDET 95:    COMMON /GD/ GUIDECHANGET, GUIDET, CSMDOGUIDET
 96:    COMMON /CSMAVVAL/ AVVAL, CSMRMS, CSMIT 96:    COMMON /CSMAVVAL/ AVVAL, CSMRMS, CSMIT
 97:    COMMON /TOT/ NQTOT 97:    COMMON /TOT/ NQTOT
 98:  98: 
 99:    GUIDECHANGET=.FALSE. 99:    GUIDECHANGET=.FALSE.
100: !100: !
101: ! Test BRUN to see if we should stop if a screen saver is interrupted.101: ! Test BRUN to see if we should stop if a screen saver is interrupted.
102: ! Need to save a restart file containing:102: ! Need to save a restart file containing:
103: ! Current minimum in the Markov chain. COORDS103: ! Current minimum in the Markov chain. COORDS
104: ! Number of steps done. NQTOT/NPAR should be close enough!104: ! Number of steps done. NQTOT/NPAR should be close enough!
105: ! The current lowest minima. QMIN has the energies, QMINP has the points.105: ! The current lowest minima. QMIN has the energies, QMINP has the points.
177:       CALL MSTRANS97(NATOMS, X, GRAD, EREAL, GRADT)177:       CALL MSTRANS97(NATOMS, X, GRAD, EREAL, GRADT)
178:       IF (FTEST) THEN178:       IF (FTEST) THEN
179:          RETURN179:          RETURN
180:       END IF180:       END IF
181:    ELSE IF (FRAUSIT) THEN181:    ELSE IF (FRAUSIT) THEN
182:       CALL RAD(X, GRAD, EREAL, GRADT)182:       CALL RAD(X, GRAD, EREAL, GRADT)
183:       CALL FRAUSI(NATOMS, X, GRAD, EREAL, GRADT, ANGST, NATOMS)183:       CALL FRAUSI(NATOMS, X, GRAD, EREAL, GRADT, ANGST, NATOMS)
184:       IF (FTEST) THEN184:       IF (FTEST) THEN
185:          RETURN185:          RETURN
186:       END IF186:       END IF
187:    ELSE IF (LJADDT.OR.LJADD3DOGUIDET) THEN187:    ELSE IF (LJADDT) THEN
188: 188: 
189:       IF (RIGIDINIT .AND. (.NOT. ATOMRIGIDCOORDT)) THEN189:       IF (RIGIDINIT .AND. (.NOT. ATOMRIGIDCOORDT)) THEN
190:           XRIGIDCOORDS(1:DEGFREEDOMS)=X(1:DEGFREEDOMS)190:           XRIGIDCOORDS(1:DEGFREEDOMS)=X(1:DEGFREEDOMS)
191:           CALL TRANSFORMRIGIDTOC(1, NRIGIDBODY, X, XRIGIDCOORDS)191:           CALL TRANSFORMRIGIDTOC(1, NRIGIDBODY, X, XRIGIDCOORDS)
192:       ENDIF192:       ENDIF
193: 193: 
194:       IF (LJADD3T.OR.LJADD3DOGUIDET) THEN194:       IF (LJADD3T) THEN
195:          IF (CUDAT) THEN195:          IF (CUDAT) THEN
196: ! This call copies CPU coordinates to GPU, calculates energy/gradient and copies energy/gradient back to CPU196: ! This call copies CPU coordinates to GPU, calculates energy/gradient and copies energy/gradient back to CPU
197:             CALL CUDA_ENEGRAD_WRAPPER(NATOMS, X, EREAL, GRADATOMS)197:             CALL CUDA_ENEGRAD_WRAPPER(NATOMS, X, EREAL, GRADATOMS)
198:          ELSE198:          ELSE
199:             CALL LJADD3(NATOMS, X, GRADATOMS, EREAL, GRADT, SECT)199:             CALL LJADD3(NATOMS, X, GRADATOMS, EREAL, GRADT, SECT)
200:          END IF200:          END IF
201:       ELSEIF (LJADD2T) THEN201:       ELSEIF (LJADD2T) THEN
202:          CALL LJADD2(NATOMS, X, GRADATOMS, EREAL, GRADT, SECT)202:          CALL LJADD2(NATOMS, X, GRADATOMS, EREAL, GRADT, SECT)
203:       ELSE203:       ELSE
204:          CALL LJADD(NATOMS, X, GRADATOMS, EREAL, GRADT, SECT)204:          CALL LJADD(NATOMS, X, GRADATOMS, EREAL, GRADT, SECT)
1725: !  The GOTO is needed here in case LBFGS sets CFLAG to TRUE, in which1725: !  The GOTO is needed here in case LBFGS sets CFLAG to TRUE, in which
1726: !  case we stop with the wrong energy (but almost the right coordinates)1726: !  case we stop with the wrong energy (but almost the right coordinates)
1727:             GOTO 101727:             GOTO 10
1728:          ELSE IF (CPMD .AND. SCT) THEN1728:          ELSE IF (CPMD .AND. SCT) THEN
1729:             IF (DEBUG) WRITE(MYUNIT,'(A)' ) 'switching off Sutton-Chen'1729:             IF (DEBUG) WRITE(MYUNIT,'(A)' ) 'switching off Sutton-Chen'
1730:             SCT=.FALSE.1730:             SCT=.FALSE.
1731:             GUIDECHANGET=.TRUE.1731:             GUIDECHANGET=.TRUE.
1732: !  The GOTO is needed here in case LBFGS sets CFLAG to TRUE, in which1732: !  The GOTO is needed here in case LBFGS sets CFLAG to TRUE, in which
1733: !  case we stop with the wrong energy (but almost the right coordinates)1733: !  case we stop with the wrong energy (but almost the right coordinates)
1734:             GOTO 101734:             GOTO 10
1735:          ELSE IF (LJADD3DOGUIDET) THEN 
1736:             IF (DEBUG) WRITE(MYUNIT,'(A)' ) 'switching off LJADD3 guiding potential' 
1737:             LJADD3DOGUIDET=.FALSE. 
1738:             GUIDECHANGET=.TRUE. 
1739: !  The GOTO is needed here in case LBFGS sets CFLAG to TRUE, in which 
1740: !  case we stop with the wrong energy (but almost the right coordinates) 
1741:             GOTO 10 
1742:          ELSE IF (WELCH .AND. TOSI) THEN1735:          ELSE IF (WELCH .AND. TOSI) THEN
1743:             IF (DEBUG) WRITE(MYUNIT,'(A)' ) 'switching off Tosi'1736:             IF (DEBUG) WRITE(MYUNIT,'(A)' ) 'switching off Tosi'
1744:             TOSI=.FALSE.1737:             TOSI=.FALSE.
1745:             GUIDECHANGET=.TRUE.1738:             GUIDECHANGET=.TRUE.
1746: !  The GOTO is needed here in case LBFGS sets CFLAG to TRUE, in which1739: !  The GOTO is needed here in case LBFGS sets CFLAG to TRUE, in which
1747: !  case we stop with the wrong energy (but almost the right coordinates)1740: !  case we stop with the wrong energy (but almost the right coordinates)
1748:             GOTO 101741:             GOTO 10
1749:          ELSE IF ((ZETT1 .OR. ZETT2) .AND. MORSET) THEN1742:          ELSE IF ((ZETT1 .OR. ZETT2) .AND. MORSET) THEN
1750:             IF (DEBUG) WRITE(MYUNIT,'(A)' ) 'switching off MORSE'1743:             IF (DEBUG) WRITE(MYUNIT,'(A)' ) 'switching off MORSE'
1751:             MORSET=.FALSE.1744:             MORSET=.FALSE.


r33094/quench.F 2017-07-31 15:30:17.935684768 +0100 r33093/quench.F 2017-07-31 15:30:19.851710068 +0100
 29:       USE INERTIA_MOD 29:       USE INERTIA_MOD
 30: #endif /* __SPARSE */ 30: #endif /* __SPARSE */
 31:       USE COMMONS 31:       USE COMMONS
 32:       USE MODAMBER9, ONLY : cisarray1, cisarray2, chiarray1, chiarray2, dihedralsave, atomindex, exclude, 32:       USE MODAMBER9, ONLY : cisarray1, cisarray2, chiarray1, chiarray2, dihedralsave, atomindex, exclude,
 33:      &                      setchiral, setchiralgeneric, nocistransdna, nocistransrna 33:      &                      setchiral, setchiralgeneric, nocistransdna, nocistransrna
 34:       USE QMODULE 34:       USE QMODULE
 35:       use porfuncs 35:       use porfuncs
 36:       USE CHIRALITY, ONLY: CIS_TRANS_CHECK, CHIRALITY_CHECK 36:       USE CHIRALITY, ONLY: CIS_TRANS_CHECK, CHIRALITY_CHECK
 37:       IMPLICIT NONE 37:       IMPLICIT NONE
 38:  38: 
 39:       INTEGER I, J1, NSQSTEPS, NP, IFLAG, ITER, NOPT, J2, NDUMMY, CSMIT, J5, NUM_ZERO_EVS, HORDER, NMOL, J3, J4 39:       INTEGER I, J1, NSQSTEPS, NP, IFLAG, ITER, NOPT, J2, NDUMMY, CSMIT, J5, NUM_ZERO_EVS, HORDER, NMOL
 40:       DOUBLE PRECISION P(3*NATOMS),POTEL,TIME,EREAL,RBCOORDS(18),TMPCOORDS(3*NATOMS), DIST, QE, QX, AVVAL, CSMRMS, CUTOFF2 40:       DOUBLE PRECISION P(3*NATOMS),POTEL,TIME,EREAL,RBCOORDS(18),TMPCOORDS(3*NATOMS), DIST, QE, QX, AVVAL, CSMRMS
 41:       LOGICAL QTEST, CFLAG, RES, COMPON, EVAPREJECT, EVAP, PASS, FAIL 41:       LOGICAL QTEST, CFLAG, RES, COMPON, EVAPREJECT, EVAP, PASS, FAIL
 42:       DOUBLE PRECISION  GRAD(3*NATOMS), DUMMY, DUM(3*NATOMS), DISTMIN, SSAVE, DIST2, RMAT(3,3), EVALUES(3*NATOMS), IT(3,3) 42:       DOUBLE PRECISION  GRAD(3*NATOMS), DUMMY, DUM(3*NATOMS), DISTMIN, SSAVE, DIST2, RMAT(3,3), EVALUES(3*NATOMS), IT(3,3)
 43:       DOUBLE PRECISION LOG_PROD_EV, LOG_PROD_FREQ 43:       DOUBLE PRECISION LOG_PROD_EV, LOG_PROD_FREQ
 44:       DOUBLE PRECISION, ALLOCATABLE :: QS(:) 44:       DOUBLE PRECISION, ALLOCATABLE :: QS(:)
 45: !     DOUBLE PRECISION  WORK(60*NATOMS) 45: !     DOUBLE PRECISION  WORK(60*NATOMS)
 46:       DOUBLE PRECISION, PARAMETER :: HALFPI=1.570796327D0 46:       DOUBLE PRECISION, PARAMETER :: HALFPI=1.570796327D0
 47:       DOUBLE PRECISION RRX,RRY,RRZ,RRR,ITDET 47:       DOUBLE PRECISION RRX,RRY,RRZ,RRR,ITDET
 48: ! khs26> Added these to calculate the separation of zero frequencies for free energy BH 48: ! khs26> Added these to calculate the separation of zero frequencies for free energy BH
 49:       DOUBLE PRECISION LARGEST_ZERO, SMALLEST_NONZERO 49:       DOUBLE PRECISION LARGEST_ZERO, SMALLEST_NONZERO
 50:       INTEGER ATTEMPTS 50:       INTEGER ATTEMPTS
 51:       LOGICAL TS_FOUND 51:       LOGICAL TS_FOUND
 52:       DOUBLE PRECISION INERTIA_TENS(3, 3) 52:       DOUBLE PRECISION INERTIA_TENS(3, 3)
 53:       DOUBLE PRECISION SHIFT_ARRAY(6) 53:       DOUBLE PRECISION SHIFT_ARRAY(6)
 54:  54: 
 55:       CHARACTER (LEN=20) QUENCHNUM 55:       CHARACTER (LEN=20) QUENCHNUM
 56:       CHARACTER(LEN=80) DSTRING 56:       CHARACTER(LEN=80) DSTRING
 57:       COMMON /MYPOT/ POTEL 57:       COMMON /MYPOT/ POTEL
 58:       COMMON /CO/ COMPON 58:       COMMON /CO/ COMPON
 59:       COMMON /DMIN/ DISTMIN 59:       COMMON /DMIN/ DISTMIN
 60:       LOGICAL GUIDECHANGET, GUIDET, CSMDOGUIDET, DUMMYL, LJADD3DOGUIDET 60:       LOGICAL GUIDECHANGET, GUIDET, CSMDOGUIDET, DUMMYL
 61:       COMMON /GD/ GUIDECHANGET, GUIDET, CSMDOGUIDET, LJADD3DOGUIDET 61:       COMMON /GD/ GUIDECHANGET, GUIDET, CSMDOGUIDET
 62:       ! ds656> EVAP was missing from here before 6/9/13 62:       ! ds656> EVAP was missing from here before 6/9/13
 63:       COMMON /EV/ EVAP, EVAPREJECT 63:       COMMON /EV/ EVAP, EVAPREJECT
 64:       DOUBLE PRECISION QSTART, QFINISH 64:       DOUBLE PRECISION QSTART, QFINISH
 65:       COMMON /Q4C/ QSTART, QFINISH 65:       COMMON /Q4C/ QSTART, QFINISH
 66:       COMMON /CSMAVVAL/ AVVAL, CSMRMS, CSMIT 66:       COMMON /CSMAVVAL/ AVVAL, CSMRMS, CSMIT
 67:  67: 
 68: ! 68: !
 69: !   sf344> gradually changing parameters to prevent dissociation of PY ellipsoids with repulsive sites  69: !   sf344> gradually changing parameters to prevent dissociation of PY ellipsoids with repulsive sites 
 70: ! 70: !
 71:       DOUBLE PRECISION epssave(3) 71:       DOUBLE PRECISION epssave(3)
105:       ENDIF105:       ENDIF
106:       IF (NATBT.AND.GUPTAT) GUIDET=.TRUE.106:       IF (NATBT.AND.GUPTAT) GUIDET=.TRUE.
107:       IF (NATBT.AND.GUIDET) GUPTAT=.TRUE.107:       IF (NATBT.AND.GUIDET) GUPTAT=.TRUE.
108:       IF (DFTBCT.AND.LJATT) GUIDET=.TRUE.108:       IF (DFTBCT.AND.LJATT) GUIDET=.TRUE.
109:       IF (DFTBCT.AND.GUIDET) THEN109:       IF (DFTBCT.AND.GUIDET) THEN
110:          LJATT=.TRUE.110:          LJATT=.TRUE.
111:          IF (DEBUG) WRITE(MYUNIT,'(A)') 'quench> Turning on LJAT guiding potential and rescaling coordinates'111:          IF (DEBUG) WRITE(MYUNIT,'(A)') 'quench> Turning on LJAT guiding potential and rescaling coordinates'
112:          COORDS(1:3*NATOMS,NP)=COORDS(1:3*NATOMS,NP)/LJATTOC112:          COORDS(1:3*NATOMS,NP)=COORDS(1:3*NATOMS,NP)/LJATTOC
113:       ENDIF113:       ENDIF
114:       IF (CSMGUIDET) CSMDOGUIDET=.TRUE.114:       IF (CSMGUIDET) CSMDOGUIDET=.TRUE.
115:       IF (LJADD3GUIDET) THEN 
116:          LJADD3DOGUIDET=.TRUE. 
117:          CUTOFF2=NNCUTOFF**2 
118:          LJADDREP(1:NATOMS,1:NATOMS)=1.0D0 
119:          LJADDATT(1:NATOMS,1:NATOMS)=1.0D0 
120:          DO J1=1,NATOMS 
121:             J3=3*J1 
122:             DO J2=J1+1,NATOMS 
123:                J4=3*J2 
124:                DIST=(COORDSO(J3-2,1)-COORDSO(J4-2,1))**2+(COORDSO(J3-1,1)-COORDSO(J4-1,1))**2+(COORDSO(J3,1)-COORDSO(J4,1))**2 
125:                IF (DIST.GT.CUTOFF2) THEN 
126:                   LJADDATT(J2,J1)=ALPHAATT 
127:                   LJADDATT(J1,J2)=ALPHAATT 
128:                ENDIF 
129:             ENDDO 
130:          ENDDO 
131:       ENDIF 
132:  
133:       NOPT=3*NATOMS115:       NOPT=3*NATOMS
134:       IF (WENZEL) NOPT=2116:       IF (WENZEL) NOPT=2
135:       IF (MULLERBROWNT) NOPT=2117:       IF (MULLERBROWNT) NOPT=2
136:       IF (MLP3T.OR.MLPB3T.OR.MLPVB3T) NOPT=NMLP118:       IF (MLP3T.OR.MLPB3T.OR.MLPVB3T) NOPT=NMLP
137:       IF (ORBITALS) NOPT=NROTS119:       IF (ORBITALS) NOPT=NROTS
138:       IF (MLQT) NOPT=NMLQ120:       IF (MLQT) NOPT=NMLQ
139: !121: !
140: !  QTEST is set for the final quenches with tighter convergence criteria.122: !  QTEST is set for the final quenches with tighter convergence criteria.
141: !123: !
142:       IF (QTEST) THEN124:       IF (QTEST) THEN


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0