hdiff output

r33485/congrad.f90 2017-11-16 22:30:19.941897995 +0000 r33484/congrad.f90 2017-11-16 22:30:20.805909339 +0000
 26: DOUBLE PRECISION :: ETOTAL, RMS, EMAX, EMAXNOFF 26: DOUBLE PRECISION :: ETOTAL, RMS, EMAX, EMAXNOFF
 27: INTEGER JJMAX(INTIMAGE+2) 27: INTEGER JJMAX(INTIMAGE+2)
 28: DOUBLE PRECISION  EEMAX(INTIMAGE+2) 28: DOUBLE PRECISION  EEMAX(INTIMAGE+2)
 29: DOUBLE PRECISION R1AX,R1AY,R1AZ,R2AX,R2AY,R2AZ,R1BX,R1BY,R1BZ,R2BX,R2BY,R2BZ,D2,D1 29: DOUBLE PRECISION R1AX,R1AY,R1AZ,R2AX,R2AY,R2AZ,R1BX,R1BY,R1BZ,R2BX,R2BY,R2BZ,D2,D1
 30: DOUBLE PRECISION G1(3),G2(3),DINT,G1INT(3),G2INT(3) 30: DOUBLE PRECISION G1(3),G2(3),DINT,G1INT(3),G2INT(3)
 31: DOUBLE PRECISION DUMMY, REPGRAD(3), INTCONST, D12, DSQ2, DSQ1, DSQI 31: DOUBLE PRECISION DUMMY, REPGRAD(3), INTCONST, D12, DSQ2, DSQ1, DSQI
 32: DOUBLE PRECISION CONE(INTIMAGE+2), REPE(INTIMAGE+2),MAXINT,MININT,REPEINT(INTIMAGE+2),RMSIM(INTIMAGE+2) 32: DOUBLE PRECISION CONE(INTIMAGE+2), REPE(INTIMAGE+2),MAXINT,MININT,REPEINT(INTIMAGE+2),RMSIM(INTIMAGE+2)
 33: LOGICAL NOINT 33: LOGICAL NOINT
 34: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2)), GGG((3*NATOMS)*(INTIMAGE+2)), EEE(INTIMAGE+2), CCLOCAL 34: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2)), GGG((3*NATOMS)*(INTIMAGE+2)), EEE(INTIMAGE+2), CCLOCAL
 35: LOGICAL IMGFREEZE(INTIMAGE) 35: LOGICAL IMGFREEZE(INTIMAGE)
 36: DOUBLE PRECISION DPLUS, SPGRAD(3), DCUT, r1amr1bdr2amr2b,r1apr2bmr2amr1bsq,CUTMAX,DISTMAX,DIST2MAX 36: DOUBLE PRECISION DPLUS, SPGRAD(3), DCUT, r1amr1bdr2amr2b,r1apr2bmr2amr1bsq
 37: DOUBLE PRECISION CONDMAX, CONREFMAX, CONCUTMAX 
 38:  37: 
 39: EEE(1:INTIMAGE+2)=0.0D0 38: EEE(1:INTIMAGE+2)=0.0D0
 40: CONE(1:INTIMAGE+2)=0.0D0 39: CONE(1:INTIMAGE+2)=0.0D0
 41: REPE(1:INTIMAGE+2)=0.0D0 40: REPE(1:INTIMAGE+2)=0.0D0
 42: REPEINT(1:INTIMAGE+2)=0.0D0 41: REPEINT(1:INTIMAGE+2)=0.0D0
 43: NREPINT(1:INTIMAGE+2)=0 42: NREPINT(1:INTIMAGE+2)=0
 44: GGG(1:(3*NATOMS)*(INTIMAGE+2))=0.0D0 43: GGG(1:(3*NATOMS)*(INTIMAGE+2))=0.0D0
 45: ECON=0.0D0; EREP=0.0D0 44: ECON=0.0D0; EREP=0.0D0
 46: NINTMIN=0 45: NINTMIN=0
 47: NINTMIN2=0 46: NINTMIN2=0
120:             EEMAX(J1)=DUMMY119:             EEMAX(J1)=DUMMY
121:          ENDIF120:          ENDIF
122:          CONE(J1)=CONE(J1)+DUMMY121:          CONE(J1)=CONE(J1)+DUMMY
123:          GGG(NI1+1:NI1+3)=GGG(NI1+1:NI1+3)+REPGRAD(1:3)122:          GGG(NI1+1:NI1+3)=GGG(NI1+1:NI1+3)+REPGRAD(1:3)
124:          GGG(NJ1+1:NJ1+3)=GGG(NJ1+1:NJ1+3)-REPGRAD(1:3)123:          GGG(NJ1+1:NJ1+3)=GGG(NJ1+1:NJ1+3)-REPGRAD(1:3)
125:       ENDIF124:       ENDIF
126: !     WRITE(MYUNIT,'(A,2I6,5G20.10)') 'J1,J2,D2,CONDISTREFLOCAL,CCLOCAL,EEE,CONE=',J1,J2,D2,CONDISTREFLOCAL(J2),CCLOCAL,EEE(J1),CONE(J1)125: !     WRITE(MYUNIT,'(A,2I6,5G20.10)') 'J1,J2,D2,CONDISTREFLOCAL,CCLOCAL,EEE,CONE=',J1,J2,D2,CONDISTREFLOCAL(J2),CCLOCAL,EEE(J1),CONE(J1)
127:    ENDDO126:    ENDDO
128: ENDDO127: ENDDO
129: IF (JMAX.GT.0) THEN128: IF (JMAX.GT.0) THEN
130:    WRITE(*,'(A,I6,A,I6,A,2I6,A,3G20.10)') ' congrad> Highest constraint contribution for any image in image ',IMAX, &129:    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad> Highest constraint contribution for any image in image ',IMAX, &
131:  & ' constraint ',JMAX, &130:  & ' constraint ',JMAX, &
132:  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),'d,ref,cutoff=',CONDMAX,CONREFMAX,CONCUTMAX131:  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),' off=',NCONOFF
133:  
134: ENDIF132: ENDIF
135: IF (JMAXNOFF.GT.0) THEN133: IF (JMAXNOFF.GT.0) THEN
136:    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, &134:    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad> Highest constraint contribution never turned off for any image in image ',IMAXNOFF, &
137:  & ' constraint ',JMAXNOFF, &135:  & ' constraint ',JMAXNOFF, &
138:  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),' value=',EMAX,' off=',NCONOFF136:  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),' off=',NCONOFF
139: ELSEIF (JMAX.GT.0) THEN137: ELSEIF (JMAX.GT.0) THEN
140:    JMAXNOFF=JMAX138:    JMAXNOFF=JMAX
141:    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad> *** Using highest constraint contribution for any image, setting NCONOFF to 0'139:    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad> *** Using highest constraint contribution for any image, setting NCONOFF to 0'
142:    CONOFFTRIED(1:INTCONMAX)=.FALSE.140:    CONOFFTRIED(1:INTCONMAX)=.FALSE.
143:    NCONOFF=0141:    NCONOFF=0
144: ENDIF142: ENDIF
145: JMAXCON=JMAXNOFF143: JMAXCON=JMAXNOFF
146: 144: 
147: ! GGG(1:(3*NATOMS))=0.0D0                            ! can delete when loop range above changes145: ! GGG(1:(3*NATOMS))=0.0D0                            ! can delete when loop range above changes
148: ! GGG((3*NATOMS)*(INTIMAGE+1)+1:(3*NATOMS)*(INTIMAGE+2))=0.0D0 ! can delete when loop range above changes146: ! GGG((3*NATOMS)*(INTIMAGE+1)+1:(3*NATOMS)*(INTIMAGE+2))=0.0D0 ! can delete when loop range above changes
216: !        DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(12.0D0*D2-13.0D0*NREPCUT(J2))/INTCONST)214: !        DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(12.0D0*D2-13.0D0*NREPCUT(J2))/INTCONST)
217:          DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(2.0D0*D2-3.0D0*NREPCUT(J2))/INTCONST)215:          DUMMY=INTCONSTRAINTREP*(1.0D0/D12+(2.0D0*D2-3.0D0*NREPCUT(J2))/INTCONST)
218:          EEE(J1)=EEE(J1)+DUMMY216:          EEE(J1)=EEE(J1)+DUMMY
219: !        IF (PRINTE.AND.(DUMMY.GT.1.0D-4)) THEN217: !        IF (PRINTE.AND.(DUMMY.GT.1.0D-4)) THEN
220: !           WRITE(*, '(A,2I6,2L5,G20.10)') 'R1 NREPI,NREPJ,INTFROZEN(NREPI),INTFROZEN(NREPJ),DUMMY=', &218: !           WRITE(*, '(A,2I6,2L5,G20.10)') 'R1 NREPI,NREPJ,INTFROZEN(NREPI),INTFROZEN(NREPJ),DUMMY=', &
221: ! &                                     NREPI(J2),NREPJ(J2),INTFROZEN(NREPI(J2)),INTFROZEN(NREPJ(J2)),DUMMY219: ! &                                     NREPI(J2),NREPJ(J2),INTFROZEN(NREPI(J2)),INTFROZEN(NREPJ(J2)),DUMMY
222: !        ENDIF220: !        ENDIF
223:          IF (DUMMY.GT.EMAX) THEN221:          IF (DUMMY.GT.EMAX) THEN
224:             IMAX=J1222:             IMAX=J1
225:             JMAX=J2223:             JMAX=J2
226:             DIST2MAX=D12 
227:             CUTMAX=NREPCUT(J2) 
228:             DISTMAX=D2 
229:             EMAX=DUMMY224:             EMAX=DUMMY
230:          ENDIF225:          ENDIF
231:          IF (DUMMY.GT.EEMAX(J1)) THEN226:          IF (DUMMY.GT.EEMAX(J1)) THEN
232:             JJMAX(J1)=J2227:             JJMAX(J1)=J2
233:             EEMAX(J1)=DUMMY228:             EEMAX(J1)=DUMMY
234:          ENDIF229:          ENDIF
235:          REPE(J1)=REPE(J1)+DUMMY230:          REPE(J1)=REPE(J1)+DUMMY
236:          EREP=EREP+DUMMY231:          EREP=EREP+DUMMY
237: !        DUMMY=-12.0D0*INTCONSTRAINTREP*(1.0D0/(D2*D12)-1.0D0/INTCONST)232: !        DUMMY=-12.0D0*INTCONSTRAINTREP*(1.0D0/(D2*D12)-1.0D0/INTCONST)
238:          DUMMY=-2.0D0*INTCONSTRAINTREP*(1.0D0/(D2*D12)-1.0D0/INTCONST)233:          DUMMY=-2.0D0*INTCONSTRAINTREP*(1.0D0/(D2*D12)-1.0D0/INTCONST)
271:          ELSE IF (J1.EQ.INTIMAGE+2) THEN266:          ELSE IF (J1.EQ.INTIMAGE+2) THEN
272:             EEE(J1-1)=EEE(J1-1)+DUMMY267:             EEE(J1-1)=EEE(J1-1)+DUMMY
273:             REPEINT(J1-1)=REPEINT(J1-1)+DUMMY268:             REPEINT(J1-1)=REPEINT(J1-1)+DUMMY
274:             NREPINT(J1-1)=NREPINT(J1-1)+1269:             NREPINT(J1-1)=NREPINT(J1-1)+1
275:          ENDIF270:          ENDIF
276:          EREP=EREP+DUMMY271:          EREP=EREP+DUMMY
277:          IF (DUMMY.GT.EMAX) THEN272:          IF (DUMMY.GT.EMAX) THEN
278:             IMAX=J1273:             IMAX=J1
279:             JMAX=J2274:             JMAX=J2
280:             EMAX=DUMMY275:             EMAX=DUMMY
281:             DISTMAX=DINT 
282:             DIST2MAX=D12 
283:             CUTMAX=NREPCUT(J2) 
284:          ENDIF276:          ENDIF
285:          IF (DUMMY.GT.EEMAX(J1)) THEN277:          IF (DUMMY.GT.EEMAX(J1)) THEN
286:             JJMAX(J1)=J2278:             JJMAX(J1)=J2
287:             EEMAX(J1)=DUMMY279:             EEMAX(J1)=DUMMY
288:          ENDIF280:          ENDIF
289: !        DUMMY=-12.0D0*INTCONSTRAINTREP*(1.0D0/(DINT*D12)-1.0D0/INTCONST)281: !        DUMMY=-12.0D0*INTCONSTRAINTREP*(1.0D0/(DINT*D12)-1.0D0/INTCONST)
290:          DUMMY=-2.0D0*INTCONSTRAINTREP*(1.0D0/(DINT*D12)-1.0D0/INTCONST)282:          DUMMY=-2.0D0*INTCONSTRAINTREP*(1.0D0/(DINT*D12)-1.0D0/INTCONST)
291:          REPGRAD(1:3)=INTMINFAC*DUMMY*G1INT(1:3)283:          REPGRAD(1:3)=INTMINFAC*DUMMY*G1INT(1:3)
292: !        PRINT '(A,4I6,2G15.5)','in1 J1,J2,REPI,REPJ,REPGRAD,NREPCUT=',J1,J2,NREPI(J2),NREPJ(J2), &284: !        PRINT '(A,4I6,2G15.5)','in1 J1,J2,REPI,REPJ,REPGRAD,NREPCUT=',J1,J2,NREPI(J2),NREPJ(J2), &
293: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2),NREPCUT(J2)285: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2),NREPCUT(J2)
301: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2),NREPCUT(J2)293: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2),NREPCUT(J2)
302: !294: !
303: ! Gradient contributions for image J1295: ! Gradient contributions for image J1
304: !296: !
305:          GGG(NI2+1:NI2+3)=GGG(NI2+1:NI2+3)+REPGRAD(1:3)297:          GGG(NI2+1:NI2+3)=GGG(NI2+1:NI2+3)+REPGRAD(1:3)
306:          GGG(NJ2+1:NJ2+3)=GGG(NJ2+1:NJ2+3)-REPGRAD(1:3)298:          GGG(NJ2+1:NJ2+3)=GGG(NJ2+1:NJ2+3)-REPGRAD(1:3)
307:       ENDIF299:       ENDIF
308:    ENDDO300:    ENDDO
309: ENDDO301: ENDDO
310: IF (JMAX.GT.0) THEN302: IF (JMAX.GT.0) THEN
311:    WRITE(*,'(A,I6,A,I6,A,2I6,A,G20.10,A,3G20.10)') ' congrad> Highest repulsive  contribution for any image in image ',IMAX, &  303:    WRITE(*,'(A,I6,A,I6,A,2I6)') ' congrad> Highest repulsive  contribution for any image in image ',IMAX, &
312:  &  ' pair index ', &304:  &  ' pair index ', &
313:  &                                JMAX,' atoms ',NREPI(JMAX),NREPJ(JMAX),' value=',EMAX,' d,d^2,cutoff=',DISTMAX,DIST2MAX,CUTMAX 305:  &                                JMAX,' atoms ',NREPI(JMAX),NREPJ(JMAX)
314: ENDIF306: ENDIF
315: 307: 
316: !308: !
317: ! Spring energy. Set EEE(J1) and ESPRING dividing up the pairwise309: ! Spring energy. Set EEE(J1) and ESPRING dividing up the pairwise
318: ! energy terms between images except for the end points.310: ! energy terms between images except for the end points.
319: !311: !
320: ESPRING=0.0D0312: ESPRING=0.0D0
321: IF (KINT.NE.0.0D0) THEN313: IF (KINT.NE.0.0D0) THEN
322:    DO J1=1,INTIMAGE+1 ! sum over edges from J1 to J1+1314:    DO J1=1,INTIMAGE+1 ! sum over edges from J1 to J1+1
323:       NI1=(3*NATOMS)*(J1-1)315:       NI1=(3*NATOMS)*(J1-1)
538: INTEGER JJMAX(INTIMAGE+2)530: INTEGER JJMAX(INTIMAGE+2)
539: DOUBLE PRECISION  EEMAX(INTIMAGE+2)531: DOUBLE PRECISION  EEMAX(INTIMAGE+2)
540: DOUBLE PRECISION R1AX,R1AY,R1AZ,R2AX,R2AY,R2AZ,R1BX,R1BY,R1BZ,R2BX,R2BY,R2BZ,D2,D1532: DOUBLE PRECISION R1AX,R1AY,R1AZ,R2AX,R2AY,R2AZ,R1BX,R1BY,R1BZ,R2BX,R2BY,R2BZ,D2,D1
541: DOUBLE PRECISION G1(3),G2(3),DINT,G1INT(3),G2INT(3)533: DOUBLE PRECISION G1(3),G2(3),DINT,G1INT(3),G2INT(3)
542: DOUBLE PRECISION DUMMY, REPGRAD(3), INTCONST, D12, DSQ2, DSQ1, DSQI534: DOUBLE PRECISION DUMMY, REPGRAD(3), INTCONST, D12, DSQ2, DSQ1, DSQI
543: DOUBLE PRECISION CONE(INTIMAGE+2), REPE(INTIMAGE+2),MAXINT,MININT,REPEINT(INTIMAGE+2),CONEINT(INTIMAGE+2),RMSIMAGE(INTIMAGE+2)535: DOUBLE PRECISION CONE(INTIMAGE+2), REPE(INTIMAGE+2),MAXINT,MININT,REPEINT(INTIMAGE+2),CONEINT(INTIMAGE+2),RMSIMAGE(INTIMAGE+2)
544: LOGICAL NOINT, LPRINT536: LOGICAL NOINT, LPRINT
545: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2)), GGG((3*NATOMS)*(INTIMAGE+2)), EEE(INTIMAGE+2)537: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2)), GGG((3*NATOMS)*(INTIMAGE+2)), EEE(INTIMAGE+2)
546: LOGICAL IMGFREEZE(INTIMAGE), PRINTE538: LOGICAL IMGFREEZE(INTIMAGE), PRINTE
547: DOUBLE PRECISION DPLUS, SPGRAD(3), CCLOCAL, DCUT, r1amr1bdr2amr2b,r1apr2bmr2amr1bsq539: DOUBLE PRECISION DPLUS, SPGRAD(3), CCLOCAL, DCUT, r1amr1bdr2amr2b,r1apr2bmr2amr1bsq
548: DOUBLE PRECISION CONDMAX, CONREFMAX, CONCUTMAX 
549: 540: 
550: PRINTE=.FALSE.541: PRINTE=.FALSE.
551: 111 CONTINUE542: 111 CONTINUE
552: 543: 
553: EEE(1:INTIMAGE+2)=0.0D0544: EEE(1:INTIMAGE+2)=0.0D0
554: CONE(1:INTIMAGE+2)=0.0D0545: CONE(1:INTIMAGE+2)=0.0D0
555: REPE(1:INTIMAGE+2)=0.0D0546: REPE(1:INTIMAGE+2)=0.0D0
556: NCONINT(1:INTIMAGE+2)=0547: NCONINT(1:INTIMAGE+2)=0
557: NREPINT(1:INTIMAGE+2)=0548: NREPINT(1:INTIMAGE+2)=0
558: REPEINT(1:INTIMAGE+2)=0.0D0549: REPEINT(1:INTIMAGE+2)=0.0D0
650: !     IF (LPRINT) WRITE(*, '(A,I6,5G15.5)') &641: !     IF (LPRINT) WRITE(*, '(A,I6,5G15.5)') &
651: ! &       'J1,D2,D1,DINT,MIN diff,CONCUT=',J1,D2,D1,DINT,ABS(D2-CONDISTREFLOCAL(J2)),CCLOCAL642: ! &       'J1,D2,D1,DINT,MIN diff,CONCUT=',J1,D2,D1,DINT,ABS(D2-CONDISTREFLOCAL(J2)),CCLOCAL
652:       IF ((ABS(D2-CONDISTREFLOCAL(J2)).GT.CCLOCAL).AND.(J1.LT.INTIMAGE+2)) THEN 643:       IF ((ABS(D2-CONDISTREFLOCAL(J2)).GT.CCLOCAL).AND.(J1.LT.INTIMAGE+2)) THEN 
653:          DUMMY=D2-CONDISTREFLOCAL(J2)  644:          DUMMY=D2-CONDISTREFLOCAL(J2)  
654:          REPGRAD(1:3)=2*INTCONSTRAINTDEL*((DUMMY/CCLOCAL)**2-1.0D0)*DUMMY*G2(1:3)645:          REPGRAD(1:3)=2*INTCONSTRAINTDEL*((DUMMY/CCLOCAL)**2-1.0D0)*DUMMY*G2(1:3)
655:          DUMMY=INTCONSTRAINTDEL*(DUMMY**2-CCLOCAL**2)**2/(2.0D0*CCLOCAL**2)646:          DUMMY=INTCONSTRAINTDEL*(DUMMY**2-CCLOCAL**2)**2/(2.0D0*CCLOCAL**2)
656:          IF (DUMMY.GT.EMAX) THEN647:          IF (DUMMY.GT.EMAX) THEN
657:             IMAX=J1648:             IMAX=J1
658:             JMAX=J2649:             JMAX=J2
659:             EMAX=DUMMY650:             EMAX=DUMMY
660:             CONDMAX=D2 
661:             CONREFMAX=CONDISTREFLOCAL(J2) 
662:             CONCUTMAX=CCLOCAL 
663:          ENDIF651:          ENDIF
664:          IF (DUMMY.GT.EMAXNOFF) THEN652:          IF (DUMMY.GT.EMAXNOFF) THEN
665:             IF (.NOT.CONOFFTRIED(J2)) THEN653:             IF (.NOT.CONOFFTRIED(J2)) THEN
666:                IMAXNOFF=J1654:                IMAXNOFF=J1
667:                JMAXNOFF=J2655:                JMAXNOFF=J2
668:                EMAXNOFF=DUMMY656:                EMAXNOFF=DUMMY
669:             ENDIF657:             ENDIF
670:          ENDIF658:          ENDIF
671:          IF (DUMMY.GT.EEMAX(J1)) THEN659:          IF (DUMMY.GT.EEMAX(J1)) THEN
672:             JJMAX(J1)=J2660:             JJMAX(J1)=J2
731: ! &            DUMMY, GGG(NI1+1:NI1+3),GGG(NJ1+1:NJ1+3)   719: ! &            DUMMY, GGG(NI1+1:NI1+3),GGG(NJ1+1:NJ1+3)   
732: !        IF (PRINTE.AND.(DUMMY.GT.1.0D-4)) THEN720: !        IF (PRINTE.AND.(DUMMY.GT.1.0D-4)) THEN
733: !           WRITE(*, '(A,2I6,2L5,G20.10)') 'CONI,CONJ,INTFROZEN(CONI),INTFROZEN(CONJ),DUMMY=', &721: !           WRITE(*, '(A,2I6,2L5,G20.10)') 'CONI,CONJ,INTFROZEN(CONI),INTFROZEN(CONJ),DUMMY=', &
734: ! &                                       CONI(J2),CONJ(J2),INTFROZEN(CONI(J2)),INTFROZEN(CONJ(J2)),DUMMY722: ! &                                       CONI(J2),CONJ(J2),INTFROZEN(CONI(J2)),INTFROZEN(CONJ(J2)),DUMMY
735: !        ENDIF723: !        ENDIF
736:          ECON=ECON+DUMMY724:          ECON=ECON+DUMMY
737:          IF (DUMMY.GT.EMAX) THEN725:          IF (DUMMY.GT.EMAX) THEN
738:             IMAX=J1726:             IMAX=J1
739:             JMAX=J2727:             JMAX=J2
740:             EMAX=DUMMY728:             EMAX=DUMMY
741:             CONDMAX=DINT 
742:             CONREFMAX=CONDISTREFLOCAL(J2) 
743:             CONCUTMAX=CCLOCAL 
744:          ENDIF729:          ENDIF
745:          IF (DUMMY.GT.EMAXNOFF) THEN730:          IF (DUMMY.GT.EMAXNOFF) THEN
746:             IF (.NOT.CONOFFTRIED(J2)) THEN731:             IF (.NOT.CONOFFTRIED(J2)) THEN
747:                IMAXNOFF=J1732:                IMAXNOFF=J1
748:                JMAXNOFF=J2733:                JMAXNOFF=J2
749:                EMAXNOFF=DUMMY734:                EMAXNOFF=DUMMY
750:             ENDIF735:             ENDIF
751:          ENDIF736:          ENDIF
752:          IF (DUMMY.GT.EEMAX(J1-1)) THEN737:          IF (DUMMY.GT.EEMAX(J1-1)) THEN
753:             JJMAX(J1-1)=J2738:             JJMAX(J1-1)=J2
777: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2)762: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2)
778:          GGG(NI2+1:NI2+3)=GGG(NI2+1:NI2+3)+REPGRAD(1:3)763:          GGG(NI2+1:NI2+3)=GGG(NI2+1:NI2+3)+REPGRAD(1:3)
779:          GGG(NJ2+1:NJ2+3)=GGG(NJ2+1:NJ2+3)-REPGRAD(1:3)764:          GGG(NJ2+1:NJ2+3)=GGG(NJ2+1:NJ2+3)-REPGRAD(1:3)
780: !        WRITE(*, '(A,3I7,9G13.5)') 'J1,NI2,NJ2,INTMINFAC,INTCONSTRAINTDEL,DUMMY,GGG=',J1,NI2,NJ2,INTMINFAC,INTCONSTRAINTDEL, & 765: !        WRITE(*, '(A,3I7,9G13.5)') 'J1,NI2,NJ2,INTMINFAC,INTCONSTRAINTDEL,DUMMY,GGG=',J1,NI2,NJ2,INTMINFAC,INTCONSTRAINTDEL, & 
781: ! &            DUMMY, GGG(NI2+1:NI2+3),GGG(NJ2+1:NJ2+3)   766: ! &            DUMMY, GGG(NI2+1:NI2+3),GGG(NJ2+1:NJ2+3)   
782: !        WRITE(*,'(A,2G20.10)') 'in intmin block EEE(J1),EEE(J1-1)=',EEE(J1),EEE(J1-1)767: !        WRITE(*,'(A,2G20.10)') 'in intmin block EEE(J1),EEE(J1-1)=',EEE(J1),EEE(J1-1)
783:       ENDIF768:       ENDIF
784:    ENDDO769:    ENDDO
785: ENDDO770: ENDDO
786: IF (JMAX.GT.0) THEN771: IF (JMAX.GT.0) THEN
787:    WRITE(*,'(A,I6,A,I6,A,2I6,A,3G20.10)') ' congrad2> Highest constraint contribution for any image in image ',IMAX, &772:    WRITE(*,'(A,I6,A,I6,A,2I6)') ' congrad2> Highest constraint contribution for any image in image ',IMAX, &
788:  & ' constraint ',JMAX, &773:  & ' constraint ',JMAX, &
789:  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),' d,ref,cutoff=',CONDMAX,CONREFMAX,CONCUTMAX774:  &                              ' atoms ',CONI(JMAX),CONJ(JMAX)
790:  
791: ENDIF775: ENDIF
792: IF (JMAXNOFF.GT.0) THEN776: IF (JMAXNOFF.GT.0) THEN
793:    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad2> Highest constraint contribution never turned off for any image in image ',IMAXNOFF, &777:    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad2> Highest constraint contribution never turned off for any image in image ',IMAXNOFF, &
794:  & ' constraint ',JMAXNOFF, &778:  & ' constraint ',JMAXNOFF, &
795:  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),' off=',NCONOFF779:  &                              ' atoms ',CONI(JMAX),CONJ(JMAX),' off=',NCONOFF
796: ELSEIF (JMAX.GT.0) THEN780: ELSEIF (JMAX.GT.0) THEN
797:    JMAXNOFF=JMAX781:    JMAXNOFF=JMAX
798:    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad2> *** Using highest constraint contribution for any image, setting NCONOFF to 0'782:    WRITE(*,'(A,I6,A,I6,A,2I8,A,I8)') ' congrad2> *** Using highest constraint contribution for any image, setting NCONOFF to 0'
799:    CONOFFTRIED(1:INTCONMAX)=.FALSE.783:    CONOFFTRIED(1:INTCONMAX)=.FALSE.
800:    NCONOFF=0784:    NCONOFF=0


r33485/intlbfgs.f90 2017-11-16 22:30:20.221901672 +0000 r33484/intlbfgs.f90 2017-11-16 22:30:21.089913068 +0000
440:          ENDDO440:          ENDDO
441:          CYCLE atlist441:          CYCLE atlist
442:       ENDDO plist442:       ENDDO plist
443:       NCONCOMMON(J1)=NCONCOMMON(J1)+1443:       NCONCOMMON(J1)=NCONCOMMON(J1)+1
444: !     WRITE(*,'(4(A,I6))') 'atom ',PATOMTEST,' is a common constraint for permgroup ',J1,' total=',NCONCOMMON(J1),' lists are:'  444: !     WRITE(*,'(4(A,I6))') 'atom ',PATOMTEST,' is a common constraint for permgroup ',J1,' total=',NCONCOMMON(J1),' lists are:'  
445:       DO J5=1,NPERMSIZE(J1)445:       DO J5=1,NPERMSIZE(J1)
446:          J6=PERMGROUP(NDUMMY+J5-1)446:          J6=PERMGROUP(NDUMMY+J5-1)
447: !        WRITE(*,'(A,I6,A,20I6)') 'atom ',J6,' constraints: ',CONLIST(J6,1:NCONATOM(J6))447: !        WRITE(*,'(A,I6,A,20I6)') 'atom ',J6,' constraints: ',CONLIST(J6,1:NCONATOM(J6))
448:       ENDDO448:       ENDDO
449:    ENDDO atlist449:    ENDDO atlist
450: !  WRITE(*,'(A,I6,A,I6,A,I6)') 'group ',J1,' size ',NPERMSIZE(J1),' common constraints ',NCONCOMMON(J1)450:    WRITE(*,'(A,I6,A,I6,A,I6)') 'group ',J1,' size ',NPERMSIZE(J1),' common constraints ',NCONCOMMON(J1)
451:    NDUMMY=NDUMMY+NPERMSIZE(J1)451:    NDUMMY=NDUMMY+NPERMSIZE(J1)
452:    IF (NCONCOMMON(J1).GT.NCOMMONMAX) NCOMMONMAX=NCONCOMMON(J1)452:    IF (NCONCOMMON(J1).GT.NCOMMONMAX) NCOMMONMAX=NCONCOMMON(J1)
453: ENDDO453: ENDDO
454: ALLOCATE(COMMONCON(NPERMGROUP,NCOMMONMAX))454: ALLOCATE(COMMONCON(NPERMGROUP,NCOMMONMAX))
455: 455: 
456: WRITE(*,'(A,I6)') 'largest number of common constraint atoms for any group is: ',NCOMMONMAX456: WRITE(*,'(A,I6)') 'largest number of common constraint atoms for any group is: ',NCOMMONMAX
457: 457: 
458: !458: !
459: ! Now repeat and save the common constrained atoms in COMMONCON(J1,1:NCOMMONCON(J1)) for permutational group J1.459: ! Now repeat and save the common constrained atoms in COMMONCON(J1,1:NCOMMONCON(J1)) for permutational group J1.
460: !460: !
461: 461: 
462: NDUMMY=1462: NDUMMY=1
463: DO J1=1,NPERMGROUP463: DO J1=1,NPERMGROUP
464:    NCONCOMMON(J1)=0464:    NCONCOMMON(J1)=0
465:    PATOM1=PERMGROUP(NDUMMY)465:    PATOM1=PERMGROUP(NDUMMY)
466: !  WRITE(*,'(20I6)') CONLIST(PATOM1,1:NCONATOM(PATOM1))466:    WRITE(*,'(20I6)') CONLIST(PATOM1,1:NCONATOM(PATOM1))
467: !467: !
468: ! For each entry in constraint list of first permutable atom, check if it exists for the second, 468: ! For each entry in constraint list of first permutable atom, check if it exists for the second, 
469: ! if so, check the third, etc.469: ! if so, check the third, etc.
470: !470: !
471:    atlist2: DO J4=1,NCONATOM(PATOM1)471:    atlist2: DO J4=1,NCONATOM(PATOM1)
472:       PATOMTEST=CONLIST(PATOM1,J4)472:       PATOMTEST=CONLIST(PATOM1,J4)
473:       plist2: DO J5=2,NPERMSIZE(J1)473:       plist2: DO J5=2,NPERMSIZE(J1)
474:          PATOM2=PERMGROUP(NDUMMY+J5-1)474:          PATOM2=PERMGROUP(NDUMMY+J5-1)
475:          DO J6=1,NCONATOM(PATOM2)475:          DO J6=1,NCONATOM(PATOM2)
476:             IF (CONLIST(PATOM2,J6).EQ.PATOMTEST) CYCLE plist2476:             IF (CONLIST(PATOM2,J6).EQ.PATOMTEST) CYCLE plist2
773:             STOP773:             STOP
774:          ENDIF774:          ENDIF
775:          NCONOFF=NCONOFF+1775:          NCONOFF=NCONOFF+1
776:          CONOFFLIST(NCONOFF)=JMAXCON776:          CONOFFLIST(NCONOFF)=JMAXCON
777:          CONACTIVE(JMAXCON)=.FALSE.777:          CONACTIVE(JMAXCON)=.FALSE.
778:          CONOFFTRIED(JMAXCON)=.TRUE.778:          CONOFFTRIED(JMAXCON)=.TRUE.
779:       ENDIF779:       ENDIF
780: 780: 
781:       NLASTGOODE=NITERDONE781:       NLASTGOODE=NITERDONE
782:       LASTGOODE=ETOTAL782:       LASTGOODE=ETOTAL
783: !     IF (NITERDONE.GT.650) STOP  !!!! DEBUG DJW783: !     IF (NITERDONE.GT.3123) STOP  !!!! DEBUG DJW
784: !     STOP784: !     STOP
785:    ENDIF785:    ENDIF
786: ENDIF786: ENDIF
787: 787: 
788: !     IF (NITERDONE.GT.200) STOP  !!!! DEBUG DJW788: 
789: ! STOP789: ! STOP
790: 790: 
791: !791: !
792: !  Check permutational alignments. Maintain a list of the permutable groups where all792: !  Check permutational alignments. Maintain a list of the permutable groups where all
793: !  members are active. See if we have any new complete groups. MUST update NDUMMY793: !  members are active. See if we have any new complete groups. MUST update NDUMMY
794: !  counter to step through permutable atom list.794: !  counter to step through permutable atom list.
795: !795: !
796: IF (QCILPERMDIST.AND.(MOD(NITERDONE-1,QCIPDINT).EQ.0)) THEN796: IF (QCILPERMDIST.AND.(MOD(NITERDONE-1,QCIPDINT).EQ.0)) THEN
797: 797: 
798:    PRINT *,'DOING CHIRALCHECK NOW'798:    PRINT *,'DOING CHIRALCHECK NOW'
1710: ! Compute the new step and gradient change1710: ! Compute the new step and gradient change
1711: !1711: !
1712:    NPT=POINT*D1712:    NPT=POINT*D
1713:    SEARCHSTEP(POINT,:) = STP*SEARCHSTEP(POINT,:)1713:    SEARCHSTEP(POINT,:) = STP*SEARCHSTEP(POINT,:)
1714:    GDIF(POINT,:)=G-GTMP1714:    GDIF(POINT,:)=G-GTMP
1715:    1715:    
1716:    POINT=POINT+1; IF (POINT==INTMUPDATE) POINT=01716:    POINT=POINT+1; IF (POINT==INTMUPDATE) POINT=0
1717: 1717: 
1718:    IF (DUMPINTXYZ.AND.MOD(NITERDONE,DUMPINTXYZFREQ)==0) CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,NCONOFF)1718:    IF (DUMPINTXYZ.AND.MOD(NITERDONE,DUMPINTXYZFREQ)==0) CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
1719:    IF (DUMPINTEOS.AND.MOD(NITERDONE,DUMPINTEOSFREQ)==0) CALL WRITEPROFILE(NITERDONE,EEE,INTIMAGE)1719:    IF (DUMPINTEOS.AND.MOD(NITERDONE,DUMPINTEOSFREQ)==0) CALL WRITEPROFILE(NITERDONE,EEE,INTIMAGE)
1720:    IF (NITERDONE.GT.0) CALL INTRWG2(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,NCONOFF) !!! DEBUG DJW1720: !  IF (NITERDONE.GT.2921) CALL INTRWG2(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,NCONOFF) !!! DEBUG DJW
1721: 1721: 
1722:    NITERDONE=NITERDONE+11722:    NITERDONE=NITERDONE+1
1723:    NITERUSE=NITERUSE+11723:    NITERUSE=NITERUSE+1
1724: 1724: 
1725:    IF (NITERDONE.GT.NSTEPSMAX) EXIT1725:    IF (NITERDONE.GT.NSTEPSMAX) EXIT
1726:    IF (NACTIVE.EQ.NATOMS) THEN1726:    IF (NACTIVE.EQ.NATOMS) THEN
1727:       IF (.NOT.SWITCHED) THEN1727:       IF (.NOT.SWITCHED) THEN
1728:          CALL MYCPU_TIME(FTIME,.FALSE.)1728:          CALL MYCPU_TIME(FTIME,.FALSE.)
1729:          WRITE(*,'(A,I6,A,F12.6,A,I6,A,F10.1)') ' intlbfgs> switch on true potential at step ',NITERDONE, &1729:          WRITE(*,'(A,I6,A,F12.6,A,I6,A,F10.1)') ' intlbfgs> switch on true potential at step ',NITERDONE, &
1730:   &                                     ' fraction=',INTCONFRAC,' images=',INTIMAGE,' time=',FTIME-STIME1730:   &                                     ' fraction=',INTCONFRAC,' images=',INTIMAGE,' time=',FTIME-STIME
2816: !2816: !
2817: ! Check whether we've added all atoms in the amino acid corresponding to the new atom. If not, go back to the top2817: ! Check whether we've added all atoms in the amino acid corresponding to the new atom. If not, go back to the top
2818: ! and choose the next candidate.2818: ! and choose the next candidate.
2819: !2819: !
2820:       IF (QCIADDACIDT.AND.(.NOT.DOBACK)) THEN2820:       IF (QCIADDACIDT.AND.(.NOT.DOBACK)) THEN
2821:          DO J1=1,NATOMS2821:          DO J1=1,NATOMS
2822:             IF ((ATOMSTORES(J1).EQ.ACID).AND.(.NOT.(ATOMACTIVE(J1)))) GOTO 5422822:             IF ((ATOMSTORES(J1).EQ.ACID).AND.(.NOT.(ATOMACTIVE(J1)))) GOTO 542
2823:          ENDDO2823:          ENDDO
2824:          WRITE(*,'(A,I6,A)') 'doaddatom> All atoms of residue ',ACID,' are active'2824:          WRITE(*,'(A,I6,A)') 'doaddatom> All atoms of residue ',ACID,' are active'
2825:       ENDIF2825:       ENDIF
2826:       IF (DOBACKALL.AND.(AABACK(NEWATOM))) THEN2826:       IF (DOBACKALL) THEN
2827:          DO J1=1,NATOMS2827:          DO J1=1,NATOMS
2828:             IF ((ATOMSTORES(J1).EQ.ACID).AND.(.NOT.(ATOMACTIVE(J1))).AND.AABACK(J1)) GOTO 5422828:             IF ((ATOMSTORES(J1).EQ.ACID).AND.(.NOT.(ATOMACTIVE(J1))).AND.AABACK(J1)) GOTO 542
2829:          ENDDO2829:          ENDDO
2830:          WRITE(*,'(A,I6,A)') 'doaddatom> All backbone atoms of residue ',ACID,' are active'2830:          WRITE(*,'(A,I6,A)') 'doaddatom> All backbone atoms of residue ',ACID,' are active'
2831:       ENDIF2831:       ENDIF
2832: 2832: 
2833:       IF (QCIRADSHIFTT) THEN2833:       IF (QCIRADSHIFTT) THEN
2834:          WRITE(*,'(A,F15.5)') ' intlbfgs> Applying radial shift for unconstrained atoms of ',QCIRADSHIFT2834:          WRITE(*,'(A,F15.5)') ' intlbfgs> Applying radial shift for unconstrained atoms of ',QCIRADSHIFT
2835:          WRITE(*,'(20I6)') CONLIST(1:NCONFORNEWATOM)2835:          WRITE(*,'(20I6)') CONLIST(1:NCONFORNEWATOM)
2836:          DO J1=2,INTIMAGE+12836:          DO J1=2,INTIMAGE+1


r33485/keywords.f 2017-11-16 22:30:20.521905612 +0000 r33484/keywords.f 2017-11-16 22:30:21.369916745 +0000
2185: ! input to OPTIM). The alignment is done via rigid-body movements and by considering2185: ! input to OPTIM). The alignment is done via rigid-body movements and by considering
2186: ! permutational isomerizations. The aligned `finish' coordinates are dumped and the2186: ! permutational isomerizations. The aligned `finish' coordinates are dumped and the
2187: ! minimized distance is printed.2187: ! minimized distance is printed.
2188: ! 2188: ! 
2189:          ELSE IF (WORD.EQ.'CLOSESTALIGNMENT') THEN2189:          ELSE IF (WORD.EQ.'CLOSESTALIGNMENT') THEN
2190:             CLOSESTALIGNMENT=.TRUE.2190:             CLOSESTALIGNMENT=.TRUE.
2191:             WRITE(*,*) 'Putting structures into closest alignment, then stopping'2191:             WRITE(*,*) 'Putting structures into closest alignment, then stopping'
2192: ! 2192: ! 
2193: ! Check for internal minimum in constraint terms for INTCONSTRAINT2193: ! Check for internal minimum in constraint terms for INTCONSTRAINT
2194: ! 2194: ! 
2195:          ELSE IF ((WORD.EQ.'CONCONINT').OR.(WORD.EQ.'QCICONINT')) THEN 
2196:             CHECKCONINT=.TRUE. 
2197:             WRITE(*,'(A,G20.10)') ' keyword> Turning on terms for internal minima in constraints' 
2198: !  
2199: ! Scaling factor for internal minima in con or rep 
2200: !  
2201:          ELSE IF ((WORD.EQ.'CONINT').OR.(WORD.EQ.'QCIINT')) THEN2195:          ELSE IF ((WORD.EQ.'CONINT').OR.(WORD.EQ.'QCIINT')) THEN
 2196:             CHECKCONINT=.TRUE.
2202:             IF (NITEMS.GT.1) CALL READF(INTMINFAC)2197:             IF (NITEMS.GT.1) CALL READF(INTMINFAC)
2203:             WRITE(*,'(A,G20.10)') ' keyword> Internal minima terms will be scaled by a factor of ',INTMINFAC2198:             WRITE(*,'(A,G20.10)') ' keyword> Internal minima terms will be scaled by a factor of ',INTMINFAC
2204: !2199: !
2205: ! Maximum active atoms in QCI procedure.2200: ! Maximum active atoms in QCI procedure.
2206: !2201: !
2207:       ELSE IF (WORD.EQ.'QCIRESTART') THEN2202:       ELSE IF (WORD.EQ.'QCIRESTART') THEN
2208:          QCIRESTART=.TRUE.2203:          QCIRESTART=.TRUE.
2209: !2204: !
2210: ! Maximum active atoms in QCI procedure.2205: ! Maximum active atoms in QCI procedure.
2211: !2206: !


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0