hdiff output

r32861/bfgsts.f 2017-06-27 16:30:19.090958674 +0100 r32860/bfgsts.f 2017-06-27 16:30:21.118985703 +0100
162:       FIXDSAVE=FIXD162:       FIXDSAVE=FIXD
163:       IF ((HINDEX.GT.1).AND.(.NOT.NOIT)) THEN163:       IF ((HINDEX.GT.1).AND.(.NOT.NOIT)) THEN
164:          WRITE(*,'(A)') 'For HINDEX > 1 you must use NOIT with BFGSTS'164:          WRITE(*,'(A)') 'For HINDEX > 1 you must use NOIT with BFGSTS'
165:          CALL FLUSH(6)165:          CALL FLUSH(6)
166:          STOP166:          STOP
167:       ENDIF167:       ENDIF
168: !168: !
169: ! Check for consistent convergence criteria on RMS gradient in MYLBFGS and EF part.169: ! Check for consistent convergence criteria on RMS gradient in MYLBFGS and EF part.
170: !     170: !     
171:       IF (GMAX.NE.CONVR) THEN171:       IF (GMAX.NE.CONVR) THEN
172:          IF (DEBUG) WRITE(*,'(2(A,G20.10),A)') 'bfgsts> WARNING - GMAX ',GMAX,' is different from CONVR ',CONVR,' - resetting'172:          IF (DEBUG) PRINT '(2(A,G20.10),A)','bfgsts> WARNING - GMAX ',GMAX,' is different from CONVR ',CONVR,' - resetting'
173:          GMAX=MIN(CONVR,GMAX)173:          GMAX=MIN(CONVR,GMAX)
174:          CONVR=MIN(CONVR,GMAX)174:          CONVR=MIN(CONVR,GMAX)
175:       ENDIF175:       ENDIF
176:       IF (MINMAX.GE.CONVU) THEN176:       IF (MINMAX.GE.CONVU) THEN
177:          IF (DEBUG) WRITE(*,'(2(A,G20.10),A)') 'bfgsts> WARNING - CONVU <= MINMAX - resetting CONVU'177:          IF (DEBUG) PRINT '(2(A,G20.10),A)','bfgsts> WARNING - CONVU <= MINMAX - resetting CONVU'
178:          CONVU=2*MINMAX178:          CONVU=2*MINMAX
179:       ENDIF179:       ENDIF
180: !180: !
181: !  Reset maximum step sizes in case this isn't the first call to EFOL.181: !  Reset maximum step sizes in case this isn't the first call to EFOL.
182: !182: !
183:       IF (DEBUG) WRITE(*,'(A,G20.10)') ' bfgsts> resetting maximum step sizes to ',MXSTP183:       IF (DEBUG) PRINT '(A,G20.10)',' bfgsts> resetting maximum step sizes to ',MXSTP
184:       DO J1=1,NOPT184:       DO J1=1,NOPT
185:          STPMAX(J1)=MXSTP185:          STPMAX(J1)=MXSTP
186:       ENDDO186:       ENDDO
187: 187: 
188:       ITER=1188:       ITER=1
189:       FOUNDNEGATIVE=.FALSE.189:       FOUNDNEGATIVE=.FALSE.
190:       WASNEGATIVE=.FALSE.190:       WASNEGATIVE=.FALSE.
191:       CHECKRESET=.FALSE.191:       CHECKRESET=.FALSE.
192:       LASTRESET=0192:       LASTRESET=0
193:       SCALEFAC=1.0D0193:       SCALEFAC=1.0D0
693:                   ENDIF693:                   ENDIF
694:                ENDDO694:                ENDDO
695:             ENDIF695:             ENDIF
696:          ENDIF696:          ENDIF
697:       ENDIF697:       ENDIF
698:       IF (BFGSSTEP) THEN698:       IF (BFGSSTEP) THEN
699:          IF (INEG.EQ.0) THEN699:          IF (INEG.EQ.0) THEN
700:             PRINT*,'****WARNING - BFGSSTEP set for a minimum'700:             PRINT*,'****WARNING - BFGSSTEP set for a minimum'
701:          ELSE701:          ELSE
702:             IF (PTEST) THEN702:             IF (PTEST) THEN
703:                IF (IVEC.GE.0) WRITE(*,'(A)') ' bfgsts> Stepping away from saddle along softest mode + direction'703:                IF (IVEC.GE.0) PRINT '(A)',' bfgsts> Stepping away from saddle along softest mode + direction'
704:                IF (IVEC.LT.0) WRITE(*,'(A)') ' bfgsts> Stepping away from saddle along softest mode - direction'704:                IF (IVEC.LT.0) PRINT '(A)',' bfgsts> Stepping away from saddle along softest mode - direction'
705:             ENDIF705:             ENDIF
706:             AWAY=.TRUE.706:             AWAY=.TRUE.
707:          ENDIF707:          ENDIF
708:       ENDIF708:       ENDIF
709: C709: C
710: C  EF determination of steps710: C  EF determination of steps
711: C711: C
712:       IF (ABS(EVALMIN).LT.1.0D-100) EVALMIN=SIGN(1.0D-20,EVALMIN)712:       IF (ABS(EVALMIN).LT.1.0D-100) EVALMIN=SIGN(1.0D-20,EVALMIN)
713:       IF (HINDEX.LE.1) THEN713:       IF (HINDEX.LE.1) THEN
714:          XP1=DABS(EVALMIN)/2.0D0714:          XP1=DABS(EVALMIN)/2.0D0


r32861/lbfgs.f90 2017-06-27 16:30:18.330948544 +0100 r32860/lbfgs.f90 2017-06-27 16:30:20.362975627 +0100
103:     103:     
104:      IF (DUMPNEBEOS) THEN104:      IF (DUMPNEBEOS) THEN
105:         CALL DISTANCES  ! sn402: We need to know the distances between the images to write the profile105:         CALL DISTANCES  ! sn402: We need to know the distances between the images to write the profile
106:         CALL WRITEPROFILE(-1)106:         CALL WRITEPROFILE(-1)
107:      ENDIF107:      ENDIF
108: 108: 
109:      ENOLD=ETOTAL109:      ENOLD=ETOTAL
110:      IF (ETOTAL/NIMAGE.LT.COLDFUSIONLIMIT) THEN110:      IF (ETOTAL/NIMAGE.LT.COLDFUSIONLIMIT) THEN
111:         WRITE(*,'(A,2G20.10)') ' lbfgs> Cold fusion diagnosed - step discarded, energy, limit=',ETOTAL/NIMAGE,COLDFUSIONLIMIT111:         WRITE(*,'(A,2G20.10)') ' lbfgs> Cold fusion diagnosed - step discarded, energy, limit=',ETOTAL/NIMAGE,COLDFUSIONLIMIT
112:         IF (DEBUG) CALL DUMPFILES("e")112:         IF (DEBUG) CALL DUMPFILES("e")
113:         IF (KADJUSTFRQ.GT.0) WRITE(*,'(A,G20.10)') ' lbfgs> Final DNEB force constant ',NEWNEBK(1)113:         IF (KADJUSTFRQ.GT.0) PRINT '(A,G20.10)',' lbfgs> Final DNEB force constant ',NEWNEBK(1)
114:         RETURN114:         RETURN
115:      ENDIF115:      ENDIF
116: 116: 
117:      NITERDONE=1117:      NITERDONE=1
118: !    DO NITERDONE=1,MAX(NITERMAX,NITERMIN)118: !    DO NITERDONE=1,MAX(NITERMAX,NITERMIN)
119:      DO ! main do loop with counter NITERDONE119:      DO ! main do loop with counter NITERDONE
120: !    IF (BADTAU) EXIT120: !    IF (BADTAU) EXIT
121: !121: !
122:      MAIN: IF (NITERDONE==1) THEN122:      MAIN: IF (NITERDONE==1) THEN
123:           POINT = 0123:           POINT = 0


r32861/lopermdist.f90 2017-06-27 16:30:19.338961976 +0100 r32860/lopermdist.f90 2017-06-27 16:30:21.366989006 +0100
 56: DOUBLE PRECISION TIME0, TIME1 56: DOUBLE PRECISION TIME0, TIME1
 57: DOUBLE PRECISION, ALLOCATABLE :: TEMPA(:), TEMPB(:) 57: DOUBLE PRECISION, ALLOCATABLE :: TEMPA(:), TEMPB(:)
 58: CHARACTER(LEN=5) ZSYMSAVE 58: CHARACTER(LEN=5) ZSYMSAVE
 59: COMMON /SYS/ ZSYMSAVE 59: COMMON /SYS/ ZSYMSAVE
 60: DOUBLE PRECISION XA, XB, YA, YB, ZA, ZB, DMEAN(NATOMS), DA, DB 60: DOUBLE PRECISION XA, XB, YA, YB, ZA, ZB, DMEAN(NATOMS), DA, DB
 61: INTEGER TRIED(NATOMS), DLIST(NATOMS), SORTLIST(NATOMS), NDUMMY2, INGROUP(NATOMS), NADDED 61: INTEGER TRIED(NATOMS), DLIST(NATOMS), SORTLIST(NATOMS), NDUMMY2, INGROUP(NATOMS), NADDED
 62:  62: 
 63: IF (DEBUG) THEN 63: IF (DEBUG) THEN
 64:    IF (CHRMMT) CALL UPDATENBONDS(COORDSA) 64:    IF (CHRMMT) CALL UPDATENBONDS(COORDSA)
 65:    CALL POTENTIAL(COORDSA,AINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.) 65:    CALL POTENTIAL(COORDSA,AINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
 66:    WRITE(*,'(2(A,G25.15))') ' initial energy for structure A=             ',AINIT,' RMS=',RMS 66:    PRINT '(2(A,G25.15))',' initial energy for structure A=             ',AINIT,' RMS=',RMS
 67:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN 67:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN
 68:       WRITE(*,'(A)') ' lopermdist> WARNING *** RMS for structure A is outside tolerance' 68:       PRINT '(A)',' lopermdist> WARNING *** RMS for structure A is outside tolerance'
 69:    ENDIF 69:    ENDIF
 70:    IF (CHRMMT) CALL UPDATENBONDS(COORDSB) 70:    IF (CHRMMT) CALL UPDATENBONDS(COORDSB)
 71:    CALL POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.) 71:    CALL POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
 72:    PRINT '(2(A,G25.15))',' initial energy for structure B=             ',BINIT,' RMS=',RMS 72:    PRINT '(2(A,G25.15))',' initial energy for structure B=             ',BINIT,' RMS=',RMS
 73:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN 73:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN
 74:       PRINT '(A)',' lopermdist> WARNING *** RMS for structure B is outside tolerance' 74:       PRINT '(A)',' lopermdist> WARNING *** RMS for structure B is outside tolerance'
 75:    ENDIF 75:    ENDIF
 76: ENDIF 76: ENDIF
 77:  77: 
 78: DBEST=1.0D100 78: DBEST=1.0D100


r32861/minpermdist.f90 2017-06-27 16:30:19.598965444 +0100 r32860/minpermdist.f90 2017-06-27 16:30:21.626992474 +0100
150:    ! loop any more, but somehow during this subroutine COORDSA gets truncated to a much150:    ! loop any more, but somehow during this subroutine COORDSA gets truncated to a much
151:    ! shorter array, which later on causes a segfault.151:    ! shorter array, which later on causes a segfault.
152:    ! It seems to happen in between the end of the subroutine GENRIGID_POTENTIAL and the152:    ! It seems to happen in between the end of the subroutine GENRIGID_POTENTIAL and the
153:    ! point at which the array is returned to this subroutine.153:    ! point at which the array is returned to this subroutine.
154: !jdf43> infinite154: !jdf43> infinite
155:       CALL GENRIGID_POTENTIAL(COORDSA,AINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)155:       CALL GENRIGID_POTENTIAL(COORDSA,AINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
156: !jdf43> loop156: !jdf43> loop
157:    ELSE157:    ELSE
158:       CALL POTENTIAL(COORDSA,AINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)158:       CALL POTENTIAL(COORDSA,AINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
159:    ENDIF159:    ENDIF
160:    WRITE(*,'(2(A,F25.15))') ' initial energy for structure A=             ',AINIT,' RMS=',RMS160:    PRINT '(2(A,F25.15))',' initial energy for structure A=             ',AINIT,' RMS=',RMS
161:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN161:    IF (RMS-MAX(GMAX,CONVR).GT.1.0D-6) THEN
162:       WRITE(*,'(A)') ' minpermdist> WARNING *** RMS for structure A is outside tolerance'162:       PRINT '(A)',' minpermdist> WARNING *** RMS for structure A is outside tolerance'
163:    ENDIF163:    ENDIF
164:    IF (CHRMMT) CALL UPDATENBONDS(COORDSB)164:    IF (CHRMMT) CALL UPDATENBONDS(COORDSB)
165:    IF (RIGIDINIT) THEN165:    IF (RIGIDINIT) THEN
166: !jdf43> infinite166: !jdf43> infinite
167:       CALL GENRIGID_POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)167:       CALL GENRIGID_POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
168: !jdf43> loop168: !jdf43> loop
169:    ELSE169:    ELSE
170:       CALL POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)170:       CALL POTENTIAL(COORDSB,BINIT,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
171:    ENDIF171:    ENDIF
172:    WRITE(*,'(2(A,F25.15))') ' initial energy for structure B=             ',BINIT,' RMS=',RMS172:    PRINT '(2(A,F25.15))',' initial energy for structure B=             ',BINIT,' RMS=',RMS
173:    IF ((.NOT.MCPATHT).AND.(RMS-MAX(GMAX,CONVR).GT.1.0D-6)) THEN173:    IF ((.NOT.MCPATHT).AND.(RMS-MAX(GMAX,CONVR).GT.1.0D-6)) THEN
174:       WRITE(*,'(A)') ' minpermdist> WARNING *** RMS for structure B is outside tolerance - QCI/DNEB endpoint alignment?'174:       PRINT '(A)',' minpermdist> WARNING *** RMS for structure B is outside tolerance - QCI/DNEB endpoint alignment?'
175:    ENDIF175:    ENDIF
176: ENDIF176: ENDIF
177: 177: 
178: 178: 
179: IF (RIGIDINIT .AND. ALIGNRBST) THEN179: IF (RIGIDINIT .AND. ALIGNRBST) THEN
180:     CALL ALIGN_RBS(COORDSA, COORDSB, DEBUG, BULKT, TWOD, DISTANCE, DIST2, RMATBEST)180:     CALL ALIGN_RBS(COORDSA, COORDSB, DEBUG, BULKT, TWOD, DISTANCE, DIST2, RMATBEST)
181:     RETURN181:     RETURN
182: ENDIF182: ENDIF
183: 183: 
184: !184: !


r32861/mylbfgs.f 2017-06-27 16:30:19.850968803 +0100 r32860/mylbfgs.f 2017-06-27 16:30:21.898996099 +0100
819:          OVERLAP=DDOT(NUM_PARAMS,PGRADIENT,1,W,1)/(DOT1*DOT2)819:          OVERLAP=DDOT(NUM_PARAMS,PGRADIENT,1,W,1)/(DOT1*DOT2)
820:       ENDIF820:       ENDIF
821: C     PRINT*,'OVERLAP,DIAG(1)=',OVERLAP,DIAG(1)821: C     PRINT*,'OVERLAP,DIAG(1)=',OVERLAP,DIAG(1)
822: C     PRINT*,'G . G=',DDOT(N,G,1,G,1)822: C     PRINT*,'G . G=',DDOT(N,G,1,G,1)
823: C     PRINT*,'W . W=',DDOT(N,W,1,W,1)823: C     PRINT*,'W . W=',DDOT(N,W,1,W,1)
824: C824: C
825: C  The step is saved in W(ISPT+POINT*N+1:ISPT+POINT*N+N). 825: C  The step is saved in W(ISPT+POINT*N+1:ISPT+POINT*N+N). 
826: C  W(1:N) is overwritten by the gradient.826: C  W(1:N) is overwritten by the gradient.
827: C827: C
828:       IF ((OVERLAP.GT.0.0D0).AND.(.NOT.REVERSEUPHILLT)) THEN828:       IF ((OVERLAP.GT.0.0D0).AND.(.NOT.REVERSEUPHILLT)) THEN
829:          IF (PTEST) WRITE(*,'(A,G20.10,A)') 'Search direction has positive projection onto gradient ',OVERLAP,' reversing step'829:          IF (PTEST) PRINT '(A,G20.10,A)','Search direction has positive projection onto gradient ',OVERLAP,' reversing step'
830:          DO I=1,NUM_PARAMS830:          DO I=1,NUM_PARAMS
831:             W(ISPT+POINT*NUM_PARAMS+I)= -W(I)  ! if we reverse the step it is important not to take the ABS value of YS/YY!831:             W(ISPT+POINT*NUM_PARAMS+I)= -W(I)  ! if we reverse the step it is important not to take the ABS value of YS/YY!
832:          ENDDO832:          ENDDO
833: C        ITER=0833: C        ITER=0
834: C        GOTO 10834: C        GOTO 10
835:       ENDIF835:       ENDIF
836: C836: C
837: C  Is it better to reverse individual components? No!837: C  Is it better to reverse individual components? No!
838: C838: C
839: !     NREV=0839: !     NREV=0


r32861/newneb.f90 2017-06-27 16:30:18.582951903 +0100 r32860/newneb.f90 2017-06-27 16:30:20.610978932 +0100
492:                 CASE("sqvv")492:                 CASE("sqvv")
493:                    CALL NEBSQVV(NOPT*NIMAGE)493:                    CALL NEBSQVV(NOPT*NIMAGE)
494:                 END SELECT494:                 END SELECT
495:              ENDIF495:              ENDIF
496: 496: 
497: !!!!!!!!!!!!! End of main NEB job !!!!!!!!!!!!!497: !!!!!!!!!!!!! End of main NEB job !!!!!!!!!!!!!
498: 498: 
499:           ENDIF499:           ENDIF
500:           ! save final NEB coordinates and energy profile500:           ! save final NEB coordinates and energy profile
501:           IF (DEBUG) THEN501:           IF (DEBUG) THEN
502:              WRITE(*,'(A,F12.4)') ' newneb> mean image separation is ',SEPARATION/(NIMAGE+1)502:              PRINT '(A,F12.4)',' newneb> mean image separation is ',SEPARATION/(NIMAGE+1)
503: !            DO J1=1,NIMAGE+1503: !            DO J1=1,NIMAGE+1
504: !               PRINT '(A,F12.4,A,I8,A,F12.4)',' newneb> NEB k is ',NEWNEBK(J1),' for gap ',J1,' value=',DVEC(J1)504: !               PRINT '(A,F12.4,A,I8,A,F12.4)',' newneb> NEB k is ',NEWNEBK(J1),' for gap ',J1,' value=',DVEC(J1)
505: !            ENDDO505: !            ENDDO
506:           ENDIF506:           ENDIF
507: 507: 
508:           IF (DUMPNEBEOS) CALL WRITEPROFILE(0)508:           IF (DUMPNEBEOS) CALL WRITEPROFILE(0)
509: !          PRINT *, 'XYZ'509: !          PRINT *, 'XYZ'
510: !          DO J1 = 1, NIMAGE+2510: !          DO J1 = 1, NIMAGE+2
511: !             DO J2 = 3,3 !1, NATOMS/2511: !             DO J2 = 3,3 !1, NATOMS/2
512: !                K = (J1-1)*3*NATOMS+J2*3512: !                K = (J1-1)*3*NATOMS+J2*3


r32861/OPTIM.F 2017-06-27 16:30:18.834955262 +0100 r32860/OPTIM.F 2017-06-27 16:30:20.862982292 +0100
 85:       DOUBLE PRECISION :: XRIGIDCOORDS(3*NATOMS), XRIGIDGRAD(3*NATOMS) 85:       DOUBLE PRECISION :: XRIGIDCOORDS(3*NATOMS), XRIGIDGRAD(3*NATOMS)
 86:       INTEGER GETUNIT 86:       INTEGER GETUNIT
 87:       COMMON /OEPATH/ ETS,EPLUS,EMINUS 87:       COMMON /OEPATH/ ETS,EPLUS,EMINUS
 88: ! Print OPTIM version in the output 88: ! Print OPTIM version in the output
 89:       !VERSIONTEMP=25661 89:       !VERSIONTEMP=25661
 90:       !WRITE(*, '(A,I5)') ' OPTIM> version r',VERSIONTEMP 90:       !WRITE(*, '(A,I5)') ' OPTIM> version r',VERSIONTEMP
 91: C 91: C
 92: C  Dynamic memory allocation 92: C  Dynamic memory allocation
 93: C 93: C
 94:       ALLOCATE (FROZEN(NATOMS),ZSYM(NATOMS),NR(NATOMS)) 94:       ALLOCATE (FROZEN(NATOMS),ZSYM(NATOMS),NR(NATOMS))
 95:       IF (DEBUG) WRITE(*,*) ' OPTIM> allocated ZSYM with dimension NATOMS=',NATOMS 95:       IF (DEBUG) PRINT *,' OPTIM> allocated ZSYM with dimension NATOMS=',NATOMS
 96:       ALLOCATE (FROZENRES(NATOMS)) 96:       ALLOCATE (FROZENRES(NATOMS))
 97: C      STPMAX(:)=0.0D0 97: C      STPMAX(:)=0.0D0
 98:  98: 
 99:       FILTH=F1 ; FILTH2=F2 ; FILTHSTR=TRIM(ADJUSTL(FLSTRING)) 99:       FILTH=F1 ; FILTH2=F2 ; FILTHSTR=TRIM(ADJUSTL(FLSTRING))
100:       KNOWE=.FALSE. ; KNOWG=.FALSE. ; KNOWH=.FALSE.100:       KNOWE=.FALSE. ; KNOWG=.FALSE. ; KNOWH=.FALSE.
101:       RBATOMSMAX=10101:       RBATOMSMAX=10
102: 102: 
103:       CALL KEYWORDS(Q)103:       CALL KEYWORDS(Q)
104:       ALLOCATE (STPMAX(NOPT))104:       ALLOCATE (STPMAX(NOPT))
105:       IF (UNRST.AND.(RKMIN.OR.BSMIN.OR.(INR.GT.-1))) THEN105:       IF (UNRST.AND.(RKMIN.OR.BSMIN.OR.(INR.GT.-1))) THEN
582:             IF (RIGIDINIT) THEN582:             IF (RIGIDINIT) THEN
583:                ATOMRIGIDCOORDT = .FALSE.583:                ATOMRIGIDCOORDT = .FALSE.
584:                CALL TRANSFORMCTORIGID (FIN, XRIGIDCOORDS)584:                CALL TRANSFORMCTORIGID (FIN, XRIGIDCOORDS)
585:                CALL POTENTIAL(XRIGIDCOORDS,EFINAL,LGDUMMY,.TRUE.,.FALSE.,RMSFINAL,.FALSE.,.FALSE.)585:                CALL POTENTIAL(XRIGIDCOORDS,EFINAL,LGDUMMY,.TRUE.,.FALSE.,RMSFINAL,.FALSE.,.FALSE.)
586:                ATOMRIGIDCOORDT = .TRUE.586:                ATOMRIGIDCOORDT = .TRUE.
587:             ELSE587:             ELSE
588:                CALL POTENTIAL(FIN,EFINAL,LGDUMMY,.TRUE.,.FALSE.,RMSFINAL,.FALSE.,.FALSE.)588:                CALL POTENTIAL(FIN,EFINAL,LGDUMMY,.TRUE.,.FALSE.,RMSFINAL,.FALSE.,.FALSE.)
589:             ENDIF589:             ENDIF
590:             WRITE(*,'(a,2(g20.10,a))') ' OPTIM> Final energy  =',  EFINAL,' RMS force=',RMSfinal590:             WRITE(*,'(a,2(g20.10,a))') ' OPTIM> Final energy  =',  EFINAL,' RMS force=',RMSfinal
591:             IF (MAX(RMSINITIAL,RMSFINAL)>GMAX.AND.(BFGSMINT.OR.BSMIN.OR.RKMIN)) THEN ! SAT591:             IF (MAX(RMSINITIAL,RMSFINAL)>GMAX.AND.(BFGSMINT.OR.BSMIN.OR.RKMIN)) THEN ! SAT
592:                WRITE(*,'(A)') 'OPTIM> Bad endpoints supplied - RMS force too big!'592:                PRINT '(A)','OPTIM> Bad endpoints supplied - RMS force too big!'
593:                WRITE(*,'(A,G20.10)') 'OPTIM> Acceptable RMS force would be less or equal to ',GMAX593:                PRINT '(A,G20.10)','OPTIM> Acceptable RMS force would be less or equal to ',GMAX
594:                IF (REOPTIMISEENDPOINTS) THEN594:                IF (REOPTIMISEENDPOINTS) THEN
595:                   INRSAVE=INR595:                   INRSAVE=INR
596:                   INR=0596:                   INR=0
597:                   IF (RMSINITIAL>GMAX.AND.(BFGSMINT.OR.BSMIN.OR.RKMIN)) THEN597:                   IF (RMSINITIAL>GMAX.AND.(BFGSMINT.OR.BSMIN.OR.RKMIN)) THEN
598:                      KNOWE=.FALSE.598:                      KNOWE=.FALSE.
599:                      KNOWG=.FALSE.599:                      KNOWG=.FALSE.
600:                      BFGSTSSAVE=BFGSTST600:                      BFGSTSSAVE=BFGSTST
601:                      BFGSTST=.FALSE.601:                      BFGSTST=.FALSE.
602: ! hk286602: ! hk286
603:                      IF (RIGIDINIT) THEN603:                      IF (RIGIDINIT) THEN


r32861/tryconnect.f90 2017-06-27 16:30:18.078945199 +0100 r32860/tryconnect.f90 2017-06-27 16:30:20.106972215 +0100
206:             ELSE206:             ELSE
207:                CALL MECCANO(.TRUE.,DEBUG,DUM,.FALSE.,MI(JS)%DATA%X,MI(JF)%DATA%X,DUM,DUM,DUM,DUM)207:                CALL MECCANO(.TRUE.,DEBUG,DUM,.FALSE.,MI(JS)%DATA%X,MI(JF)%DATA%X,DUM,DUM,DUM,DUM)
208:             ENDIF208:             ENDIF
209:             NITERMAX = 0 ! TRY ZERO NEB ITERATIONS IF WE HAVE A MECCANO PATH209:             NITERMAX = 0 ! TRY ZERO NEB ITERATIONS IF WE HAVE A MECCANO PATH
210: 210: 
211:           ELSEIF (REDOPATH.AND.(.NOT.REDOPATHNEB)) THEN211:           ELSEIF (REDOPATH.AND.(.NOT.REDOPATHNEB)) THEN
212:             NIMAGE=1212:             NIMAGE=1
213:             NITERMAX = 0 ! TRY ZERO NEB ITERATIONS IF WE HAVE POINTS IN TSREDO213:             NITERMAX = 0 ! TRY ZERO NEB ITERATIONS IF WE HAVE POINTS IN TSREDO
214:           ELSEIF (NCONDONE==1 .AND. FCD) THEN ! FIRST CYCLE DIFFERENT - PARAMETERS SUPPLIED USING NEWNEB214:           ELSEIF (NCONDONE==1 .AND. FCD) THEN ! FIRST CYCLE DIFFERENT - PARAMETERS SUPPLIED USING NEWNEB
215:                                           ! keyword or newneb defaults will be used instead215:                                           ! keyword or newneb defaults will be used instead
216:                WRITE(*,'(A)') " tryconnect> First DNEB calculation will use parameters from the NEWNEB line in odata"216:                PRINT '(A)'," tryconnect> First DNEB calculation will use parameters from the NEWNEB line in odata"
217:           ELSE217:           ELSE
218:             IF (REDOPATHNEB) THEN218:             IF (REDOPATHNEB) THEN
219:                NIMAGE=(D1INIT+D2INIT)*IMAGEDENSITY219:                NIMAGE=(D1INIT+D2INIT)*IMAGEDENSITY
220:             ELSE220:             ELSE
221:                NIMAGE=MI(JF)%DATA%D(JS)*(IMAGEDENSITY+IMAGEINCR*(MI(JF)%DATA%NTRIES(JS)-1))221:                NIMAGE=MI(JF)%DATA%D(JS)*(IMAGEDENSITY+IMAGEINCR*(MI(JF)%DATA%NTRIES(JS)-1))
222:             ENDIF222:             ENDIF
223:             IF (.NOT.(USEINT.OR.USEINTLJ)) THEN223:             IF (.NOT.(USEINT.OR.USEINTLJ)) THEN
224: !              PRINT '(A,F10.2,G20.10,F10.2,2I8)',' tryconnect> IMAGEDENSITY,dist,IMAGEINCR,tries,NIMAGE=', &224: !              PRINT '(A,F10.2,G20.10,F10.2,2I8)',' tryconnect> IMAGEDENSITY,dist,IMAGEINCR,tries,NIMAGE=', &
225: ! &                       IMAGEDENSITY,MI(JF)%DATA%D(JS), &225: ! &                       IMAGEDENSITY,MI(JF)%DATA%D(JS), &
226: ! &                       IMAGEINCR,MI(JF)%DATA%NTRIES(JS),NIMAGE226: ! &                       IMAGEINCR,MI(JF)%DATA%NTRIES(JS),NIMAGE
744:              TS(NTS)%DATA%SLENGTH=PATHLENGTH(3)744:              TS(NTS)%DATA%SLENGTH=PATHLENGTH(3)
745:              TS(NTS)%DATA%DISP=SQRT(FLATSUM2)745:              TS(NTS)%DATA%DISP=SQRT(FLATSUM2)
746:              TS(NTS)%DATA%GAMMA=FLATSUM4*NATOMS/FLATSUM2**2746:              TS(NTS)%DATA%GAMMA=FLATSUM4*NATOMS/FLATSUM2**2
747:              TS(NTS)%DATA%NTILDE=FLATSUM2**2/FLATSUM4747:              TS(NTS)%DATA%NTILDE=FLATSUM2**2/FLATSUM4
748: 748: 
749:              IF (DUMPALLPATHS) CALL MAKEALLPATHINFO(TS(NTS)%DATA%X,MI(JS)%DATA%X,MI(JF)%DATA%X,EOFS(2),EOFS(1),EOFS(3),FRQSTS,FRQSPLUS,FRQSMINUS)749:              IF (DUMPALLPATHS) CALL MAKEALLPATHINFO(TS(NTS)%DATA%X,MI(JS)%DATA%X,MI(JF)%DATA%X,EOFS(2),EOFS(1),EOFS(3),FRQSTS,FRQSPLUS,FRQSMINUS)
750: 750: 
751:          ELSE 751:          ELSE 
752:           DO I=NTS-UNIQUE+1,NTS752:           DO I=NTS-UNIQUE+1,NTS
753:                WRITE(CHR,'(i5)') I753:                WRITE(CHR,'(i5)') I
754:                WRITE(*,'(/1x,a)') '>>>>>  Path run for ts '//trim(adjustl(chr))//' ...'754:                PRINT '(/1x,a)', '>>>>>  Path run for ts '//trim(adjustl(chr))//' ...'
755:                IF (DOAGAIN(I-NTS+UNIQUE).AND.(.NOT.REDOPATH)) THEN755:                IF (DOAGAIN(I-NTS+UNIQUE).AND.(.NOT.REDOPATH)) THEN
756:                   PUSHOFF=PUSHOFF/10.0D0756:                   PUSHOFF=PUSHOFF/10.0D0
757:                   WRITE(*,'(A,G20.10)') ' tryconnect> Trying this transition state path again with pushoff=',PUSHOFF757:                   PRINT '(A,G20.10)',' tryconnect> Trying this transition state path again with pushoff=',PUSHOFF
758:                ENDIF758:                ENDIF
759:                ALLOCATE( QPLUS(NOPT),QMINUS(NOPT),EPLUS,EMINUS )759:                ALLOCATE( QPLUS(NOPT),QMINUS(NOPT),EPLUS,EMINUS )
760:                CALL MKFNAMES(I,FILTH,FILTHSTR,ITSTRING,EOFSSTRING)760:                CALL MKFNAMES(I,FILTH,FILTHSTR,ITSTRING,EOFSSTRING)
761:                EDUMMY=TS(I)%DATA%E761:                EDUMMY=TS(I)%DATA%E
762:                TMPTS(1:NOPT)=TS(I)%DATA%X(1:NOPT)762:                TMPTS(1:NOPT)=TS(I)%DATA%X(1:NOPT)
763:                ! structure in ts(i)%data%X is a stationary point which is why we don't need to store G and rms for it763:                ! structure in ts(i)%data%X is a stationary point which is why we don't need to store G and rms for it
764:                LGDUMMY(1:NOPT)=0.0D0; RMS=0.0D0 ! we must initialize them here, however 764:                LGDUMMY(1:NOPT)=0.0D0; RMS=0.0D0 ! we must initialize them here, however 
765:                NORERUN=.FALSE.765:                NORERUN=.FALSE.
766:                IF (REDOPATH) THEN766:                IF (REDOPATH) THEN
767: !                 CALL MKFNAMES(NCONDONE,FILTH,FILTHSTR,ITSTRING,EOFSSTRING)767: !                 CALL MKFNAMES(NCONDONE,FILTH,FILTHSTR,ITSTRING,EOFSSTRING)


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0