hdiff output

r31326/commons.f90 2016-10-17 12:30:10.014208161 +0100 r31325/commons.f90 2016-10-17 12:30:10.770217130 +0100
 16: !  along with this program; if not, write to the Free Software 16: !  along with this program; if not, write to the Free Software
 17: !  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 17: !  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 18: ! 18: !
 19:       MODULE COMMONS 19:       MODULE COMMONS
 20:       IMPLICIT NONE 20:       IMPLICIT NONE
 21:       SAVE 21:       SAVE
 22:       INTEGER :: NATOMS, NATOMSALLOC, NACCEPT, MAXIT, NTARGETS, NN, MM, NPAR, NPAR_GBH, NPATCH, TIPID, PAHID, NSYMREM=0, NFREEZE, NSAVEINTE, & 22:       INTEGER :: NATOMS, NATOMSALLOC, NACCEPT, MAXIT, NTARGETS, NN, MM, NPAR, NPAR_GBH, NPATCH, TIPID, PAHID, NSYMREM=0, NFREEZE, NSAVEINTE, &
 23:      &        NINTV, NSEED, NVEC, NS, NSSTOP, MAXIT2, NSAVE, SHELLMOVEMAX, HPTGRP, NFIX, CURRENTIMP,& 23:      &        NINTV, NSEED, NVEC, NS, NSSTOP, MAXIT2, NSAVE, SHELLMOVEMAX, HPTGRP, NFIX, CURRENTIMP,&
 24:      &        MCSTEPS(3), NRUNS, NVAR, MYPOWER, XMUL,  NTAB, NCARBON, NCOOP, NSYMINTERVAL, QDLIMIT, COULN, & 24:      &        MCSTEPS(3), NRUNS, NVAR, MYPOWER, XMUL,  NTAB, NCARBON, NCOOP, NSYMINTERVAL, QDLIMIT, COULN, &
 25:      &        NSUPER, NSACCEPT, NSUPERSTEP, GMODES, QUENCHFRQ, CHNRES, CHECKDID, & 25:      &        NSUPER, NSACCEPT, NSUPERSTEP, GMODES, QUENCHFRQ, CHNRES, CHECKDID, &
 26:      &        NEVL, NEVS, NVECTORS, MUPDATE, LSYS, NHSMOVE, NRENORM, NRELAX, NHSRESTART, NRENSTUCK, GBH_NREJMAX, GBH_NAVOID, & 26:      &        NEVL, NEVS, NVECTORS, MUPDATE, LSYS, NHSMOVE, NRENORM, NRELAX, NHSRESTART, NRENSTUCK,&
 27:      &        HBINS, NRBSITES, NRBSITES1, NPS, GATOM, NMSBSAVE, MAXSAVE, NSYMQMAX, EQUIL, TPAHA, ISTEP, & 27:      &        HBINS, NRBSITES, NRBSITES1, NPS, GATOM, NMSBSAVE, MAXSAVE, NSYMQMAX, EQUIL, TPAHA, ISTEP, &
 28:      &        NINTS, NumberOfTrajectories, & 28:      &        NINTS, NumberOfTrajectories, &
 29:      &        MCCycles, MCCyclesEquilibration, TargetWL, NTempPoints, SaveNth, DumpEveryNthQuench, NSpline, Hwindows, &  29:      &        MCCycles, MCCyclesEquilibration, TargetWL, NTempPoints, SaveNth, DumpEveryNthQuench, NSpline, Hwindows, & 
 30:      &        lhbins, sampledbins, MYNODE, MYNQ, NENRPER, DUMPINT, MYUNIT, PRTFRQ, BSPTDUMPFRQ, NPERMGROUP, NMOVABLEATOMS, & 30:      &        lhbins, sampledbins, MYNODE, MYNQ, NENRPER, DUMPINT, MYUNIT, PRTFRQ, BSPTDUMPFRQ, NPERMGROUP, NMOVABLEATOMS, &
 31:      &        CPS, CPF, ACKLANDID, PATOM1, PATOM2, CSMGPINDEX, CSMGUIDEGPINDEX, CSMSTEPS, CSMQUENCHES, CSMMAXIT, & 31:      &        CPS, CPF, ACKLANDID, PATOM1, PATOM2, CSMGPINDEX, CSMGUIDEGPINDEX, CSMSTEPS, CSMQUENCHES, CSMMAXIT, &
 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, &
 89:       LOGICAL DEBUG, TARGET, MORSET, CUTT, SEEDT, CENT, TSALLIST, FREEZECORE, NEWJUMP, RENORM, CAPSID, FREEZE, & 89:       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, & 90:      &        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, & 91:      &        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, & 92:      &        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, & 93:      &        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, & 94:      &        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, & 95:      &        EAMALT, ALGLUET, MGGLUET, GUPTAT, LJATT, FST, DECAY, COOP, FIXBIN, GAUSST, QUENCHDOS, FIXDIHEFLAG, &
 96:      &        FRAUSIT, ANGST, SELFT, STEPOUT, WENZEL, THRESHOLDT, THOMSONT, MULLERBROWNT, CHARMMENERGIES, & 96:      &        FRAUSIT, ANGST, SELFT, STEPOUT, WENZEL, THRESHOLDT, THOMSONT, MULLERBROWNT, CHARMMENERGIES, &
 97:      &        PROJ, RGCL2, TOSI, WELCH, AXTELL, AMBER, FIXIMAGE, BINARY, SHIFTCUT, ARNO, TUNNELT, TWOD, &  97:      &        PROJ, RGCL2, TOSI, WELCH, AXTELL, AMBER, FIXIMAGE, BINARY, SHIFTCUT, ARNO, TUNNELT, TWOD, & 
 98:      &        BLJCLUSTER, BLJCLUSTER_NOCUT, COMPRESST, FIX, FIXT, BFGS, LBFGST, DBRENTT, DZTEST, FNI, FAL, CPMD, TNT, ZETT1, & 98:      &        BLJCLUSTER, BLJCLUSTER_NOCUT, COMPRESST, FIX, FIXT, BFGS, LBFGST, DBRENTT, DZTEST, FNI, FAL, CPMD, TNT, ZETT1, &
 99:      &        ZETT2, GBH_RESTART, RESTART, CONJG, NEWRESTART, AVOID, NATBT, DIFFRACTT, CHRMMT, INTMINT, LB2T, &  99:      &        ZETT2, RESTART, CONJG, NEWRESTART, AVOID, NATBT, DIFFRACTT, CHRMMT, INTMINT, LB2T, & 
100:      &        PTMC, BINSTRUCTURES, PROGRESS, MODEL1T, NEWRESTART_MD, CHANGE_TEMP, NOCISTRANS, CHECKCHIRALITY, &100:      &        PTMC, BINSTRUCTURES, PROGRESS, MODEL1T, NEWRESTART_MD, CHANGE_TEMP, NOCISTRANS, CHECKCHIRALITY, &
101:      &        GBT, GBDT, GBDPT, GEMT, LINRODT, RADIFT, CAPBINT, DBPT, DBPTDT, DMBLMT, DMBLPYT, EFIELDT, PAHAT, STOCKAAT, MORSEDPT, &101:      &        GBT, GBDT, GBDPT, GEMT, LINRODT, RADIFT, CAPBINT, DBPT, DBPTDT, DMBLMT, DMBLPYT, EFIELDT, PAHAT, STOCKAAT, MORSEDPT, &
102:      &        MSGBT, MSTBINT, MMRSDPT, MSSTOCKT, LWOTPT, NCAPT, NPAHT, NTIPT, PAHW99T, ELLIPSOIDT, GAYBERNET,& 102:      &        MSGBT, MSTBINT, MMRSDPT, MSSTOCKT, LWOTPT, NCAPT, NPAHT, NTIPT, PAHW99T, ELLIPSOIDT, GAYBERNET,& 
103:      &        MULTPAHAT, PAPT, PAPBINT, PAPJANT, PTSTSTT, SHIFTED, SILANET, TDHDT, DDMT, WATERDCT, WATERKZT, CHECKDT, CHECKMARKOVT,& 103:      &        MULTPAHAT, PAPT, PAPBINT, PAPJANT, PTSTSTT, SHIFTED, SILANET, TDHDT, DDMT, WATERDCT, WATERKZT, CHECKDT, CHECKMARKOVT,& 
104:      &        TETHER, HISTSMOOTH, VISITPROP, ARMT, FixedEndMoveT, FIXCOM, RESTORET, QUADT, AMHT, MOVESHELLT, QDT, QD2T, &104:      &        TETHER, HISTSMOOTH, VISITPROP, ARMT, FixedEndMoveT, FIXCOM, RESTORET, QUADT, AMHT, MOVESHELLT, QDT, QD2T, &
105:      &        PARAMONOVPBCX, PARAMONOVPBCY, PARAMONOVPBCZ, PARAMONOVCUTOFF, GAYBERNEDCT, UNFREEZERES, FREEZEALL, &105:      &        PARAMONOVPBCX, PARAMONOVPBCY, PARAMONOVPBCZ, PARAMONOVCUTOFF, GAYBERNEDCT, UNFREEZERES, FREEZEALL, &
106:      &        PROJIT, PROJIHT, LEAPDIHE, DUMPQUT, DUMPBESTT, LJSITE, BLJSITE, LJSITEATTR, DUMPSTEPST, &106:      &        PROJIT, PROJIHT, LEAPDIHE, DUMPQUT, DUMPBESTT, LJSITE, BLJSITE, LJSITEATTR, DUMPSTEPST, &
107:      &        AMBERT, RANDOMSEEDT, PYGPERIODICT, LJCAPSIDT, PYBINARYT, SWAPMOVEST, MOVABLEATOMST, LIGMOVET,DUMPSTRUCTURES, &107:      &        AMBERT, RANDOMSEEDT, PYGPERIODICT, LJCAPSIDT, PYBINARYT, SWAPMOVEST, MOVABLEATOMST, LIGMOVET,DUMPSTRUCTURES, &
108:      &        LJSITECOORDST, VGW, ACKLANDT, G46, DF1T, PULLT, LOCALSAMPLET, CSMT, A9INTET, INTERESTORE, COLDFUSION, &108:      &        LJSITECOORDST, VGW, ACKLANDT, G46, DF1T, PULLT, LOCALSAMPLET, CSMT, A9INTET, INTERESTORE, COLDFUSION, &
109:      &        CSMGUIDET, MULTISITEPYT, CHAPERONINT, AVOIDRESEEDT, OHCELLT, UNFREEZEFINALQ, PERCOLATET, PERCT, PERCACCEPTED, PERCCOMPMARKOV, &109:      &        CSMGUIDET, MULTISITEPYT, CHAPERONINT, AVOIDRESEEDT, OHCELLT, UNFREEZEFINALQ, PERCOLATET, PERCT, PERCACCEPTED, PERCCOMPMARKOV, &


r31326/keywords.f 2016-10-17 12:30:10.278211293 +0100 r31325/keywords.f 2016-10-17 12:30:11.042220357 +0100
765:       TRENORM=1.0D0765:       TRENORM=1.0D0
766:       PACHECO=.FALSE.766:       PACHECO=.FALSE.
767:       EAMLJT=.FALSE.767:       EAMLJT=.FALSE.
768:       PBGLUET=.FALSE.768:       PBGLUET=.FALSE.
769:       EAMALT=.FALSE.769:       EAMALT=.FALSE.
770:       ALGLUET=.FALSE.770:       ALGLUET=.FALSE.
771:       MGGLUET=.FALSE.771:       MGGLUET=.FALSE.
772:       GUPTAT=.FALSE.772:       GUPTAT=.FALSE.
773:       FST=.FALSE.773:       FST=.FALSE.
774:       WENZEL=.FALSE.774:       WENZEL=.FALSE.
775:       GBH_RESTART=.FALSE. 
776:       GBH_NREJMAX=0 
777:       GBH_NAVOID=0 
778:       RESTART=.FALSE.775:       RESTART=.FALSE.
779:       NEWRESTART=.FALSE.776:       NEWRESTART=.FALSE.
780:       NRELAX=0777:       NRELAX=0
781:       NMSBSAVE=0778:       NMSBSAVE=0
782:       AVOID=.FALSE.779:       AVOID=.FALSE.
783:       AVOIDDIST=1.0D0780:       AVOIDDIST=1.0D0
784:       AVOIDRESEEDT=.TRUE.781:       AVOIDRESEEDT=.TRUE.
785:       GEOMDIFFTOL=0.5D0 !jdf43>782:       GEOMDIFFTOL=0.5D0 !jdf43>
786:       MAXSAVE=10783:       MAXSAVE=10
787:       NHSRESTART=0784:       NHSRESTART=0
4732:       ELSE IF (WORD.EQ.'NEWJUMP') THEN4729:       ELSE IF (WORD.EQ.'NEWJUMP') THEN
4733:          NEWJUMP=.TRUE.4730:          NEWJUMP=.TRUE.
4734:          IF (NITEMS.GT.1) CALL READF(PNEWJUMP)4731:          IF (NITEMS.GT.1) CALL READF(PNEWJUMP)
4735: !4732: !
4736: !  Reseed runs if the energy does not decrease within NRELAX mc steps.4733: !  Reseed runs if the energy does not decrease within NRELAX mc steps.
4737: !  NHSRESTART defines the number of hard sphere moves used to produce the new starting4734: !  NHSRESTART defines the number of hard sphere moves used to produce the new starting
4738: !  configuration. If NHSRESTART=0 then the geometry is changed using RESEED.4735: !  configuration. If NHSRESTART=0 then the geometry is changed using RESEED.
4739: !4736: !
4740:       ELSE IF (WORD.EQ.'NEWMOVES') THEN4737:       ELSE IF (WORD.EQ.'NEWMOVES') THEN
4741:          NEWMOVEST=.TRUE.4738:          NEWMOVEST=.TRUE.
4742:       ELSE IF (WORD.EQ.'GBHRESTART') THEN !<ds656 
4743:          GBH_RESTART=.TRUE. 
4744:          CALL READI(GBH_NREJMAX) 
4745:          IF(NITEMS.GT.2) CALL READI(GBH_NAVOID) 
4746:           
4747:       ELSE IF (WORD.EQ.'NEWRESTART') THEN4739:       ELSE IF (WORD.EQ.'NEWRESTART') THEN
4748:          NEWRESTART=.TRUE.4740:          NEWRESTART=.TRUE.
4749:          NEWRESTART_MD = .FALSE.                   ! lb4154741:          NEWRESTART_MD = .FALSE.                   ! lb415
4750:          NEWRES_TEMP = 0.0D04742:          NEWRES_TEMP = 0.0D0
4751:          IF (NITEMS.GT.1) CALL READI(NRELAX)4743:          IF (NITEMS.GT.1) CALL READI(NRELAX)
4752:          IF (NITEMS.GT.2) CALL READI(NHSRESTART)4744:          IF (NITEMS.GT.2) CALL READI(NHSRESTART)
4753:          IF (NITEMS.GT.3) CALL READA(WORD2)        ! lb4154745:          IF (NITEMS.GT.3) CALL READA(WORD2)        ! lb415
4754:          IF (WORD2.EQ.'MD') NEWRESTART_MD = .TRUE. ! lb4154746:          IF (WORD2.EQ.'MD') NEWRESTART_MD = .TRUE. ! lb415
4755:          IF (NITEMS.GT.4) THEN                     ! lb4154747:          IF (NITEMS.GT.4) THEN                     ! lb415
4756:             CALL READF(NEWRES_TEMP)4748:             CALL READF(NEWRES_TEMP)


r31326/mc_gbh.F90 2016-10-17 12:30:10.522214186 +0100 r31325/mc_gbh.F90 2016-10-17 12:30:11.286223249 +0100
 15: !   You should have received a copy of the GNU General Public License 15: !   You should have received a copy of the GNU General Public License
 16: !   along with this program; if not, write to the Free Software     16: !   along with this program; if not, write to the Free Software    
 17: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 17: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 18: ! 18: !
 19: SUBROUTINE MC_GBH(NSTEPS) 19: SUBROUTINE MC_GBH(NSTEPS)
 20:   ! 20:   !
 21:   USE PORFUNCS 21:   USE PORFUNCS
 22:   USE COMMONS, ONLY : MYNODE, MYUNIT, DEBUG, NATOMSALLOC, NQ, & 22:   USE COMMONS, ONLY : MYNODE, MYUNIT, DEBUG, NATOMSALLOC, NQ, &
 23:        TSTART, COORDS, LABELS, ECONV, BOXCENTROIDT,RANDMULTIPERMT, & 23:        TSTART, COORDS, LABELS, ECONV, BOXCENTROIDT,RANDMULTIPERMT, &
 24:        NPAR_GBH, TEMP, RMS, TARGET, HIT, QALCST, QALCS_NBRHD, & 24:        NPAR_GBH, TEMP, RMS, TARGET, HIT, QALCST, QALCS_NBRHD, &
 25:        QALCSV, GBH_RESTART, GBH_NREJMAX, GBH_NAVOID 25:        QALCSV, RESTART, NRELAX, STEP
 26:   ! 26:   !
 27:   IMPLICIT NONE 27:   IMPLICIT NONE
 28:   ! 28:   !
 29: #ifdef MPI  29: #ifdef MPI 
 30:   INCLUDE 'mpif.h' 30:   INCLUDE 'mpif.h'
 31:   INTEGER MPIERR 31:   INTEGER MPIERR
 32: #endif 32: #endif
 33:   ! 33:   !
 34:   INTEGER, INTENT(IN) :: NSTEPS 34:   INTEGER, INTENT(IN) :: NSTEPS
 35:   ! 35:   !
 36:   LOGICAL :: RESET 36:   LOGICAL :: RESET
 37:   INTEGER :: I, ITRIAL, ITERNS, BRUN, QDONE, NQTOT, IPROC, IPROCLO, & 37:   INTEGER :: I, ITRIAL, ITERNS, BRUN, QDONE, NQTOT, IPROC, IPROCLO, &
 38:        NREJSTREAK, L0(NATOMSALLOC) 38:        NDUDSTREAK, L0(NATOMSALLOC)
 39:   DOUBLE PRECISION :: TIME, SCREENC(3*NATOMSALLOC), POTEL, R, & 39:   DOUBLE PRECISION :: TIME, SCREENC(3*NATOMSALLOC), POTEL, R, &
 40:        POTEL_LIST(NPAR_GBH+1), DPRAND, X0(3*NATOMSALLOC), E0 40:        POTEL_LIST(NPAR_GBH+1), DPRAND, EMARK, X0(3*NATOMSALLOC), E0
 41:   DOUBLE PRECISION, ALLOCATABLE :: AVOIDLIST(:) 
 42:   ! 41:   !
 43:   COMMON /MYPOT/ POTEL 42:   COMMON /MYPOT/ POTEL
 44:   ! 43:   !
 45:   WRITE(MYUNIT, '(A)')  'mc_gbh> Calculating initial energy' 44:   WRITE(MYUNIT, '(A)')  'mc_gbh> Calculating initial energy'
 46:   !WRITE(MYUNIT, *)  'mc_gbh> NATOMSALLOC=', NATOMSALLOC 45:   !WRITE(MYUNIT, *)  'mc_gbh> NATOMSALLOC=', NATOMSALLOC
 47:   CALL FLUSH(MYUNIT) 46:   CALL FLUSH(MYUNIT)
 48:   CALL QUENCH(.FALSE.,1,ITERNS,TIME,BRUN,QDONE,SCREENC) 47:   CALL QUENCH(.FALSE.,1,ITERNS,TIME,BRUN,QDONE,SCREENC)
 49:   NQ(1) = 0 48:   NQ(1) = 0
 50:   WRITE(MYUNIT,& 49:   WRITE(MYUNIT,&
 51:        '(A,I10,A,G20.10,A,I5,A,G12.5,A,F10.1)') & 50:        '(A,I10,A,G20.10,A,I5,A,G12.5,A,F10.1)') &
 52:        'Qu ',NQ(1),' E= ',POTEL,' steps= ',ITERNS,' RMS= ',RMS,& 51:        'Qu ',NQ(1),' E= ',POTEL,' steps= ',ITERNS,' RMS= ',RMS,&
 53:        ' t= ',TIME-TSTART 52:        ' t= ',TIME-TSTART
 54:   CALL FLUSH(MYUNIT) 53:   CALL FLUSH(MYUNIT)
 55:   ! 54:   !
 56:   IF(GBH_NAVOID > 0) THEN 
 57:      ALLOCATE(AVOIDLIST(GBH_NAVOID)) 
 58:      AVOIDLIST(:) = 0.0D0 
 59:   ENDIF 
 60:   ! 
 61:   WRITE(MYUNIT, '(A,I6)') & 55:   WRITE(MYUNIT, '(A,I6)') &
 62:        'mc_gbh> Starting GBH loop of length ',NSTEPS 56:        'mc_gbh> Starting GBH loop of length ',NSTEPS
 63:   ! 57:   !
 64:   X0(1:3*NATOMSALLOC) = COORDS(1:3*NATOMSALLOC,1) 58:   X0(1:3*NATOMSALLOC) = COORDS(1:3*NATOMSALLOC,1)
 65:   L0(1:NATOMSALLOC) = LABELS(1:NATOMSALLOC,1) 59:   L0(1:NATOMSALLOC) = LABELS(1:NATOMSALLOC,1)
 66:   E0 = POTEL 60:   E0 = POTEL
 67:   ! 61:   !
 68:   NREJSTREAK=0 62:   EMARK=1.0D+99
  63:   NDUDSTREAK=0
 69:   gbh_loop: DO ITRIAL=1,NSTEPS 64:   gbh_loop: DO ITRIAL=1,NSTEPS
 70:      ! 65:      !
 71:      IF(QALCSV) WRITE(MYUNIT, '(A,I10)') & 66:      IF(QALCSV) WRITE(MYUNIT, '(A,I10)') &
 72:           'mc_gbh> Starting iteration ', ITRIAL      67:           'mc_gbh> Starting iteration ', ITRIAL     
 73:      ! 68:      !
 74:      RESET=.FALSE. 69:      IF(RESTART.AND.NDUDSTREAK >= NRELAX) THEN
 75:      IF(GBH_RESTART) THEN 70:         RESET=.TRUE.
 76:         IF(NREJSTREAK >= GBH_NREJMAX) RESET=.TRUE. 71:         EMARK=1.0D+99
 77:         IF(RESET.OR.(GBH_NAVOID>0.AND.NREJSTREAK==1)) THEN 72:         E0=EMARK ! Guarantee move by inflating current energy
 78:            CALL PROCESS_AVOID_LIST(E0,GBH_NAVOID,AVOIDLIST,RESET) 73:         NDUDSTREAK=0
 79:         ENDIF 74:      ELSE
 80:         IF(RESET) THEN 75:         RESET=.FALSE.
 81:            E0=1.0D+99 ! Guarantee move by inflating Markov energy 
 82:            NREJSTREAK=0            
 83:         ENDIF 
 84:      ENDIF 76:      ENDIF
 85:      ! 77:      !
 86:      ! --- Stochastic cartesian move ------- 78:      ! --- Stochastic cartesian move -------
  79:      !CALL TAKESTEP(1)
 87:      CALL RANDOM_MOVE(RESET,3,NATOMSALLOC,COORDS(:,1))      80:      CALL RANDOM_MOVE(RESET,3,NATOMSALLOC,COORDS(:,1))     
 88:      ! 81:      !
 89:      !IF (RANDMULTIPERMT.AND.MOD(J1,RANDMULTIPERM_STEP)==0) & 82:      !IF (RANDMULTIPERMT.AND.MOD(J1,RANDMULTIPERM_STEP)==0) &
 90:      !     CALL RANDMULTIPERM(1) ! re-write this routine!!!!! 83:      !     CALL RANDMULTIPERM(1) ! re-write this routine!!!!!
 91:      !IF(BOXCENTROIDT) CALL BOXCENTROID(COORDS(:,1)) 84:      !IF(BOXCENTROIDT) CALL BOXCENTROID(COORDS(:,1))
 92:      ! 85:      !
 93:      ! Quench perturbed state 86:      ! Quench perturbed state
 94:      NQ(1) = NQ(1) + 1 87:      NQ(1) = NQ(1) + 1
 95:      CALL QUENCH(.FALSE.,1,ITERNS,TIME,BRUN,QDONE,SCREENC) 88:      CALL QUENCH(.FALSE.,1,ITERNS,TIME,BRUN,QDONE,SCREENC)
 96:      WRITE(MYUNIT,& 89:      WRITE(MYUNIT,&
145:      ! Broadcast HIT from IPROCLO if targetting...138:      ! Broadcast HIT from IPROCLO if targetting...
146:      IF(TARGET) THEN139:      IF(TARGET) THEN
147:         ! Broadcast IPROCLO from master140:         ! Broadcast IPROCLO from master
148:         CALL MPI_BCAST(IPROCLO,1,MPI_INTEGER,&141:         CALL MPI_BCAST(IPROCLO,1,MPI_INTEGER,&
149:              0,MPI_COMM_WORLD,MPIERR)142:              0,MPI_COMM_WORLD,MPIERR)
150:         CALL MPI_BCAST(HIT,1,MPI_LOGICAL,&143:         CALL MPI_BCAST(HIT,1,MPI_LOGICAL,&
151:              IPROCLO,MPI_COMM_WORLD,MPIERR)        144:              IPROCLO,MPI_COMM_WORLD,MPIERR)        
152:      ENDIF145:      ENDIF
153: #endif                     146: #endif                     
154:      !147:      !
155:      IF(POTEL < E0 - ECONV) THEN148:      IF(POTEL < EMARK - ECONV) THEN
156:         NREJSTREAK=0149:         EMARK = POTEL
 150:         NDUDSTREAK=0
157:      ELSE151:      ELSE
158:         NREJSTREAK = NREJSTREAK+1152:         NDUDSTREAK = NDUDSTREAK+1
159:      ENDIF153:      ENDIF
160:      !154:      !
161:      IF(HIT) THEN155:      IF(HIT) THEN
162:         WRITE(MYUNIT,'(A,I3,A,I6)') &156:         WRITE(MYUNIT,'(A,I3,A,I6)') &
163:              'mc_gbh> Target hit stochastically by node ',IPROCLO+1,&157:              'mc_gbh> Target hit stochastically by node ',IPROCLO+1,&
164:              ' on trial ',ITRIAL158:              ' on trial ',ITRIAL
165:         EXIT gbh_loop159:         EXIT gbh_loop
166:      ENDIF160:      ENDIF
167:      !161:      !
168:      ! --- Deterministic refinement --------------------------162:      ! --- Deterministic refinement --------------------------
173:      ENDIF167:      ENDIF
174:      !168:      !
175:      IF(HIT) EXIT gbh_loop169:      IF(HIT) EXIT gbh_loop
176:      !170:      !
177:      X0(1:3*NATOMSALLOC) = COORDS(1:3*NATOMSALLOC,1)171:      X0(1:3*NATOMSALLOC) = COORDS(1:3*NATOMSALLOC,1)
178:      L0(1:NATOMSALLOC) = LABELS(1:NATOMSALLOC,1)172:      L0(1:NATOMSALLOC) = LABELS(1:NATOMSALLOC,1)
179:      E0 = POTEL173:      E0 = POTEL
180:      !174:      !
181:   ENDDO gbh_loop175:   ENDDO gbh_loop
182:   !176:   !
183:   IF(ALLOCATED(AVOIDLIST)) DEALLOCATE(AVOIDLIST) 
184:   ! 
185:   RETURN177:   RETURN
186:   !178:   !
187: END SUBROUTINE MC_GBH179: END SUBROUTINE MC_GBH
188: 180: 
189: SUBROUTINE CHOOSE_FROM_LIST(N,VALUES,I)181: SUBROUTINE CHOOSE_FROM_LIST(N,VALUES,I)
190:   !182:   !
191:   ! Choose an element of VALUES with Boltzmann probability183:   ! Choose an element of VALUES with Boltzmann probability
192:   !184:   !
193:   USE COMMONS, ONLY : TEMP, QALCSV, MYUNIT185:   USE COMMONS, ONLY : TEMP, QALCSV, MYUNIT
194:   !186:   !
272:      IF(RMAX < RALL(I)) RMAX = RALL(I)264:      IF(RMAX < RALL(I)) RMAX = RALL(I)
273:   ENDDO265:   ENDDO
274:   !266:   !
275:   R=(DPRAND()-0.5D0)*2.0D0 ! 50% chance of no angular move267:   R=(DPRAND()-0.5D0)*2.0D0 ! 50% chance of no angular move
276:   RMIN = RMAX - R*ASTEP(1)268:   RMIN = RMAX - R*ASTEP(1)
277:   N1=0; N2=0269:   N1=0; N2=0
278:   !270:   !
279:   DO I=1,N271:   DO I=1,N
280:      J=DIM*(I-1)272:      J=DIM*(I-1)
281:      IF(RESET) THEN ! Reset to random coordinates273:      IF(RESET) THEN ! Reset to random coordinates
282:         !        274:         !
283:         THETA = ACOS(2*DPRAND()-1) !THETA = DPRAND()*PI275:         THETA = DPRAND()*PI
284:         PHI = DPRAND()*TWOPI276:         PHI = DPRAND()*TWOPI
285:         R=RMAX*DPRAND()**(1.0D0/3.0D0) !R = DPRAND()*RMAX277:         R = DPRAND()*RMAX
286:         X(J+1) = CNTR(1) + R*DSIN(THETA)*DCOS(PHI)278:         X(J+1) = CNTR(1) + R*DSIN(THETA)*DCOS(PHI)
287:         X(J+2) = CNTR(2) + R*DSIN(THETA)*DSIN(PHI)279:         X(J+2) = CNTR(2) + R*DSIN(THETA)*DSIN(PHI)
288:         IF(DIM>2) X(J+3) = CNTR(3) + R*DCOS(THETA)280:         IF(DIM>2) X(J+3) = CNTR(3) + R*DCOS(THETA)
289:         !281:         !
290:      ELSEIF(RALL(I) > RMIN) THEN ! Surface angular move282:      ELSEIF(RALL(I) > RMIN) THEN ! Surface angular move
291:         !283:         !
292:         THETA = ACOS(2*DPRAND()-1) !THETA = DPRAND()*PI284:         THETA = DPRAND()*PI
293:         PHI = DPRAND()*TWOPI285:         PHI = DPRAND()*TWOPI
294:         X(J+1) = CNTR(1) + RMAX*DSIN(THETA)*DCOS(PHI)286:         X(J+1) = CNTR(1) + RMAX*DSIN(THETA)*DCOS(PHI)
295:         X(J+2) = CNTR(2) + RMAX*DSIN(THETA)*DSIN(PHI)287:         X(J+2) = CNTR(2) + RMAX*DSIN(THETA)*DSIN(PHI)
296:         IF(DIM>2) X(J+3) = CNTR(3) + RMAX*DCOS(THETA)288:         IF(DIM>2) X(J+3) = CNTR(3) + RMAX*DCOS(THETA)
297:         N2=N2+1289:         N2=N2+1
298:         !290:         !
299:      ELSE ! Interior shake move291:      ELSE ! Interior shake move
300:         !292:         !
301:         DO K=1,DIM293:         DO K=1,DIM
302:            R=(DPRAND()-0.5D0)*2.0D0294:            R=(DPRAND()-0.5D0)*2.0D0
332:      J=3*(I-1)324:      J=3*(I-1)
333:      DO K=1,DIM325:      DO K=1,DIM
334:         CNTR(K) = CNTR(K) + X(J+K)326:         CNTR(K) = CNTR(K) + X(J+K)
335:      ENDDO327:      ENDDO
336:   ENDDO328:   ENDDO
337:   CNTR(:) = CNTR(:)/DBLE(N)329:   CNTR(:) = CNTR(:)/DBLE(N)
338:   !330:   !
339:   RETURN331:   RETURN
340:   !332:   !
341: END SUBROUTINE FIND_CENTROID333: END SUBROUTINE FIND_CENTROID
342:  
343: SUBROUTINE PROCESS_AVOID_LIST(E,N,ELIST,SWITCH) 
344:   ! 
345:   USE COMMONS, ONLY : ECONV, MYUNIT 
346:   ! 
347:   IMPLICIT NONE 
348:   ! 
349:   DOUBLE PRECISION, INTENT(IN) :: E 
350:   INTEGER, INTENT(IN) :: N 
351:   DOUBLE PRECISION, INTENT(INOUT) :: ELIST(N) 
352:   LOGICAL, INTENT(INOUT) :: SWITCH 
353:   ! 
354:   INTEGER :: I, J 
355:   DOUBLE PRECISION :: EDUM 
356:   ! 
357:   IF(SWITCH) THEN ! Append E to end of ELIST and then shuffle down. 
358:      ! 
359:      ELIST(N) = E 
360:      DO I=N-1,1,-1 
361:         EDUM = ELIST(I) 
362:         ELIST(I) = ELIST(I+1) 
363:         ELIST(I+1) = EDUM 
364:      ENDDO 
365:      WRITE(MYUNIT,'(A,G20.10)') & 
366:           'mc_gbh> Added to AVOIDLIST E= ',E  
367:      ! 
368:   ELSE ! Check if E is present in ELIST 
369:      ! 
370:      elistscan: DO I=1,N 
371:         IF(ABS(E-ELIST(I)) < ECONV) THEN 
372:            SWITCH=.TRUE. 
373:            WRITE(MYUNIT,'(A,G20.10)') & 
374:                 'mc_gbh> Found in AVOIDLIST E= ',E 
375:            ! Shuffle match down to 1st place 
376:            DO J=I,2,-1 
377:               EDUM = ELIST(J) 
378:               ELIST(J) = ELIST(J-1) 
379:               ELIST(J-1) = EDUM 
380:            ENDDO 
381:            EXIT elistscan 
382:         ENDIF 
383:      ENDDO elistscan 
384:      ! 
385:   ENDIF 
386:   ! 
387:   RETURN 
388:   ! 
389: END SUBROUTINE PROCESS_AVOID_LIST 


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0