hdiff output

r33537/congrad.f90 2017-12-01 11:30:17.952188711 +0000 r33536/congrad.f90 2017-12-01 11:30:18.952202001 +0000
149:    ENDDO149:    ENDDO
150: ENDDO150: ENDDO
151: IF (-FMIN.GT.FMAX) FMAX=-FMIN151: IF (-FMIN.GT.FMAX) FMAX=-FMIN
152: FCONTEST=FMAX152: FCONTEST=FMAX
153: IF (JMAX.GT.0) THEN153: IF (JMAX.GT.0) THEN
154:    WRITE(*,'(A,I6,A,I6,A,2I6,A,G15.5,A,3G15.5,A,G15.5)') ' congrad> Highest constraint for any image in ',IMAX, &154:    WRITE(*,'(A,I6,A,I6,A,2I6,A,G15.5,A,3G15.5,A,G15.5)') ' congrad> Highest constraint for any image in ',IMAX, &
155:  & ' con ',JMAX, ' atoms ',CONI(JMAX),CONJ(JMAX),' value=',EMAX,' d,ref,cutoff=',CONDMAX,CONREFMAX,CONCUTMAX, &155:  & ' con ',JMAX, ' atoms ',CONI(JMAX),CONJ(JMAX),' value=',EMAX,' d,ref,cutoff=',CONDMAX,CONREFMAX,CONCUTMAX, &
156:  & ' max grad=',FMAX156:  & ' max grad=',FMAX
157: 157: 
158: ENDIF158: ENDIF
 159: !  WRITE(*,'(A,3L5)') 'congrad> here C atomactive 2113 2115 2123=',ATOMACTIVE(2113),ATOMACTIVE(2115),ATOMACTIVE(2123)
159: CONVERGECONTEST=EMAX160: CONVERGECONTEST=EMAX
160: ! IF (JMAXNOFF.GT.0) THEN161: ! IF (JMAXNOFF.GT.0) THEN
161: !    WRITE(*,'(A,I6,A,I6,A,2I8,A,G20.10,A,I8)') ' congrad> Highest constraint contribution never turned off for any image in image ',IMAXNOFF, &162: !    WRITE(*,'(A,I6,A,I6,A,2I8,A,G20.10,A,I8)') ' congrad> Highest constraint contribution never turned off for any image in image ',IMAXNOFF, &
162: !  & ' constraint ',JMAXNOFF, &163: !  & ' constraint ',JMAXNOFF, &
163: !  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),' value=',EMAX,' off=',NCONOFF164: !  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),' value=',EMAX,' off=',NCONOFF
164: ! ELSEIF (JMAX.GT.0) THEN165: ! ELSEIF (JMAX.GT.0) THEN
165: !    JMAXNOFF=JMAX166: !    JMAXNOFF=JMAX
166: !    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad> *** Using highest constraint contribution for any image, setting NCONOFF to 0'167: !    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad> *** Using highest constraint contribution for any image, setting NCONOFF to 0'
167: !    CONOFFTRIED(1:INTCONMAX)=.FALSE.168: !    CONOFFTRIED(1:INTCONMAX)=.FALSE.
168: !    NCONOFF=0169: !    NCONOFF=0
175: 176: 
176: ! INTCONST=INTCONSTRAINREPCUT**13177: ! INTCONST=INTCONSTRAINREPCUT**13
177: 178: 
178: EMAX=-1.0D200179: EMAX=-1.0D200
179: EEMAX(1:INTIMAGE+2)=-1.0D200180: EEMAX(1:INTIMAGE+2)=-1.0D200
180: JJMAX(1:INTIMAGE+2)=-1181: JJMAX(1:INTIMAGE+2)=-1
181: JMAX=-1182: JMAX=-1
182: IMAX=-1183: IMAX=-1
183: 184: 
184: IF (INTCONSTRAINTREP.EQ.0.0D0) GOTO 654185: IF (INTCONSTRAINTREP.EQ.0.0D0) GOTO 654
185: DO J1=2,INTIMAGE+2186: DO J2=1,NNREPULSIVE
186: !  DO J1=1,INTIMAGE+2 ! can change when zero energies are confirmed for end images 
187:    IF (FREEZENODEST) THEN 
188:       IF (J1.EQ.2) THEN 
189:          IF (IMGFREEZE(1)) CYCLE 
190:       ELSE IF (J1.EQ.INTIMAGE+2) THEN 
191:          IF (IMGFREEZE(INTIMAGE)) CYCLE 
192:       ELSE 
193:          IF (IMGFREEZE(J1-2).AND.IMGFREEZE(J1-1)) CYCLE 
194:       ENDIF 
195:    ENDIF 
196:    DO J2=1,NNREPULSIVE 
197: ! !  INTCONST=NREPCUT(J2)**13187: ! !  INTCONST=NREPCUT(J2)**13
198: !    INTCONST=NREPCUT(J2)**3188: !    INTCONST=NREPCUT(J2)**3
 189:    DO J1=2,INTIMAGE+2
 190: !  DO J1=1,INTIMAGE+2 ! can change when zero energies are confirmed for end images
 191:       IF (FREEZENODEST) THEN
 192:          IF (J1.EQ.2) THEN
 193:             IF (IMGFREEZE(1)) CYCLE
 194:          ELSE IF (J1.EQ.INTIMAGE+2) THEN
 195:             IF (IMGFREEZE(INTIMAGE)) CYCLE
 196:          ELSE
 197:             IF (IMGFREEZE(J1-2).AND.IMGFREEZE(J1-1)) CYCLE
 198:          ENDIF
 199:       ENDIF
199: !      IF (INTFROZEN(NREPI(J2)).AND.INTFROZEN(NREPJ(J2))) THEN200: !      IF (INTFROZEN(NREPI(J2)).AND.INTFROZEN(NREPJ(J2))) THEN
200: !!        WRITE(*, '(A,I6,A,2I6)') ' congrad> ERROR *** repulsion ',J2,' between frozen atoms ',NREPI(J2),NREPJ(J2)201: !!        WRITE(*, '(A,I6,A,2I6)') ' congrad> ERROR *** repulsion ',J2,' between frozen atoms ',NREPI(J2),NREPJ(J2)
201: !         STOP202: !         STOP
202: !      ENDIF203: !      ENDIF
203: 204: 
204:       NI1=(3*NATOMS)*(J1-2)+3*(NREPI(J2)-1)205:       NI1=(3*NATOMS)*(J1-2)+3*(NREPI(J2)-1)
205:       NI2=(3*NATOMS)*(J1-1)+3*(NREPI(J2)-1)206:       NI2=(3*NATOMS)*(J1-1)+3*(NREPI(J2)-1)
206:       NJ1=(3*NATOMS)*(J1-2)+3*(NREPJ(J2)-1)207:       NJ1=(3*NATOMS)*(J1-2)+3*(NREPJ(J2)-1)
207:       NJ2=(3*NATOMS)*(J1-1)+3*(NREPJ(J2)-1)208:       NJ2=(3*NATOMS)*(J1-1)+3*(NREPJ(J2)-1)
208: 209: 
225: !        WRITE(*,'(A,I6,A,2I6,A,6G15.7)') 'image ',J1-1,' atoms ',NREPI(J2),NREPJ(J2),' coords ',XYZ(NI1+1:NI1+3),XYZ(NJ1+1:NJ1+3)226: !        WRITE(*,'(A,I6,A,2I6,A,6G15.7)') 'image ',J1-1,' atoms ',NREPI(J2),NREPJ(J2),' coords ',XYZ(NI1+1:NI1+3),XYZ(NJ1+1:NJ1+3)
226: !        WRITE(*,'(A,I6,A,2I6,A,6G15.7)') 'image ',J1  ,' atoms ',NREPI(J2),NREPJ(J2),' coords ',XYZ(NI2+1:NI2+3),XYZ(NJ2+1:NJ2+3)227: !        WRITE(*,'(A,I6,A,2I6,A,6G15.7)') 'image ',J1  ,' atoms ',NREPI(J2),NREPJ(J2),' coords ',XYZ(NI2+1:NI2+3),XYZ(NJ2+1:NJ2+3)
227:          r1amr1bdr2amr2b=G1(1)*G2(1)+G1(2)*G2(2)+G1(3)*G2(3)228:          r1amr1bdr2amr2b=G1(1)*G2(1)+G1(2)*G2(2)+G1(3)*G2(3)
228: !        WRITE(*,'(A,G20.10)') 'dot product (r1I-r1J).(r2I-r2J)=',r1amr1bdr2amr2b229: !        WRITE(*,'(A,G20.10)') 'dot product (r1I-r1J).(r2I-r2J)=',r1amr1bdr2amr2b
229: !230: !
230: ! Is the denominator of the d^2 internal minimum term close to zero?231: ! Is the denominator of the d^2 internal minimum term close to zero?
231: !232: !
232:          r1apr2bmr2amr1bsq=DSQ1+DSQ2-2.0D0*r1amr1bdr2amr2b233:          r1apr2bmr2amr1bsq=DSQ1+DSQ2-2.0D0*r1amr1bdr2amr2b
233: !        WRITE(*,'(A,G20.10)') 'internal minimum test d(J1-1)^2+d(J1)^2-2(r1I-r1J).(r2I-r2J)=',r1apr2bmr2amr1bsq234: !        WRITE(*,'(A,G20.10)') 'internal minimum test d(J1-1)^2+d(J1)^2-2(r1I-r1J).(r2I-r2J)=',r1apr2bmr2amr1bsq
234:       ENDIF235:       ENDIF
235:  
236:       IF (r1apr2bmr2amr1bsq.LT.1.0D-50) THEN236:       IF (r1apr2bmr2amr1bsq.LT.1.0D-50) THEN
 237: !        D1=1.0D100; D2=1.0D100;
237:          NOINT=.TRUE.238:          NOINT=.TRUE.
238:          D1=SQRT(DSQ1)239:          D1=SQRT(DSQ1)
239:          D2=SQRT(DSQ2)240:          D2=SQRT(DSQ2)
240:          G2(1:3)=G2(1:3)/D2241:          G2(1:3)=G2(1:3)/D2
241:          G1(1:3)=G1(1:3)/D1242:          G1(1:3)=G1(1:3)/D1
242:       ELSE243:       ELSE
 244: !        WRITE(*,'(A)') 'calling MINMAXD2R'
243:          CALL MINMAXD2R(D2,D1,DINT,DSQ2,DSQ1,DSQI,G1,G2,G1INT,G2INT,NOINT,.FALSE.,NREPCUT(J2),r1amr1bdr2amr2b,r1apr2bmr2amr1bsq)245:          CALL MINMAXD2R(D2,D1,DINT,DSQ2,DSQ1,DSQI,G1,G2,G1INT,G2INT,NOINT,.FALSE.,NREPCUT(J2),r1amr1bdr2amr2b,r1apr2bmr2amr1bsq)
244:       ENDIF246:       ENDIF
245: !     WRITE(*,'(A,8G15.7)') 'D1,D2,G2,G1=',D1,D2,G2(1:3),G1(1:3)247: !     WRITE(*,'(A,8G15.7)') 'D1,D2,G2,G1=',D1,D2,G2(1:3),G1(1:3)
246: !248: !
247: ! Skip image INTIMAGE+2 - no non-zero gradients on other images and no energy contributions.249: ! Skip image INTIMAGE+2 - no non-zero gradients on other images and no energy contributions.
248: !250: !
249: ! Multiply energy and gradient by NREPCUT**2/INTCONSTRAINTREP to put values on a common scale.251: ! Multiply energy and gradient by NREPCUT**2/INTCONSTRAINTREP to put values on a common scale.
250: !252: !
 253: !     WRITE(*,'(A,2G20.10)') 'D2,NREPCUT=',D2,NREPCUT(J2)
251:       IF ((D2.LT.NREPCUT(J2)).AND.(J1.LT.INTIMAGE+2)) THEN ! terms for image J1 - non-zero derivatives only for J1254:       IF ((D2.LT.NREPCUT(J2)).AND.(J1.LT.INTIMAGE+2)) THEN ! terms for image J1 - non-zero derivatives only for J1
252: ! !        D12=DSQ2**6255: ! !        D12=DSQ2**6
253:          D12=DSQ2256:          D12=DSQ2
254: ! !        DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(12.0D0*D2-13.0D0*INTCONSTRAINREPCUT)/INTCONST)257: ! !        DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(12.0D0*D2-13.0D0*INTCONSTRAINREPCUT)/INTCONST)
255: ! !        DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(12.0D0*D2-13.0D0*NREPCUT(J2))/INTCONST)258: ! !        DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(12.0D0*D2-13.0D0*NREPCUT(J2))/INTCONST)
256: !        DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(2.0D0*D2-3.0D0*NREPCUT(J2))/INTCONST)259: !        DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(2.0D0*D2-3.0D0*NREPCUT(J2))/INTCONST)
257: !        DUMMY=(1.0D0/D12+(2.0D0*D2-3.0D0*NREPCUT(J2))/INTCONST)*NREPCUT(J2)**2260: !        DUMMY=(1.0D0/D12+(2.0D0*D2-3.0D0*NREPCUT(J2))/INTCONST)*NREPCUT(J2)**2
258:          DUMMY=NREPCUT(J2)**2/D12+2.0D0*D2/NREPCUT(J2)-3.0D0  261:          DUMMY=NREPCUT(J2)**2/D12+2.0D0*D2/NREPCUT(J2)-3.0D0  
259:          EEE(J1)=EEE(J1)+DUMMY262:          EEE(J1)=EEE(J1)+DUMMY
260: !        IF (PRINTE.AND.(DUMMY.GT.1.0D-4)) THEN263: !        IF (PRINTE.AND.(DUMMY.GT.1.0D-4)) THEN
280: !        DUMMY=-2.0D0*(1.0D0/(D2*D12)-1.0D0/INTCONST)*NREPCUT(J2)**2283: !        DUMMY=-2.0D0*(1.0D0/(D2*D12)-1.0D0/INTCONST)*NREPCUT(J2)**2
281:          DUMMY=-2.0D0*(NREPCUT(J2)**2/(D2*D12)-1.0D0/NREPCUT(J2))284:          DUMMY=-2.0D0*(NREPCUT(J2)**2/(D2*D12)-1.0D0/NREPCUT(J2))
282:          REPGRAD(1:3)=DUMMY*G2(1:3)285:          REPGRAD(1:3)=DUMMY*G2(1:3)
283: !        WRITE(*, '(A,4I6,G15.5)') 'min J1,J2,REPI,REPJ,REPGRAD=',J1,J2,NREPI(J2),NREPJ(J2), &286: !        WRITE(*, '(A,4I6,G15.5)') 'min J1,J2,REPI,REPJ,REPGRAD=',J1,J2,NREPI(J2),NREPJ(J2), &
284: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2)287: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2)
285:          GGG(NI2+1:NI2+3)=GGG(NI2+1:NI2+3)+REPGRAD(1:3)288:          GGG(NI2+1:NI2+3)=GGG(NI2+1:NI2+3)+REPGRAD(1:3)
286:          GGG(NJ2+1:NJ2+3)=GGG(NJ2+1:NJ2+3)-REPGRAD(1:3)289:          GGG(NJ2+1:NJ2+3)=GGG(NJ2+1:NJ2+3)-REPGRAD(1:3)
287:          DUMMY2=MINVAL(REPGRAD)290:          DUMMY2=MINVAL(REPGRAD)
288:          IF (DUMMY2.LT.FMIN) THEN291:          IF (DUMMY2.LT.FMIN) THEN
289:             FMIN=DUMMY2292:             FMIN=DUMMY2
 293: !           WRITE(*,'(A,2I6,5G20.10)') 'J1,J2,REPGRAD,FMIN,FMAX=',J1,J2,REPGRAD(1:3),FMIN,FMAX
290:          ENDIF294:          ENDIF
291:          DUMMY2=MAXVAL(REPGRAD)295:          DUMMY2=MAXVAL(REPGRAD)
292:          IF (DUMMY2.GT.FMAX) THEN296:          IF (DUMMY2.GT.FMAX) THEN
293:             FMAX=DUMMY2297:             FMAX=DUMMY2
 298: !           WRITE(*,'(A,2I6,5G20.10)') 'J1,J2,REPGRAD,FMIN,FMAX=',J1,J2,REPGRAD(1:3),FMIN,FMAX
294:          ENDIF299:          ENDIF
 300: !           WRITE(*,'(A,2I6,5G20.10)') 'J1,J2,REPGRAD,FMIN,FMAX=',J1,J2,REPGRAD(1:3),FMIN,FMAX
295:       ENDIF301:       ENDIF
296: !302: !
297: ! For internal minima we are counting edges. 303: ! For internal minima we are counting edges. 
298: ! Edge J1 is between images J1-1 and J1, starting from J1=2.304: ! Edge J1 is between images J1-1 and J1, starting from J1=2.
299: ! Energy contributions are shared evenly, except for305: ! Energy contributions are shared evenly, except for
300: ! edge 1, which was assigned to image 2, and edge INTIMAGE+1, which306: ! edge 1, which was assigned to image 2, and edge INTIMAGE+1, which
301: ! was assigned to image INTIMAGE+1. Gradients are set to zero for the end images.307: ! was assigned to image INTIMAGE+1. Gradients are set to zero for the end images.
302: ! 20/11/17 - changed to turn off internal minimum checks involving the fixed endpoints. DJW308: ! 20/11/17 - changed to turn off internal minimum checks involving the fixed endpoints. DJW
303: !309: !
304:       DUMMY=0.0D0310:       DUMMY=0.0D0


r33537/intlbfgs.f90 2017-12-01 11:30:18.200192018 +0000 r33536/intlbfgs.f90 2017-12-01 11:30:19.212205449 +0000
 25:      & REPJ, NREPMAX, ATOMACTIVE, NCONSTRAINTON, CONION, CONJON, CONDISTREFLOCALON, CONDISTREFON, & 25:      & REPJ, NREPMAX, ATOMACTIVE, NCONSTRAINTON, CONION, CONJON, CONDISTREFLOCALON, CONDISTREFON, &
 26:      & NREPCUT, REPCUT, CHECKCONINT, INTCONSTEPS, INTRELSTEPS, MAXCONE, COLDFUSIONLIMIT, & 26:      & NREPCUT, REPCUT, CHECKCONINT, INTCONSTEPS, INTRELSTEPS, MAXCONE, COLDFUSIONLIMIT, &
 27:      & INTSTEPS1, DUMPINTXYZ, DUMPINTXYZFREQ, DUMPINTEOS, DUMPINTEOSFREQ, & 27:      & INTSTEPS1, DUMPINTXYZ, DUMPINTXYZFREQ, DUMPINTEOS, DUMPINTEOSFREQ, &
 28:      & IMSEPMIN, IMSEPMAX, MAXINTIMAGE, INTFREEZET, INTFREEZETOL, FREEZE, & 28:      & IMSEPMIN, IMSEPMAX, MAXINTIMAGE, INTFREEZET, INTFREEZETOL, FREEZE, &
 29:      & INTFROZEN, CHECKREPINTERVAL, NNREPULSIVE, INTFREEZEMIN, INTIMAGECHECK, & 29:      & INTFROZEN, CHECKREPINTERVAL, NNREPULSIVE, INTFREEZEMIN, INTIMAGECHECK, &
 30:      & CONCUT, CONCUTLOCAL, KINT, REPIFIX, REPJFIX, NREPULSIVEFIX, & 30:      & CONCUT, CONCUTLOCAL, KINT, REPIFIX, REPJFIX, NREPULSIVEFIX, &
 31:      & NCONSTRAINTFIX, CONIFIX, CONJFIX, QCIPERMCHECK, QCIPERMCHECKINT, BULKT, TWOD, RIGIDBODY, & 31:      & NCONSTRAINTFIX, CONIFIX, CONJFIX, QCIPERMCHECK, QCIPERMCHECKINT, BULKT, TWOD, RIGIDBODY, &
 32:      & QCIADDREP, QCIXYZ, WHOLEDNEB, QCIIMAGE, FROZEN, QCIRESTART, NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, & 32:      & QCIADDREP, QCIXYZ, WHOLEDNEB, QCIIMAGE, FROZEN, QCIRESTART, NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, &
 33:      & PERMDIST, LOCALPERMCUT, QCILPERMDIST, QCIPDINT, QCIPERMCUT, QCIAMBERT, BONDS, DOBACK, & 33:      & PERMDIST, LOCALPERMCUT, QCILPERMDIST, QCIPDINT, QCIPERMCUT, QCIAMBERT, BONDS, DOBACK, &
 34:      & QCIRESET, QCIRESETINT1, QCIRESETINT2, JMAXCON, NCONOFF, EREP, ECON, ESPRING, CONVERGECONTEST, CONVERGEREPTEST, & 34:      & QCIRESET, QCIRESETINT1, QCIRESETINT2, JMAXCON, NCONOFF, EREP, ECON, ESPRING, CONVERGECONTEST, CONVERGEREPTEST, &
 35:      & FCONTEST, FREPTEST, QCIKADJUSTTOL, QCIKADJUSTFRAC, QCIKADJUSTFRQ, QCIAVDEV, QCISTOP 35:      & FCONTEST, FREPTEST, QCIKADJUSTTOL, QCIKADJUSTFRAC, QCIKADJUSTFRQ, QCIAVDEV
 36: USE COMMONS, ONLY: NATOMS, DEBUG, PARAM1, PARAM2, PARAM3 36: USE COMMONS, ONLY: NATOMS, DEBUG, PARAM1, PARAM2, PARAM3
 37: USE MODCHARMM, ONLY : CHRMMT 37: USE MODCHARMM, ONLY : CHRMMT
 38: USE CHIRALITY 38: USE CHIRALITY
 39:  39: 
 40: IMPLICIT NONE  40: IMPLICIT NONE 
 41:  41: 
 42: DOUBLE PRECISION, INTENT(IN) :: QSTART(3*NATOMS), QFINISH(3*NATOMS)  ! The two end points 42: DOUBLE PRECISION, INTENT(IN) :: QSTART(3*NATOMS), QFINISH(3*NATOMS)  ! The two end points
 43: INTEGER D, U 43: INTEGER D, U
 44: DOUBLE PRECISION DIST, DIST2, RMAT(3,3), SUMEEE, SUMEEE2, SIGMAEEE, NEIGHBOUR_COORDS(12), CENTRE_COORDS(3) 44: DOUBLE PRECISION DIST, DIST2, RMAT(3,3), SUMEEE, SUMEEE2, SIGMAEEE, NEIGHBOUR_COORDS(12), CENTRE_COORDS(3)
 45: DOUBLE PRECISION DMAX, DF, DMIN, LOCALSTEP, ADMAX, DUMMYX, DUMMYY, DUMMYZ 45: DOUBLE PRECISION DMAX, DF, DMIN, LOCALSTEP, ADMAX, DUMMYX, DUMMYY, DUMMYZ
781: !        CONACTIVE(JMAXCON)=.FALSE.781: !        CONACTIVE(JMAXCON)=.FALSE.
782: !        CONOFFTRIED(JMAXCON)=.TRUE.782: !        CONOFFTRIED(JMAXCON)=.TRUE.
783: !     ENDIF783: !     ENDIF
784: 784: 
785:       IF (MAX(CONVERGECONTEST,CONVERGEREPTEST).GT.MAXCONE) MAXCONE=MAXCONE*1.05D0785:       IF (MAX(CONVERGECONTEST,CONVERGEREPTEST).GT.MAXCONE) MAXCONE=MAXCONE*1.05D0
786:       IF (MAX(FCONTEST,FREPTEST).GT.INTRMSTOL) INTRMSTOL=INTRMSTOL*1.05D0786:       IF (MAX(FCONTEST,FREPTEST).GT.INTRMSTOL) INTRMSTOL=INTRMSTOL*1.05D0
787:       WRITE(*,'(A,2G20.10)') 'intlbfgs> Interpolation seems to be stuck. Converge thresholds are now ',MAXCONE,INTRMSTOL787:       WRITE(*,'(A,2G20.10)') 'intlbfgs> Interpolation seems to be stuck. Converge thresholds are now ',MAXCONE,INTRMSTOL
788: 788: 
789:       NLASTGOODE=NITERDONE789:       NLASTGOODE=NITERDONE
790:       LASTGOODE=ETOTAL790:       LASTGOODE=ETOTAL
 791: !     IF (NITERDONE.GT.650) STOP  !!!! DEBUG DJW
 792: !     STOP
791:    ENDIF793:    ENDIF
792: ENDIF794: ENDIF
793: 795: 
 796: !     IF (NITERDONE.GT.200) STOP  !!!! DEBUG DJW
 797: ! STOP
 798: 
794: !799: !
795: !  Check permutational alignments. Maintain a list of the permutable groups where all800: !  Check permutational alignments. Maintain a list of the permutable groups where all
796: !  members are active. See if we have any new complete groups. MUST update NDUMMY801: !  members are active. See if we have any new complete groups. MUST update NDUMMY
797: !  counter to step through permutable atom list.802: !  counter to step through permutable atom list.
798: !803: !
799: IF (QCILPERMDIST.AND.(MOD(NITERDONE-1,QCIPDINT).EQ.0)) THEN804: IF (QCILPERMDIST.AND.(MOD(NITERDONE-1,QCIPDINT).EQ.0)) THEN
800: 805: 
801:    PRINT *,'DOING CHIRALCHECK NOW'806:    PRINT *,'DOING CHIRALCHECK NOW'
802: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state before CHIRALCHECK index -4'807: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state before CHIRALCHECK index -4'
803: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-4,INTIMAGE,XYZ,TURNONORDER,NCONOFF)808: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-4,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
974: !             XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))=COORDSA(1:3*NATOMS)979: !             XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))=COORDSA(1:3*NATOMS)
975: !          ENDIF980: !          ENDIF
976: !       ENDDO np981: !       ENDDO np
977: !    ENDDO982: !    ENDDO
978: !    LOCALPERMCUT=SAVELOCALPERMCUT983: !    LOCALPERMCUT=SAVELOCALPERMCUT
979: !    CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,NCONOFF)984: !    CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
980: 985: 
981: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state after lopermdist index -7'986: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state after lopermdist index -7'
982: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-7,INTIMAGE,XYZ,TURNONORDER,NCONOFF)987: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-7,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
983: 988: 
 989: !    STOP !!! DEBUG DJW
 990: 
984: ENDIF991: ENDIF
985: 992: 
986: !993: !
987: !  Dynamic adjustment of KINT values. Local values are changed by QCIKADJUSTFRAC if the994: !  Dynamic adjustment of KINT values. Local values are changed by QCIKADJUSTFRAC if the
988: !  corresponding separation is outside a fraction QCIKADJUSTTOL of the average value.995: !  corresponding separation is outside a fraction QCIKADJUSTTOL of the average value.
989: !  The adjustment is done every QCIKADJUSTFRQ cycles.996: !  The adjustment is done every QCIKADJUSTFRQ cycles.
990: !  Based on the DNEB adjustment.997: !  Based on the DNEB adjustment.
991: !998: !
992: IF (QCIKADJUSTFRQ.GT.0) THEN999: IF (QCIKADJUSTFRQ.GT.0) THEN
993:    IF (MOD(NITERDONE,QCIKADJUSTFRQ).EQ.0) THEN ! dynamic adjustment of KINT1000:    IF (MOD(NITERDONE,QCIKADJUSTFRQ).EQ.0) THEN ! dynamic adjustment of KINT
1801: 1808: 
1802: DEALLOCATE(CONI,CONJ,CONDISTREF,REPI,REPJ,NREPI,NREPJ,REPCUT,NREPCUT,CONCUT,CONOFFLIST,CONOFFTRIED)1809: DEALLOCATE(CONI,CONJ,CONDISTREF,REPI,REPJ,NREPI,NREPJ,REPCUT,NREPCUT,CONCUT,CONOFFLIST,CONOFFTRIED)
1803: DEALLOCATE(TRUEEE, EEETMP, MYGTMP, GTMP, &1810: DEALLOCATE(TRUEEE, EEETMP, MYGTMP, GTMP, &
1804:   &      DIAG, STP, SEARCHSTEP, GDIF,GLAST, XSAVE, XYZ, GGG, CHECKG, IMGFREEZE, EEE, STEPIMAGE)1811:   &      DIAG, STP, SEARCHSTEP, GDIF,GLAST, XSAVE, XYZ, GGG, CHECKG, IMGFREEZE, EEE, STEPIMAGE)
1805: QCIIMAGE=INTIMAGE1812: QCIIMAGE=INTIMAGE
1806: INTIMAGE=INTIMAGESAVE1813: INTIMAGE=INTIMAGESAVE
1807: IF (ALLOCATED(CONLIST)) DEALLOCATE(CONLIST)1814: IF (ALLOCATED(CONLIST)) DEALLOCATE(CONLIST)
1808: IF (ALLOCATED(NCONATOM)) DEALLOCATE(NCONATOM)1815: IF (ALLOCATED(NCONATOM)) DEALLOCATE(NCONATOM)
1809: IF (ALLOCATED(COMMONCON)) DEALLOCATE(COMMONCON)1816: IF (ALLOCATED(COMMONCON)) DEALLOCATE(COMMONCON)
1810: 1817: 
1811: IF (QCISTOP) STOP  
1812:  
1813: END SUBROUTINE INTLBFGS1818: END SUBROUTINE INTLBFGS
1814: !1819: !
1815: ! Neighbour list for repulsions to reduce cost of constraint potential.1820: ! Neighbour list for repulsions to reduce cost of constraint potential.
1816: !1821: !
1817: SUBROUTINE CHECKREP(INTIMAGE,XYZ,NOPT,NNSTART,NSTART)1822: SUBROUTINE CHECKREP(INTIMAGE,XYZ,NOPT,NNSTART,NSTART)
1818: USE KEY,ONLY : NREPI, NREPJ, NREPCUT, NNREPULSIVE, NREPULSIVE, REPI, REPJ, REPCUT, CHECKREPCUTOFF, &1823: USE KEY,ONLY : NREPI, NREPJ, NREPCUT, NNREPULSIVE, NREPULSIVE, REPI, REPJ, REPCUT, CHECKREPCUTOFF, &
1819:   &                INTFROZEN, NNREPULSIVE, intconstraintrep1824:   &                INTFROZEN, NNREPULSIVE, intconstraintrep
1820: USE COMMONS, ONLY : DEBUG1825: USE COMMONS, ONLY : DEBUG
1821: USE PORFUNCS1826: USE PORFUNCS
1822: IMPLICIT NONE1827: IMPLICIT NONE


r33537/key.f90 2017-12-01 11:30:18.444195253 +0000 r33536/key.f90 2017-12-01 11:30:19.476208953 +0000
 54:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, & 54:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, &
 55:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, & 55:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, &
 56:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, & 56:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, &
 57:      &        PBST, SSHT, GAUSSIAN03, GAUSSIAN09, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, & 57:      &        PBST, SSHT, GAUSSIAN03, GAUSSIAN09, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, &
 58:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, & 58:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, &
 59:      &        MALONALDEHYDE, SIO2PT, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, MLPB3NEWT, MLPVB3T, & 59:      &        MALONALDEHYDE, SIO2PT, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, MLPB3NEWT, MLPVB3T, &
 60:      &        QCIPOTT, QCIPOT2T, QCIRADSHIFTT, QCINOREPINT, QCIAMBERT, SLERPT, NOTRANSROTT, MAXGAPT, BULKBOXT, GDSQT, FLATTESTT, & 60:      &        QCIPOTT, QCIPOT2T, QCIRADSHIFTT, QCINOREPINT, QCIAMBERT, SLERPT, NOTRANSROTT, MAXGAPT, BULKBOXT, GDSQT, FLATTESTT, &
 61:      &        MLQT, MLQPROB, LJADD2T, MACROIONT, NOREGBIAS, PYADDT, PYADD2T, SANDBOXT, LJADD3T, LJADD4T, & 61:      &        MLQT, MLQPROB, LJADD2T, MACROIONT, NOREGBIAS, PYADDT, PYADD2T, SANDBOXT, LJADD3T, LJADD4T, &
 62:      &        MBPOLT, MULTIJOB_MACHINET, DUMPDATA_MACHINET, PLUSSIDET, MINUSSIDET, PUSHOPTT, MLPVB3NNT, GAUSSIAN16, QCICYCLEST, & 62:      &        MBPOLT, MULTIJOB_MACHINET, DUMPDATA_MACHINET, PLUSSIDET, MINUSSIDET, PUSHOPTT, MLPVB3NNT, GAUSSIAN16, QCICYCLEST, &
 63:      &        QCIDNEBT, QCIRESTART, QCILPERMDIST, FASTOVERLAPT, BNB_ALIGNT, QUIPT, QCIADDACIDT, DOBACK, QCIRESET, DOBACKALL, & 63:      &        QCIDNEBT, QCIRESTART, QCILPERMDIST, FASTOVERLAPT, BNB_ALIGNT, QUIPT, QCIADDACIDT, DOBACK, QCIRESET, DOBACKALL, &
 64:      &        QCITRILAT, QCISTOP 64:      &        QCITRILAT
 65:  65: 
 66:  66: 
 67: ! sy349 > for testing the flatpath after dneb 67: ! sy349 > for testing the flatpath after dneb
 68:       !LOGICAL, ALLOCATABLE :: FLATPATHT(:) 68:       !LOGICAL, ALLOCATABLE :: FLATPATHT(:)
 69:       LOGICAL FLATPATHT 69:       LOGICAL FLATPATHT
 70:  70: 
 71: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted) 71: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted)
 72:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential? 72:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential?
 73:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z) 73:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z)
 74:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1 74:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1


r33537/keywords.f 2017-12-01 11:30:18.704198705 +0000 r33536/keywords.f 2017-12-01 11:30:19.752212618 +0000
647: !647: !
648: ! QCI parameters648: ! QCI parameters
649: !649: !
650:          CONDATT=.FALSE.650:          CONDATT=.FALSE.
651:          QCIPOTT=.FALSE.651:          QCIPOTT=.FALSE.
652:          QCIPOT2T=.FALSE.652:          QCIPOT2T=.FALSE.
653:          QCIADDREP=0653:          QCIADDREP=0
654:          DOBACK=.FALSE.654:          DOBACK=.FALSE.
655:          DOBACKALL=.FALSE.655:          DOBACKALL=.FALSE.
656:          QCIRESET=.FALSE.656:          QCIRESET=.FALSE.
657:          QCISTOP=.FALSE. 
658:          QCIRESETINT1=300657:          QCIRESETINT1=300
659:          QCIRESETINT2=1000658:          QCIRESETINT2=1000
660:          QCIADDACIDT=.FALSE.659:          QCIADDACIDT=.FALSE.
661:          QCITRILAT=.FALSE.660:          QCITRILAT=.FALSE.
662:          QCIADDREPCUT=1.0D0661:          QCIADDREPCUT=1.0D0
663:          QCIADDREPEPS=1.0D0662:          QCIADDREPEPS=1.0D0
664:          QCINOREPINT=.FALSE.663:          QCINOREPINT=.FALSE.
665:          QCIINTREPMINSEP=20664:          QCIINTREPMINSEP=20
666:          QCIKADJUSTFRQ=0665:          QCIKADJUSTFRQ=0
667:          QCIKADJUSTTOL=10.0D0666:          QCIKADJUSTTOL=10.0D0
2232: ! 2231: ! 
2233:          ELSE IF ((WORD.EQ.'CONINT').OR.(WORD.EQ.'QCIINT')) THEN2232:          ELSE IF ((WORD.EQ.'CONINT').OR.(WORD.EQ.'QCIINT')) THEN
2234:             IF (NITEMS.GT.1) CALL READF(INTMINFAC)2233:             IF (NITEMS.GT.1) CALL READF(INTMINFAC)
2235:             WRITE(*,'(A,G20.10)') ' keyword> Internal minima terms will be scaled by a factor of ',INTMINFAC2234:             WRITE(*,'(A,G20.10)') ' keyword> Internal minima terms will be scaled by a factor of ',INTMINFAC
2236: !2235: !
2237: ! Maximum active atoms in QCI procedure.2236: ! Maximum active atoms in QCI procedure.
2238: !2237: !
2239:       ELSE IF (WORD.EQ.'QCIRESTART') THEN2238:       ELSE IF (WORD.EQ.'QCIRESTART') THEN
2240:          QCIRESTART=.TRUE.2239:          QCIRESTART=.TRUE.
2241: !2240: !
2242: ! Stop before going on to DNEB phase. 
2243: ! 
2244:       ELSE IF (WORD.EQ.'QCISTOP') THEN 
2245:          QCISTOP=.TRUE. 
2246: ! 
2247: ! Maximum active atoms in QCI procedure.2241: ! Maximum active atoms in QCI procedure.
2248: !2242: !
2249:       ELSE IF (WORD.EQ.'QCIMAXACTIVE') THEN2243:       ELSE IF (WORD.EQ.'QCIMAXACTIVE') THEN
2250:          CALL READI(MAXNACTIVE)2244:          CALL READI(MAXNACTIVE)
2251: 2245: 
2252: 2246: 
2253:       ELSE IF (WORD.EQ.'QCICYCLES') THEN2247:       ELSE IF (WORD.EQ.'QCICYCLES') THEN
2254:          QCICYCLEST=.TRUE.2248:          QCICYCLEST=.TRUE.
2255:          QCIDNEBT=.FALSE.2249:          QCIDNEBT=.FALSE.
2256:          CALL READF(QCICYCDIST)2250:          CALL READF(QCICYCDIST)


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0