hdiff output

r30578/intlbfgs.f90 2016-06-09 16:30:11.480639716 +0100 r30577/intlbfgs.f90 2016-06-09 16:30:12.056647416 +0100
1100:          IF (CHECKCONINT) THEN1100:          IF (CHECKCONINT) THEN
1101:             CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)1101:             CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)
1102:          ELSE1102:          ELSE
1103:             CALL CONGRAD(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)1103:             CALL CONGRAD(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)
1104:          ENDIF1104:          ENDIF
1105:       ENDIF1105:       ENDIF
1106:       LASTGOODE=ETOTAL1106:       LASTGOODE=ETOTAL
1107:    ENDIF1107:    ENDIF
1108:    EXITSTATUS=01108:    EXITSTATUS=0
1109:    INTDGUESS=DIAG(1) ! should be ok for subsequent runs of the same system DJW1109:    INTDGUESS=DIAG(1) ! should be ok for subsequent runs of the same system DJW
1110:    IF ((.NOT.SWITCHED).AND.(RMS<=INTRMSTOL*NACTIVE/NATOMS).AND.NITERDONE>1) EXITSTATUS=1 1110:    IF ((.NOT.SWITCHED).AND.(RMS<=INTRMSTOL).AND.NITERDONE>1) EXITSTATUS=1 
1111:    IF (SWITCHED.AND.(RMS<=CQMAX).AND.NITERDONE>1) EXITSTATUS=1 1111:    IF (SWITCHED.AND.(RMS<=CQMAX).AND.NITERDONE>1) EXITSTATUS=1 
1112:    IF (NITERDONE==NSTEPSMAX) EXITSTATUS=21112:    IF (NITERDONE==NSTEPSMAX) EXITSTATUS=2
1113: !  IF (SQRT(ADMAX).GT.IMSEPMAX) EXITSTATUS=0 ! prevent converge if largest atomic displacement is too big1113: !  IF (SQRT(ADMAX).GT.IMSEPMAX) EXITSTATUS=0 ! prevent converge if largest atomic displacement is too big
1114:    IF ((.NOT.SWITCHED).AND.(MOD(NITERDONE,INTRELSTEPS).EQ.0)) EXITSTATUS=1 ! Add an atom every INTRELSTEPS !!! DJW1114:    IF ((.NOT.SWITCHED).AND.(MOD(NITERDONE,INTRELSTEPS).EQ.0)) EXITSTATUS=1 ! Add an atom every INTRELSTEPS !!! DJW
1115: 1115: 
1116:    IF (EXITSTATUS > 0) THEN  1116:    IF (EXITSTATUS > 0) THEN  
1117:       IF ((.NOT.SWITCHED).AND.(EXITSTATUS.EQ.1)) THEN ! add active atom or restart with true potential on1117:       IF ((.NOT.SWITCHED).AND.(EXITSTATUS.EQ.1)) THEN ! add active atom or restart with true potential on
1118:          IF (ETOTAL/INTIMAGE.GT.MAXCONE*NACTIVE/NATOMS) GOTO 7771118:          IF (ETOTAL/INTIMAGE.GT.MAXCONE) GOTO 777
1119:          IF (NACTIVE.LT.NATOMS) THEN 1119:          IF (NACTIVE.LT.NATOMS) THEN 
1120:             ADDATOM=.TRUE.1120:             ADDATOM=.TRUE.
1121:             GOTO 7771121:             GOTO 777
1122:          ENDIF1122:          ENDIF
1123:          CALL MYCPU_TIME(FTIME,.FALSE.)1123:          CALL MYCPU_TIME(FTIME,.FALSE.)
1124:          WRITE(MYUNIT,'(A,I6,A,F12.6,A,I6,A,F10.1)') ' intlbfgs> switch on true potential at step ',NITERDONE, &1124:          WRITE(MYUNIT,'(A,I6,A,F12.6,A,I6,A,F10.1)') ' intlbfgs> switch on true potential at step ',NITERDONE, &
1125:   &                                     ' fraction=',INTCONFRAC,' images=',INTIMAGE,' time=',FTIME-STIME1125:   &                                     ' fraction=',INTCONFRAC,' images=',INTIMAGE,' time=',FTIME-STIME
1126:          IF (DEBUG) CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ)1126:          IF (DEBUG) CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ)
1127:          IF (DEBUG) CALL WRITEPROFILE(NITERDONE,EEE,INTIMAGE,MYUNIT)1127:          IF (DEBUG) CALL WRITEPROFILE(NITERDONE,EEE,INTIMAGE,MYUNIT)
1128:          WRITE(MYUNIT,'(A,I6,A,F15.6)') ' intlbfgs> Allowing ',INTCONSTEPS,' further optimization steps'1128:          WRITE(MYUNIT,'(A,I6,A,F15.6)') ' intlbfgs> Allowing ',INTCONSTEPS,' further optimization steps'
2131:       ENDIF2131:       ENDIF
2132: 2132: 
2133: END SUBROUTINE DOADDATOM2133: END SUBROUTINE DOADDATOM
2134: 2134: 
2135: SUBROUTINE CHECKPERC(LXYZ,LINTCONSTRAINTTOL,NQCIFREEZE,NCPFIT)2135: SUBROUTINE CHECKPERC(LXYZ,LINTCONSTRAINTTOL,NQCIFREEZE,NCPFIT)
2136: USE COMMONS, ONLY : ATOMACTIVE, NCONSTRAINT, INTFROZEN, CONI, CONJ, CONDISTREF, INTCONMAX, INTCONSTRAINTTOL, &2136: USE COMMONS, ONLY : ATOMACTIVE, NCONSTRAINT, INTFROZEN, CONI, CONJ, CONDISTREF, INTCONMAX, INTCONSTRAINTTOL, &
2137:   &             INTCONSEP, NCONGEOM, CONGEOM, CONIFIX, CONJFIX, CONDISTREFFIX, MYUNIT, INTCONCUT, &2137:   &             INTCONSEP, NCONGEOM, CONGEOM, CONIFIX, CONJFIX, CONDISTREFFIX, MYUNIT, INTCONCUT, &
2138:   &             NCONSTRAINTFIX, PERIODIC, TWOD, RIGID, CONDATT, CONCUT, CONCUTFIX, NATOMS, DEBUG, BOXLX, BOXLY, BOXLZ, &2138:   &             NCONSTRAINTFIX, PERIODIC, TWOD, RIGID, CONDATT, CONCUT, CONCUTFIX, NATOMS, DEBUG, BOXLX, BOXLY, BOXLZ, &
2139:   &             BONDS, QCIAMBERT2139:   &             BONDS, QCIAMBERT
2140: IMPLICIT NONE2140: IMPLICIT NONE
2141: INTEGER NDIST1(NATOMS), NCYCLE, DMIN1, DMAX1, NUNCON1, J1, J2, J3, NQCIFREEZE, J4, NCPFIT, LUNIT, GETUNIT2141: INTEGER NDIST1(NATOMS), NCYCLE, DMIN1, DMAX1, NUNCON1, J1, J2, J3, NQCIFREEZE, J4, NCPFIT
2142: DOUBLE PRECISION LINTCONSTRAINTTOL, MAXCONDIST, MINCONDIST, DS, DF, LXYZ((3*NATOMS)*2)2142: DOUBLE PRECISION LINTCONSTRAINTTOL, MAXCONDIST, MINCONDIST, DS, DF, LXYZ((3*NATOMS)*2)
2143: DOUBLE PRECISION DSMIN, DSMAX, DSMEAN, D, DIST2, RMAT(3,3), DUMMY2143: DOUBLE PRECISION DSMIN, DSMAX, DSMEAN, D, DIST2, RMAT(3,3)
2144: LOGICAL CHANGED, LDEBUG, CONFILET2144: LOGICAL CHANGED, LDEBUG
2145: LOGICAL :: CALLED=.FALSE.2145: LOGICAL :: CALLED=.FALSE.
2146: SAVE CALLED2146: SAVE CALLED
2147: !for QCIAMBER2147: !for QCIAMBER
2148: INTEGER NBOND2148: INTEGER NBOND
2149: 2149: 
2150: LINTCONSTRAINTTOL=INTCONSTRAINTTOL2150: LINTCONSTRAINTTOL=INTCONSTRAINTTOL
2151: 2151: 
2152: IF (.NOT.ALLOCATED(ATOMACTIVE)) ALLOCATE(ATOMACTIVE(NATOMS))2152: IF (.NOT.ALLOCATED(ATOMACTIVE)) ALLOCATE(ATOMACTIVE(NATOMS))
2153: !2153: !
2154: ! Fixed constraints based on congeom file entries2154: ! Fixed constraints based on congeom file entries
2197: !2197: !
2198:       DO J2=2,NCONGEOM2198:       DO J2=2,NCONGEOM
2199:          LDEBUG=.FALSE.2199:          LDEBUG=.FALSE.
2200:          CALL MINPERMDIST(CONGEOM(1,1:3*NATOMS),CONGEOM(J2,1:3*NATOMS),NATOMS,LDEBUG, &2200:          CALL MINPERMDIST(CONGEOM(1,1:3*NATOMS),CONGEOM(J2,1:3*NATOMS),NATOMS,LDEBUG, &
2201:   &                       BOXLX,BOXLY,BOXLZ,PERIODIC,TWOD,D,DIST2,RIGID,RMAT)2201:   &                       BOXLX,BOXLY,BOXLZ,PERIODIC,TWOD,D,DIST2,RIGID,RMAT)
2202:       ENDDO2202:       ENDDO
2203:    ENDIF2203:    ENDIF
2204:    ALLOCATE(CONIFIX(INTCONMAX),CONJFIX(INTCONMAX),CONCUTFIX(INTCONMAX),CONDISTREFFIX(INTCONMAX))2204:    ALLOCATE(CONIFIX(INTCONMAX),CONJFIX(INTCONMAX),CONCUTFIX(INTCONMAX),CONDISTREFFIX(INTCONMAX))
2205: ENDIF2205: ENDIF
2206: 2206: 
2207: INQUIRE(FILE='constraintfile',EXIST=CONFILET) 
2208:  
2209: 51   NCONSTRAINT=0 2207: 51   NCONSTRAINT=0 
2210: MAXCONDIST=-1.0D02208: MAXCONDIST=-1.0D0
2211: MINCONDIST=1.0D1002209: MINCONDIST=1.0D100
2212: IF (QCIAMBERT) THEN             !kr366> assume we use two endpoints and topology for amber constraints2210: IF (QCIAMBERT) THEN             !kr366> assume we use two endpoints and topology for amber constraints
2213:    CALL TOPOLOGY_READER(NBOND)  !get number of bonds and bonds from topology2211:    CALL TOPOLOGY_READER(NBOND)  !get number of bonds and bonds from topology
2214:    DO J2=1,NBOND                !loop through all bonds and add them to constraint list2212:    DO J2=1,NBOND                !loop through all bonds and add them to constraint list
2215:       IF (INTFROZEN(BONDS(J2,1)).AND.INTFROZEN(BONDS(J2,2))) THEN2213:       IF (INTFROZEN(BONDS(J2,1)).AND.INTFROZEN(BONDS(J2,2))) THEN
2216:          INTFROZEN(BONDS(J2,1))=.FALSE.2214:          INTFROZEN(BONDS(J2,1))=.FALSE.
2217:          INTFROZEN(BONDS(J2,2))=.FALSE.2215:          INTFROZEN(BONDS(J2,2))=.FALSE.
2218:          WRITE(MYUNIT,'(A,2I6)') 'qciamber> Unfreeze bonded atoms: ', BONDS(J2,1),BONDS(J2,2)2216:          WRITE(MYUNIT,'(A,2I6)') 'qciamber> Unfreeze bonded atoms: ', BONDS(J2,1),BONDS(J2,2)
2228:       NCONSTRAINT=NCONSTRAINT+12226:       NCONSTRAINT=NCONSTRAINT+1
2229:       WRITE(MYUNIT,'(A,2I6,A,I6)') 'intlbfgs> Adding constraint for atoms ',BONDS(J2,1),BONDS(J2,2), &2227:       WRITE(MYUNIT,'(A,2I6,A,I6)') 'intlbfgs> Adding constraint for atoms ',BONDS(J2,1),BONDS(J2,2), &
2230:   &                     '  total=',NCONSTRAINT2228:   &                     '  total=',NCONSTRAINT
2231:       CONI(NCONSTRAINT)=BONDS(J2,1)2229:       CONI(NCONSTRAINT)=BONDS(J2,1)
2232:       CONJ(NCONSTRAINT)=BONDS(J2,2)2230:       CONJ(NCONSTRAINT)=BONDS(J2,2)
2233:       CONDISTREF(NCONSTRAINT)=(DF+DS)/2.0D02231:       CONDISTREF(NCONSTRAINT)=(DF+DS)/2.0D0
2234:       CONCUT(NCONSTRAINT)=ABS(DF-DS)/2.0D02232:       CONCUT(NCONSTRAINT)=ABS(DF-DS)/2.0D0
2235:       IF (CONDISTREF(NCONSTRAINT).GT.MAXCONDIST) MAXCONDIST=CONDISTREF(NCONSTRAINT)2233:       IF (CONDISTREF(NCONSTRAINT).GT.MAXCONDIST) MAXCONDIST=CONDISTREF(NCONSTRAINT)
2236:       IF (CONDISTREF(NCONSTRAINT).LT.MINCONDIST) MINCONDIST=CONDISTREF(NCONSTRAINT)2234:       IF (CONDISTREF(NCONSTRAINT).LT.MINCONDIST) MINCONDIST=CONDISTREF(NCONSTRAINT)
2237:    ENDDO2235:    ENDDO
2238:    IF (DEBUG) WRITE(MYUNIT,'(A,I10,2(A,G20.10))') ' intlbfgs> Total distance constraints=',NCONSTRAINT, &2236:    IF (DEBUG) WRITE(MYUNIT,'(A,I6,2(A,F15.5))') ' intlbfgs> Total distance constraints=',NCONSTRAINT, &
2239:   &                                     ' shortest=',MINCONDIST,' longest=',MAXCONDIST      2237:   &                                     ' shortest=',MINCONDIST,' longest=',MAXCONDIST      
2240:   2238:   
2241: ELSE IF (CONFILET) THEN  
2242:     LUNIT=GETUNIT() 
2243:     OPEN(LUNIT,FILE='constraintfile',STATUS='OLD') 
2244: ! 
2245: !  Add constraint for this distance to the list. 
2246: ! 
2247:     DO  
2248:        READ(LUNIT,*,END=531)  J2, J3, DUMMY 
2249: ! 
2250: ! Forbid constraints corresponding to atoms distant in sequence. Set INTCONSEP to number of sites to  
2251: ! turn this off 
2252: ! 
2253:        IF (J3-J2.GT.INTCONSEP) CYCLE  
2254:        IF (INTFROZEN(J2).AND.INTFROZEN(J3)) CYCLE ! no constraints between intfrozen atoms 
2255:        NCONSTRAINT=NCONSTRAINT+1 
2256:        WRITE(MYUNIT,'(A,2I6,A,I6)') 'intlbfgs> Adding constraint for atoms ',J2,J3,'  total=',NCONSTRAINT 
2257:        DS=SQRT((LXYZ(3*(J2-1)+1)-LXYZ(3*(J3-1)+1))**2 & 
2258:   &           +(LXYZ(3*(J2-1)+2)-LXYZ(3*(J3-1)+2))**2 & 
2259:   &           +(LXYZ(3*(J2-1)+3)-LXYZ(3*(J3-1)+3))**2)  
2260:        DF=SQRT((LXYZ(3*NATOMS+3*(J2-1)+1)-LXYZ(3*NATOMS+3*(J3-1)+1))**2 & 
2261:   &           +(LXYZ(3*NATOMS+3*(J2-1)+2)-LXYZ(3*NATOMS+3*(J3-1)+2))**2 & 
2262:   &           +(LXYZ(3*NATOMS+3*(J2-1)+3)-LXYZ(3*NATOMS+3*(J3-1)+3))**2)  
2263:        IF (NCONSTRAINT.GT.INTCONMAX) CALL CONDOUBLE 
2264:        CONI(NCONSTRAINT)=J2 
2265:        CONJ(NCONSTRAINT)=J3 
2266:        CONDISTREF(NCONSTRAINT)=(DF+DS)/2.0D0 
2267:        CONCUT(NCONSTRAINT)=ABS(DF-DS)/2.0D0 
2268:        IF (CONDISTREF(NCONSTRAINT).GT.MAXCONDIST) MAXCONDIST=CONDISTREF(NCONSTRAINT) 
2269:        IF (CONDISTREF(NCONSTRAINT).LT.MINCONDIST) MINCONDIST=CONDISTREF(NCONSTRAINT) 
2270:        WRITE(MYUNIT,'(A,2I6,A,3F12.2,A,F12.4,A,I8)') ' intlbfgs> constrain distance for atoms ',CONI(NCONSTRAINT), & 
2271:   &                 CONJ(NCONSTRAINT),' values are ',DS,DF,DUMMY,' fraction=',2*ABS(DS-DF)/(DS+DF), & 
2272:   &                ' # constraints=',NCONSTRAINT 
2273:     ENDDO 
2274: 531 CONTINUE 
2275:     WRITE(MYUNIT,'(A,I6,2(A,F15.5))') ' intlbfgs> Total distance constraints=',NCONSTRAINT, & 
2276:   &                               ' shortest=',MINCONDIST,' longest=',MAXCONDIST 
2277:  
2278:  
2279: ELSE IF (NCONGEOM.LT.2) THEN 2239: ELSE IF (NCONGEOM.LT.2) THEN 
2280:    DO J2=1,NATOMS2240:    DO J2=1,NATOMS
2281:       DO J3=J2+1,NATOMS2241:       DO J3=J2+1,NATOMS
2282: 2242: 
2283:          IF (J3-J2.GT.INTCONSEP) CYCLE ! forbid constraints corresponding to atoms distant in sequence2243:          IF (J3-J2.GT.INTCONSEP) CYCLE ! forbid constraints corresponding to atoms distant in sequence
2284:          IF (INTFROZEN(J2).AND.INTFROZEN(J3)) CYCLE ! no constraints between intfrozen atoms2244:          IF (INTFROZEN(J2).AND.INTFROZEN(J3)) CYCLE ! no constraints between intfrozen atoms
2285:          DS=SQRT((LXYZ(3*(J2-1)+1)-LXYZ(3*(J3-1)+1))**2 &2245:          DS=SQRT((LXYZ(3*(J2-1)+1)-LXYZ(3*(J3-1)+1))**2 &
2286:   &             +(LXYZ(3*(J2-1)+2)-LXYZ(3*(J3-1)+2))**2 &2246:   &             +(LXYZ(3*(J2-1)+2)-LXYZ(3*(J3-1)+2))**2 &
2287:   &             +(LXYZ(3*(J2-1)+3)-LXYZ(3*(J3-1)+3))**2) 2247:   &             +(LXYZ(3*(J2-1)+3)-LXYZ(3*(J3-1)+3))**2) 
2288:          IF (DS.GT.INTCONCUT) CYCLE ! don't allow constraints if either endpoint separation is too large DJW2248:          IF (DS.GT.INTCONCUT) CYCLE ! don't allow constraints if either endpoint separation is too large DJW


r30578/make_conpot.f90 2016-06-09 16:30:11.716642874 +0100 r30577/make_conpot.f90 2016-06-09 16:30:12.284650458 +0100
223:    ENDIF223:    ENDIF
224:    IF (INTFROZEN(J1)) THEN224:    IF (INTFROZEN(J1)) THEN
225:       DO J2=J1+INTREPSEP+1,NATOMS225:       DO J2=J1+INTREPSEP+1,NATOMS
226:          IF (INTFROZEN(J2)) ADDREP(J2)=.FALSE.226:          IF (INTFROZEN(J2)) ADDREP(J2)=.FALSE.
227:       ENDDO227:       ENDDO
228:    ENDIF228:    ENDIF
229: !229: !
230: ! Do we allow repulsions between constrained atoms?230: ! Do we allow repulsions between constrained atoms?
231: ! If commented below then yes.231: ! If commented below then yes.
232: !232: !
233:    addloop: DO J2=NDUMMY,NCONSTRAINT233: !  addloop: DO J2=NDUMMY,NCONSTRAINT
234:       IF (CONI(J2).EQ.J1) THEN234: !     IF (CONI(J2).EQ.J1) THEN
235:          ADDREP(CONJ(J2))=.FALSE.235: !        ADDREP(CONJ(J2))=.FALSE.
236:       ELSE236: !     ELSE
237:          NDUMMY=J2 ! for next atom237: !        NDUMMY=J2 ! for next atom
238:          EXIT addloop238: !        EXIT addloop
239:       ENDIF239: !     ENDIF
240:    ENDDO addloop240: !  ENDDO addloop
241:    rep2: DO J2=J1+INTREPSEP+1,NATOMS241:    rep2: DO J2=J1+INTREPSEP+1,NATOMS
242: 242: 
243:       IF (.NOT.ADDREP(J2)) CYCLE243:       IF (.NOT.ADDREP(J2)) CYCLE
244: 244: 
245:       DMIN=1.0D100245:       DMIN=1.0D100
246:       DO J3=1,NCPFIT246:       DO J3=1,NCPFIT
247:          DF=SQRT((MINCOORDS(J3,3*(J1-1)+1)-MINCOORDS(J3,3*(J2-1)+1))**2+ &247:          DF=SQRT((MINCOORDS(J3,3*(J1-1)+1)-MINCOORDS(J3,3*(J2-1)+1))**2+ &
248:   &              (MINCOORDS(J3,3*(J1-1)+2)-MINCOORDS(J3,3*(J2-1)+2))**2+ &248:   &              (MINCOORDS(J3,3*(J1-1)+2)-MINCOORDS(J3,3*(J2-1)+2))**2+ &
249:   &              (MINCOORDS(J3,3*(J1-1)+3)-MINCOORDS(J3,3*(J2-1)+3))**2)249:   &              (MINCOORDS(J3,3*(J1-1)+3)-MINCOORDS(J3,3*(J2-1)+3))**2)
250:          IF (DF.LT.DMIN) DMIN=DF250:          IF (DF.LT.DMIN) DMIN=DF


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0