hdiff output

r32917/efol.f90 2017-07-04 12:30:11.280568825 +0100 r32916/efol.f90 2017-07-04 12:30:12.624586818 +0100
 35:       INTEGER,INTENT(IN) :: INRIN 35:       INTEGER,INTENT(IN) :: INRIN
 36:       LOGICAL DONE, TSTEST, MINTEST, NRTEST, ZT(3*NATOMS),&  36:       LOGICAL DONE, TSTEST, MINTEST, NRTEST, ZT(3*NATOMS),& 
 37:      &        PZT(3*NATOMS), SDTEST, AWAY, MFLAG, TEST1, TEST2, PTEST 37:      &        PZT(3*NATOMS), SDTEST, AWAY, MFLAG, TEST1, TEST2, PTEST
 38:       INTEGER OMODE, K1, IMODE, I, J, INEG, IASSIGN, IM, ICOUNT, NATOMSSAVE, ISTAT,& 38:       INTEGER OMODE, K1, IMODE, I, J, INEG, IASSIGN, IM, ICOUNT, NATOMSSAVE, ISTAT,&
 39:      &        J1, J2, INFO, ITMAX, ITER, FRAME, HORDER, INRSAVE, NEV 39:      &        J1, J2, INFO, ITMAX, ITER, FRAME, HORDER, INRSAVE, NEV
 40:       DOUBLE PRECISION TEMPA(9*NATOMS), SSTPMAG, STPMAG, TPAR, & 40:       DOUBLE PRECISION TEMPA(9*NATOMS), SSTPMAG, STPMAG, TPAR, &
 41:      &   FOB(3*NATOMS), CSTEP(3*NATOMS), STEP(3*NATOMS), TEMP,& 41:      &   FOB(3*NATOMS), CSTEP(3*NATOMS), STEP(3*NATOMS), TEMP,&
 42:      &   RMS, PROD, SUM, RAT1, RAT2, DELTASP, EOLD, EPER, ENERGY, AMASS, R1, R2, & 42:      &   RMS, PROD, SUM, RAT1, RAT2, DELTASP, EOLD, EPER, ENERGY, AMASS, R1, R2, &
 43:      &   VEC(3*NATOMS), AV(6), SMALL, Z0, QTS(3*NATOMS), OVEC(3), H1VEC(3), H2VEC(3),& 43:      &   VEC(3*NATOMS), AV(6), SMALL, Z0, QTS(3*NATOMS), OVEC(3), H1VEC(3), H2VEC(3),&
 44:      &   DELE, SVH, DELTAT, RAT(3*NATOMS), AVG, DUMMY, INERTIA(3,3), & 44:      &   DELE, SVH, DELTAT, RAT(3*NATOMS), AVG, DUMMY, INERTIA(3,3), &
 45:      &   DIAGEXP(3*NATOMS), VNEW(3*NATOMS), E1, E2, SCALE, DELTAS, DOTOPT, PENERGY, POPT, PINIT 45:      &   DIAGEXP(3*NATOMS), VNEW(3*NATOMS), E1, E2, SCALE, DELTAS, DOTOPT
 46: !    &   VECX(3*NATOMS), VECY(3*NATOMS), VECZ(3*NATOMS), DUMMYX, DUMMYY, DUMMYZ 46: !    &   VECX(3*NATOMS), VECY(3*NATOMS), VECZ(3*NATOMS), DUMMYX, DUMMYY, DUMMYZ
 47:       DOUBLE PRECISION DIAG(3*NATOMS), PSTEP(3*NATOMS), PFOB(3*NATOMS) 47:       DOUBLE PRECISION DIAG(3*NATOMS), PSTEP(3*NATOMS), PFOB(3*NATOMS)
 48:       DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: QW 48:       DOUBLE PRECISION, ALLOCATABLE, DIMENSION(:) :: QW
 49:       LOGICAL KNOWE, KNOWG, KNOWH 49:       LOGICAL KNOWE, KNOWG, KNOWH
 50:       COMMON /KNOWN/ KNOWE, KNOWG, KNOWH 50:       COMMON /KNOWN/ KNOWE, KNOWG, KNOWH
 51:       CHARACTER(LEN=5) ZSYMSAVE 51:       CHARACTER(LEN=5) ZSYMSAVE
 52:       COMMON /SYS/ ZSYMSAVE 52:       COMMON /SYS/ ZSYMSAVE
 53: ! 53: !
 54: !  Assign enough memory to WORK for a blocksize of 32 to be possible.  54: !  Assign enough memory to WORK for a blocksize of 32 to be possible. 
 55: !  This is for DSYEVR. 55: !  This is for DSYEVR.
177: !        CALL  DIIS(NOPT,SVEC,ITER-1,QSAVE,VNEW,QTS,RMS,ENERGY,DONE)177: !        CALL  DIIS(NOPT,SVEC,ITER-1,QSAVE,VNEW,QTS,RMS,ENERGY,DONE)
178: !        IF (PTEST) WRITE(*,'(A,F20.10)') ' Energy before DIIS=',ENERGY178: !        IF (PTEST) WRITE(*,'(A,F20.10)') ' Energy before DIIS=',ENERGY
179: !        CALL POTENTIAL(Q,ENERGY,VNEW,.TRUE.,.TRUE.,RMS,PTEST,.FALSE.)179: !        CALL POTENTIAL(Q,ENERGY,VNEW,.TRUE.,.TRUE.,RMS,PTEST,.FALSE.)
180: !        IF (PTEST) WRITE(*,'(A,F20.10)') ' Energy after DIIS=',ENERGY180: !        IF (PTEST) WRITE(*,'(A,F20.10)') ' Energy after DIIS=',ENERGY
181: !     ENDIF181: !     ENDIF
182: !182: !
183: !  Transformation to mass weighted coordinates if required.183: !  Transformation to mass weighted coordinates if required.
184: !184: !
185:       IF (MASST) CALL MASSWT(NATOMS,ATMASS,QTS,VNEW,.TRUE.)185:       IF (MASST) CALL MASSWT(NATOMS,ATMASS,QTS,VNEW,.TRUE.)
186: 186: 
187:       IF ((.NOT.VARIABLES).AND.(.NOT.MIEFT).AND.(.NOT.NOTRANSROTT).AND.(.NOT.PHI4MODT).AND. &187:       IF ((.NOT.VARIABLES).AND.(.NOT.MIEFT).AND.(.NOT.NOTRANSROTT).AND.(.NOT.PHI4MODT).AND.(.NOT.(RINGPOLYMERT.AND.(RPSYSTEM(1:4).EQ.'AECK')))) THEN
188:      &            (.NOT.(RINGPOLYMERT.AND.(RPSYSTEM(1:4).EQ.'AECK')))) THEN 
189:          IF (ZSYM(NATOMS).EQ.'SY') THEN188:          IF (ZSYM(NATOMS).EQ.'SY') THEN
190:             CALL SHIFTSTOCK(QTS,NATOMS)189:             CALL SHIFTSTOCK(QTS,NATOMS)
191:          ELSEIF (RBAAT) THEN190:          ELSEIF (RBAAT) THEN
192:             CALL SHIFTRIGID(QTS,NATOMS)191:             CALL SHIFTRIGID(QTS,NATOMS)
193:          ELSEIF (ZSYM(NATOMS).EQ.'TH') THEN192:          ELSEIF (ZSYM(NATOMS).EQ.'TH') THEN
194:             CALL SHIFTHTH(QTS,NATOMS)193:             CALL SHIFTHTH(QTS,NATOMS)
195: ! hk286194: ! hk286
196:          ELSEIF (GTHOMSONT) THEN195:          ELSEIF (GTHOMSONT) THEN
197:             CALL SHIFTHGTH(QTS,NATOMS)196:             CALL SHIFTHGTH(QTS,NATOMS)
198:          ELSE197:          ELSE
878:                            STEP(J1)=STPMAX(J1)/10.0D0877:                            STEP(J1)=STPMAX(J1)/10.0D0
879:                         ENDIF878:                         ENDIF
880:                      ENDIF879:                      ENDIF
881:                   ENDDO880:                   ENDDO
882:                ELSE881:                ELSE
883: !882: !
884: !  Step off only along the mode specified.883: !  Step off only along the mode specified.
885: !884: !
886:                   IF ((IVEC.GE.0).AND.PTEST) PRINT '(A,I6,A)',' efol> Stepping away from saddle along mode ',IMODE,' + direction'885:                   IF ((IVEC.GE.0).AND.PTEST) PRINT '(A,I6,A)',' efol> Stepping away from saddle along mode ',IMODE,' + direction'
887:                   IF ((IVEC.LT.0).AND.PTEST) PRINT '(A,I6,A)',' efol> Stepping away from saddle along mode ',IMODE,' - direction'886:                   IF ((IVEC.LT.0).AND.PTEST) PRINT '(A,I6,A)',' efol> Stepping away from saddle along mode ',IMODE,' - direction'
888: !                   IF (PUSHOPTT) THEN887:                   IF (PUSHOFF.NE.0.0D0) THEN
889: !                      PINIT=PUSHOFF888:                   STEP(IMODE)=PUSHOFF
890: !                      IF (IVEC.LT.0) PINIT=-PUSHOFF889:                   ELSE
891: ! !            ZWORK(J1,1) ??890:                      STEP(IMODE)=STPMAX(IMODE)/10.0D0
892: !                      CALL GOLDEN(ZWORK(1:NOPT,IMODE),QTS,ENERGY,PINIT,POPT,PENERGY)891:                   ENDIF
893: !                      IF (IVEC.GE.0) THEN892:                   IF (IVEC.LT.0) STEP(IMODE)=-STEP(IMODE)
894: !                         WRITE(6,'(A,3G25.15)') 'path> golden section + pushoff, energy and delta energy: ', & 
895: !      &                                 POPT,PENERGY,PENERGY-ENERGY 
896: !                      ELSE 
897: !                         WRITE(6,'(A,3G25.15)') 'path> golden section - pushoff, energy and delta energy: ', & 
898: !      &                                 POPT,PENERGY,PENERGY-ENERGY 
899: !                      ENDIF 
900: !                      STEP(IMODE)=POPT 
901: !                   ELSE  
902:                      IF (PUSHOFF.NE.0.0D0) THEN 
903:                         STEP(IMODE)=PUSHOFF 
904:                     ELSE 
905:                         STEP(IMODE)=STPMAX(IMODE)/10.0D0 
906:                     ENDIF 
907:                     IF (IVEC.LT.0) STEP(IMODE)=-STEP(IMODE) 
908: !                 ENDIF 
909:                ENDIF893:                ENDIF
910:             ENDIF894:             ENDIF
911:          ENDIF895:          ENDIF
912:          IF (EFSTEPST.AND.(MOD(ITER-1,EFSTEPS).EQ.0).AND.(.NOT.SDTEST)) THEN896:          IF (EFSTEPST.AND.(MOD(ITER-1,EFSTEPS).EQ.0).AND.(.NOT.SDTEST)) THEN
913:             DO I=NZERO+1,NOPT897:             DO I=NZERO+1,NOPT
914:                 IF (PTEST) WRITE(*,360) I, STEP(I)898:                 IF (PTEST) WRITE(*,360) I, STEP(I)
915: 360             FORMAT(' Unscaled step for mode ',I4,'=',F20.10)899: 360             FORMAT(' Unscaled step for mode ',I4,'=',F20.10)
916:             ENDDO900:             ENDDO
917:          ENDIF901:          ENDIF
918:          IF ((TEMP.GT.1.0D0).AND.PTEST) WRITE(*,366) TEMP902:          IF ((TEMP.GT.1.0D0).AND.PTEST) WRITE(*,366) TEMP


r32917/golden.f90 2017-07-04 12:30:12.044579058 +0100 r32916/golden.f90 2017-07-04 12:30:12.900590510 +0100
  1:   1: svn: E195012: Unable to find repository location for 'svn+ssh://svn.ch.private.cam.ac.uk/groups/wales/trunk/OPTIM/source/golden.f90' in revision 32916
  2: !   OPTIM: A program for optimizing geometries and calculating reaction pathways 
  3: !   Copyright (C) 1999-2006 David J. Wales 
  4: !   This file is part of OPTIM. 
  5: ! 
  6: !   OPTIM is free software; you can redistribute it and/or modify 
  7: !   it under the terms of the GNU General Public License as published by 
  8: !   the Free Software Foundation; either version 2 of the License, or 
  9: !   (at your option) any later version. 
 10: ! 
 11: !   OPTIM is distributed in the hope that it will be useful, 
 12: !   but WITHOUT ANY WARRANTY; without even the implied warranty of 
 13: !   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
 14: !   GNU General Public License for more details. 
 15: ! 
 16: !   You should have received a copy of the GNU General Public License 
 17: !   along with this program; if not, write to the Free Software 
 18: !   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA 
 19: ! 
 20: ! jmc Note nothing has been done here to fix the unres pathlength coordinate resetting problem... 
 21: ! 
 22: SUBROUTINE GOLDEN(VECS,QINIT,ETS,PINIT,POPT,PENERGY) 
 23: USE COMMONS, ONLY : NOPT, DEBUG 
 24: USE KEY, ONLY : PUSHOPTMAX, PUSHOPTCONV 
 25: IMPLICIT NONE 
 26:  
 27: DOUBLE PRECISION, PARAMETER :: GRATIO=1.618033989D0 
 28: DOUBLE PRECISION ASTEP, BSTEP, CSTEP, DSTEP, RMS, VECS(NOPT), QINIT(NOPT), ENERGYC, ENERGYD 
 29: DOUBLE PRECISION QC(NOPT), QD(NOPT), VNEW(NOPT), ETS, POPT, PENERGY, PINIT 
 30: INTEGER J1 
 31: ! 
 32: ! Initially astep=0 the ts at QINIT(J1), bstep=PUSHOFF, corresponding to current Q(J1) 
 33: ! 
 34: PRINT '(A,6G20.10)','VECS(1:6)=',VECS(1:6) 
 35: ASTEP=0.0D0 
 36: BSTEP=PINIT 
 37: CSTEP = BSTEP - (BSTEP - ASTEP) / GRATIO 
 38: DSTEP = ASTEP + (BSTEP - ASTEP) / GRATIO 
 39: IF (DEBUG) WRITE(6,'(A,4G20.10,A)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP,' initially' 
 40: DO J1=1,PUSHOPTMAX 
 41:    QC(1:NOPT)=QINIT(1:NOPT)+CSTEP*VECS(1:NOPT) 
 42:    QD(1:NOPT)=QINIT(1:NOPT)+DSTEP*VECS(1:NOPT) 
 43:    CALL POTENTIAL(QC,ENERGYC,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.) 
 44:    CALL POTENTIAL(QD,ENERGYD,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.) 
 45:    IF (DEBUG) WRITE(6,'(A,4G25.15)') 'path> energy at ts, C and D and diff=', & 
 46:      &                    ETS,ENERGYC,ENERGYD,MIN(ENERGYC,ENERGYD)-ETS 
 47:    IF (ENERGYC.LT.ENERGYD) THEN 
 48:       BSTEP=DSTEP 
 49:    ELSE 
 50:       ASTEP=CSTEP 
 51:    ENDIF 
 52:    CSTEP = BSTEP - (BSTEP - ASTEP) / GRATIO 
 53:    DSTEP = ASTEP + (BSTEP - ASTEP) / GRATIO 
 54:    IF (DEBUG) WRITE(6,'(A,4G20.10)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP 
 55:    IF (ABS(ASTEP-BSTEP).LT.PUSHOPTCONV) THEN 
 56:       ASTEP=(ASTEP+BSTEP)/2.0D0 
 57: !     Q(1:NOPT)=QINIT(1:NOPT)+ASTEP*VECS(1:NOPT) 
 58: !     STEP(1:NOPT)=ASTEP*VECS(1:NOPT) 
 59:       EXIT 
 60:    ENDIF 
 61: ENDDO 
 62:  
 63: PENERGY=MIN(ENERGYC,ENERGYD) 
 64: POPT=ASTEP 
 65:   
 66: END SUBROUTINE GOLDEN 
 67:  
 68:  


r32917/path.f 2017-07-04 12:30:12.344583061 +0100 r32916/path.f 2017-07-04 12:30:13.152593885 +0100
 45:         45:        
 46:       LOGICAL POTCALL, PTEST 46:       LOGICAL POTCALL, PTEST
 47:       LOGICAL PATHFAILT 47:       LOGICAL PATHFAILT
 48:       CHARACTER(LEN=*) ITSTRING,EOFSSTRING 48:       CHARACTER(LEN=*) ITSTRING,EOFSSTRING
 49:  49: 
 50:       INTEGER NSTEPPLUS, ITDONE, NSTEPMINUS, J1, J2, NPATHFRAME, NATOMSSAVE, NEWINR, GETUNIT, NEG, 50:       INTEGER NSTEPPLUS, ITDONE, NSTEPMINUS, J1, J2, NPATHFRAME, NATOMSSAVE, NEWINR, GETUNIT, NEG,
 51:      1        INEG, HORDER, INFO, IVECSAVE, IVEC2SAVE, IPOT, J3, NFPLUS, NFMINUS, RECLEN, ISTAT, NUSE 51:      1        INEG, HORDER, INFO, IVECSAVE, IVEC2SAVE, IPOT, J3, NFPLUS, NFMINUS, RECLEN, ISTAT, NUSE
 52:       INTEGER, PARAMETER :: NFMAX=20000 52:       INTEGER, PARAMETER :: NFMAX=20000
 53:  53: 
 54:       DOUBLE PRECISION, ALLOCATABLE :: EOFS(:), PATHLENGTH(:), EOFSFRAMEP(:), EOFSFRAMEM(:) 54:       DOUBLE PRECISION, ALLOCATABLE :: EOFS(:), PATHLENGTH(:), EOFSFRAMEP(:), EOFSFRAMEM(:)
 55:       DOUBLE PRECISION EVALMAX, RANDOM, QE, PINIT, POPT, PENERGY, 55:       DOUBLE PRECISION EVALMAX, RANDOM, QE, ASTEP, BSTEP, CSTEP, DSTEP, ENERGYC, ENERGYD, 
 56:      1                 DIAG(NOPT), EREAL, RMS2, STEP(NOPT), QINIT(NOPT),  56:      1                 DIAG(NOPT), EREAL, RMS2, STEP(NOPT), QINIT(NOPT), GOLDEN, QC(NOPT), QD(NOPT),
 57:      2                 TEMP, MINIM, SUM2, SUM4, EVPLUS, EVMINUS,  57:      2                 TEMP, MINIM, SUM2, SUM4, EVPLUS, EVMINUS, 
 58:      4                 SPLUS, SMINUS, STS, STEMP, ETEMP, DUMMY, TIME, TIME0, 58:      4                 SPLUS, SMINUS, STS, STEMP, ETEMP, DUMMY, TIME, TIME0,
 59:      5                 OVEC(3), H1VEC(3), H2VEC(3), 59:      5                 OVEC(3), H1VEC(3), H2VEC(3),
 60:      6                 TEMPA(9*NATOMS), CAPSCOORDS1(18), CAPSCOORDS2(18),  60:      6                 TEMPA(9*NATOMS), CAPSCOORDS1(18), CAPSCOORDS2(18), 
 61:      7                 DPRAND, PPLUS, PMINUS, lambdats, lambdap, lambdam, distp, distm, RMAT(3,3) !, P(3) 61:      7                 DPRAND, PPLUS, PMINUS, lambdats, lambdap, lambdam, distp, distm, RMAT(3,3) !, P(3)
 62:       LOGICAL CONNECTT, DUMPPATH, READPATH, CALCRATES, STOPFIRST, ETEST, NOSHIFTSAVE, NOHESSSAVE 62:       LOGICAL CONNECTT, DUMPPATH, READPATH, CALCRATES, STOPFIRST, ETEST, NOSHIFTSAVE, NOHESSSAVE
 63:       DOUBLE PRECISION TEMPERATURE, HRED, DIHE, ALLANG, LASTE 63:       DOUBLE PRECISION TEMPERATURE, HRED, DIHE, ALLANG, LASTE
 64:       INTEGER NCONNECT 64:       INTEGER NCONNECT
 65:       COMMON /CONN/ STOPFIRST, CONNECTT, NCONNECT, DUMPPATH, READPATH, CALCRATES, TEMPERATURE, HRED 65:       COMMON /CONN/ STOPFIRST, CONNECTT, NCONNECT, DUMPPATH, READPATH, CALCRATES, TEMPERATURE, HRED
 66:       DOUBLE PRECISION CAPSRHO, EPS2, RAD, HEIGHT 66:       DOUBLE PRECISION CAPSRHO, EPS2, RAD, HEIGHT
162:          ELSE162:          ELSE
163: !           sn402: to compute the pushoff step from the transition state?163: !           sn402: to compute the pushoff step from the transition state?
164:             CALL BFGSTS(NSTEPS,Q,ENERGY,VNEW,MFLAG,RMS,EVTS,EVALMAX,VECS,ITDONE,POTCALL,PTEST)164:             CALL BFGSTS(NSTEPS,Q,ENERGY,VNEW,MFLAG,RMS,EVTS,EVALMAX,VECS,ITDONE,POTCALL,PTEST)
165:          ENDIF165:          ENDIF
166:          ETS=ENERGY166:          ETS=ENERGY
167: !        IF (DEBUG) PRINT*,'ts step off plus points in path:'167: !        IF (DEBUG) PRINT*,'ts step off plus points in path:'
168: !        IF (DEBUG) WRITE(*,'(3G20.10)') (Q(J1),J1=1,NOPT)168: !        IF (DEBUG) WRITE(*,'(3G20.10)') (Q(J1),J1=1,NOPT)
169:          DO J1=1,NOPT169:          DO J1=1,NOPT
170:             STEP(J1)=Q(J1)-QINIT(J1)170:             STEP(J1)=Q(J1)-QINIT(J1)
171:          ENDDO171:          ENDDO
172:          IF (PUSHOPTT) THEN  ! set REDOTS to zero? maybe not172:          IF (.TRUE.) THEN  ! use PUSHOPT logical - set REDOTS to zero
173: ! !173: !
174: ! ! Initially astep=0 the ts at QINIT(J1), bstep=PUSHOFF, corresponding to current Q(J1)174: ! Initially astep=0 the ts at QINIT(J1), bstep=PUSHOFF, corresponding to current Q(J1)
175: ! !175: !
176: !             GOLDEN=(SQRT(5.0D0) + 1.0D0) / 2.0D0176:             GOLDEN=(SQRT(5.0D0) + 1.0D0) / 2.0D0
177: !             ASTEP=0.0D0177:             ASTEP=0.0D0
178: !             BSTEP=PUSHOFF178:             BSTEP=PUSHOFF
179: !             CSTEP = BSTEP - (BSTEP - ASTEP) / GOLDEN179:             CSTEP = BSTEP - (BSTEP - ASTEP) / GOLDEN
180: !             DSTEP = ASTEP + (BSTEP - ASTEP) / GOLDEN180:             DSTEP = ASTEP + (BSTEP - ASTEP) / GOLDEN
181: !             IF (DEBUG) WRITE(6,'(A,4G20.10,A)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP,' initially'181:             IF (DEBUG) WRITE(6,'(A,4G20.10,A)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP,' initially'
182: !             DO J1=1,100182:             DO J1=1,100
183: !                QC(1:NOPT)=QINIT(1:NOPT)+CSTEP*VECS(1:NOPT)183:                QC(1:NOPT)=QINIT(1:NOPT)+CSTEP*VECS(1:NOPT)
184: !                QD(1:NOPT)=QINIT(1:NOPT)+DSTEP*VECS(1:NOPT)184:                QD(1:NOPT)=QINIT(1:NOPT)+DSTEP*VECS(1:NOPT)
185: !                CALL POTENTIAL(QC,ENERGYC,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.)185:                CALL POTENTIAL(QC,ENERGYC,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.)
186: !                CALL POTENTIAL(QD,ENERGYD,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.)186:                CALL POTENTIAL(QD,ENERGYD,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.)
187: !                IF (DEBUG) WRITE(6,'(A,4G25.15)') 'path> energy at ts, C and D and diff=',187:                IF (DEBUG) WRITE(6,'(A,4G25.15)') 'path> energy at ts, C and D and diff=',
188: !      &                    ETS,ENERGYC,ENERGYD,MIN(ENERGYC,ENERGYD)-ETS  188:      &                    ETS,ENERGYC,ENERGYD,MIN(ENERGYC,ENERGYD)-ETS  
189: !                IF (ENERGYC.LT.ENERGYD) THEN189:                IF (ENERGYC.LT.ENERGYD) THEN
190: !                   BSTEP=DSTEP190:                   BSTEP=DSTEP
191: !                ELSE191:                ELSE
192: !                   ASTEP=CSTEP192:                   ASTEP=CSTEP
193: !                ENDIF193:                ENDIF
194: !                CSTEP = BSTEP - (BSTEP - ASTEP) / GOLDEN194:                CSTEP = BSTEP - (BSTEP - ASTEP) / GOLDEN
195: !                DSTEP = ASTEP + (BSTEP - ASTEP) / GOLDEN195:                DSTEP = ASTEP + (BSTEP - ASTEP) / GOLDEN
196: !                IF (DEBUG) WRITE(6,'(A,4G20.10)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP196:                IF (DEBUG) WRITE(6,'(A,4G20.10)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP
197: !                IF (ABS(ASTEP-BSTEP).LT.1.0D-6) THEN197:                IF (ABS(ASTEP-BSTEP).LT.1.0D-6) THEN
198: !                   ASTEP=(ASTEP+BSTEP)/2.0D0198:                   ASTEP=(ASTEP+BSTEP)/2.0D0
199: !                   Q(1:NOPT)=QINIT(1:NOPT)+ASTEP*VECS(1:NOPT)199:                   Q(1:NOPT)=QINIT(1:NOPT)+ASTEP*VECS(1:NOPT)
200: !                   STEP(1:NOPT)=ASTEP*VECS(1:NOPT)200:                   STEP(1:NOPT)=ASTEP*VECS(1:NOPT)
201: !                   EXIT201:                   EXIT
202: !                ENDIF202:                ENDIF
203: !             ENDDO203:             ENDDO
204:             PINIT=PUSHOFF 
205:             CALL GOLDEN(VECS,QINIT,ETS,PINIT,POPT,PENERGY) 
206:             Q(1:NOPT)=QINIT(1:NOPT)+POPT*VECS(1:NOPT) 
207:             STEP(1:NOPT)=POPT*VECS(1:NOPT) 
208:             WRITE(6,'(A,3G25.15)') 'path> golden section + pushoff, energy and delta energy: ',204:             WRITE(6,'(A,3G25.15)') 'path> golden section + pushoff, energy and delta energy: ',
209:      &                              POPT,PENERGY,PENERGY-ETS205:      &                              ASTEP,MIN(ENERGYC,ENERGYD),MIN(ENERGYC,ENERGYD)-ETS
210:          ENDIF206:          ENDIF
211:          207:          
212:          IF (RKMIN) RMS=1.0D0208:          IF (RKMIN) RMS=1.0D0
213:          MFLAG=.FALSE.209:          MFLAG=.FALSE.
214:          BFGSSTEP=.FALSE.210:          BFGSSTEP=.FALSE.
215:          BFGSTST=.FALSE.211:          BFGSTST=.FALSE.
216:          IF (BFGSMINT) THEN212:          IF (BFGSMINT) THEN
217:             IF (UNRST.OR.(CHRMMT.AND.INTMINT)) THEN213:             IF (UNRST.OR.(CHRMMT.AND.INTMINT)) THEN
218:                 CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,214:                 CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
219:      1                       .TRUE.,ITDONE,PTEST,VNEW,.FALSE.,.FALSE.)215:      1                       .TRUE.,ITDONE,PTEST,VNEW,.FALSE.,.FALSE.)
307:                ENDIF303:                ENDIF
308:                NSTEPPLUS=NSTEPPLUS+ITDONE304:                NSTEPPLUS=NSTEPPLUS+ITDONE
309:             ENDIF305:             ENDIF
310:          ENDIF306:          ENDIF
311:       ELSE  ! Another method for finding the pushoff step307:       ELSE  ! Another method for finding the pushoff step
312:          CALL EFOL(Q,MFLAG,1,ENERGY,ITDONE,EVTS,PTEST,FRQSTS,0)308:          CALL EFOL(Q,MFLAG,1,ENERGY,ITDONE,EVTS,PTEST,FRQSTS,0)
313:          ETS=ENERGY309:          ETS=ENERGY
314:          DO J1=1,NOPT310:          DO J1=1,NOPT
315:             STEP(J1)=Q(J1)-QINIT(J1)311:             STEP(J1)=Q(J1)-QINIT(J1)
316:          ENDDO312:          ENDDO
317:          IF (PUSHOPTT) THEN 
318:             PINIT=PUSHOFF 
319:             CALL GOLDEN(VECS,QINIT,ETS,PINIT,POPT,PENERGY) 
320:             Q(1:NOPT)=QINIT(1:NOPT)+POPT*VECS(1:NOPT) 
321:             STEP(1:NOPT)=POPT*VECS(1:NOPT) 
322:             WRITE(6,'(A,3G25.15)') 'path> golden section + pushoff, energy and delta energy: ', 
323:      &                              POPT,PENERGY,PENERGY-ETS 
324:          ENDIF 
325:          KNOWE=.FALSE.313:          KNOWE=.FALSE.
326:          KNOWG=.FALSE. ! we don`t know the gradient at the point in Q because VNEW isn`t passed from efol?314:          KNOWG=.FALSE. ! we don`t know the gradient at the point in Q because VNEW isn`t passed from efol?
327:          IF (BFGSMINT) THEN315:          IF (BFGSMINT) THEN
328: C           NOSHIFT=.FALSE.316: C           NOSHIFT=.FALSE.
329:             IF (CHRMMT.AND.INTMINT) THEN317:             IF (CHRMMT.AND.INTMINT) THEN
330:                CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,318:                CALL MYLBFGS(NINTS,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
331:      1                      .TRUE.,ITDONE,PTEST,VNEW,.FALSE.,.FALSE.)319:      1                      .TRUE.,ITDONE,PTEST,VNEW,.FALSE.,.FALSE.)
332:             ELSE320:             ELSE
333:                CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,321:                CALL MYLBFGS(NOPT,MUPDATE,Q,.FALSE.,MFLAG,ENERGY,RMS2,EREAL,RMS,BFGSSTEPS,
334:      1                      .TRUE.,ITDONE,PTEST,VNEW,.FALSE.,.FALSE.)322:      1                      .TRUE.,ITDONE,PTEST,VNEW,.FALSE.,.FALSE.)
488:       ENDIF476:       ENDIF
489:       DO J1=1,NOPT477:       DO J1=1,NOPT
490:          QPLUS(J1)=Q(J1)478:          QPLUS(J1)=Q(J1)
491:          IF (.NOT.UNRST) Q(J1)=QINIT(J1)-STEP(J1)479:          IF (.NOT.UNRST) Q(J1)=QINIT(J1)-STEP(J1)
492:          IF (HYBRIDMINT) Q(J1)=QINIT(J1)480:          IF (HYBRIDMINT) Q(J1)=QINIT(J1)
493:       ENDDO481:       ENDDO
494:       EPLUS=ENERGY482:       EPLUS=ENERGY
495: !     IF (DEBUG) PRINT*,'ts step off minus points in path:'483: !     IF (DEBUG) PRINT*,'ts step off minus points in path:'
496: !     IF (DEBUG) WRITE(*,'(3G20.10)') (Q(J1),J1=1,NOPT)484: !     IF (DEBUG) WRITE(*,'(3G20.10)') (Q(J1),J1=1,NOPT)
497: 485: 
498:       IF (PUSHOPTT) THEN 486:       IF (.TRUE.) THEN  ! use PUSHOPT logical
499: ! !487: !
500: ! ! Initially astep=0 the ts at QINIT(J1), bstep=PUSHOFF, corresponding to current Q(J1)488: ! Initially astep=0 the ts at QINIT(J1), bstep=PUSHOFF, corresponding to current Q(J1)
501: ! !489: !
502: !          ASTEP=0.0D0490:          ASTEP=0.0D0
503: !          BSTEP=-PUSHOFF491:          BSTEP=-PUSHOFF
504: !          CSTEP = BSTEP - (BSTEP - ASTEP) / GOLDEN492:          CSTEP = BSTEP - (BSTEP - ASTEP) / GOLDEN
505: !          DSTEP = ASTEP + (BSTEP - ASTEP) / GOLDEN493:          DSTEP = ASTEP + (BSTEP - ASTEP) / GOLDEN
506: !          IF (DEBUG) WRITE(6,'(A,4G20.10,A)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP,' initially'494:          IF (DEBUG) WRITE(6,'(A,4G20.10,A)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP,' initially'
507: !          DO J1=1,100495:          DO J1=1,100
508: !             QC(1:NOPT)=QINIT(1:NOPT)+CSTEP*VECS(1:NOPT)496:             QC(1:NOPT)=QINIT(1:NOPT)+CSTEP*VECS(1:NOPT)
509: !             QD(1:NOPT)=QINIT(1:NOPT)+DSTEP*VECS(1:NOPT)497:             QD(1:NOPT)=QINIT(1:NOPT)+DSTEP*VECS(1:NOPT)
510: !             CALL POTENTIAL(QC,ENERGYC,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.)498:             CALL POTENTIAL(QC,ENERGYC,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.)
511: !             CALL POTENTIAL(QD,ENERGYD,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.)499:             CALL POTENTIAL(QD,ENERGYD,VNEW,.FALSE.,.FALSE.,RMS,.FALSE.,.FALSE.)
512: !             IF (DEBUG) WRITE(6,'(A,4G25.15)') 'path> energy at ts, C and D and diff=',ETS,ENERGYC,ENERGYD,MIN(ENERGYC,ENERGYD)-ETS  500:             IF (DEBUG) WRITE(6,'(A,4G25.15)') 'path> energy at ts, C and D and diff=',ETS,ENERGYC,ENERGYD,MIN(ENERGYC,ENERGYD)-ETS  
513: !             IF (ENERGYC.LT.ENERGYD) THEN501:             IF (ENERGYC.LT.ENERGYD) THEN
514: !                BSTEP=DSTEP502:                BSTEP=DSTEP
515: !             ELSE503:             ELSE
516: !                ASTEP=CSTEP504:                ASTEP=CSTEP
517: !             ENDIF505:             ENDIF
518: !             CSTEP = BSTEP - (BSTEP - ASTEP) / GOLDEN506:             CSTEP = BSTEP - (BSTEP - ASTEP) / GOLDEN
519: !             DSTEP = ASTEP + (BSTEP - ASTEP) / GOLDEN507:             DSTEP = ASTEP + (BSTEP - ASTEP) / GOLDEN
520: !             IF (DEBUG) WRITE(6,'(A,4G20.10)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP508:             IF (DEBUG) WRITE(6,'(A,4G20.10)') 'path> golden a, b, c, d=',ASTEP,BSTEP,CSTEP,DSTEP
521: !             IF (ABS(ASTEP-BSTEP).LT.1.0D-6) THEN509:             IF (ABS(ASTEP-BSTEP).LT.1.0D-6) THEN
522: !                ASTEP=(ASTEP+BSTEP)/2.0D0510:                ASTEP=(ASTEP+BSTEP)/2.0D0
523: !                Q(1:NOPT)=QINIT(1:NOPT)+ASTEP*VECS(1:NOPT)511:                Q(1:NOPT)=QINIT(1:NOPT)+ASTEP*VECS(1:NOPT)
524: !                STEP(1:NOPT)=ASTEP*VECS(1:NOPT)512:                STEP(1:NOPT)=ASTEP*VECS(1:NOPT)
525: !                EXIT513:                EXIT
526: !             ENDIF514:             ENDIF
527: !          ENDDO515:          ENDDO
528:  
529:          PINIT=-PUSHOFF 
530:          CALL GOLDEN(VECS,QINIT,ETS,PINIT,POPT,PENERGY) 
531:          Q(1:NOPT)=QINIT(1:NOPT)+POPT*VECS(1:NOPT) 
532:          STEP(1:NOPT)=POPT*VECS(1:NOPT) 
533:          WRITE(6,'(A,3G25.15)') 'path> golden section - pushoff, energy and delta energy: ',516:          WRITE(6,'(A,3G25.15)') 'path> golden section - pushoff, energy and delta energy: ',
534:      &                              POPT,PENERGY,PENERGY-ETS517:      &                           ASTEP,MIN(ENERGYC,ENERGYD),MIN(ENERGYC,ENERGYD)-ETS
535:       ENDIF518:       ENDIF
536: 519: 
537:       IF (UNRST) THEN ! jmc new intstep stuff 520:       IF (UNRST) THEN ! jmc new intstep stuff 
538:          DO J1=1,nres521:          DO J1=1,nres
539:             c(1,J1)=QINIT(6*(J1-1)+1)522:             c(1,J1)=QINIT(6*(J1-1)+1)
540:             c(2,J1)=QINIT(6*(J1-1)+2)523:             c(2,J1)=QINIT(6*(J1-1)+2)
541:             c(3,J1)=QINIT(6*(J1-1)+3)524:             c(3,J1)=QINIT(6*(J1-1)+3)
542:             c(1,J1+nres)=QINIT(6*(J1-1)+4)525:             c(1,J1+nres)=QINIT(6*(J1-1)+4)
543:             c(2,J1+nres)=QINIT(6*(J1-1)+5)526:             c(2,J1+nres)=QINIT(6*(J1-1)+5)
544:             c(3,J1+nres)=QINIT(6*(J1-1)+6)527:             c(3,J1+nres)=QINIT(6*(J1-1)+6)


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0