hdiff output

r31325/commons.f90 2016-10-16 20:30:12.660552185 +0100 r31324/commons.f90 2016-10-16 20:30:14.928582590 +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, MLPSTART, MLPOUT, MLPHIDDEN, MLPDATA, NMLP, DJWRBID, NHEXAMERS, QCIADDREP, QCIBONDS, QCISECOND, MQUNIT, & 42:      &        MLPIN, MLPSTART, MLPOUT, MLPHIDDEN, MLPDATA, NMLP, DJWRBID, NHEXAMERS, QCIADDREP, QCIBONDS, QCISECOND, MQUNIT
 43:      &        MLQIN, MLQSTART, MLQOUT, MLQDATA, NMLQ 
 44:   43:  
 45:       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, &
 46:      &                 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),&
 47:      &                 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, &
 48:      &                 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, &
 49:      &                 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, &
 50:      &                 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,& 
 51:      &                 TRENORM, HISTMIN, HISTMAX, HISTFAC, EPSSPHERE, FINALCUTOFF, SHELLPROB, RINGROTSCALE, & 50:      &                 TRENORM, HISTMIN, HISTMAX, HISTFAC, EPSSPHERE, FINALCUTOFF, SHELLPROB, RINGROTSCALE, &
 52:      &                 HISTFACMUL, HPERCENT, AVOIDDIST, MAXERISE, MAXEFALL, TSTART, MATDIFF, STICKYSIG, SDTOL, & 51:      &                 HISTFACMUL, HPERCENT, AVOIDDIST, MAXERISE, MAXEFALL, TSTART, MATDIFF, STICKYSIG, SDTOL, &
 53:      &                 MinimalTemperature, MaximalTemperature, SwapProb, hdistconstraint, COREFRAC, TSTAR, & 52:      &                 MinimalTemperature, MaximalTemperature, SwapProb, hdistconstraint, COREFRAC, TSTAR, &
 77:      &                 PEPSILONATTR(2),PSIGMAATTR(2), PYOVERLAPTHRESH, PYCFTHRESH, LJSITECOORDS(3), & 76:      &                 PEPSILONATTR(2),PSIGMAATTR(2), PYOVERLAPTHRESH, PYCFTHRESH, LJSITECOORDS(3), &
 78:      &                 MSTART,MFINISH,MBSTART1,MBFINISH1,MBSTART2,MBFINISH2,MBHEIGHT1,MBHEIGHT2,ME1,ME2,ME3, & 77:      &                 MSTART,MFINISH,MBSTART1,MBFINISH1,MBSTART2,MBFINISH2,MBHEIGHT1,MBHEIGHT2,ME1,ME2,ME3, &
 79:      &                 BSPTQMAX, BSPTQMIN, PFORCE, CSMNORM, CSMGUIDENORM, CSMEPS, PERCCUT, & 78:      &                 BSPTQMAX, BSPTQMIN, PFORCE, CSMNORM, CSMGUIDENORM, CSMEPS, PERCCUT, &
 80:      &                 LOWESTE, PERTSTEP, GCPLUS, & 79:      &                 LOWESTE, PERTSTEP, GCPLUS, &
 81:      &                 KINT, INTFREEZETOL, IMSEPMIN, IMSEPMAX, CONCUTABS, CONCUTFRAC, & 80:      &                 KINT, INTFREEZETOL, IMSEPMIN, IMSEPMAX, CONCUTABS, CONCUTFRAC, &
 82:      &                 LPDGEOMDIFFTOL, INTCONFRAC, MAXCONE, INTRMSTOL, BFGSTSTOL, ORBITTOL, & 81:      &                 LPDGEOMDIFFTOL, INTCONFRAC, MAXCONE, INTRMSTOL, BFGSTSTOL, ORBITTOL, &
 83:      &                 INTCONSTRAINTTOL, INTCONSTRAINTDEL, RBCUTOFF, INTCONSTRAINTREP, INTCONSTRAINREPCUT, & 82:      &                 INTCONSTRAINTTOL, INTCONSTRAINTDEL, RBCUTOFF, INTCONSTRAINTREP, INTCONSTRAINREPCUT, &
 84:      &                 INTLJTOL, INTLJDEL, INTLJEPS, REPCON, INTDGUESS, CHECKREPCUTOFF, INTMINFAC, FREEZETOL, & 83:      &                 INTLJTOL, INTLJDEL, INTLJEPS, REPCON, INTDGUESS, CHECKREPCUTOFF, INTMINFAC, FREEZETOL, &
 85:      &                 LOCALPERMCUT, LOCALPERMCUT2, INTCONCUT, QCIRADSHIFT, MLPLAMBDA, & 84:      &                 LOCALPERMCUT, LOCALPERMCUT2, INTCONCUT, QCIRADSHIFT, MLPLAMBDA, &
 86:      &                 CAPSIDRHO,CAPSIDEPS,SIGMAPENT,RADPENT,SIGMAHEX,RADHEX,SIGMAPH, KLIM, SCA, & 85:      &                 CAPSIDRHO,CAPSIDEPS,SIGMAPENT,RADPENT,SIGMAHEX,RADHEX,SIGMAPH, KLIM, SCA, &
 87:      &                 QCIADDREPCUT, QCIADDREPEPS, MLQLAMBDA 86:      &                 QCIADDREPCUT, QCIADDREPEPS
 88:  87: 
 89:       LOGICAL DEBUG, TARGET, MORSET, CUTT, SEEDT, CENT, TSALLIST, FREEZECORE, NEWJUMP, RENORM, CAPSID, FREEZE, & 88:       LOGICAL DEBUG, TARGET, MORSET, CUTT, SEEDT, CENT, TSALLIST, FREEZECORE, NEWJUMP, RENORM, CAPSID, FREEZE, &
 90:      &        OTPT, LJMFT, STRANDT, PAHT, SWT, MSTRANST, STOCKT, STICKYT, BLNT, MYSDT, FREEZERES, CENTXY, & 89:      &        OTPT, LJMFT, STRANDT, PAHT, SWT, MSTRANST, STOCKT, STICKYT, BLNT, MYSDT, FREEZERES, CENTXY, &
 91:      &        MSORIGT, SQUEEZET, PERIODIC, SCT, MSCT, MGUPTAT, RESIZET, TIP, RIGID, CALCQT, MPIT, GBHT, JMT, LJCOULT, SETCENT, & 90:      &        MSORIGT, SQUEEZET, PERIODIC, SCT, MSCT, MGUPTAT, RESIZET, TIP, RIGID, CALCQT, MPIT, GBHT, JMT, LJCOULT, SETCENT, &
 92:      &        SORTT, HIT, SAVEQ, PARALLELT, FIXD, RKMIN, BSMIN, PERMDIST, PERMOPT, BSWL, BSPT, BSPTRESTART, & 91:      &        SORTT, HIT, SAVEQ, PARALLELT, FIXD, RKMIN, BSMIN, PERMDIST, PERMOPT, BSWL, BSPT, BSPTRESTART, &
 93:      &        SYMMETRIZE, SYMMETRIZECSM, PRINT_PTGRP, PRINT_MINDATA, DUMPT, NEON, ARGON, P46, NORESET, TABOOT, EVSTEPT, PACHECO, DL_POLY, QUCENTRE, & 92:      &        SYMMETRIZE, SYMMETRIZECSM, PRINT_PTGRP, PRINT_MINDATA, DUMPT, NEON, ARGON, P46, NORESET, TABOOT, EVSTEPT, PACHECO, DL_POLY, QUCENTRE, &
 94:      &        STAR, PLUS, TWOPLUS, GROUND, DIPOLE, DFTBT, DFTBCT, SW, SUPERSTEP, EAMLJT, PBGLUET, TRACKDATAT, & 93:      &        STAR, PLUS, TWOPLUS, GROUND, DIPOLE, DFTBT, DFTBCT, SW, SUPERSTEP, EAMLJT, PBGLUET, TRACKDATAT, &
 95:      &        EAMALT, ALGLUET, MGGLUET, GUPTAT, LJATT, FST, DECAY, COOP, FIXBIN, GAUSST, QUENCHDOS, FIXDIHEFLAG, & 94:      &        EAMALT, ALGLUET, MGGLUET, GUPTAT, LJATT, FST, DECAY, COOP, FIXBIN, GAUSST, QUENCHDOS, FIXDIHEFLAG, &
 96:      &        FRAUSIT, ANGST, SELFT, STEPOUT, WENZEL, THRESHOLDT, THOMSONT, MULLERBROWNT, CHARMMENERGIES, & 95:      &        FRAUSIT, ANGST, SELFT, STEPOUT, WENZEL, THRESHOLDT, THOMSONT, MULLERBROWNT, CHARMMENERGIES, &
 97:      &        PROJ, RGCL2, TOSI, WELCH, AXTELL, AMBER, FIXIMAGE, BINARY, SHIFTCUT, ARNO, TUNNELT, TWOD, &  96:      &        PROJ, RGCL2, TOSI, WELCH, AXTELL, AMBER, FIXIMAGE, BINARY, SHIFTCUT, ARNO, TUNNELT, TWOD, & 
112:      &        CHARMMDFTBT, PERMINVOPT, BLOCKMOVET, MAXERISE_SET, PYT, BINARY_EXAB, CHIROT, SANDBOXT, &111:      &        CHARMMDFTBT, PERMINVOPT, BLOCKMOVET, MAXERISE_SET, PYT, BINARY_EXAB, CHIROT, SANDBOXT, &
113:      &        RESERVOIRT, DISTOPT, ONEDAPBCT, ONEDPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, THREEDPBCT, RATIOT, &112:      &        RESERVOIRT, DISTOPT, ONEDAPBCT, ONEDPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, THREEDPBCT, RATIOT, &
114:      &        PTRANDOM, PTINTERVAL, PTSINGLE, PTSETS, CHEMSHIFT, CHEMSHIFT2, CSH, DEBUGss2029, UNIFORMMOVE, RANSEEDT, &113:      &        PTRANDOM, PTINTERVAL, PTSINGLE, PTSETS, CHEMSHIFT, CHEMSHIFT2, CSH, DEBUGss2029, UNIFORMMOVE, RANSEEDT, &
115:      &        TTM3T, NOINVERSION, RIGIDCONTOURT, UPDATERIGIDREFT, HYBRIDMINT, COMPRESSRIGIDT, MWFILMT, &114:      &        TTM3T, NOINVERSION, RIGIDCONTOURT, UPDATERIGIDREFT, HYBRIDMINT, COMPRESSRIGIDT, MWFILMT, &
116:      &        SUPPRESST, MFETT, POLIRT, QUIPT, SWPOTT, MWPOTT, REPMATCHT, GLJT, MLJT, READMASST, SPECMASST, NEWTSALLIST, &115:      &        SUPPRESST, MFETT, POLIRT, QUIPT, SWPOTT, MWPOTT, REPMATCHT, GLJT, MLJT, READMASST, SPECMASST, NEWTSALLIST, &
117:      &        PHI4MODELT, CUDAT, CUDATIMET, AMBER12T, ENERGY_DECOMPT, NEWMOVEST, DUMPMINT, MBPOLT, MOLECULART, GCBHT, SEMIGRAND_MUT, USEROT, & 116:      &        PHI4MODELT, CUDAT, CUDATIMET, AMBER12T, ENERGY_DECOMPT, NEWMOVEST, DUMPMINT, MBPOLT, MOLECULART, GCBHT, SEMIGRAND_MUT, USEROT, & 
118:      &        SAVEMULTIMINONLY, GRADPROBLEMT, INTLJT, CONDATT, QCIPERMCHECK, &117:      &        SAVEMULTIMINONLY, GRADPROBLEMT, INTLJT, CONDATT, QCIPERMCHECK, &
119:      &        INTCONSTRAINTT, INTFREEZET, CHECKCONINT, CONCUTABST, CONCUTFRACT, INTERPCOSTFUNCTION, &118:      &        INTCONSTRAINTT, INTFREEZET, CHECKCONINT, CONCUTABST, CONCUTFRACT, INTERPCOSTFUNCTION, &
120:      &        RBAAT, FREEZENODEST, DUMPINTEOS, DUMPINTXYZ, QCIPOTT, QCIPOT2T, INTSPRINGACTIVET, LPERMDIST, LOCALPERMDIST, QCIRADSHIFTT, &119:      &        RBAAT, FREEZENODEST, DUMPINTEOS, DUMPINTXYZ, QCIPOTT, QCIPOT2T, INTSPRINGACTIVET, LPERMDIST, LOCALPERMDIST, QCIRADSHIFTT, &
121:      &        MLP3T, MKTRAPT, MLPB3T, MLPB3NEWT, MULTIPOTT, QCIAMBERT, MLPNEWREG, DJWRBT, STEALTHYT, LJADDT, QCINOREPINT, RIGIDMDT, &120:      &        MLP3T, MKTRAPT, MLPB3T, MLPB3NEWT, MULTIPOTT, QCIAMBERT, MLPNEWREG, DJWRBT, STEALTHYT, LJADDT, QCINOREPINT, RIGIDMDT, &
122:      &        DUMPMQT, MLQT, MLQPROB121:      &        DUMPMQT
123: !122: !
124:       DOUBLE PRECISION, ALLOCATABLE :: SEMIGRAND_MU(:) 123:       DOUBLE PRECISION, ALLOCATABLE :: SEMIGRAND_MU(:) 
125:       DOUBLE PRECISION, ALLOCATABLE :: ATMASS(:)124:       DOUBLE PRECISION, ALLOCATABLE :: ATMASS(:)
126:       DOUBLE PRECISION, ALLOCATABLE :: SPECMASS(:) 125:       DOUBLE PRECISION, ALLOCATABLE :: SPECMASS(:) 
127: 126: 
128: ! csw34> FREEZEGROUP variables127: ! csw34> FREEZEGROUP variables
129: !128: !
130:       INTEGER :: GROUPCENTRE129:       INTEGER :: GROUPCENTRE
131:       DOUBLE PRECISION :: GROUPRADIUS130:       DOUBLE PRECISION :: GROUPRADIUS
132:       CHARACTER (LEN=2) :: FREEZEGROUPTYPE131:       CHARACTER (LEN=2) :: FREEZEGROUPTYPE
632:       INTEGER, ALLOCATABLE :: CONI(:), CONJ(:), CONION(:), CONJON(:)631:       INTEGER, ALLOCATABLE :: CONI(:), CONJ(:), CONION(:), CONJON(:)
633:       INTEGER, ALLOCATABLE :: CONIFIX(:), CONJFIX(:), REPIFIX(:), REPJFIX(:)632:       INTEGER, ALLOCATABLE :: CONIFIX(:), CONJFIX(:), REPIFIX(:), REPJFIX(:)
634:       INTEGER, ALLOCATABLE :: REPI(:), REPJ(:)633:       INTEGER, ALLOCATABLE :: REPI(:), REPJ(:)
635:       INTEGER, ALLOCATABLE :: CPCONI(:), CPCONJ(:)634:       INTEGER, ALLOCATABLE :: CPCONI(:), CPCONJ(:)
636:       INTEGER, ALLOCATABLE :: CPREPI(:), CPREPJ(:)635:       INTEGER, ALLOCATABLE :: CPREPI(:), CPREPJ(:)
637:       DOUBLE PRECISION, ALLOCATABLE :: REPCUT(:), NREPCUT(:), CPREPCUT(:), REPCUTFIX(:)636:       DOUBLE PRECISION, ALLOCATABLE :: REPCUT(:), NREPCUT(:), CPREPCUT(:), REPCUTFIX(:)
638:       INTEGER, ALLOCATABLE :: NREPI(:), NREPJ(:)637:       INTEGER, ALLOCATABLE :: NREPI(:), NREPJ(:)
639:       LOGICAL, ALLOCATABLE, DIMENSION(:) :: INTFROZEN  !  MXATMS638:       LOGICAL, ALLOCATABLE, DIMENSION(:) :: INTFROZEN  !  MXATMS
640:       DOUBLE PRECISION, ALLOCATABLE ::  MLPDAT(:,:)639:       DOUBLE PRECISION, ALLOCATABLE ::  MLPDAT(:,:)
641:       INTEGER, ALLOCATABLE ::  MLPOUTCOME(:)640:       INTEGER, ALLOCATABLE ::  MLPOUTCOME(:)
642:       DOUBLE PRECISION, ALLOCATABLE ::  MLQDAT(:,:) 
643:       INTEGER, ALLOCATABLE ::  MLQOUTCOME(:) 
644:  
645:       INTEGER, DIMENSION(:,:), ALLOCATABLE :: BONDS !for QCIAMBER641:       INTEGER, DIMENSION(:,:), ALLOCATABLE :: BONDS !for QCIAMBER
646: 642: 
647: END MODULE COMMONS643: END MODULE COMMONS


r31325/finalio.f90 2016-10-16 20:30:12.916555616 +0100 r31324/finalio.f90 2016-10-16 20:30:15.188586073 +0100
723:         ENDDO723:         ENDDO
724:         724:         
725:      ELSE IF (GBT.OR.GBDT.OR.GBDPT.OR.MSGBT) THEN725:      ELSE IF (GBT.OR.GBDT.OR.GBDPT.OR.MSGBT) THEN
726:         DO J2 = 1, NATOMS/2726:         DO J2 = 1, NATOMS/2
727:            WRITE(MYUNIT2,'(3f20.10)') (QMINP(J1,3*(J2-1)+J3),J3=1,3)727:            WRITE(MYUNIT2,'(3f20.10)') (QMINP(J1,3*(J2-1)+J3),J3=1,3)
728:         ENDDO728:         ENDDO
729:         DO J2 = 1, NATOMS/2729:         DO J2 = 1, NATOMS/2
730:            WRITE(MYUNIT2,'(3f20.10)') (QMINP(J1,3*NATOMS/2+3*(J2-1)+J3),J3=1,3)730:            WRITE(MYUNIT2,'(3f20.10)') (QMINP(J1,3*NATOMS/2+3*(J2-1)+J3),J3=1,3)
731:         ENDDO731:         ENDDO
732:         732:         
733:      ELSE IF (MLP3T.OR.MLPB3T.OR.MLQT) THEN733:      ELSE IF (MLP3T.OR.MLPB3T) THEN
734:         DO J2 = 1, NATOMS734:         DO J2 = 1, NATOMS
735:            WRITE(MYUNIT2,'(3G20.10)') QMINP(J1,J2)735:            WRITE(MYUNIT2,'(3G20.10)') QMINP(J1,J2)
736:         ENDDO736:         ENDDO
737:         737:         
738:      ELSE IF (GEMT) THEN738:      ELSE IF (GEMT) THEN
739:         DO J2 = 1, NATOMS739:         DO J2 = 1, NATOMS
740:            WRITE(MYUNIT2,'(3f20.10)') (QMINP(J1,3*(J2-1)+J3),J3=1,3)740:            WRITE(MYUNIT2,'(3f20.10)') (QMINP(J1,3*(J2-1)+J3),J3=1,3)
741:         ENDDO741:         ENDDO
742:         742:         
743:      ELSE IF (BLNT.AND.(.NOT.P46).AND.(.NOT.G46)) THEN743:      ELSE IF (BLNT.AND.(.NOT.P46).AND.(.NOT.G46)) THEN


r31325/io1.f 2016-10-16 20:30:13.172559049 +0100 r31324/io1.f 2016-10-16 20:30:15.448589560 +0100
108:                   CALL READF(COORDS(J2+3,JP))108:                   CALL READF(COORDS(J2+3,JP))
109:                ENDDO109:                ENDDO
110:             ENDDO110:             ENDDO
111:          ELSEIF (MLP3T) THEN ! for this neural net it is one variable per line111:          ELSEIF (MLP3T) THEN ! for this neural net it is one variable per line
112:             REWIND(COORDS_UNIT)112:             REWIND(COORDS_UNIT)
113:             DO JP=1,NPAR113:             DO JP=1,NPAR
114:                DO J1=1,NATOMS114:                DO J1=1,NATOMS
115:                    READ(COORDS_UNIT,*) COORDS(J1,JP)115:                    READ(COORDS_UNIT,*) COORDS(J1,JP)
116:                ENDDO116:                ENDDO
117:             ENDDO117:             ENDDO
118:          ELSEIF (MLQT) THEN ! for this ML it is one variable per line 
119:             REWIND(COORDS_UNIT) 
120:             DO JP=1,NPAR 
121:                DO J1=1,NATOMS 
122:                    READ(COORDS_UNIT,*) COORDS(J1,JP) 
123:                ENDDO 
124:             ENDDO 
125:          ELSE118:          ELSE
126:             REWIND(COORDS_UNIT)119:             REWIND(COORDS_UNIT)
127:             DO JP=1,NPAR120:             DO JP=1,NPAR
128:                DO J1=1,NATOMS121:                DO J1=1,NATOMS
129:                   J2=3*(J1-1)122:                   J2=3*(J1-1)
130:                    READ(COORDS_UNIT,*) COORDS(J2+1,JP), COORDS(J2+2,JP), COORDS(J2+3,JP)123:                    READ(COORDS_UNIT,*) COORDS(J2+1,JP), COORDS(J2+2,JP), COORDS(J2+3,JP)
131:                ENDDO124:                ENDDO
132:             ENDDO125:             ENDDO
133:          ENDIF126:          ENDIF
134:          CLOSE(COORDS_UNIT)127:          CLOSE(COORDS_UNIT)
193:          ENDDO186:          ENDDO
194:       ENDIF187:       ENDIF
195: 188: 
196:       IF (.NOT.SEEDT.AND..NOT.AMHT.AND..NOT.SUPPRESST) THEN189:       IF (.NOT.SEEDT.AND..NOT.AMHT.AND..NOT.SUPPRESST) THEN
197:          WRITE(MYUNIT,20) 190:          WRITE(MYUNIT,20) 
198: 20       FORMAT('Initial coordinates:')191: 20       FORMAT('Initial coordinates:')
199:          IF (MPIT) THEN192:          IF (MPIT) THEN
200:             WRITE(MYUNIT,30) (COORDS(J1,MYNODE+1),J1=1,3*NATOMS)193:             WRITE(MYUNIT,30) (COORDS(J1,MYNODE+1),J1=1,3*NATOMS)
201:          ELSEIF (MLP3T) THEN 194:          ELSEIF (MLP3T) THEN 
202:             WRITE(MYUNIT,'(G20.10)') (COORDS(J1,MYNODE+1),J1=1,NATOMS)195:             WRITE(MYUNIT,'(G20.10)') (COORDS(J1,MYNODE+1),J1=1,NATOMS)
203:          ELSEIF (MLQT) THEN  
204:             WRITE(MYUNIT,'(G20.10)') (COORDS(J1,MYNODE+1),J1=1,NATOMS) 
205:          ELSE 196:          ELSE 
206:            DO JP=1,NPAR197:            DO JP=1,NPAR
207:                WRITE(MYUNIT,30) (COORDS(J1,JP),J1=1,3*NATOMS)198:                WRITE(MYUNIT,30) (COORDS(J1,JP),J1=1,3*NATOMS)
208: 30             FORMAT(3F20.10)199: 30             FORMAT(3F20.10)
209:             ENDDO200:             ENDDO
210:          ENDIF201:          ENDIF
211:       ENDIF202:       ENDIF
212: 203: 
213:       IF (MSORIGT) THEN204:       IF (MSORIGT) THEN
214:          WRITE(MYUNIT,'(I4,A)') NATOMS,' M and S silicon atoms'205:          WRITE(MYUNIT,'(I4,A)') NATOMS,' M and S silicon atoms'
706:          WRITE(MYUNIT,'(I4,A)') NATOMS,' MK trapped ions'697:          WRITE(MYUNIT,'(I4,A)') NATOMS,' MK trapped ions'
707:       ELSEIF (DJWRBT) THEN698:       ELSEIF (DJWRBT) THEN
708:          IF (DJWRBID.EQ.1) THEN699:          IF (DJWRBID.EQ.1) THEN
709:             WRITE(MYUNIT,'(3(I4,A))') NATOMS,' sites for ',NRIGIDBODY,' rigid bodies - DJW potential ',DJWRBID700:             WRITE(MYUNIT,'(3(I4,A))') NATOMS,' sites for ',NRIGIDBODY,' rigid bodies - DJW potential ',DJWRBID
710:             WRITE(MYUNIT,'(2(I4,A))') NRIGIDBODY-NHEXAMERS,' pentamers and ',NHEXAMERS,' hexamers'701:             WRITE(MYUNIT,'(2(I4,A))') NRIGIDBODY-NHEXAMERS,' pentamers and ',NHEXAMERS,' hexamers'
711:             WRITE(MYUNIT,'(A,4G20.10)') 'rho, eps, sigma and pentamer radius=',CAPSIDRHO,CAPSIDEPS,SIGMAPENT,RADPENT702:             WRITE(MYUNIT,'(A,4G20.10)') 'rho, eps, sigma and pentamer radius=',CAPSIDRHO,CAPSIDEPS,SIGMAPENT,RADPENT
712:             WRITE(MYUNIT,'(A,4G20.10)') 'hexamer sigma, radius and hex/pent sigma=',SIGMAHEX,RADHEX,SIGMAPH703:             WRITE(MYUNIT,'(A,4G20.10)') 'hexamer sigma, radius and hex/pent sigma=',SIGMAHEX,RADHEX,SIGMAPH
713:          ENDIF704:          ENDIF
714:       ELSEIF (MLP3T) THEN705:       ELSEIF (MLP3T) THEN
715:          WRITE(MYUNIT,'(I4,A)') NATOMS,' link weights for MLP3'706:          WRITE(MYUNIT,'(I4,A)') NATOMS,' link weights for MLP3'
716:       ELSEIF (MLQT) THEN 
717:          WRITE(MYUNIT,'(I4,A)') NATOMS,' variables for ML quadratic' 
718:       ELSE707:       ELSE
719:          WRITE(MYUNIT,'(I4,A)') NATOMS,' LJ atoms'708:          WRITE(MYUNIT,'(I4,A)') NATOMS,' LJ atoms'
720:       ENDIF709:       ENDIF
721:       IF (PYGPERIODICT.OR.PYBINARYT) CALL INITIALISEPYGPERIODIC710:       IF (PYGPERIODICT.OR.PYBINARYT) CALL INITIALISEPYGPERIODIC
722:       IF (LJCAPSIDT) CALL INITIALISELJCAPSIDMODEL711:       IF (LJCAPSIDT) CALL INITIALISELJCAPSIDMODEL
723:       IF (PYT) call py_input712:       IF (PYT) call py_input
724:       IF (INTMINT)  WRITE(MYUNIT,'(A)') 'Internal coordinate transformation will be used'713:       IF (INTMINT)  WRITE(MYUNIT,'(A)') 'Internal coordinate transformation will be used'
725:       IF (STAR) THEN714:       IF (STAR) THEN
726:          WRITE(MYUNIT,'(A)') 'Excited state'715:          WRITE(MYUNIT,'(A)') 'Excited state'
727:       ELSE IF (PLUS) THEN716:       ELSE IF (PLUS) THEN
880: !           ENDDO869: !           ENDDO
881: !            WRITE(MYUNIT, '(A,G15.5,A,G15.5)') 'Maximum step size scaled by estimated nearest neighbour distance of ',870: !            WRITE(MYUNIT, '(A,G15.5,A,G15.5)') 'Maximum step size scaled by estimated nearest neighbour distance of ',
882: !    &                    0.677441D0-0.0037582*NATOMS+9.40318D-6*NATOMS**2-6.21931D-9*NATOMS**3,' to give ',STEP(1)871: !    &                    0.677441D0-0.0037582*NATOMS+9.40318D-6*NATOMS**2-6.21931D-9*NATOMS**3,' to give ',STEP(1)
883:          ELSEIF (MULLERBROWNT) THEN 872:          ELSEIF (MULLERBROWNT) THEN 
884:             RADIUS=100.0D0873:             RADIUS=100.0D0
885:          ELSE 874:          ELSE 
886:             RADIUS=RADIUS*2.0D0**(1.0D0/6.0D0)875:             RADIUS=RADIUS*2.0D0**(1.0D0/6.0D0)
887:          ENDIF876:          ENDIF
888:       ENDIF877:       ENDIF
889:       IF ((.NOT.PERIODIC).AND.(.NOT.AMBER).AND.(.NOT.BLNT).AND.(.NOT.MULLERBROWNT).AND.(.NOT.MODEL1T).AND.(.NOT.PERCOLATET) 878:       IF ((.NOT.PERIODIC).AND.(.NOT.AMBER).AND.(.NOT.BLNT).AND.(.NOT.MULLERBROWNT).AND.(.NOT.MODEL1T).AND.(.NOT.PERCOLATET) 
890:      &                    .AND.(.NOT.QCIPOTT).AND.(.NOT.INTCONSTRAINTT).AND.(.NOT.MLP3T).AND.(.NOT.MKTRAPT).AND.(.NOT.MLQT)) 879:      &                    .AND.(.NOT.QCIPOTT).AND.(.NOT.INTCONSTRAINTT).AND.(.NOT.MLP3T).AND.(.NOT.MKTRAPT)) 
891:      1                    WRITE(MYUNIT,'(A,F20.10)') 'Container radius=',RADIUS880:      1                    WRITE(MYUNIT,'(A,F20.10)') 'Container radius=',RADIUS
892:       RADIUS=RADIUS**2881:       RADIUS=RADIUS**2
893:       IF (PERCOLATET) WRITE(MYUNIT,'(A,F20.10)') 'Checking for percolated structure, cutoff=',PERCCUT882:       IF (PERCOLATET) WRITE(MYUNIT,'(A,F20.10)') 'Checking for percolated structure, cutoff=',PERCCUT
894:       PERCCUT=PERCCUT**2883:       PERCCUT=PERCCUT**2
895:       IF (NPAR.GT.1) THEN884:       IF (NPAR.GT.1) THEN
896:          WRITE(MYUNIT,'(I2,A)') NPAR,' parallel runs'885:          WRITE(MYUNIT,'(I2,A)') NPAR,' parallel runs'
897:          IF (TABOOT) WRITE(MYUNIT,'(A,I4,A)') 'Taboo lists contain the lowest ',NTAB,' minima'886:          IF (TABOOT) WRITE(MYUNIT,'(A,I4,A)') 'Taboo lists contain the lowest ',NTAB,' minima'
898:       ELSE IF (TABOOT) THEN887:       ELSE IF (TABOOT) THEN
899:          WRITE(MYUNIT,'(A,I4,A)') 'Taboo list contains the lowest ',NTAB,' minima'888:          WRITE(MYUNIT,'(A,I4,A)') 'Taboo list contains the lowest ',NTAB,' minima'
900:       ENDIF889:       ENDIF


r31325/keywords.f 2016-10-16 20:30:13.428562481 +0100 r31324/keywords.f 2016-10-16 20:30:15.708593045 +0100
 46:       USE CHIRALITY, ONLY : CIS_TRANS_TOL 46:       USE CHIRALITY, ONLY : CIS_TRANS_TOL
 47:       USE ISO_C_BINDING, ONLY: C_NULL_CHAR 47:       USE ISO_C_BINDING, ONLY: C_NULL_CHAR
 48:       USE PARSE_POT_PARAMS, ONLY : PARSE_MGUPTA_PARAMS, PARSE_MSC_PARAMS,  48:       USE PARSE_POT_PARAMS, ONLY : PARSE_MGUPTA_PARAMS, PARSE_MSC_PARAMS, 
 49:      &     PARSE_MLJ_PARAMS 49:      &     PARSE_MLJ_PARAMS
 50:       USE ROTAMER, ONLY: ROTAMER_MOVET, ROTAMER_SCRIPT, ROTAMER_INIT 50:       USE ROTAMER, ONLY: ROTAMER_MOVET, ROTAMER_SCRIPT, ROTAMER_INIT
 51:       USE HINGE_MOVES, ONLY: HINGE_INITIALISE 51:       USE HINGE_MOVES, ONLY: HINGE_INITIALISE
 52:       USE MOLECULAR_DYNAMICS, ONLY : MDT, MD_TSTEP, MD_GAMMA, MD_NWAIT, MD_NFREQ, MD_NSTEPS 52:       USE MOLECULAR_DYNAMICS, ONLY : MDT, MD_TSTEP, MD_GAMMA, MD_NWAIT, MD_NFREQ, MD_NSTEPS
 53:        53:       
 54:       IMPLICIT NONE 54:       IMPLICIT NONE
 55:  55: 
 56:       DOUBLE PRECISION, ALLOCATABLE :: MLPMEAN(:), MLQMEAN(:) 56:       DOUBLE PRECISION, ALLOCATABLE :: MLPMEAN(:)
 57:       INTEGER ITEM, NITEMS, LOC, LINE, NCR, NERROR, LAST, IX, J1, JP, NPCOUNT, NDUMMY, INDEX, J2, J3, J4 57:       INTEGER ITEM, NITEMS, LOC, LINE, NCR, NERROR, LAST, IX, J1, JP, NPCOUNT, NDUMMY, INDEX, J2, J3, J4
 58:       INTEGER DATA_UNIT 58:       INTEGER DATA_UNIT
 59:       INTEGER MOVABLEATOMINDEX 59:       INTEGER MOVABLEATOMINDEX
 60:       LOGICAL CAT, YESNO, PERMFILE, CONFILE 60:       LOGICAL CAT, YESNO, PERMFILE, CONFILE
 61:       COMMON /BUFINF/ ITEM, NITEMS, LOC(80), LINE, SKIPBL, CLEAR, NCR, 61:       COMMON /BUFINF/ ITEM, NITEMS, LOC(80), LINE, SKIPBL, CLEAR, NCR,
 62:      &                NERROR, ECHO, LAST, CAT 62:      &                NERROR, ECHO, LAST, CAT
 63:        DOUBLE PRECISION XX, ROH, ROM, WTHETA  63:        DOUBLE PRECISION XX, ROH, ROM, WTHETA 
 64:       LOGICAL END, SKIPBL, CLEAR, ECHO 64:       LOGICAL END, SKIPBL, CLEAR, ECHO
 65:       CHARACTER WORD*16,PBC*3,WORD2*10 65:       CHARACTER WORD*16,PBC*3,WORD2*10
 66:       DOUBLE PRECISION EAMLJA0, EAMLJBETA, EAMLJZ0, DUMMY 66:       DOUBLE PRECISION EAMLJA0, EAMLJBETA, EAMLJZ0, DUMMY
 67:       COMMON /EAMLJCOMM/ EAMLJA0, EAMLJBETA, EAMLJZ0 67:       COMMON /EAMLJCOMM/ EAMLJA0, EAMLJBETA, EAMLJZ0
 68:       DOUBLE PRECISION SLENGTH, EPS 68:       DOUBLE PRECISION SLENGTH, EPS
 69:       INTEGER NOK, NBAD 69:       INTEGER NOK, NBAD
 70:       COMMON /BSNEW/ SLENGTH, NOK, NBAD, EPS 70:       COMMON /BSNEW/ SLENGTH, NOK, NBAD, EPS
 71:       DOUBLE PRECISION EPS2, RAD, HEIGHT 71:       DOUBLE PRECISION EPS2, RAD, HEIGHT
 72:       COMMON /CAPS/ EPS2, RAD, HEIGHT 72:       COMMON /CAPS/ EPS2, RAD, HEIGHT
 73:  73: 
 74:       LOGICAL MLPDONE, MLPNORM, MLQDONE, MLQNORM 74:       LOGICAL MLPDONE, MLPNORM
 75: !     LOGICAL IGNOREBIN(HISTBINMAX), FIXBIN 75: !     LOGICAL IGNOREBIN(HISTBINMAX), FIXBIN
 76: !     COMMON /IG/ IGNOREBIN, FIXBIN 76: !     COMMON /IG/ IGNOREBIN, FIXBIN
 77: !      DOUBLE PRECISION    PMAX,PMIN,NMAX,NMIN,SIDESTEP 77: !      DOUBLE PRECISION    PMAX,PMIN,NMAX,NMIN,SIDESTEP
 78: !      COMMON /AMBWORD/    PMAX,PMIN,NMAX,NMIN,SIDESTEP 78: !      COMMON /AMBWORD/    PMAX,PMIN,NMAX,NMIN,SIDESTEP
 79:  79: 
 80:       INTEGER NATOM, DMODE, NDUM, NONTYPEA 80:       INTEGER NATOM, DMODE, NDUM, NONTYPEA
 81: ! 81: !
 82: ! These arrays should have dimension MXATMS 82: ! These arrays should have dimension MXATMS
 83: ! 83: !
 84:       DOUBLE PRECISION, ALLOCATABLE :: CHX(:), CHY(:), CHZ(:), CHMASS(:) 84:       DOUBLE PRECISION, ALLOCATABLE :: CHX(:), CHY(:), CHZ(:), CHMASS(:)
1143: !1143: !
1144: ! Neural network potential1144: ! Neural network potential
1145: !1145: !
1146:       MLP3T=.FALSE.1146:       MLP3T=.FALSE.
1147:       MLPB3T=.FALSE.1147:       MLPB3T=.FALSE.
1148:       MLPB3NEWT=.FALSE.1148:       MLPB3NEWT=.FALSE.
1149:       MLPNEWREG=.FALSE.1149:       MLPNEWREG=.FALSE.
1150:       MLPDONE=.FALSE.1150:       MLPDONE=.FALSE.
1151:       MLPNORM=.FALSE.1151:       MLPNORM=.FALSE.
1152:       MLPLAMBDA=0.0D01152:       MLPLAMBDA=0.0D0
1153: ! 
1154: ! ML quadratic function 
1155: ! 
1156:       MLQT=.FALSE. 
1157:       MLQPROB=.FALSE. 
1158:       MLQDONE=.FALSE. 
1159:       MLQNORM=.FALSE. 
1160:       MLQLAMBDA=0.0D0 
1161:       MLQSTART=1 
1162: 1153: 
1163:       LJADDT=.FALSE.1154:       LJADDT=.FALSE.
1164: 1155: 
1165:       DUMPMQT=.FALSE.1156:       DUMPMQT=.FALSE.
1166:       1157:       
1167:       CALL FILE_OPEN('data', DATA_UNIT, .FALSE.)1158:       CALL FILE_OPEN('data', DATA_UNIT, .FALSE.)
1168:       1159:       
1169: !      OPEN (5,FILE='data',STATUS='OLD')1160: !      OPEN (5,FILE='data',STATUS='OLD')
1170: 1161: 
1171: !190   CALL INPUT(END,5)1162: !190   CALL INPUT(END,5)
2198:             ENDDO2189:             ENDDO
2199:             CLOSE(LUNIT)2190:             CLOSE(LUNIT)
2200:             MLPMEAN(1:MLPIN)=MLPMEAN(1:MLPIN)/MLPDATA2191:             MLPMEAN(1:MLPIN)=MLPMEAN(1:MLPIN)/MLPDATA
2201:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:'2192:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:'
2202:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)2193:             WRITE(MYUNIT,'(6G20.10)') MLPMEAN(1:MLPIN)
2203:             DO J1=1,MLPIN2194:             DO J1=1,MLPIN
2204:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)2195:                MLPDAT(1:MLPDATA,J1)=MLPDAT(1:MLPDATA,J1)/MLPMEAN(J1)
2205:             ENDDO2196:             ENDDO
2206:             DEALLOCATE(MLPMEAN)2197:             DEALLOCATE(MLPMEAN)
2207:          ENDIF2198:          ENDIF
2208:       ELSE IF (WORD.EQ.'MLQ') THEN 
2209:          MLQT=.TRUE. 
2210:          CALL READI(MLQIN)      ! number of inputs (data items after outcome) 
2211:          CALL READI(MLQSTART) ! starting position in data list, not counting outcome 
2212:          CALL READI(MLQOUT) 
2213:          CALL READI(MLQDATA) 
2214:          IF (NITEMS.GT.4) CALL READF(MLQLAMBDA) 
2215:          WRITE(MYUNIT,'(A,4I8,G20.10)') ' keywords> MLQ Nin, Ninstart, Nout, Ndata, lambda=', 
2216:      &                                MLQIN,MLQSTART,MLQOUT,MLQDATA,MLQLAMBDA 
2217:          NMLQ=MLQOUT*(1+(MLQIN*(MLQIN+3))/2) 
2218:          WRITE(MYUNIT,'(A,5I8,G20.10)') ' keywords> MLQ variables=',NMLQ 
2219:          IF (NMLQ.NE.NATOMS) THEN 
2220:             PRINT '(A,2I8)', 'keywords> ERROR *** NATOMS,NMLQ=',NATOMS,NMLQ 
2221:             STOP 
2222:          ENDIF 
2223:  
2224:          LUNIT=GETUNIT() 
2225:          OPEN(LUNIT,FILE='MLQdata',STATUS='OLD') 
2226:          ALLOCATE(MLQDAT(MLQDATA,MLQIN),MLQOUTCOME(MLQDATA),MLQMEAN(MLQIN)) 
2227:          MLQMEAN(1:MLQIN)=0.0D0 
2228:          DO J1=1,MLQDATA 
2229:             READ(LUNIT,*) MLQOUTCOME(J1),(DUMMY,J2=1,MLQSTART-1),MLQDAT(J1,1:MLQIN) 
2230:             MLQOUTCOME(J1)=MLQOUTCOME(J1)+1 ! to shift the range from 0 to from 1 
2231:             DO J2=1,MLQIN 
2232:                MLQMEAN(J2)=MLQMEAN(J2)+ABS(MLQDAT(J1,J2)) 
2233:             ENDDO 
2234:          ENDDO 
2235:          CLOSE(LUNIT) 
2236:          IF (MLQNORM) THEN 
2237:             MLQMEAN(1:MLQIN)=MLQMEAN(1:MLQIN)/MLQDATA 
2238:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:' 
2239:             WRITE(MYUNIT,'(6G20.10)') MLQMEAN(1:MLQIN) 
2240:             DO J1=1,MLQIN 
2241:                MLQDAT(1:MLQDATA,J1)=MLQDAT(1:MLQDATA,J1)/MLQMEAN(J1) 
2242:             ENDDO 
2243:          ENDIF 
2244:          DEALLOCATE(MLQMEAN) 
2245:          MLQDONE=.TRUE. 
2246:       ELSE IF (WORD.EQ.'MLQPROB') THEN 
2247:          MLQPROB=.TRUE. 
2248: ! 
2249: ! MLQNORM directs OPTIM to rescale the input data columns by dividing each one by the 
2250: ! average of the mean magnitude 
2251: ! 
2252:       ELSE IF (WORD.EQ.'MLQNORM') THEN 
2253:          MLQNORM=.TRUE. 
2254:          IF (MLQDONE) THEN 
2255:             LUNIT=GETUNIT() 
2256:             OPEN(LUNIT,FILE='MLQdata',STATUS='OLD') 
2257:             ALLOCATE(MLQMEAN(MLQIN)) 
2258:             MLPMEAN(1:MLQIN)=0.0D0 
2259:             DO J1=1,MLQDATA+MLQSTART-1 
2260:                IF (J1.GE.MLQSTART) THEN 
2261:                   J2=J1-MLQSTART+1 
2262:                   READ(LUNIT,*) MLQDAT(J2,1:MLQIN),MLQOUTCOME(J2) 
2263:                   MLQOUTCOME(J2)=MLQOUTCOME(J2)+1 ! to shift the range to 1 to 4 
2264:                  DO J3=1,MLPIN 
2265:                      MLQMEAN(J3)=MLQMEAN(J3)+ABS(MLQDAT(J2,J3)) 
2266:                   ENDDO 
2267:                ELSE 
2268:                   READ(LUNIT,*) DUMMY 
2269:                ENDIF 
2270:             ENDDO 
2271:  
2272:             CLOSE(LUNIT) 
2273:             MLPMEAN(1:MLQIN)=MLQMEAN(1:MLQIN)/MLQDATA 
2274:             WRITE(MYUNIT,'(A)') 'keyword> Rescaling inputs by mean absolute values:' 
2275:             WRITE(MYUNIT,'(6G20.10)') MLQMEAN(1:MLQIN) 
2276:             DO J1=1,MLPIN 
2277:                MLQDAT(1:MLQDATA,J1)=MLQDAT(1:MLQDATA,J1)/MLQMEAN(J1) 
2278:             ENDDO 
2279:             DEALLOCATE(MLQMEAN) 
2280:          ENDIF 
2281:       ELSE IF(WORD.EQ.'MODEL1') THEN2199:       ELSE IF(WORD.EQ.'MODEL1') THEN
2282:          MODEL1T=.TRUE.2200:          MODEL1T=.TRUE.
2283:          CALL READF(ME1)2201:          CALL READF(ME1)
2284:          CALL READF(ME2)2202:          CALL READF(ME2)
2285:          CALL READF(ME3)2203:          CALL READF(ME3)
2286:          CALL READF(MSTART)2204:          CALL READF(MSTART)
2287:          CALL READF(MFINISH)2205:          CALL READF(MFINISH)
2288:          CALL READF(MBSTART1)2206:          CALL READF(MBSTART1)
2289:          CALL READF(MBFINISH1)2207:          CALL READF(MBFINISH1)
2290:          CALL READF(MBSTART2)2208:          CALL READF(MBSTART2)


r31325/MLQ.f90 2016-10-16 20:30:12.404548755 +0100 r31324/MLQ.f90 2016-10-16 20:30:14.680579265 +0100
  1: SUBROUTINE MLQ(X,V,ENERGY,GTEST,SECT)  1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/GMIN/source/MLQ.f90' in revision 31324
  2: USE MODHESS 
  3: USE COMMONS 
  4: IMPLICIT NONE 
  5: LOGICAL GTEST,SECT 
  6: DOUBLE PRECISION X(NMLQ), V(NMLQ), ENERGY, DUMMY1, DUMMY2, DUMMY3 
  7: DOUBLE PRECISION Y(MLQOUT), PROB(MLQOUT), DMAX, PMLQOUTJ1 
  8: DOUBLE PRECISION DYDW(NMLQ,MLQOUT), DPDW(NMLQ,MLQOUT), PSUM(NMLQ) 
  9: INTEGER MLQOUTJ1, MLQOFFSET, NDUMMY 
 10: INTEGER J1, J2, J3, J4 
 11: ! 
 12: ! Variables are ordered  
 13: ! w^0 at 1 
 14: ! w^1_j at j+1 
 15: ! w^2_jk with k >= j at 1+NMLQIN+(j*(2*NMLQIN-j+1))/2+1-j+k = 1+k+(j*(2*NMLQIN-j+1))/2 
 16: ! for input 1, then 2 offset by NMLQOUT*(1+(NMLQIN*(NMLQIN+3))/2), then 3, ... 
 17: ! 
 18:  
 19: MLQOFFSET=1+(MLQIN*(MLQIN+3))/2 
 20: ENERGY=0.0D0 
 21: V(1:NMLQ)=0.0D0 
 22: IF (SECT) HESS(1:NMLQ,1:NMLQ)=0.0D0 
 23: ! 
 24: ! J1 is data item from 1 to MLQDATA 
 25: ! MLQOUTJ1=MLQOUTCOME(J1) is the outcome for data entry J1 
 26: ! 
 27: DO J1=1,MLQDATA 
 28:    DYDW(1:NMLQ,1:MLQOUT)=0.0D0 
 29:    MLQOUTJ1=MLQOUTCOME(J1) 
 30: !  WRITE(MYUNIT,'(A,2I10)') 'J1,outcome=',J1,MLQOUTCOME(J1) 
 31:    DMAX=-1.0D100 
 32:    NDUMMY=0 
 33:    DO J4=1,MLQOUT 
 34:       DUMMY2=X(MLQOFFSET*(J4-1)+1) ! initialises the output value J4 for data point J1 
 35:       NDUMMY=NDUMMY+1 
 36:       DYDW(MLQOFFSET*(J4-1)+1,J4)=1.0D0 ! not summed over data points J1 
 37:       DO J2=1,MLQIN 
 38:          DUMMY2=DUMMY2+X(MLQOFFSET*(J4-1)+1+J2)*MLQDAT(J1,J2) 
 39:          NDUMMY=NDUMMY+1 
 40:          DYDW(MLQOFFSET*(J4-1)+1+J2,J4)=MLQDAT(J1,J2) 
 41: !        PRINT '(A,2I8)','w1 loop NDUMMY and index are ',NDUMMY,MLQOFFSET*(J4-1)+1+J2 
 42:       ENDDO 
 43:       DO J2=1,MLQIN      ! j 
 44:          DO J3=J2,MLQIN  ! k >= j 
 45:             DUMMY2=DUMMY2+MLQDAT(J1,J2)*MLQDAT(J1,J3)*X(MLQOFFSET*(J4-1)+1+J3+(J2*(2*MLQIN-J2+1))/2) 
 46:             NDUMMY=NDUMMY+1 
 47:             DYDW(MLQOFFSET*(J4-1)+1+J3+(J2*(2*MLQIN-J2+1))/2,J4)=MLQDAT(J1,J2)*MLQDAT(J1,J3) 
 48: !           PRINT '(A,2I8)','w2 loop NDUMMY and index are ',NDUMMY,MLQOFFSET*(J4-1)+1+J3+(J2*(2*MLQIN-J2+1))/2 
 49:          ENDDO 
 50:       ENDDO 
 51:       IF (DUMMY2.GT.DMAX) DMAX=DUMMY2 
 52:       Y(J4)=DUMMY2 ! output J4 for data point J1  
 53:    ENDDO   
 54: !  PRINT '(A,2I10)','NDUMMY should equal MLQOUT*MLQOFFSET=',NDUMMY,MLQOUT*MLQOFFSET 
 55: ! 
 56: ! Factor DMAX out of the exponentials to prevent overflow. 
 57: ! 
 58:    DUMMY3=0.0D0 
 59:    DO J4=1,MLQOUT 
 60:       Y(J4)=Y(J4)-DMAX 
 61:       DUMMY3=DUMMY3+EXP(Y(J4)) 
 62:    ENDDO 
 63:    DO J4=1,MLQOUT 
 64:       PROB(J4)=EXP(Y(J4))/DUMMY3 
 65:    ENDDO 
 66:    PMLQOUTJ1=PROB(MLQOUTJ1) ! this is p_c(d), the probability predicted for the known outcome for data point d 
 67:    IF (PMLQOUTJ1.LE.0.0D0) THEN 
 68:       WRITE(MYUNIT,'(A,G20.10)') 'WARNING PROB=',PROB(MLQOUTJ1) 
 69:       PMLQOUTJ1=1.0D-100 
 70: !     WRITE(MYUNIT,'(I10,G20.10)') (J4,PROB(J4),J4=1,MLQOUT) 
 71: !     STOP 
 72:    ENDIF 
 73:    ENERGY=ENERGY-LOG(PMLQOUTJ1) ! summing over contributions for data points, indexed by J1 
 74: !  WRITE(MYUNIT,'(A,I8,2G20.10)') 'J1,PMLQOUTJ1,ENERGY=',J1,PMLQOUTJ1,ENERGY 
 75:  
 76:    IF (GTEST) THEN 
 77: ! 
 78: ! We only need the probability derivatives for the probability corresponding to the correct outcome for this data point 
 79: ! 
 80:       DO J3=1,NMLQ ! for each variable w 
 81:          DUMMY3=0.0D0 
 82:          DO J4=1,MLQOUT ! the only non-zero terms in this sum will correspond to variables associated with the given output 
 83:             DUMMY3=DUMMY3+PROB(J4)*DYDW(J3,J4) 
 84:          ENDDO 
 85:          PSUM(J3)=DUMMY3  
 86:          V(J3)=V(J3)-(DYDW(J3,MLQOUTJ1)-DUMMY3) 
 87:       ENDDO 
 88:  
 89:    ENDIF 
 90:  
 91:    IF (SECT) THEN 
 92:  
 93:       IF (.NOT.GTEST) THEN ! need PSUM 
 94:          DO J3=1,NMLQ ! for each variable w 
 95:             DUMMY3=0.0D0 
 96:             DO J4=1,MLQOUT ! the only non-zero terms in this sum will correspond to variables associated with the given output 
 97:                DUMMY3=DUMMY3+PROB(J4)*DYDW(J3,J4) 
 98:             ENDDO 
 99:             PSUM(J3)=DUMMY3  
100:          ENDDO 
101:       ENDIF 
102:  
103:       DO J3=1,NMLQ 
104:          DO J4=1,MLQOUT  
105:             DPDW(J3,J4)=PROB(J4)*(DYDW(J3,J4)-PSUM(J3)) 
106:          ENDDO 
107:       ENDDO 
108:  
109:       DO J2=1,NMLQ  ! alpha 
110:          DO J3=J2,NMLQ  ! beta 
111:             DUMMY3=0.0D0 
112:             DO J4=1,MLQOUT 
113:                DUMMY3=DUMMY3+DPDW(J3,J4)*DYDW(J2,J4) 
114:             ENDDO 
115:             HESS(J3,J2)=HESS(J3,J2) + DUMMY3 
116: ! &                                +DPDW(J3,MLQOUTJ1)*DPDW(J2,MLQOUTJ1)/PMLQOUTJ1**2 & 
117: ! &                                -(DYDW(J3,MLQOUTJ1)-PSUM(J3))*(DYDW(J2,MLQOUTJ1)-PSUM(J2)) & 
118: ! &                                -DYDW(J3,MLQOUTJ1)*DYDW(J2,MLQOUTJ1) & 
119: ! &                                +DYDW(J3,MLQOUTJ1)*PSUM(J2)+DYDW(J2,MLQOUTJ1)*PSUM(J3)-PSUM(J3)*PSUM(J2) & 
120:          ENDDO 
121:       ENDDO 
122:  
123:    ENDIF 
124:  
125: ENDDO ! end of sum over data points, counter J1, limit MLQDATA 
126:  
127: DUMMY1=0.0D0 
128: DO J1=1,NMLQ 
129:    DUMMY1=DUMMY1+X(J1)**2 
130: ENDDO 
131:  
132: ENERGY=ENERGY/MLQDATA + MLQLAMBDA*DUMMY1 
133: ! IF (DEBUG) WRITE(*,'(A,G20.10)') 'MLQ> objective function=',ENERGY 
134:  
135: IF (GTEST) V(1:NMLQ)=V(1:NMLQ)/MLQDATA  
136: IF (GTEST) V(1:NMLQ)=V(1:NMLQ) + 2.0D0*MLQLAMBDA*X(1:NMLQ) 
137: ! 
138: ! Symmetrise Hessian here 
139: ! 
140: IF (SECT) HESS(1:NMLQ,1:NMLQ)=HESS(1:NMLQ,1:NMLQ)/MLQDATA 
141: IF (SECT) THEN 
142:    DO J1=1,NMLQ 
143:       HESS(J1,J1)=HESS(J1,J1)+2*MLQLAMBDA 
144:    ENDDO 
145:    DO J1=1,NMLQ 
146:       DO J2=1,J1-1 
147:          HESS(J2,J1)=HESS(J1,J2) 
148:       ENDDO 
149:    ENDDO 
150: ENDIF 
151:  
152: END SUBROUTINE MLQ 
153:  


r31325/mymylbfgs.f 2016-10-16 20:30:13.684565912 +0100 r31324/mymylbfgs.f 2016-10-16 20:30:15.964596477 +0100
915: !             ENDIF915: !             ENDIF
916: !          ENDIF916: !          ENDIF
917: !          DO J1=1,N917: !          DO J1=1,N
918: !             OLDOLDX(J1)=OLDX(J1)918: !             OLDOLDX(J1)=OLDX(J1)
919: !             OLDX(J1)=XCOORDS(J1)919: !             OLDX(J1)=XCOORDS(J1)
920: !          ENDDO920: !          ENDDO
921: ! 921: ! 
922: ! 112      CONTINUE922: ! 112      CONTINUE
923: !923: !
924: !  May want to prevent the PE from falling too much if we are trying to visit all the924: !  May want to prevent the PE from falling too much if we are trying to visit all the
925: !  PE bins. Halve the step size until the energy change is in range.925: !  PE bins. Halve the step size until the energy decrease is in range.
926: !926: !
927:       ELSEIF (ENEW-ENERGY.LE.MAXEFALL) THEN927:       ELSEIF (ENEW-ENERGY.LE.MAXEFALL) THEN
928: !928: !
929: !  Energy increased too much - try again with a smaller step size929: !  Energy decreased too much - try again with a smaller step size
930: !930: !
931:          IF (NDECREASE.GT.5) THEN931:          IF (NDECREASE.GT.5) THEN
932:             NFAIL=NFAIL+1932:             NFAIL=NFAIL+1
933:             WRITE(MYUNIT,'(A,G20.10)') ' in mylbfgs LBFGS step cannot find an energy in the required range, NFAIL=',NFAIL933:             WRITE(MYUNIT,'(A,G20.10)') ' in mylbfgs LBFGS step cannot find an energy in the required range, NFAIL=',NFAIL
934:             IF (CHRMMT.AND.INTMINT) THEN ! need to reset X, XINT, G, GINT to original values934:             IF (CHRMMT.AND.INTMINT) THEN ! need to reset X, XINT, G, GINT to original values
935:                XINT(1:N)=XINT(1:N)-STP*W(ISPT+POINT*N+1:ISPT+POINT*N+N)935:                XINT(1:N)=XINT(1:N)-STP*W(ISPT+POINT*N+1:ISPT+POINT*N+N)
936: !              XINT=OLDQ ! should be the same as subtracting the step936: !              XINT=OLDQ ! should be the same as subtracting the step
937:                GINT(1:N)=OLDGINT(1:N)937:                GINT(1:N)=OLDGINT(1:N)
938:                GRAD(1:3*NATOMS)=GNEW(1:3*NATOMS) ! here OPTIM uses GLAST ! DJW938:                GRAD(1:3*NATOMS)=GNEW(1:3*NATOMS) ! here OPTIM uses GLAST ! DJW
939:                XCOORDS(1:3*NATOMS)=OLDCART(1:3*NATOMS)939:                XCOORDS(1:3*NATOMS)=OLDCART(1:3*NATOMS)
1019:                   TMPCOORDS(1:N)=XCOORDS(1:N)1019:                   TMPCOORDS(1:N)=XCOORDS(1:N)
1020:                   CALL PROJIH(TMPCOORDS,NATOMS)1020:                   CALL PROJIH(TMPCOORDS,NATOMS)
1021:                   XCOORDS(1:N)=TMPCOORDS(1:N)1021:                   XCOORDS(1:N)=TMPCOORDS(1:N)
1022:                ENDIF1022:                ENDIF
1023:             ENDIF1023:             ENDIF
1024: 1024: 
1025:          ENDIF1025:          ENDIF
1026:          STP=STP/2.0D01026:          STP=STP/2.0D0
1027:          NDECREASE=NDECREASE+11027:          NDECREASE=NDECREASE+1
1028:          IF (DEBUG) WRITE(MYUNIT,'(A,F19.10,A,F16.10,A,F15.8)') 1028:          IF (DEBUG) WRITE(MYUNIT,'(A,F19.10,A,F16.10,A,F15.8)') 
1029:      1                      ' energy increased too much from ',ENERGY,' to ',ENEW,' decreasing step to ',STP*SLENGTH1029:      1                      ' energy decreased too much from ',ENERGY,' to ',ENEW,' decreasing step to ',STP*SLENGTH
1030:          1030:          
1031:          !FIXIMAGE=.TRUE.1031:          !FIXIMAGE=.TRUE.
1032:          GOTO 201032:          GOTO 20
1033:       ELSE1033:       ELSE
1034: !1034: !
1035: !  Energy increased - try again with a smaller step size1035: !  Energy increased - try again with a smaller step size
1036: !1036: !
1037:          IF (NDECREASE.GT.10) THEN ! DJW1037:          IF (NDECREASE.GT.10) THEN ! DJW
1038:             NFAIL=NFAIL+11038:             NFAIL=NFAIL+1
1039:             WRITE(MYUNIT,'(A,G20.10)') ' in mylbfgs LBFGS step cannot find a lower energy, NFAIL=',NFAIL1039:             WRITE(MYUNIT,'(A,G20.10)') ' in mylbfgs LBFGS step cannot find a lower energy, NFAIL=',NFAIL


r31325/potential.f90 2016-10-16 20:30:13.936569290 +0100 r31324/potential.f90 2016-10-16 20:30:16.224599964 +0100
332: !          X(J1)=X(J1)-2.0D0*DIFF332: !          X(J1)=X(J1)-2.0D0*DIFF
333: !          CALL MLPB3(X, GMINUS, EMINUS,.FALSE.,.FALSE.)333: !          CALL MLPB3(X, GMINUS, EMINUS,.FALSE.,.FALSE.)
334: !          X(J1)=X(J1)+DIFF334: !          X(J1)=X(J1)+DIFF
335: ! !        IF ((ABS(GRAD(J1)).NE.0.0D0).AND.(100.0D0*(GRAD(J1)-(EPLUS-EMINUS)/(2.0D0*DIFF))/GRAD(J1).GT.1.0D0)) THEN335: ! !        IF ((ABS(GRAD(J1)).NE.0.0D0).AND.(100.0D0*(GRAD(J1)-(EPLUS-EMINUS)/(2.0D0*DIFF))/GRAD(J1).GT.1.0D0)) THEN
336: !             WRITE(MYUNIT,'(A,I5, 2F20.10)') 'gtest ', J1, GRAD(J1),(EPLUS-EMINUS)/(2.0D0*DIFF)336: !             WRITE(MYUNIT,'(A,I5, 2F20.10)') 'gtest ', J1, GRAD(J1),(EPLUS-EMINUS)/(2.0D0*DIFF)
337: ! !        ENDIF337: ! !        ENDIF
338: !       ENDDO338: !       ENDDO
339: 339: 
340:    ELSE IF (MLP3T) THEN340:    ELSE IF (MLP3T) THEN
341:       CALL MLP3(X, GRAD, EREAL, GRADT, SECT)341:       CALL MLP3(X, GRAD, EREAL, GRADT, SECT)
342:    ELSEIF (MLQT) THEN 
343:       CALL MLQ(X, GRAD, EREAL, GRADT, SECT) 
344:    ELSE IF (LJATT) THEN342:    ELSE IF (LJATT) THEN
345:       CALL LJ(X, GRAD, EREAL, GRADT, SECT)343:       CALL LJ(X, GRAD, EREAL, GRADT, SECT)
346:       CALL AXT(NATOMS, X, GRAD, EREAL, GRADT, ZSTAR)344:       CALL AXT(NATOMS, X, GRAD, EREAL, GRADT, ZSTAR)
347: 345: 
348:    ELSE IF (DFTBCT) THEN346:    ELSE IF (DFTBCT) THEN
349:       IF (.NOT.PERCOLATET) CALL RAD(X, GRAD, EREAL, GRADT)347:       IF (.NOT.PERCOLATET) CALL RAD(X, GRAD, EREAL, GRADT)
350:       CALL DFTBC(NATOMS, X, GRAD, EREAL, GRADT)348:       CALL DFTBC(NATOMS, X, GRAD, EREAL, GRADT)
351:       IF (FTEST) THEN349:       IF (FTEST) THEN
352:          RETURN350:          RETURN
353:       END IF351:       END IF
1326: 1324: 
1327:       IF (CSMT .AND. (.NOT.SYMMETRIZECSM)) THEN1325:       IF (CSMT .AND. (.NOT.SYMMETRIZECSM)) THEN
1328:          DUMMY2=0.0D01326:          DUMMY2=0.0D0
1329:          RMS=0.0D01327:          RMS=0.0D0
1330:       ELSE IF (AACONVERGENCET .AND. (ATOMRIGIDCOORDT)) THEN1328:       ELSE IF (AACONVERGENCET .AND. (ATOMRIGIDCOORDT)) THEN
1331:          DUMMY2=SUM(GRAD(1:DEGFREEDOMS)**2)1329:          DUMMY2=SUM(GRAD(1:DEGFREEDOMS)**2)
1332:          RMS=MAX(SQRT(DUMMY2/DEGFREEDOMS), 1.0D-100)1330:          RMS=MAX(SQRT(DUMMY2/DEGFREEDOMS), 1.0D-100)
1333:          IF (RMS < 5.0D0 * BQMAX) THEN1331:          IF (RMS < 5.0D0 * BQMAX) THEN
1334:             CALL AACONVERGENCE (GRADATOMS, XRIGIDCOORDS, XRIGIDGRAD, RMS)           1332:             CALL AACONVERGENCE (GRADATOMS, XRIGIDCOORDS, XRIGIDGRAD, RMS)           
1335:          END IF1333:          END IF
1336:       ELSE IF (MLP3T.OR.MLPB3T.OR.MLQT) THEN1334:       ELSE IF (MLP3T.OR.MLPB3T) THEN
1337:          DUMMY2=SUM(GRAD(1:NATOMS)**2)1335:          DUMMY2=SUM(GRAD(1:NATOMS)**2)
1338:          RMS=MAX(DSQRT(DUMMY2/(NATOMS)), 1.0D-100)1336:          RMS=MAX(DSQRT(DUMMY2/(NATOMS)), 1.0D-100)
1339:       ELSE IF (.NOT.THOMSONT) THEN1337:       ELSE IF (.NOT.THOMSONT) THEN
1340:          DUMMY2=SUM(GRAD(1:3*NATOMS)**2)1338:          DUMMY2=SUM(GRAD(1:3*NATOMS)**2)
1341:          RMS=MAX(DSQRT(DUMMY2/(3*NATOMS)), 1.0D-100)1339:          RMS=MAX(DSQRT(DUMMY2/(3*NATOMS)), 1.0D-100)
1342:       ELSE1340:       ELSE
1343:          DUMMY2=SUM(GRAD(1:2*NATOMS)**2)1341:          DUMMY2=SUM(GRAD(1:2*NATOMS)**2)
1344:          RMS=MAX(DSQRT(DUMMY2/(2*NATOMS)), 1.0D-100)1342:          RMS=MAX(DSQRT(DUMMY2/(2*NATOMS)), 1.0D-100)
1345:       END IF1343:       END IF
1346:       IF(DEBUG.AND.(RMS.NE.RMS)) THEN1344:       IF(DEBUG.AND.(RMS.NE.RMS)) THEN


r31325/quench.F 2016-10-16 20:30:14.184572614 +0100 r31324/quench.F 2016-10-16 20:30:16.500603676 +0100
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:       NOPT=3*NATOMS115:       NOPT=3*NATOMS
116:       IF (WENZEL) NOPT=2116:       IF (WENZEL) NOPT=2
117:       IF (MULLERBROWNT) NOPT=2117:       IF (MULLERBROWNT) NOPT=2
118:       IF (MLP3T.OR.MLPB3T) NOPT=NMLP118:       IF (MLP3T.OR.MLPB3T) NOPT=NMLP
119:       IF (MLQT) NOPT=NMLQ 
120: !119: !
121: !  QTEST is set for the final quenches with tighter convergence criteria.120: !  QTEST is set for the final quenches with tighter convergence criteria.
122: !121: !
123:       IF (QTEST) THEN122:       IF (QTEST) THEN
124:          GMAX=CQMAX123:          GMAX=CQMAX
125:       ELSE124:       ELSE
126:          GMAX=BQMAX125:          GMAX=BQMAX
127:       ENDIF126:       ENDIF
128: 127: 
129:       QDONE=0128:       QDONE=0


r31325/takestep.f 2016-10-16 20:30:14.432575939 +0100 r31324/takestep.f 2016-10-16 20:30:16.760607147 +0100
 63: ! 63: !
 64: !  Calling CENTRE if NORESET is .TRUE. can lead to problems with COORDSO containing an atom 64: !  Calling CENTRE if NORESET is .TRUE. can lead to problems with COORDSO containing an atom
 65: !  outside the permitted radius. Then it may be impossible to take a step that keeps all the 65: !  outside the permitted radius. Then it may be impossible to take a step that keeps all the
 66: !  atoms inside. 66: !  atoms inside.
 67: ! 67: !
 68:       PISQ = PI*PI 68:       PISQ = PI*PI
 69:       NTRIESMAX=100 69:       NTRIESMAX=100
 70:  70: 
 71: !     IF (CENT.AND.(.NOT.SEEDT)) CALL CENTRE2(COORDS(1:3*NATOMS,NP)) ! COORDS might have been shifted by symmetry 71: !     IF (CENT.AND.(.NOT.SEEDT)) CALL CENTRE2(COORDS(1:3*NATOMS,NP)) ! COORDS might have been shifted by symmetry
 72:       IF ((.NOT.NORESET).AND.(.NOT.PERMOPT).AND.(.NOT.DIFFRACTT).AND.(.NOT.BLNT).AND.(.NOT.PERIODIC)  72:       IF ((.NOT.NORESET).AND.(.NOT.PERMOPT).AND.(.NOT.DIFFRACTT).AND.(.NOT.BLNT).AND.(.NOT.PERIODIC) 
 73:      &   .AND.(.NOT.PERMINVOPT).AND.(.NOT.QCIPOTT).AND.(.NOT.MLP3T).AND.(.NOT.MLQT).AND.(.NOT.MKTRAPT).AND.(.NOT.MLPB3T) 73:      &                  .AND.(.NOT.PERMINVOPT).AND.(.NOT.QCIPOTT).AND.(.NOT.MLP3T).AND.(.NOT.MKTRAPT).AND.(.NOT.MLPB3T)
 74:      &   .AND.(.NOT.GAUSST).AND.(.NOT.(CSMT.AND.(.NOT.SYMMETRIZECSM))).AND.(.NOT.PERCOLATET)) THEN 74:      &     .AND.(.NOT.GAUSST).AND.(.NOT.(CSMT.AND.(.NOT.SYMMETRIZECSM))).AND.(.NOT.PERCOLATET)) THEN
 75: ! 75: !
 76: !        csw34> CHECK NOTHING HAS MOVED OUTSIDE THE CONTAINER RADIUS  76: !        csw34> CHECK NOTHING HAS MOVED OUTSIDE THE CONTAINER RADIUS 
 77: ! 77: !
 78:          DO J1=1,NATOMS 78:          DO J1=1,NATOMS
 79:             IF ((.NOT.RIGID).OR.(J1.LE.NATOMS/2)) THEN 79:             IF ((.NOT.RIGID).OR.(J1.LE.NATOMS/2)) THEN
 80:                J2=3*J1 80:                J2=3*J1
 81:                DUMMY2=COORDS(J2-2,NP)**2+COORDS(J2-1,NP)**2+COORDS(J2,NP)**2 81:                DUMMY2=COORDS(J2-2,NP)**2+COORDS(J2-1,NP)**2+COORDS(J2,NP)**2
 82:                IF (DUMMY2.GT.RADIUS) THEN 82:                IF (DUMMY2.GT.RADIUS) THEN
 83:                   IF (AMBERT) THEN ! jmc49 We don't really want a container at all in amber9, but this bit of code is being used  83:                   IF (AMBERT) THEN ! jmc49 We don't really want a container at all in amber9, but this bit of code is being used 
 84:                                    ! to warn about drift in, for instance, the amber-md. 84:                                    ! to warn about drift in, for instance, the amber-md.
399: !399: !
400: !  Angular move block.400: !  Angular move block.
401: !  If NORESET is .TRUE. then VAT won;t be set, so we should skip this block.401: !  If NORESET is .TRUE. then VAT won;t be set, so we should skip this block.
402: !402: !
403: !        IF (J1.EQ.JMAX) WRITE(MYUNIT,'(A,I6,4F15.5)') 'JMAX,VAT,ASTEP(NP),VMIN,prod=',JMAX,VAT(J1,NP), 403: !        IF (J1.EQ.JMAX) WRITE(MYUNIT,'(A,I6,4F15.5)') 'JMAX,VAT,ASTEP(NP),VMIN,prod=',JMAX,VAT(J1,NP), 
404: !    &                                    ASTEP(NP),VMIN,ASTEP(NP)*VMIN404: !    &                                    ASTEP(NP),VMIN,ASTEP(NP)*VMIN
405:          IF (((VAT(J1,NP).GT.ASTEP(NP)*VMIN).AND.(J1.EQ.JMAX)).AND.(.NOT.BLNT).AND.!(.NOT.RIGID).AND.405:          IF (((VAT(J1,NP).GT.ASTEP(NP)*VMIN).AND.(J1.EQ.JMAX)).AND.(.NOT.BLNT).AND.!(.NOT.RIGID).AND.
406:      &         (.NOT.DIFFRACTT).AND.(.NOT.GAUSST).AND.(.NOT.PERCOLATET) 406:      &         (.NOT.DIFFRACTT).AND.(.NOT.GAUSST).AND.(.NOT.PERCOLATET) 
407:      &        .AND.(.NOT.NORESET).AND.(.NOT.PERIODIC).AND.(.NOT.THOMSONT).AND.(.NOT.ONEDAPBCT).AND.(.NOT.ONEDPBCT)407:      &        .AND.(.NOT.NORESET).AND.(.NOT.PERIODIC).AND.(.NOT.THOMSONT).AND.(.NOT.ONEDAPBCT).AND.(.NOT.ONEDPBCT)
408:      &      .AND.(.NOT.TWODPBCT).AND.(.NOT.THREEDAPBCT).AND.(.NOT.THREEDPBCT).AND.(.NOT.QCIPOTT).AND.(.NOT.MLP3T).AND.(.NOT.MLPB3T)408:      &      .AND.(.NOT.TWODPBCT).AND.(.NOT.THREEDAPBCT).AND.(.NOT.THREEDPBCT).AND.(.NOT.QCIPOTT).AND.(.NOT.MLP3T).AND.(.NOT.MLPB3T)
409:      &       .AND.(.NOT.MLQT).AND.(.NOT.TWODAPBCT).AND.(.NOT.((NCORE(NP).GT.0).AND.(J1.GT.NATOMS-NCORE(NP))))) THEN409:      &        .AND.(.NOT.TWODAPBCT).AND.(.NOT.((NCORE(NP).GT.0).AND.(J1.GT.NATOMS-NCORE(NP))))) THEN
410: 410: 
411:             IF (DEBUG) WRITE(MYUNIT,'(A,I4,A,F12.4,A,F12.4,A,I4,A,F12.4)') 'angular move for atom ',J1, 411:             IF (DEBUG) WRITE(MYUNIT,'(A,I4,A,F12.4,A,F12.4,A,I4,A,F12.4)') 'angular move for atom ',J1, 
412:      &           ' V=',VMAX,' Vmin=',VMIN,' next most weakly bound atom is ',JMAX2,' V=',VMAX2412:      &           ' V=',VMAX,' Vmin=',VMIN,' next most weakly bound atom is ',JMAX2,' V=',VMAX2
413: 413: 
414:            THETA=DPRAND()*PI414:            THETA=DPRAND()*PI
415:            PHI=DPRAND()*PI*2.0D0415:            PHI=DPRAND()*PI*2.0D0
416: !416: !
417: !  Evaporation is judged from the origin, not the centre of mass. We don't want the417: !  Evaporation is judged from the origin, not the centre of mass. We don't want the
418: !  angular move to cause evaporation. Obviously this will cause problems if we have a cluster that drifts418: !  angular move to cause evaporation. Obviously this will cause problems if we have a cluster that drifts
419: !  away from the origin up to the container radius.  419: !  away from the origin up to the container radius.  
591:               COORDS(J2-1,NP)=COORDS(J2-1,NP)+LOCALSTEP*RANDOM*DUMMY591:               COORDS(J2-1,NP)=COORDS(J2-1,NP)+LOCALSTEP*RANDOM*DUMMY
592:               RANDOM=(DPRAND()-0.5D0)*2.0D0592:               RANDOM=(DPRAND()-0.5D0)*2.0D0
593: !             COORDS(J2,NP)=COORDS(J2,NP)+LOCALSTEP*RANDOM*CMDIST(J1)/CMMAX593: !             COORDS(J2,NP)=COORDS(J2,NP)+LOCALSTEP*RANDOM*CMDIST(J1)/CMMAX
594:               IF (.NOT.TWOD) COORDS(J2,NP)=COORDS(J2,NP)+LOCALSTEP*RANDOM*DUMMY594:               IF (.NOT.TWOD) COORDS(J2,NP)=COORDS(J2,NP)+LOCALSTEP*RANDOM*DUMMY
595:            ENDIF595:            ENDIF
596: !596: !
597: ! Stop atoms leaving the container in this step597: ! Stop atoms leaving the container in this step
598: !598: !
599:            IF ((.NOT.PERIODIC).AND.(.NOT.AMBERT).AND.(.NOT.(RIGID.AND.((J1.GT.NATOMS/2)))).AND.(.NOT.BLNT).AND.(.NOT.MLP3T)599:            IF ((.NOT.PERIODIC).AND.(.NOT.AMBERT).AND.(.NOT.(RIGID.AND.((J1.GT.NATOMS/2)))).AND.(.NOT.BLNT).AND.(.NOT.MLP3T)
600:      1     .AND.(.NOT.PERCOLATET).AND.(.NOT.DIFFRACTT).AND.(.NOT.THOMSONT).AND.(.NOT.GAUSST).AND.(.NOT.QCIPOTT)600:      1     .AND.(.NOT.PERCOLATET).AND.(.NOT.DIFFRACTT).AND.(.NOT.THOMSONT).AND.(.NOT.GAUSST).AND.(.NOT.QCIPOTT)
601:      2     .AND.(.NOT.MKTRAPT).AND.(.NOT.MLPB3T).AND.(.NOT.MLQT)) THEN601:      2     .AND.(.NOT.MKTRAPT).AND.(.NOT.MLPB3T)) THEN
602: !          IF ((.NOT.PERIODIC).AND.(.NOT.AMBER).AND.(.NOT.(RIGID.AND.(LOCALSTEP.EQ.0.0D0))).AND.(.NOT.BLNT)) THEN602: !          IF ((.NOT.PERIODIC).AND.(.NOT.AMBER).AND.(.NOT.(RIGID.AND.(LOCALSTEP.EQ.0.0D0))).AND.(.NOT.BLNT)) THEN
603:               DUMMY=COORDS(J2-2,NP)**2+COORDS(J2-1,NP)**2+COORDS(J2,NP)**2603:               DUMMY=COORDS(J2-2,NP)**2+COORDS(J2-1,NP)**2+COORDS(J2,NP)**2
604: !604: !
605: !  Simply rescaling the radius of an atom that leaves the container will bias the sampling605: !  Simply rescaling the radius of an atom that leaves the container will bias the sampling
606: !  of configuration space. However, we are not using takestep for bspt thermodynamic sampling!606: !  of configuration space. However, we are not using takestep for bspt thermodynamic sampling!
607: !  So, put the atom back in the container on the other side!607: !  So, put the atom back in the container on the other side!
608: !608: !
609: !              IF (DUMMY.GT.RADIUS) THEN609: !              IF (DUMMY.GT.RADIUS) THEN
610: !                 COORDS(J2-2,NP)=(SQRT(RADIUS)-0.5D0)*COORDS(J2-2,NP)/SQRT(DUMMY)610: !                 COORDS(J2-2,NP)=(SQRT(RADIUS)-0.5D0)*COORDS(J2-2,NP)/SQRT(DUMMY)
611: !                 COORDS(J2-1,NP)=(SQRT(RADIUS)-0.5D0)*COORDS(J2-1,NP)/SQRT(DUMMY)611: !                 COORDS(J2-1,NP)=(SQRT(RADIUS)-0.5D0)*COORDS(J2-1,NP)/SQRT(DUMMY)


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0