hdiff output

r30229/commons.f90 2016-04-05 12:30:10.636619666 +0100 r30228/commons.f90 2016-04-05 12:30:12.140639630 +0100
 32:      &        MYEUNIT, MYMUNIT, MYBUNIT, MYRUNIT, MYPUNIT, NFREEZETYPEA, & 32:      &        MYEUNIT, MYMUNIT, MYBUNIT, MYRUNIT, MYPUNIT, NFREEZETYPEA, &
 33:      &        TBPSTEPS, TBPCI, TBPBASIN, NTSITES, NRBGROUP, NZERO, PTMCDS_FRQ, PTMCDUMPENERFRQ, MONITORINT, NBLOCKS, & 33:      &        TBPSTEPS, TBPCI, TBPBASIN, NTSITES, NRBGROUP, NZERO, PTMCDS_FRQ, PTMCDUMPENERFRQ, MONITORINT, NBLOCKS, &
 34:      &        BINARY_EXAB_FRQ, NRESMIN, USERES, EXEQ, NONEDAPBC, STRUC, CHEMSHIFTITER, GRIDSIZE, MFETRUNS, BESTINVERT, GCNATOMS, & 34:      &        BINARY_EXAB_FRQ, NRESMIN, USERES, EXEQ, NONEDAPBC, STRUC, CHEMSHIFTITER, GRIDSIZE, MFETRUNS, BESTINVERT, GCNATOMS, &
 35:      &        GCINT, GCRELAX, MTARGETS, & 35:      &        GCINT, GCRELAX, MTARGETS, &
 36:      &        INTCONSEP, INTREPSEP, NCONSTRAINTON, CPREPSEP, CPCONSEP, NCONGEOM, & 36:      &        INTCONSEP, INTREPSEP, NCONSTRAINTON, CPREPSEP, CPCONSEP, NCONGEOM, &
 37:      &        NCPREPULSIVE, NCPCONSTRAINT, MAXCONUSE, INTCONSTEPS, INTRELSTEPS, INTSTEPS1, INTLJSTEPS, & 37:      &        NCPREPULSIVE, NCPCONSTRAINT, MAXCONUSE, INTCONSTEPS, INTRELSTEPS, INTSTEPS1, INTLJSTEPS, &
 38:      &        NTRAPPOW, MAXINTIMAGE, CHECKREPINTERVAL, INTFREEZEMIN, INTNTRIESMAX, INTIMAGEINCR, & 38:      &        NTRAPPOW, MAXINTIMAGE, CHECKREPINTERVAL, INTFREEZEMIN, INTNTRIESMAX, INTIMAGEINCR, &
 39:      &        NCONSTRAINTFIX, INTIMAGECHECK, NREPULSIVEFIX, INTIMAGE, NREPULSIVE, & 39:      &        NCONSTRAINTFIX, INTIMAGECHECK, NREPULSIVEFIX, INTIMAGE, NREPULSIVE, &
 40:      &        NNREPULSIVE, NCONSTRAINT, INTMUPDATE, DUMPINTEOSFREQ, DUMPINTXYZFREQ, & 40:      &        NNREPULSIVE, NCONSTRAINT, INTMUPDATE, DUMPINTEOSFREQ, DUMPINTXYZFREQ, &
 41:      &        LOCALPERMNEIGH, LOCALPERMMAXSEP, MAXNACTIVE, QCIPERMCHECKINT, & 41:      &        LOCALPERMNEIGH, LOCALPERMMAXSEP, MAXNACTIVE, QCIPERMCHECKINT, &
 42:      &        MLPIN, MLPOUT, MLPHIDDEN, MLPDATA, NMLP, DJWRBID 42:      &        MLPIN, MLPOUT, MLPHIDDEN, MLPDATA, NMLP
 43:   43:  
 44:       DOUBLE PRECISION RHO, GAMMA, SIG, SCEPS, SCC, TOLB, T12FAC, XMOVERENORM, RESIZE, QTSALLIS, & 44:       DOUBLE PRECISION RHO, GAMMA, SIG, SCEPS, SCC, TOLB, T12FAC, XMOVERENORM, RESIZE, QTSALLIS, &
 45:      &                 CQMAX, RADIUS, BQMAX,  MAXBFGS, DECAYPARAM, SYMTOL1, SYMTOL2, SYMTOL3, SYMTOL4, SYMTOL5, PGSYMTOLS(3),& 45:      &                 CQMAX, RADIUS, BQMAX,  MAXBFGS, DECAYPARAM, SYMTOL1, SYMTOL2, SYMTOL3, SYMTOL4, SYMTOL5, PGSYMTOLS(3),&
 46:      &                 ECONV, TOLD, TOLE, SYMREM(120,3,3), GMAX, CUTOFF, PCUT, EXPFAC, EXPD, CENTX, CENTY, CENTZ, & 46:      &                 ECONV, TOLD, TOLE, SYMREM(120,3,3), GMAX, CUTOFF, PCUT, EXPFAC, EXPD, CENTX, CENTY, CENTZ, &
 47:      &                 BOXLX, BOXLY, BOXLZ, BOX3D(3), PCUTOFF, SUPSTEP, SQUEEZER, SQUEEZED, COOPCUT, STOCKMU, STOCKLAMBDA, & 47:      &                 BOXLX, BOXLY, BOXLZ, BOX3D(3), PCUTOFF, SUPSTEP, SQUEEZER, SQUEEZED, COOPCUT, STOCKMU, STOCKLAMBDA, &
 48:      &                 TFAC(3), RMS, TEMPS, SACCRAT, CEIG, PNEWJUMP, EAMP, DISTFAC, ODDCHARGE, COULQ, COULSWAP, & 48:      &                 TFAC(3), RMS, TEMPS, SACCRAT, CEIG, PNEWJUMP, EAMP, DISTFAC, ODDCHARGE, COULQ, COULSWAP, &
 49:      &                 COULTEMP, APP, AMM, APM, XQP, XQM, ALPHAP, ALPHAM, ZSTAR, K_COMP, DGUESS, GUIDECUT, EFAC,&  49:      &                 COULTEMP, APP, AMM, APM, XQP, XQM, ALPHAP, ALPHAM, ZSTAR, K_COMP, DGUESS, GUIDECUT, EFAC,& 
 50:      &                 TRENORM, HISTMIN, HISTMAX, HISTFAC, EPSSPHERE, FINALCUTOFF, SHELLPROB, RINGROTSCALE, & 50:      &                 TRENORM, HISTMIN, HISTMAX, HISTFAC, EPSSPHERE, FINALCUTOFF, SHELLPROB, RINGROTSCALE, &
 51:      &                 HISTFACMUL, HPERCENT, AVOIDDIST, MAXERISE, MAXEFALL, TSTART, MATDIFF, STICKYSIG, SDTOL, & 51:      &                 HISTFACMUL, HPERCENT, AVOIDDIST, MAXERISE, MAXEFALL, TSTART, MATDIFF, STICKYSIG, SDTOL, &
 52:      &                 MinimalTemperature, MaximalTemperature, SwapProb, hdistconstraint, COREFRAC, TSTAR, & 52:      &                 MinimalTemperature, MaximalTemperature, SwapProb, hdistconstraint, COREFRAC, TSTAR, &
108:      &        HARMONICDONTMOVE, DUMPUNIQUE, FREEZESAVE, TBP, RBSYMT, PTMCDUMPSTRUCT, PTMCDUMPENERT, PYCOLDFUSION, MONITORT,&108:      &        HARMONICDONTMOVE, DUMPUNIQUE, FREEZESAVE, TBP, RBSYMT, PTMCDUMPSTRUCT, PTMCDUMPENERT, PYCOLDFUSION, MONITORT,&
109:      &        CHARMMDFTBT, PERMINVOPT, BLOCKMOVET, MAXERISE_SET, PYT, BINARY_EXAB, CHIROT, SANDBOXT, &109:      &        CHARMMDFTBT, PERMINVOPT, BLOCKMOVET, MAXERISE_SET, PYT, BINARY_EXAB, CHIROT, SANDBOXT, &
110:      &        RESERVOIRT, DISTOPT, ONEDAPBCT, ONEDPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, THREEDPBCT, RATIOT, &110:      &        RESERVOIRT, DISTOPT, ONEDAPBCT, ONEDPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, THREEDPBCT, RATIOT, &
111:      &        PTRANDOM, PTINTERVAL, PTSINGLE, PTSETS, CHEMSHIFT, CHEMSHIFT2, CSH, DEBUGss2029, UNIFORMMOVE, RANSEEDT, &111:      &        PTRANDOM, PTINTERVAL, PTSINGLE, PTSETS, CHEMSHIFT, CHEMSHIFT2, CSH, DEBUGss2029, UNIFORMMOVE, RANSEEDT, &
112:      &        TTM3T, NOINVERSION, RIGIDCONTOURT, UPDATERIGIDREFT, HYBRIDMINT, COMPRESSRIGIDT, MWFILMT, &112:      &        TTM3T, NOINVERSION, RIGIDCONTOURT, UPDATERIGIDREFT, HYBRIDMINT, COMPRESSRIGIDT, MWFILMT, &
113:      &        SUPPRESST, MFETT, POLIRT, QUIPT, SWPOTT, MWPOTT, REPMATCHT, GLJT, MLJT, READMASST, SPECMASST, NEWTSALLIST, &113:      &        SUPPRESST, MFETT, POLIRT, QUIPT, SWPOTT, MWPOTT, REPMATCHT, GLJT, MLJT, READMASST, SPECMASST, NEWTSALLIST, &
114:      &        PHI4MODELT, CUDAT, CUDATIMET, AMBER12T, ENERGY_DECOMPT, NEWMOVEST, DUMPMINT, MBPOLT, MOLECULART, GCBHT, SEMIGRAND_MUT, USEROT, & 114:      &        PHI4MODELT, CUDAT, CUDATIMET, AMBER12T, ENERGY_DECOMPT, NEWMOVEST, DUMPMINT, MBPOLT, MOLECULART, GCBHT, SEMIGRAND_MUT, USEROT, & 
115:      &        SAVEMULTIMINONLY, GRADPROBLEMT, INTLJT, CONDATT, QCIPERMCHECK, &115:      &        SAVEMULTIMINONLY, GRADPROBLEMT, INTLJT, CONDATT, QCIPERMCHECK, &
116:      &        INTCONSTRAINTT, INTFREEZET, CHECKCONINT, CONCUTABST, CONCUTFRACT, INTERPCOSTFUNCTION, &116:      &        INTCONSTRAINTT, INTFREEZET, CHECKCONINT, CONCUTABST, CONCUTFRACT, INTERPCOSTFUNCTION, &
117:      &        RBAAT, FREEZENODEST, DUMPINTEOS, DUMPINTXYZ, QCIPOTT, QCIPOT2T, INTSPRINGACTIVET, LPERMDIST, LOCALPERMDIST, QCIRADSHIFTT, &117:      &        RBAAT, FREEZENODEST, DUMPINTEOS, DUMPINTXYZ, QCIPOTT, QCIPOT2T, INTSPRINGACTIVET, LPERMDIST, LOCALPERMDIST, QCIRADSHIFTT, &
118:      &        MLP3T, MKTRAPT, MLPB3T, MULTIPOTT, QCIAMBERT, MLPNEWREG, DJWRBT118:      &        MLP3T, MKTRAPT, MLPB3T, MULTIPOTT, QCIAMBERT
119: !119: !
120:       DOUBLE PRECISION, ALLOCATABLE :: SEMIGRAND_MU(:) 120:       DOUBLE PRECISION, ALLOCATABLE :: SEMIGRAND_MU(:) 
121:       DOUBLE PRECISION, ALLOCATABLE:: ATMASS(:)121:       DOUBLE PRECISION, ALLOCATABLE:: ATMASS(:)
122:       DOUBLE PRECISION, ALLOCATABLE:: SPECMASS(:) 122:       DOUBLE PRECISION, ALLOCATABLE:: SPECMASS(:) 
123: 123: 
124: ! csw34> FREEZEGROUP variables124: ! csw34> FREEZEGROUP variables
125: !125: !
126:       INTEGER :: GROUPCENTRE126:       INTEGER :: GROUPCENTRE
127:       DOUBLE PRECISION :: GROUPRADIUS127:       DOUBLE PRECISION :: GROUPRADIUS
128:       CHARACTER (LEN=2) :: FREEZEGROUPTYPE128:       CHARACTER (LEN=2) :: FREEZEGROUPTYPE


r30229/djwgr1.f90 2016-04-05 12:30:10.852622549 +0100 r30228/djwgr1.f90 2016-04-05 12:30:12.348642382 +0100
  1: !   GMIN: A program for optimizing geometries and calculating reaction pathways  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/GMIN/source/djwgr1.f90' in revision 30228
  2: !   Copyright (C) 1999- David J. Wales 
  3: !   This file is part of GMIN. 
  4: !   GMIN is free software; you can redistribute it and/or modify 
  5: !   it under the terms of the GNU General Public License as published by 
  6: !   the Free Software Foundation; either version 2 of the License, or 
  7: !   (at your option) any later version. 
  8: ! 
  9: !   GMIN is distributed in the hope that it will be useful, 
 10: !   but WITHOUT ANY WARRANTY; without even the implied warranty of 
 11: !   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 12: !   GNU General Public License for more details. 
 13: ! 
 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 
 16: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 17: ! 
 18: !  Energy and gradient for a genrigid setup example 
 19: ! 
 20: !  NATOMS = total number of sites 
 21: !  NRIGIDBODY = # rigid bodies 
 22: ! 
 23: SUBROUTINE DJWGR1(NATOMS,X,V,ENERGY,GTEST) 
 24: USE GENRIGID 
 25: IMPLICIT NONE 
 26: LOGICAL GTEST 
 27: INTEGER NATOMS, J1, J2, J3, J4, NPOS1, NPOS2 
 28: DOUBLE PRECISION X(3*NATOMS), V(3*NATOMS), ENERGY, DUMMY2, DUMMY3, DUMMY, DIST, SIGMA, XDUMM, RHO, RDIST, RAD, EPSEFF 
 29: DOUBLE PRECISION FATT, DFATT, FREP, DFREP 
 30: ! 
 31: ! Derivatives of the pairwise site-site terms in terms of distance 
 32: ! 
 33: FATT(RHO,XDUMM)=-1.0D0 + (1.0D0 - EXP(RHO*(1.0D0 - XDUMM)))**2 
 34: DFATT(RHO,XDUMM)=2.0D0*(-EXP(2.0D0*RHO*(1.0D0-XDUMM)) + EXP(RHO*(1.0D0-XDUMM)))*RHO 
 35: FREP(SIGMA,XDUMM)=(SIGMA/XDUMM)**12 
 36: DFREP(SIGMA,XDUMM)=-12.0D0*(SIGMA/XDUMM)**12/XDUMM 
 37:  
 38: ENERGY=0.0D0 
 39: IF (GTEST) V(1:3*NATOMS)=0.0D0 
 40: ! 
 41: ! 5 Morse plus two axial site pentamers from 
 42: ! S.N. Fejer, T. James, J. Hernandez-Rojas and D.J. Wales, Phys. Chem. Chem. Phys., 11, 2098-2104 (2009).  
 43: ! Energy Landscapes for Shells Assembled from Pentagonal and Hexagonal Pyramids  
 44: ! 
 45: RAD=5.0D0 
 46: RHO=3.0D0 
 47: SIGMA=(1.0D0+RAD*SQRT((5.0D0+SQRT(5.0D0))/2.0D0)) 
 48: EPSEFF=0.28D0 
 49:  
 50: DO J1=1,NRIGIDBODY 
 51:    DO J2=J1+1,NRIGIDBODY 
 52: ! 
 53: ! Three different sorts of axial repulsion 
 54: ! 
 55:       NPOS1=RIGIDGROUPS(NSITEPERBODY(J1)-1,J1) 
 56:       NPOS2=RIGIDGROUPS(NSITEPERBODY(J2)-1,J2) 
 57:       DIST=SQRT((X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))**2+(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))**2+(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))**2) 
 58:       ENERGY=ENERGY+EPSEFF*FREP(SIGMA,DIST)  ! axial-axial repulsive term 
 59:       IF (GTEST) THEN 
 60:          DUMMY2=EPSEFF*DFREP(SIGMA,DIST) 
 61:          RDIST=1.0D0/DIST 
 62:          V(3*(NPOS1-1)+1)=V(3*(NPOS1-1)+1)+DUMMY2*(X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))*RDIST 
 63:          V(3*(NPOS1-1)+2)=V(3*(NPOS1-1)+2)+DUMMY2*(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))*RDIST 
 64:          V(3*(NPOS1-1)+3)=V(3*(NPOS1-1)+3)+DUMMY2*(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))*RDIST 
 65:          V(3*(NPOS2-1)+1)=V(3*(NPOS2-1)+1)-DUMMY2*(X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))*RDIST 
 66:          V(3*(NPOS2-1)+2)=V(3*(NPOS2-1)+2)-DUMMY2*(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))*RDIST 
 67:          V(3*(NPOS2-1)+3)=V(3*(NPOS2-1)+3)-DUMMY2*(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))*RDIST 
 68:       ENDIF 
 69:       NPOS1=RIGIDGROUPS(NSITEPERBODY(J1)-1,J1) 
 70:       NPOS2=RIGIDGROUPS(NSITEPERBODY(J2),J2) 
 71:       DIST=SQRT((X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))**2+(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))**2+(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))**2) 
 72:       ENERGY=ENERGY+EPSEFF*FREP(SIGMA,DIST)  ! axial-axial repulsive term 
 73:       IF (GTEST) THEN 
 74:          DUMMY2=EPSEFF*DFREP(SIGMA,DIST) 
 75:          RDIST=1.0D0/DIST 
 76:          V(3*(NPOS1-1)+1)=V(3*(NPOS1-1)+1)+DUMMY2*(X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))*RDIST 
 77:          V(3*(NPOS1-1)+2)=V(3*(NPOS1-1)+2)+DUMMY2*(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))*RDIST 
 78:          V(3*(NPOS1-1)+3)=V(3*(NPOS1-1)+3)+DUMMY2*(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))*RDIST 
 79:          V(3*(NPOS2-1)+1)=V(3*(NPOS2-1)+1)-DUMMY2*(X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))*RDIST 
 80:          V(3*(NPOS2-1)+2)=V(3*(NPOS2-1)+2)-DUMMY2*(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))*RDIST 
 81:          V(3*(NPOS2-1)+3)=V(3*(NPOS2-1)+3)-DUMMY2*(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))*RDIST 
 82:       ENDIF 
 83:       NPOS1=RIGIDGROUPS(NSITEPERBODY(J1),J1) 
 84:       NPOS2=RIGIDGROUPS(NSITEPERBODY(J2)-1,J2) 
 85:       DIST=SQRT((X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))**2+(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))**2+(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))**2) 
 86:       ENERGY=ENERGY+EPSEFF*FREP(SIGMA,DIST)  ! axial 2-axial repulsive term 
 87:       IF (GTEST) THEN 
 88:          DUMMY2=EPSEFF*DFREP(SIGMA,DIST) 
 89:          RDIST=1.0D0/DIST 
 90:          V(3*(NPOS1-1)+1)=V(3*(NPOS1-1)+1)+DUMMY2*(X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))*RDIST 
 91:          V(3*(NPOS1-1)+2)=V(3*(NPOS1-1)+2)+DUMMY2*(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))*RDIST 
 92:          V(3*(NPOS1-1)+3)=V(3*(NPOS1-1)+3)+DUMMY2*(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))*RDIST 
 93:          V(3*(NPOS2-1)+1)=V(3*(NPOS2-1)+1)-DUMMY2*(X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))*RDIST 
 94:          V(3*(NPOS2-1)+2)=V(3*(NPOS2-1)+2)-DUMMY2*(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))*RDIST 
 95:          V(3*(NPOS2-1)+3)=V(3*(NPOS2-1)+3)-DUMMY2*(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))*RDIST 
 96:       ENDIF 
 97: ! 
 98: ! Sum over the attractive sites 
 99: ! 
100:       DO J3=1,NSITEPERBODY(J1)-2     ! # Morse sites in rb J1 NSITEPERBODY(J1) 
101:          NPOS1=RIGIDGROUPS(J3,J1)    ! where is this site in the list? 
102:          DO J4=1,NSITEPERBODY(J2)-2  ! # Morse sites in rb J2 NSITEPERBODY(J2) 
103:             NPOS2=RIGIDGROUPS(J4,J2) ! where is this site in the list? 
104:             DIST=SQRT((X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))**2+(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))**2+(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))**2) 
105:             ENERGY=ENERGY+FATT(RHO,DIST)  
106:             IF (GTEST) THEN 
107:                DUMMY2=DFATT(RHO,DIST) 
108:                RDIST=1.0D0/DIST 
109:                V(3*(NPOS1-1)+1)=V(3*(NPOS1-1)+1)+DUMMY2*(X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))*RDIST 
110:                V(3*(NPOS1-1)+2)=V(3*(NPOS1-1)+2)+DUMMY2*(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))*RDIST 
111:                V(3*(NPOS1-1)+3)=V(3*(NPOS1-1)+3)+DUMMY2*(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))*RDIST 
112:                V(3*(NPOS2-1)+1)=V(3*(NPOS2-1)+1)-DUMMY2*(X(3*(NPOS1-1)+1)-X(3*(NPOS2-1)+1))*RDIST 
113:                V(3*(NPOS2-1)+2)=V(3*(NPOS2-1)+2)-DUMMY2*(X(3*(NPOS1-1)+2)-X(3*(NPOS2-1)+2))*RDIST 
114:                V(3*(NPOS2-1)+3)=V(3*(NPOS2-1)+3)-DUMMY2*(X(3*(NPOS1-1)+3)-X(3*(NPOS2-1)+3))*RDIST 
115:             ENDIF 
116:          ENDDO 
117:       ENDDO 
118:    ENDDO 
119: ENDDO 
120:  
121: END SUBROUTINE DJWGR1 


r30229/io1.f 2016-04-05 12:30:11.068625400 +0100 r30228/io1.f 2016-04-05 12:30:12.580645468 +0100
692:                   WRITE(MYUNIT,'(A,I4,A)') 'LBFGS minimisation on the GPU with ', NATOMS,' LJ atoms'692:                   WRITE(MYUNIT,'(A,I4,A)') 'LBFGS minimisation on the GPU with ', NATOMS,' LJ atoms'
693:               CASE('A')693:               CASE('A')
694:                   WRITE(MYUNIT,'(A,I4,A)') 'LBFGS minimisation on the GPU with ', NATOMS,' AMBER12 atoms'694:                   WRITE(MYUNIT,'(A,I4,A)') 'LBFGS minimisation on the GPU with ', NATOMS,' AMBER12 atoms'
695:               CASE DEFAULT695:               CASE DEFAULT
696:                   WRITE(MYUNIT,'(A,I4,A)') 'LBFGS minimisation on the GPU with ', NATOMS,' atoms. Potential not recognised. '696:                   WRITE(MYUNIT,'(A,I4,A)') 'LBFGS minimisation on the GPU with ', NATOMS,' atoms. Potential not recognised. '
697:           END SELECT697:           END SELECT
698:       ELSEIF (QCIPOTT.OR.INTCONSTRAINTT) THEN698:       ELSEIF (QCIPOTT.OR.INTCONSTRAINTT) THEN
699:          WRITE(MYUNIT,'(I4,A)') NATOMS,' QCI atoms'699:          WRITE(MYUNIT,'(I4,A)') NATOMS,' QCI atoms'
700:       ELSEIF (MKTRAPT) THEN700:       ELSEIF (MKTRAPT) THEN
701:          WRITE(MYUNIT,'(I4,A)') NATOMS,' MK trapped ions'701:          WRITE(MYUNIT,'(I4,A)') NATOMS,' MK trapped ions'
702:       ELSEIF (DJWRBT) THEN 
703:          IF (DJWRBID.EQ.1) THEN 
704:             WRITE(MYUNIT,'(3(I4,A))') NATOMS,' sites for ',NRIGIDBODY,' rigid bodies - DJW potential ',DJWRBID 
705:          ENDIF 
706:       ELSEIF (MLP3T) THEN702:       ELSEIF (MLP3T) THEN
707:          WRITE(MYUNIT,'(I4,A)') NATOMS,' link weights for MLP3'703:          WRITE(MYUNIT,'(I4,A)') NATOMS,' link weights for MLP3'
708:       ELSE704:       ELSE
709:          WRITE(MYUNIT,'(I4,A)') NATOMS,' LJ atoms'705:          WRITE(MYUNIT,'(I4,A)') NATOMS,' LJ atoms'
710:       ENDIF706:       ENDIF
711:       IF (PYGPERIODICT.OR.PYBINARYT) CALL INITIALISEPYGPERIODIC707:       IF (PYGPERIODICT.OR.PYBINARYT) CALL INITIALISEPYGPERIODIC
712:       IF (LJCAPSIDT) CALL INITIALISELJCAPSIDMODEL708:       IF (LJCAPSIDT) CALL INITIALISELJCAPSIDMODEL
713:       IF (PYT) call py_input709:       IF (PYT) call py_input
714:       IF (INTMINT)  WRITE(MYUNIT,'(A)') 'Internal coordinate transformation will be used'710:       IF (INTMINT)  WRITE(MYUNIT,'(A)') 'Internal coordinate transformation will be used'
715:       IF (STAR) THEN711:       IF (STAR) THEN
838:             RADIUS=2.0D0*RADIUS*2.0D0**(1.0D0/6.0D0)834:             RADIUS=2.0D0*RADIUS*2.0D0**(1.0D0/6.0D0)
839:          ELSE IF (ZETT1.OR.ZETT2) THEN835:          ELSE IF (ZETT1.OR.ZETT2) THEN
840: !           RADIUS=4.0D0*RADIUS*2.0D0**(1.0D0/6.0D0)836: !           RADIUS=4.0D0*RADIUS*2.0D0**(1.0D0/6.0D0)
841:             RADIUS=MAX(NATOMS*4.0D0/(2*19.0D0),2.0D0)837:             RADIUS=MAX(NATOMS*4.0D0/(2*19.0D0),2.0D0)
842:          ELSE IF (PACHECO) THEN838:          ELSE IF (PACHECO) THEN
843:             RADIUS=RADIUS*10.0185D0839:             RADIUS=RADIUS*10.0185D0
844:          ELSE IF (PBGLUET) THEN840:          ELSE IF (PBGLUET) THEN
845:             RADIUS=RADIUS*3.4d0841:             RADIUS=RADIUS*3.4d0
846:          ELSE IF (ACKLANDT) THEN842:          ELSE IF (ACKLANDT) THEN
847:             RADIUS=RADIUS*3.0D0843:             RADIUS=RADIUS*3.0D0
848:          ELSE IF (DJWRBT) THEN 
849:             IF (DJWRBID.EQ.1) THEN 
850:                RADIUS=RADIUS*5.0D0 
851:             ENDIF 
852:          ELSE IF (EAMALT) THEN844:          ELSE IF (EAMALT) THEN
853:             RADIUS=RADIUS*2.8d0845:             RADIUS=RADIUS*2.8d0
854:          ELSE IF (ALGLUET) THEN846:          ELSE IF (ALGLUET) THEN
855:             RADIUS=RADIUS*2.85d0847:             RADIUS=RADIUS*2.85d0
856:          ELSE IF (MGGLUET) THEN848:          ELSE IF (MGGLUET) THEN
857:             RADIUS=RADIUS*3.2d0849:             RADIUS=RADIUS*3.2d0
858:          ELSE IF (TIP) THEN850:          ELSE IF (TIP) THEN
859:             RADIUS=RADIUS*3.0D0851:             RADIUS=RADIUS*3.0D0
860:          ELSE IF (CAPSID) THEN852:          ELSE IF (CAPSID) THEN
861:             RADIUS=RADIUS*RAD*1.5D0853:             RADIUS=RADIUS*RAD*1.5D0


r30229/keywords.f 2016-04-05 12:30:11.296628426 +0100 r30228/keywords.f 2016-04-05 12:30:12.812648549 +0100
1106:       CUDAPOT=' '1106:       CUDAPOT=' '
1107:       CUDATIMET=.FALSE.1107:       CUDATIMET=.FALSE.
1108:       GCBHT=.FALSE.1108:       GCBHT=.FALSE.
1109:       SEMIGRAND_MUT=.FALSE.1109:       SEMIGRAND_MUT=.FALSE.
1110:       USEROT=.FALSE.1110:       USEROT=.FALSE.
1111:       GCMU=0.0D01111:       GCMU=0.0D0
1112:       GCNATOMS=11112:       GCNATOMS=1
1113:       GCINT=1001113:       GCINT=100
1114:       GCRELAX=10*GCINT1114:       GCRELAX=10*GCINT
1115:       GCPLUS=0.5D01115:       GCPLUS=0.5D0
1116:       DJWRBT=.FALSE.1116: 
1117: !1117: !
1118: ! Neural network potential1118: ! Neural network potential
1119: !1119: !
1120:       MLP3T=.FALSE.1120:       MLP3T=.FALSE.
1121:       MLPB3T=.FALSE.1121:       MLPB3T=.FALSE.
1122:       MLPNEWREG=.FALSE. 
1123:       MLPDONE=.FALSE.1122:       MLPDONE=.FALSE.
1124:       MLPNORM=.FALSE.1123:       MLPNORM=.FALSE.
1125:       MLPLAMBDA=0.0D01124:       MLPLAMBDA=0.0D0
1126:       1125:       
1127:       CALL FILE_OPEN('data', DATA_UNIT, .FALSE.)1126:       CALL FILE_OPEN('data', DATA_UNIT, .FALSE.)
1128:       1127:       
1129: !      OPEN (5,FILE='data',STATUS='OLD')1128: !      OPEN (5,FILE='data',STATUS='OLD')
1130: 1129: 
1131: !190   CALL INPUT(END,5)1130: !190   CALL INPUT(END,5)
1132: 190   CALL INPUT(END, DATA_UNIT)1131: 190   CALL INPUT(END, DATA_UNIT)
2096:             STOP2095:             STOP
2097:          ENDIF2096:          ENDIF
2098:    2097:    
2099:          LUNIT=GETUNIT()2098:          LUNIT=GETUNIT()
2100:          OPEN(LUNIT,FILE='MLPdata',STATUS='OLD')2099:          OPEN(LUNIT,FILE='MLPdata',STATUS='OLD')
2101:          ALLOCATE(MLPDAT(MLPDATA,MLPIN),MLPOUTCOME(MLPDATA),MLPMEAN(MLPIN))2100:          ALLOCATE(MLPDAT(MLPDATA,MLPIN),MLPOUTCOME(MLPDATA),MLPMEAN(MLPIN))
2102:          MLPMEAN(1:MLPIN)=0.0D02101:          MLPMEAN(1:MLPIN)=0.0D0
2103:          DO J1=1,MLPDATA2102:          DO J1=1,MLPDATA
2104:             READ(LUNIT,*) MLPDAT(J1,1:MLPIN),MLPOUTCOME(J1)2103:             READ(LUNIT,*) MLPDAT(J1,1:MLPIN),MLPOUTCOME(J1)
2105:             MLPOUTCOME(J1)=MLPOUTCOME(J1)+1 ! to shift the range to 1 to 42104:             MLPOUTCOME(J1)=MLPOUTCOME(J1)+1 ! to shift the range to 1 to 4
2106: !           WRITE(*,'(9G20.10,I8)') MLPDAT(J1,1:MLPIN),MLPOUTCOME(J1)2105:             WRITE(MYUNIT,'(9G20.10,I8)') MLPDAT(J1,1:MLPIN),MLPOUTCOME(J1)
2107:             DO J2=1,MLPIN2106:             DO J2=1,MLPIN
2108:                MLPMEAN(J2)=MLPMEAN(J2)+ABS(MLPDAT(J1,J2))2107:                MLPMEAN(J2)=MLPMEAN(J2)+ABS(MLPDAT(J1,J2))
2109:             ENDDO2108:             ENDDO
2110:          ENDDO2109:          ENDDO
2111:          CLOSE(LUNIT)2110:          CLOSE(LUNIT)
2112:          IF (MLPNORM) THEN2111:          IF (MLPNORM) THEN
2113:             MLPMEAN(1:MLPIN)=MLPMEAN(1:MLPIN)/MLPDATA 2112:             MLPMEAN(1:MLPIN)=MLPMEAN(1:MLPIN)/MLPDATA 
2114:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:'2113:             PRINT '(A)','keyword> Rescaling inputs by mean absolute values:'
2115:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)2114:             PRINT '(6G20.10)',MLPMEAN(1:MLPIN)
2116:             DO J1=1,MLPIN2115:             DO J1=1,MLPIN
2117:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)2116:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)
2118:             ENDDO2117:             ENDDO
2119:          ENDIF2118:          ENDIF
2120:          DEALLOCATE(MLPMEAN)2119:          DEALLOCATE(MLPMEAN)
2121:          MLPDONE=.TRUE.2120:          MLPDONE=.TRUE.
2122:       ELSE IF (WORD.EQ.'MLPNEWREG') THEN 
2123:          MLPNEWREG=.TRUE. 
2124:          WRITE(MYUNIT,'(A)') 'keyword> Including reciprocals in regularisation' 
2125: !2121: !
2126: ! MLPNORM directs OPTIM to rescale the input data columns by dividing each one by the2122: ! MLPNORM directs OPTIM to rescale the input data columns by dividing each one by the
2127: ! average of the mean magnitude2123: ! average of the mean magnitude
2128: ! Arranged so that MLPNORM can come before of after MLPB3/MLP32124: ! Arranged so that MLPNORM can come before of after MLPB3/MLP3
2129: !2125: !
2130:       ELSE IF (WORD.EQ.'MLPNORM') THEN2126:       ELSE IF (WORD.EQ.'MLPNORM') THEN
2131:          MLPNORM=.TRUE.2127:          MLPNORM=.TRUE.
2132:          IF (MLPDONE) THEN2128:          IF (MLPDONE) THEN
2133:             LUNIT=GETUNIT()2129:             LUNIT=GETUNIT()
2134:             OPEN(LUNIT,FILE='MLPdata',STATUS='OLD')2130:             OPEN(LUNIT,FILE='MLPdata',STATUS='OLD')
2147:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)2143:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)
2148:             DO J1=1,MLPIN2144:             DO J1=1,MLPIN
2149:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)2145:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)
2150:             ENDDO2146:             ENDDO
2151:             DEALLOCATE(MLPMEAN)2147:             DEALLOCATE(MLPMEAN)
2152:          ENDIF2148:          ENDIF
2153:       ELSE IF(WORD.EQ.'MODEL1') THEN2149:       ELSE IF(WORD.EQ.'MODEL1') THEN
2154:          MODEL1T=.TRUE.2150:          MODEL1T=.TRUE.
2155:          CALL READF(ME1)2151:          CALL READF(ME1)
2156:          CALL READF(ME2)2152:          CALL READF(ME2)
2157:          CALL READF(ME3)2153:           CALL READF(ME3)
2158:          CALL READF(MSTART)2154:          CALL READF(MSTART)
2159:          CALL READF(MFINISH)2155:          CALL READF(MFINISH)
2160:          CALL READF(MBSTART1)2156:          CALL READF(MBSTART1)
2161:          CALL READF(MBFINISH1)2157:          CALL READF(MBFINISH1)
2162:          CALL READF(MBSTART2)2158:          CALL READF(MBSTART2)
2163:          CALL READF(MBFINISH2)2159:          CALL READF(MBFINISH2)
2164:          CALL READF(MBHEIGHT1)2160:          CALL READF(MBHEIGHT1)
2165:          CALL READF(MBHEIGHT2)2161:          CALL READF(MBHEIGHT2)
2166:       ELSE IF(WORD.EQ.'MONITOR') THEN2162:       ELSE IF(WORD.EQ.'MONITOR') THEN
2167:          MONITORT=.TRUE.2163:          MONITORT=.TRUE.
3092: !3088: !
3093: !  NOT DOCUMENTED - INTENTIONAL3089: !  NOT DOCUMENTED - INTENTIONAL
3094: !3090: !
3095:       ELSE IF (WORD.EQ.'DIFFRACT') THEN3091:       ELSE IF (WORD.EQ.'DIFFRACT') THEN
3096:          DIFFRACTT=.TRUE.3092:          DIFFRACTT=.TRUE.
3097: 3093: 
3098:       ELSE IF (WORD.EQ.'DIPOLES') THEN3094:       ELSE IF (WORD.EQ.'DIPOLES') THEN
3099:          DIPOLE=.TRUE.3095:          DIPOLE=.TRUE.
3100:       ELSE IF (WORD.EQ.'DISTOPT') THEN3096:       ELSE IF (WORD.EQ.'DISTOPT') THEN
3101:          DISTOPT=.TRUE.3097:          DISTOPT=.TRUE.
3102:       ELSE IF (WORD.EQ.'DJWRB') THEN 
3103:          DJWRBT=.TRUE. 
3104:          CALL READI(DJWRBID) 
3105:          IF (DJWRBID /= 1) THEN 
3106:             PRINT *, 'DJWRB id ',DJWRBID,' unknown' 
3107:             STOP 
3108:          ENDIF 
3109: !3098: !
3110: !  NOT DOCUMENTED - INTENTIONAL3099: !  NOT DOCUMENTED - INTENTIONAL
3111: !3100: !
3112:       ELSE IF (WORD.EQ.'DL_POLY') THEN3101:       ELSE IF (WORD.EQ.'DL_POLY') THEN
3113:          DL_POLY=.TRUE.3102:          DL_POLY=.TRUE.
3114:          CALL READI(NATOMS)3103:          CALL READI(NATOMS)
3115: 3104: 
3116: ! vr274> Uses DMACRYS for potential calculations3105: ! vr274> Uses DMACRYS for potential calculations
3117:       ELSE IF (WORD.EQ.'DMACRYS') THEN3106:       ELSE IF (WORD.EQ.'DMACRYS') THEN
3118:          DMACRYST=.true.3107:          DMACRYST=.true.


r30229/MLPB3.f90 2016-04-05 12:30:10.420616800 +0100 r30228/MLPB3.f90 2016-04-05 12:30:11.920636667 +0100
313:             ENDDO313:             ENDDO
314:          ENDDO314:          ENDDO
315:       ENDDO315:       ENDDO
316:    ENDIF316:    ENDIF
317: ENDDO317: ENDDO
318: 318: 
319: DUMMY1=0.0D0319: DUMMY1=0.0D0
320: DO J1=1,NMLP-1320: DO J1=1,NMLP-1
321:    DUMMY1=DUMMY1+X(J1)**2321:    DUMMY1=DUMMY1+X(J1)**2
322: ENDDO322: ENDDO
323: IF (MLPNEWREG) THEN 
324:    DO J1=1,NMLP-1 
325:       DUMMY1=DUMMY1+1.0D0/MAX(1.0D-100,X(J1)**2) 
326:    ENDDO 
327: ENDIF 
328: 323: 
329: ENERGY=ENERGY/MLPDATA + MLPLAMBDA*DUMMY1324: ENERGY=ENERGY/MLPDATA + MLPLAMBDA*DUMMY1
330: ! IF (DEBUG) WRITE(*,'(A,G20.10)') 'MLP3> objective function=',ENERGY325: ! IF (DEBUG) WRITE(*,'(A,G20.10)') 'MLP3> objective function=',ENERGY
331: 326: 
332: IF (GTEST) V(1:NMLP)=V(1:NMLP)/MLPDATA 327: IF (GTEST) V(1:NMLP)=V(1:NMLP)/MLPDATA 
333: IF (GTEST) V(1:NMLP-1)=V(1:NMLP-1) + 2.0D0*MLPLAMBDA*X(1:NMLP-1)328: IF (GTEST) V(1:NMLP-1)=V(1:NMLP-2) + 2.0D0*MLPLAMBDA*X(1:NMLP-1)
334: IF (GTEST.AND.MLPNEWREG)  V(1:NMLP-1)=V(1:NMLP-1) - 2.0D0*MLPLAMBDA/X(1:NMLP-1)**3 
335: !329: !
336: ! Symmetrise Hessian here330: ! Symmetrise Hessian here
337: !331: !
338: IF (SECT) HESS(1:NMLP,1:NMLP)=HESS(1:NMLP,1:NMLP)/MLPDATA332: IF (SECT) HESS(1:NMLP,1:NMLP)=HESS(1:NMLP,1:NMLP)/MLPDATA
339: IF (SECT) THEN333: IF (SECT) THEN
340:    DO J1=1,NMLP-1334:    DO J1=1,NMLP-1
341:       HESS(J1,J1)=HESS(J1,J1)+2*MLPLAMBDA335:       HESS(J1,J1)=HESS(J1,J1)+2*MLPLAMBDA
342:       IF (MLPNEWREG) HESS(J1,J1)=HESS(J1,J1)+6.0D0*MLPLAMBDA/MAX(1.0D-100,X(J1)**4) 
343:    ENDDO336:    ENDDO
344:    DO J1=1,NMLP337:    DO J1=1,NMLP
345:       DO J2=1,J1-1338:       DO J2=1,J1-1
346:          HESS(J2,J1)=HESS(J1,J2)339:          HESS(J2,J1)=HESS(J1,J2)
347:       ENDDO340:       ENDDO
348:    ENDDO341:    ENDDO
349: ENDIF342: ENDIF
350: 343: 
351: END SUBROUTINE MLPB3344: END SUBROUTINE MLPB3


r30229/potential.f90 2016-04-05 12:30:11.504631182 +0100 r30228/potential.f90 2016-04-05 12:30:13.036651522 +0100
658:       CALL PBGLUE(X, GRAD, EREAL, GRADT)658:       CALL PBGLUE(X, GRAD, EREAL, GRADT)
659:    659:    
660:    ELSE IF (FST) THEN660:    ELSE IF (FST) THEN
661:       CALL RAD(X, GRAD, EREAL, GRADT)661:       CALL RAD(X, GRAD, EREAL, GRADT)
662:       CALL FS(X, GRAD, EREAL, GRADT)662:       CALL FS(X, GRAD, EREAL, GRADT)
663: 663: 
664:    ELSE IF (BGUPTAT) THEN664:    ELSE IF (BGUPTAT) THEN
665:       CALL RAD(X, GRAD, EREAL, GRADT)665:       CALL RAD(X, GRAD, EREAL, GRADT)
666:       CALL BGUPTA(X, GRAD, EREAL, GRADT)666:       CALL BGUPTA(X, GRAD, EREAL, GRADT)
667: 667: 
668:    ELSE IF (DJWRBT) THEN 
669:       IF (DJWRBID.EQ.1) THEN 
670:          IF (.NOT. ATOMRIGIDCOORDT) THEN 
671:             XRIGIDCOORDS(1:DEGFREEDOMS)=X(1:DEGFREEDOMS) 
672:             CALL TRANSFORMRIGIDTOC(1, NRIGIDBODY, X, XRIGIDCOORDS) 
673:          ENDIF 
674:          CALL DJWGR1(NATOMS,X,GRAD,EREAL,GRADT) 
675:          IF (.NOT.ATOMRIGIDCOORDT) THEN 
676:              X(DEGFREEDOMS+1:3*NATOMS)=0.0D0 
677:              X(1:DEGFREEDOMS)=XRIGIDCOORDS(1:DEGFREEDOMS) 
678:              IF (GRADT) THEN 
679:                 CALL TRANSFORMGRAD(GRAD, XRIGIDCOORDS, XRIGIDGRAD) 
680:                 GRAD(DEGFREEDOMS+1:3*NATOMS)=0.0D0 
681:                 GRAD(1:DEGFREEDOMS)=XRIGIDGRAD(1:DEGFREEDOMS) 
682:              ENDIF 
683:          ENDIF 
684:       ENDIF 
685:    ELSE IF (MGUPTAT) THEN668:    ELSE IF (MGUPTAT) THEN
686:       CALL RAD(X, GRAD, EREAL, GRADT)669:       CALL RAD(X, GRAD, EREAL, GRADT)
687:       CALL MGUPTA(X, GRAD, EREAL, GRADT, SECT, .FALSE.)670:       CALL MGUPTA(X, GRAD, EREAL, GRADT, SECT, .FALSE.)
688:       ! Testing...671:       ! Testing...
689:       !ds656> Test gradient and Hessian672:       !ds656> Test gradient and Hessian
690:       IF (SECT.AND..FALSE.) THEN673:       IF (SECT.AND..FALSE.) THEN
691:          DIFF=1.0D-5674:          DIFF=1.0D-5
692:          PRINT*,SECT675:          PRINT*,SECT
693:          PRINT*,'analytic and numerical gradients:'676:          PRINT*,'analytic and numerical gradients:'
694:          DO J1=1,3*NATOMS677:          DO J1=1,3*NATOMS


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0