hdiff output

r33481/intlbfgs.f90 2017-11-16 09:30:14.994648015 +0000 r33480/intlbfgs.f90 2017-11-16 09:30:15.238651262 +0000
 42: INTEGER D, U 42: INTEGER D, U
 43: DOUBLE PRECISION DIST, DIST2, RMAT(3,3), SUMEEE, SUMEEE2, SIGMAEEE, NEIGHBOUR_COORDS(12), CENTRE_COORDS(3) 43: DOUBLE PRECISION DIST, DIST2, RMAT(3,3), SUMEEE, SUMEEE2, SIGMAEEE, NEIGHBOUR_COORDS(12), CENTRE_COORDS(3)
 44: DOUBLE PRECISION DMAX, DF, DMIN, LOCALSTEP, ADMAX, DUMMYX, DUMMYY, DUMMYZ 44: DOUBLE PRECISION DMAX, DF, DMIN, LOCALSTEP, ADMAX, DUMMYX, DUMMYY, DUMMYZ
 45: INTEGER NDECREASE, NFAIL, NMAXINT, NMININT, JMAX, JMIN, INTIMAGESAVE, NOFF, J1, J2, NQDONE, JA1, JA2, NMOVE, NMOVES, NMOVEF 45: INTEGER NDECREASE, NFAIL, NMAXINT, NMININT, JMAX, JMIN, INTIMAGESAVE, NOFF, J1, J2, NQDONE, JA1, JA2, NMOVE, NMOVES, NMOVEF
 46: INTEGER PERM(NATOMS), PERMS(NATOMS), PERMF(NATOMS), STARTGROUP(NPERMGROUP), ENDGROUP(NPERMGROUP) 46: INTEGER PERM(NATOMS), PERMS(NATOMS), PERMF(NATOMS), STARTGROUP(NPERMGROUP), ENDGROUP(NPERMGROUP)
 47: LOGICAL KNOWE, KNOWG, KNOWH, ADDATOM, ADDREP(NATOMS), LDEBUG, REMOVEIMAGE, PERMUTABLE(NATOMS), IDENTITY, IDONE, TURNOFF 47: LOGICAL KNOWE, KNOWG, KNOWH, ADDATOM, ADDREP(NATOMS), LDEBUG, REMOVEIMAGE, PERMUTABLE(NATOMS), IDENTITY, IDONE, TURNOFF
 48: COMMON /KNOWN/ KNOWE, KNOWG, KNOWH 48: COMMON /KNOWN/ KNOWE, KNOWG, KNOWH
 49:  49: 
 50: DOUBLE PRECISION DUMMY, DPRAND, DUMMY2, ADUMMY 50: DOUBLE PRECISION DUMMY, DPRAND, DUMMY2, ADUMMY
 51: DOUBLE PRECISION BOXLX,BOXLY,BOXLZ,DISTANCE,RMATBEST(3,3),DISTANCES,DISTANCEF 51: DOUBLE PRECISION BOXLX,BOXLY,BOXLZ,DISTANCE,RMATBEST(3,3),DISTANCES,DISTANCEF
 52: INTEGER POINT,NPT,J3,J4,NIMAGEFREEZE,NACTIVE,NBEST,NEWATOM,NBEST2,J5,J6 52: INTEGER POINT,NPT,J3,J4,NIMAGEFREEZE,NACTIVE,NBEST,NEWATOM,NBEST2,J5
 53: INTEGER TURNONORDER(NATOMS),NBACKTRACK,NQCIFREEZE 53: INTEGER TURNONORDER(NATOMS),NBACKTRACK,NQCIFREEZE
 54: INTEGER NDUMMY, NLASTGOODE, NSTEPSMAX, INGROUP(NATOMS), ACID, NLASTCHANGE 54: INTEGER NDUMMY, NLASTGOODE, NSTEPSMAX, INGROUP(NATOMS), ACID, NLASTCHANGE
 55: LOGICAL CHIRALSR, CHIRALSRP  55: LOGICAL CHIRALSR, CHIRALSRP 
 56: INTEGER NTRIES(NATOMS), NITERDONE, EXITSTATUS, DLIST(NATOMS) 56: INTEGER NTRIES(NATOMS), NITERDONE, EXITSTATUS, DLIST(NATOMS)
 57: DOUBLE PRECISION :: DDOT,STPMIN, ETOTALTMP, RMSTMP, USEFRAC, STIME, FTIME, & 57: DOUBLE PRECISION :: DDOT,STPMIN, ETOTALTMP, RMSTMP, USEFRAC, STIME, FTIME, &
 58:   &                 ETOTAL, LASTGOODE, RMS, STEPTOT, LINTCONSTRAINTTOL, LXYZ(2*3*NATOMS), & 58:   &                 ETOTAL, LASTGOODE, RMS, STEPTOT, LINTCONSTRAINTTOL, LXYZ(2*3*NATOMS), &
 59:   &                 BESTWORST, WORST, COORDSA(3*NATOMS), COORDSB(3*NATOMS), COORDSC(3*NATOMS) 59:   &                 BESTWORST, WORST, COORDSA(3*NATOMS), COORDSB(3*NATOMS), COORDSC(3*NATOMS)
 60: DOUBLE PRECISION, DIMENSION(INTMUPDATE)     :: RHO1,ALPHA 60: DOUBLE PRECISION, DIMENSION(INTMUPDATE)     :: RHO1,ALPHA
 61: DOUBLE PRECISION :: EOLD, DMOVED(NATOMS) 61: DOUBLE PRECISION :: EOLD, DMOVED(NATOMS)
 62: LOGICAL SWITCHED, AABACK(NATOMS), BACKDONE 62: LOGICAL SWITCHED, AABACK(NATOMS), BACKDONE
 71: ! 71: !
 72: DOUBLE PRECISION, ALLOCATABLE :: TRUEEE(:), & 72: DOUBLE PRECISION, ALLOCATABLE :: TRUEEE(:), &
 73:   &              EEETMP(:), MYGTMP(:), EEE(:), STEPIMAGE(:), & 73:   &              EEETMP(:), MYGTMP(:), EEE(:), STEPIMAGE(:), &
 74:   &              GTMP(:), DIAG(:), STP(:), SEARCHSTEP(:,:), GDIF(:,:), GLAST(:), XSAVE(:) 74:   &              GTMP(:), DIAG(:), STP(:), SEARCHSTEP(:,:), GDIF(:,:), GLAST(:), XSAVE(:)
 75: DOUBLE PRECISION, ALLOCATABLE :: VPLUS(:), VMINUS(:)    75: DOUBLE PRECISION, ALLOCATABLE :: VPLUS(:), VMINUS(:)   
 76: DOUBLE PRECISION  EPLUS, EMINUS, DIFF    76: DOUBLE PRECISION  EPLUS, EMINUS, DIFF   
 77: DOUBLE PRECISION, ALLOCATABLE, TARGET :: XYZ(:), GGG(:), DPTMP(:), D2TMP(:,:) 77: DOUBLE PRECISION, ALLOCATABLE, TARGET :: XYZ(:), GGG(:), DPTMP(:), D2TMP(:,:)
 78: ! saved interpolation 78: ! saved interpolation
 79: INTEGER BESTINTIMAGE, NSTEPS, NITERUSE 79: INTEGER BESTINTIMAGE, NSTEPS, NITERUSE
 80: LOGICAL, ALLOCATABLE :: CHECKG(:), IMGFREEZE(:) 80: LOGICAL, ALLOCATABLE :: CHECKG(:), IMGFREEZE(:)
 81: INTEGER, ALLOCATABLE :: NCONATOM(:), CONLIST(:,:), COMMONCON(:,:) 
 82: LOGICAL READIMAGET, GROUPACTIVE(NPERMGROUP) 81: LOGICAL READIMAGET, GROUPACTIVE(NPERMGROUP)
 83: INTEGER NCONCOMMON(NPERMGROUP) 82: INTEGER LUNIT, GETUNIT
 84: INTEGER LUNIT, GETUNIT, NCOMMONCON 
 85: CHARACTER(LEN=2) SDUMMY 83: CHARACTER(LEN=2) SDUMMY
 86: INTEGER JMAXEEE,JMAXRMS,num_chiral_centres,atom_number,MAXCONSTRAINTS,PATOM1,PATOM2,PATOMTEST,NCOMMONMAX  84: INTEGER JMAXEEE,JMAXRMS,num_chiral_centres,atom_number
 87: DOUBLE PRECISION MAXEEE,MAXRMS,MINEEE,SAVELOCALPERMCUT 85: DOUBLE PRECISION MAXEEE,MAXRMS,MINEEE,SAVELOCALPERMCUT
 88:  86: 
 89: WHOLEDNEB=.FALSE. 87: WHOLEDNEB=.FALSE.
 90: READIMAGET=.FALSE. 88: READIMAGET=.FALSE.
 91: REMOVEIMAGE=.FALSE. 89: REMOVEIMAGE=.FALSE.
 92: ECON=0.0D0; EREP=0.0D0; ESPRING=0.0D0 90: ECON=0.0D0; EREP=0.0D0; ESPRING=0.0D0
 93:  91: 
 94: IF (QCIAMBERT) THEN ! copied from corresponding chirality subroutine 92: IF (QCIAMBERT) THEN ! copied from corresponding chirality subroutine
 95:  93: 
 96:    num_chiral_centres=SIZE(sr_atoms,1) 94:    num_chiral_centres=SIZE(sr_atoms,1)
385:   &           +(J2-1)*XYZ(3*NATOMS*(INTIMAGE+1)+3*(J1-1)+1:3*NATOMS*(INTIMAGE+1)+3*(J1-1)+3)/(INTIMAGE+1)383:   &           +(J2-1)*XYZ(3*NATOMS*(INTIMAGE+1)+3*(J1-1)+1:3*NATOMS*(INTIMAGE+1)+3*(J1-1)+3)/(INTIMAGE+1)
386:          ENDDO384:          ENDDO
387:          ATOMACTIVE(J1)=.TRUE.385:          ATOMACTIVE(J1)=.TRUE.
388:          NACTIVE=NACTIVE+1386:          NACTIVE=NACTIVE+1
389:          TURNONORDER(NACTIVE)=J1387:          TURNONORDER(NACTIVE)=J1
390:          NTRIES(J1)=1388:          NTRIES(J1)=1
391:       ENDIF389:       ENDIF
392:    ENDDO390:    ENDDO
393: ENDIF391: ENDIF
394: 392: 
395: ALLOCATE(NCONATOM(NATOMS)) 
396: NCONATOM(1:NATOMS)=0 
397: DO J1=1,NCONSTRAINT 
398:    NCONATOM(CONI(J1))=NCONATOM(CONI(J1))+1 
399:    NCONATOM(CONJ(J1))=NCONATOM(CONJ(J1))+1 
400: ENDDO 
401: MAXCONSTRAINTS=-1 
402: DO J1=1,NATOMS 
403:    IF (NCONATOM(J1).GT.MAXCONSTRAINTS) THEN 
404:       MAXCONSTRAINTS=NCONATOM(J1) 
405:       J2=J1 
406:    ENDIF 
407: ENDDO 
408: WRITE(*,'(A,I6,A,I6)') ' intlbfgs> maximum constraints ',MAXCONSTRAINTS,' for atom ',J2 
409: ALLOCATE(CONLIST(NATOMS,MAXCONSTRAINTS)) 
410: CONLIST(1:NATOMS,1:MAXCONSTRAINTS)=0 
411: NCONATOM(1:NATOMS)=0 
412: DO J1=1,NCONSTRAINT 
413:    NCONATOM(CONI(J1))=NCONATOM(CONI(J1))+1 
414:    NCONATOM(CONJ(J1))=NCONATOM(CONJ(J1))+1 
415:    CONLIST(CONI(J1),NCONATOM(CONI(J1)))=CONJ(J1) 
416:    CONLIST(CONJ(J1),NCONATOM(CONJ(J1)))=CONI(J1) 
417: ENDDO 
418:  
419: DO J1=1,NATOMS 
420:    WRITE(*,'(A,I6,A,20I6)') ' intlbfgs> atom ',J1,' constraints: ',CONLIST(J1,1:NCONATOM(J1)) 
421: ENDDO 
422:  
423: NDUMMY=1 
424: NCOMMONMAX=-1 
425: DO J1=1,NPERMGROUP 
426:    NCONCOMMON(J1)=0 
427:    PATOM1=PERMGROUP(NDUMMY) 
428: !  WRITE(*,'(A,I6,A,I6,A,I6)') 'group ',J1,' atom ',PATOM1,' constraints=',NCONATOM(PATOM1) 
429: !  WRITE(*,'(20I6)') CONLIST(PATOM1,1:NCONATOM(PATOM1)) 
430: ! 
431: ! For each entry in constraint list of first permutable atom, check if it exists for the second,  
432: ! if so, check the third, etc. 
433: ! 
434:    atlist: DO J4=1,NCONATOM(PATOM1) 
435:       PATOMTEST=CONLIST(PATOM1,J4) 
436:       plist: DO J5=2,NPERMSIZE(J1) 
437:          PATOM2=PERMGROUP(NDUMMY+J5-1) 
438:          DO J6=1,NCONATOM(PATOM2) 
439:             IF (CONLIST(PATOM2,J6).EQ.PATOMTEST) CYCLE plist 
440:          ENDDO 
441:          CYCLE atlist 
442:       ENDDO plist 
443:       NCONCOMMON(J1)=NCONCOMMON(J1)+1 
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) 
446:          J6=PERMGROUP(NDUMMY+J5-1) 
447: !        WRITE(*,'(A,I6,A,20I6)') 'atom ',J6,' constraints: ',CONLIST(J6,1:NCONATOM(J6)) 
448:       ENDDO 
449:    ENDDO atlist 
450:    WRITE(*,'(A,I6,A,I6,A,I6)') 'group ',J1,' size ',NPERMSIZE(J1),' common constraints ',NCONCOMMON(J1) 
451:    NDUMMY=NDUMMY+NPERMSIZE(J1) 
452:    IF (NCONCOMMON(J1).GT.NCOMMONMAX) NCOMMONMAX=NCONCOMMON(J1) 
453: ENDDO 
454: ALLOCATE(COMMONCON(NPERMGROUP,NCOMMONMAX)) 
455:  
456: WRITE(*,'(A,I6)') 'largest number of common constraint atoms for any group is: ',NCOMMONMAX 
457:  
458: ! 
459: ! Now repeat and save the common constrained atoms in COMMONCON(J1,1:NCOMMONCON(J1)) for permutational group J1. 
460: ! 
461:  
462: NDUMMY=1 
463: DO J1=1,NPERMGROUP 
464:    NCONCOMMON(J1)=0 
465:    PATOM1=PERMGROUP(NDUMMY) 
466:    WRITE(*,'(20I6)') CONLIST(PATOM1,1:NCONATOM(PATOM1)) 
467: ! 
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. 
470: ! 
471:    atlist2: DO J4=1,NCONATOM(PATOM1) 
472:       PATOMTEST=CONLIST(PATOM1,J4) 
473:       plist2: DO J5=2,NPERMSIZE(J1) 
474:          PATOM2=PERMGROUP(NDUMMY+J5-1) 
475:          DO J6=1,NCONATOM(PATOM2) 
476:             IF (CONLIST(PATOM2,J6).EQ.PATOMTEST) CYCLE plist2 
477:          ENDDO 
478:          CYCLE atlist2 
479:       ENDDO plist2 
480:       NCONCOMMON(J1)=NCONCOMMON(J1)+1 
481: !     WRITE(*,'(4(A,I6))') 'atom ',PATOMTEST,' is a common constraint for permgroup ',J1,' total=',NCONCOMMON(J1),' lists are:'   
482:       COMMONCON(J1,NCONCOMMON(J1))=PATOMTEST 
483:       DO J5=1,NPERMSIZE(J1) 
484:          J6=PERMGROUP(NDUMMY+J5-1) 
485: !        WRITE(*,'(A,I6,A,20I6)') 'atom ',J6,' constraints: ',CONLIST(J6,1:NCONATOM(J6)) 
486:       ENDDO 
487:    ENDDO atlist2 
488:    WRITE(*,'(A,I6,A,I6,A,20I6)') 'group ',J1,' size ',NPERMSIZE(J1),' common constraints to atoms ',COMMONCON(J1,1:NCONCOMMON(J1)) 
489:    NDUMMY=NDUMMY+NPERMSIZE(J1) 
490: ENDDO 
491:  
492: REPCON=-INTCONSTRAINTREP/INTCONSTRAINREPCUT**6 ! also needed for congrad.f90 potential393: REPCON=-INTCONSTRAINTREP/INTCONSTRAINREPCUT**6 ! also needed for congrad.f90 potential
493: IF (ALLOCATED(CONDISTREFLOCAL)) DEALLOCATE(CONDISTREFLOCAL)394: IF (ALLOCATED(CONDISTREFLOCAL)) DEALLOCATE(CONDISTREFLOCAL)
494: IF (ALLOCATED(CONCUTLOCAL)) DEALLOCATE(CONCUTLOCAL)395: IF (ALLOCATED(CONCUTLOCAL)) DEALLOCATE(CONCUTLOCAL)
495: ALLOCATE(CONDISTREFLOCAL(NCONSTRAINT))396: ALLOCATE(CONDISTREFLOCAL(NCONSTRAINT))
496: ALLOCATE(CONCUTLOCAL(NCONSTRAINT))397: ALLOCATE(CONCUTLOCAL(NCONSTRAINT))
497: IF (ALLOCATED(CONDISTREFLOCALON)) DEALLOCATE(CONDISTREFLOCALON)398: IF (ALLOCATED(CONDISTREFLOCALON)) DEALLOCATE(CONDISTREFLOCALON)
498: IF (ALLOCATED(CONDISTREFON)) DEALLOCATE(CONDISTREFON)399: IF (ALLOCATED(CONDISTREFON)) DEALLOCATE(CONDISTREFON)
499: IF (ALLOCATED(CONION)) DEALLOCATE(CONION)400: IF (ALLOCATED(CONION)) DEALLOCATE(CONION)
500: IF (ALLOCATED(CONJON)) DEALLOCATE(CONJON)401: IF (ALLOCATED(CONJON)) DEALLOCATE(CONJON)
501: ALLOCATE(CONDISTREFLOCALON(NCONSTRAINT),CONDISTREFON(NCONSTRAINT),CONION(NCONSTRAINT),CONJON(NCONSTRAINT))402: ALLOCATE(CONDISTREFLOCALON(NCONSTRAINT),CONDISTREFON(NCONSTRAINT),CONION(NCONSTRAINT),CONJON(NCONSTRAINT))
778:          CONOFFTRIED(JMAXCON)=.TRUE.679:          CONOFFTRIED(JMAXCON)=.TRUE.
779:       ENDIF680:       ENDIF
780: 681: 
781:       NLASTGOODE=NITERDONE682:       NLASTGOODE=NITERDONE
782:       LASTGOODE=ETOTAL683:       LASTGOODE=ETOTAL
783: !     IF (NITERDONE.GT.3123) STOP  !!!! DEBUG DJW684: !     IF (NITERDONE.GT.3123) STOP  !!!! DEBUG DJW
784: !     STOP685: !     STOP
785:    ENDIF686:    ENDIF
786: ENDIF687: ENDIF
787: 688: 
788:  
789: ! STOP 
790:  
791: !689: !
792: !  Check permutational alignments. Maintain a list of the permutable groups where all690: !  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 NDUMMY691: !  members are active. See if we have any new complete groups. MUST update NDUMMY
794: !  counter to step through permutable atom list.692: !  counter to step through permutable atom list.
795: !693: !
796: IF (QCILPERMDIST.AND.(MOD(NITERDONE-1,QCIPDINT).EQ.0)) THEN694: IF (QCILPERMDIST.AND.(MOD(NITERDONE-1,QCIPDINT).EQ.0)) THEN
797: 695: 
798:    PRINT *,'DOING CHIRALCHECK NOW'696:    PRINT *,'DOING CHIRALCHECK NOW'
799: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state before CHIRALCHECK index -4'697: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state before CHIRALCHECK index -4'
800: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-4,INTIMAGE,XYZ,TURNONORDER,NCONOFF)698: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-4,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
1773: WRITE(*,'(A,I8,A,G20.10)') 'intlbfgs> retaining ',INTIMAGE,' QCI images, highest energy=',BESTWORST1671: WRITE(*,'(A,I8,A,G20.10)') 'intlbfgs> retaining ',INTIMAGE,' QCI images, highest energy=',BESTWORST
1774: 1672: 
1775: CALL INTRWG(NACTIVE,0,INTIMAGE,XYZ,TURNONORDER,NCONOFF)1673: CALL INTRWG(NACTIVE,0,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
1776: CALL WRITEPROFILE(0,EEE,INTIMAGE)1674: CALL WRITEPROFILE(0,EEE,INTIMAGE)
1777: 1675: 
1778: DEALLOCATE(CONI,CONJ,CONDISTREF,REPI,REPJ,NREPI,NREPJ,REPCUT,NREPCUT,CONCUT,CONOFFLIST,CONOFFTRIED)1676: DEALLOCATE(CONI,CONJ,CONDISTREF,REPI,REPJ,NREPI,NREPJ,REPCUT,NREPCUT,CONCUT,CONOFFLIST,CONOFFTRIED)
1779: DEALLOCATE(TRUEEE, EEETMP, MYGTMP, GTMP, &1677: DEALLOCATE(TRUEEE, EEETMP, MYGTMP, GTMP, &
1780:   &      DIAG, STP, SEARCHSTEP, GDIF,GLAST, XSAVE, XYZ, GGG, CHECKG, IMGFREEZE, EEE, STEPIMAGE)1678:   &      DIAG, STP, SEARCHSTEP, GDIF,GLAST, XSAVE, XYZ, GGG, CHECKG, IMGFREEZE, EEE, STEPIMAGE)
1781: QCIIMAGE=INTIMAGE1679: QCIIMAGE=INTIMAGE
1782: INTIMAGE=INTIMAGESAVE1680: INTIMAGE=INTIMAGESAVE
1783: IF (ALLOCATED(CONLIST)) DEALLOCATE(CONLIST) 
1784: IF (ALLOCATED(NCONATOM)) DEALLOCATE(NCONATOM) 
1785: IF (ALLOCATED(COMMONCON)) DEALLOCATE(COMMONCON) 
1786: 1681: 
1787: END SUBROUTINE INTLBFGS1682: END SUBROUTINE INTLBFGS
1788: !1683: !
1789: ! Neighbour list for repulsions to reduce cost of constraint potential.1684: ! Neighbour list for repulsions to reduce cost of constraint potential.
1790: !1685: !
1791: SUBROUTINE CHECKREP(INTIMAGE,XYZ,NOPT,NNSTART,NSTART)1686: SUBROUTINE CHECKREP(INTIMAGE,XYZ,NOPT,NNSTART,NSTART)
1792: USE KEY,ONLY : NREPI, NREPJ, NREPCUT, NNREPULSIVE, NREPULSIVE, REPI, REPJ, REPCUT, CHECKREPCUTOFF, &1687: USE KEY,ONLY : NREPI, NREPJ, NREPCUT, NNREPULSIVE, NREPULSIVE, REPI, REPJ, REPCUT, CHECKREPCUTOFF, &
1793:   &                INTFROZEN, NNREPULSIVE, intconstraintrep1688:   &                INTFROZEN, NNREPULSIVE, intconstraintrep
1794: USE COMMONS, ONLY : DEBUG1689: USE COMMONS, ONLY : DEBUG
1795: USE PORFUNCS1690: USE PORFUNCS


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0