hdiff output

r33418/congrad.f90 2017-10-25 14:30:10.364385056 +0100 r33417/congrad.f90 2017-10-25 14:30:11.772403898 +0100
932:       DPLUS=0.0D0932:       DPLUS=0.0D0
933:       DO J2=1,NATOMS933:       DO J2=1,NATOMS
934:          IF ((.NOT.INTSPRINGACTIVET).OR.ATOMACTIVE(J2)) THEN 934:          IF ((.NOT.INTSPRINGACTIVET).OR.ATOMACTIVE(J2)) THEN 
935:             DPLUS=DPLUS+(XYZ(NI1+3*(J2-1)+1)-XYZ(NI2+3*(J2-1)+1))**2 &935:             DPLUS=DPLUS+(XYZ(NI1+3*(J2-1)+1)-XYZ(NI2+3*(J2-1)+1))**2 &
936:   &                    +(XYZ(NI1+3*(J2-1)+2)-XYZ(NI2+3*(J2-1)+2))**2 &936:   &                    +(XYZ(NI1+3*(J2-1)+2)-XYZ(NI2+3*(J2-1)+2))**2 &
937:   &                    +(XYZ(NI1+3*(J2-1)+3)-XYZ(NI2+3*(J2-1)+3))**2937:   &                    +(XYZ(NI1+3*(J2-1)+3)-XYZ(NI2+3*(J2-1)+3))**2
938:          ENDIF938:          ENDIF
939: !        WRITE(*,'(A,2I8,G20.10)') 'J1,J2,DPLUS: ',J1,J2,DPLUS939: !        WRITE(*,'(A,2I8,G20.10)') 'J1,J2,DPLUS: ',J1,J2,DPLUS
940:       ENDDO940:       ENDDO
941:       DPLUS=SQRT(DPLUS)941:       DPLUS=SQRT(DPLUS)
942: !     IF (DPLUS.GT.IMSEPMAX) THEN942:       IF (DPLUS.GT.IMSEPMAX) THEN
943:          DUMMY=KINT*0.5D0*(DPLUS-IMSEPMAX)**2943:          DUMMY=KINT*0.5D0*(DPLUS-IMSEPMAX)**2
944:          IF (DUMMY.GT.EMAX) THEN944:          IF (DUMMY.GT.EMAX) THEN
945:             IMAX=J1945:             IMAX=J1
946:             EMAX=DUMMY946:             EMAX=DUMMY
947:          ENDIF947:          ENDIF
948: !        DUMMY=KINT*0.5D0*DPLUS**2948: !        DUMMY=KINT*0.5D0*DPLUS**2
949:          ESPRING=ESPRING+DUMMY949:          ESPRING=ESPRING+DUMMY
950:          IF (DUMMY.GT.EEMAX(J1+1)) THEN950:          IF (DUMMY.GT.EEMAX(J1+1)) THEN
951:             EEMAX(J1+1)=DUMMY951:             EEMAX(J1+1)=DUMMY
952:          ENDIF952:          ENDIF
954: !        WRITE(*,'(A,4G20.10)') 'DPLUS,IMSEPMAX,DUMMY,ESPRING=',DPLUS,IMSEPMAX,DUMMY,ESPRING954: !        WRITE(*,'(A,4G20.10)') 'DPLUS,IMSEPMAX,DUMMY,ESPRING=',DPLUS,IMSEPMAX,DUMMY,ESPRING
955:          DUMMY=KINT*(DPLUS-IMSEPMAX)/DPLUS955:          DUMMY=KINT*(DPLUS-IMSEPMAX)/DPLUS
956: !        DUMMY=KINT956: !        DUMMY=KINT
957:          DO J2=1,NATOMS957:          DO J2=1,NATOMS
958:             IF ((.NOT.INTSPRINGACTIVET).OR.ATOMACTIVE(J2)) THEN 958:             IF ((.NOT.INTSPRINGACTIVET).OR.ATOMACTIVE(J2)) THEN 
959:                SPGRAD(1:3)=DUMMY*(XYZ(NI1+3*(J2-1)+1:NI1+3*(J2-1)+3)-XYZ(NI2+3*(J2-1)+1:NI2+3*(J2-1)+3))959:                SPGRAD(1:3)=DUMMY*(XYZ(NI1+3*(J2-1)+1:NI1+3*(J2-1)+3)-XYZ(NI2+3*(J2-1)+1:NI2+3*(J2-1)+3))
960:                GGG(NI1+3*(J2-1)+1:NI1+3*(J2-1)+3)=GGG(NI1+3*(J2-1)+1:NI1+3*(J2-1)+3)+SPGRAD(1:3)960:                GGG(NI1+3*(J2-1)+1:NI1+3*(J2-1)+3)=GGG(NI1+3*(J2-1)+1:NI1+3*(J2-1)+3)+SPGRAD(1:3)
961:                GGG(NI2+3*(J2-1)+1:NI2+3*(J2-1)+3)=GGG(NI2+3*(J2-1)+1:NI2+3*(J2-1)+3)-SPGRAD(1:3)961:                GGG(NI2+3*(J2-1)+1:NI2+3*(J2-1)+3)=GGG(NI2+3*(J2-1)+1:NI2+3*(J2-1)+3)-SPGRAD(1:3)
962:             ENDIF962:             ENDIF
963:          ENDDO963:          ENDDO
964: !     ENDIF964:       ENDIF
965:    ENDDO965:    ENDDO
966: ENDIF966: ENDIF
967: WRITE(*,'(A,I6,A,I6,A,2I6)') ' congrad> Highest spring  contribution for any image in image ',IMAX967: WRITE(*,'(A,I6,A,I6,A,2I6)') ' congrad> Highest spring  contribution for any image in image ',IMAX
968:          IF (PRINTE) THEN968:          IF (PRINTE) THEN
969:             WRITE(*, '(A,G20.10)') 'ESPRING=',ESPRING969:             WRITE(*, '(A,G20.10)') 'ESPRING=',ESPRING
970:          ENDIF970:          ENDIF
971: !971: !
972: ! Set gradients on frozen atoms to zero.972: ! Set gradients on frozen atoms to zero.
973: !973: !
974: IF (FREEZE) THEN974: IF (FREEZE) THEN


r33418/intlbfgs.f90 2017-10-25 14:30:10.592388082 +0100 r33417/intlbfgs.f90 2017-10-25 14:30:11.996406726 +0100
 23:      & INTCONSTRAINREPCUT, REPCON, INTCONSTRAINTREP, INTREPSEP, NREPI, NREPJ, & 23:      & INTCONSTRAINREPCUT, REPCON, INTCONSTRAINTREP, INTREPSEP, NREPI, NREPJ, &
 24:      & CONDISTREFLOCAL, INTCONFRAC, CONACTIVE, REPI, & 24:      & CONDISTREFLOCAL, INTCONFRAC, CONACTIVE, REPI, &
 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
 34: USE COMMONS, ONLY: NATOMS, DEBUG, PARAM1, PARAM2, PARAM3 34: USE COMMONS, ONLY: NATOMS, DEBUG, PARAM1, PARAM2, PARAM3
 35: USE MODCHARMM, ONLY : CHRMMT 35: USE MODCHARMM, ONLY : CHRMMT
 36: USE CHIRALITY 36: USE CHIRALITY
 37:  37: 
 38: IMPLICIT NONE  38: IMPLICIT NONE 
 39:  39: 
 40: DOUBLE PRECISION, INTENT(IN) :: QSTART(3*NATOMS), QFINISH(3*NATOMS)  ! The two end points 40: DOUBLE PRECISION, INTENT(IN) :: QSTART(3*NATOMS), QFINISH(3*NATOMS)  ! The two end points
 41: INTEGER D, U 41: INTEGER D, U
 42: DOUBLE PRECISION DIST, DIST2, RMAT(3,3), SUMEEE, SUMEEE2, SIGMAEEE, NEIGHBOUR_COORDS(12), CENTRE_COORDS(3) 42: DOUBLE PRECISION DIST, DIST2, RMAT(3,3), SUMEEE, SUMEEE2, SIGMAEEE, NEIGHBOUR_COORDS(12), CENTRE_COORDS(3)
 43: DOUBLE PRECISION DMAX, DF, DMIN, LOCALSTEP, ADMAX, DUMMYX, DUMMYY, DUMMYZ 43: DOUBLE PRECISION DMAX, DF, DMIN, LOCALSTEP, ADMAX, DUMMYX, DUMMYY, DUMMYZ
 51: INTEGER POINT,NPT,J3,J4,NIMAGEFREEZE,NACTIVE,NBEST,NEWATOM,NBEST2 51: INTEGER POINT,NPT,J3,J4,NIMAGEFREEZE,NACTIVE,NBEST,NEWATOM,NBEST2
 52: INTEGER TURNONORDER(NATOMS),NBACKTRACK,NQCIFREEZE, NBONDED(NATOMS), BONDEDLIST(NATOMS,6), NBOND 52: INTEGER TURNONORDER(NATOMS),NBACKTRACK,NQCIFREEZE, NBONDED(NATOMS), BONDEDLIST(NATOMS,6), NBOND
 53: INTEGER NDUMMY, NLASTGOODE, NSTEPSMAX, INGROUP(NATOMS), ACID 53: INTEGER NDUMMY, NLASTGOODE, NSTEPSMAX, INGROUP(NATOMS), ACID
 54: LOGICAL CHIRALSR, CHIRALSRP  54: LOGICAL CHIRALSR, CHIRALSRP 
 55: INTEGER NTRIES(NATOMS), NITERDONE, EXITSTATUS, DLIST(NATOMS) 55: INTEGER NTRIES(NATOMS), NITERDONE, EXITSTATUS, DLIST(NATOMS)
 56: DOUBLE PRECISION :: DDOT,STPMIN, ETOTALTMP, RMSTMP, USEFRAC, STIME, FTIME, & 56: DOUBLE PRECISION :: DDOT,STPMIN, ETOTALTMP, RMSTMP, USEFRAC, STIME, FTIME, &
 57:   &                 ETOTAL, LASTGOODE, RMS, STEPTOT, LINTCONSTRAINTTOL, LXYZ(2*3*NATOMS), & 57:   &                 ETOTAL, LASTGOODE, RMS, STEPTOT, LINTCONSTRAINTTOL, LXYZ(2*3*NATOMS), &
 58:   &                 BESTWORST, WORST, COORDSA(3*NATOMS), COORDSB(3*NATOMS), COORDSC(3*NATOMS) 58:   &                 BESTWORST, WORST, COORDSA(3*NATOMS), COORDSB(3*NATOMS), COORDSC(3*NATOMS)
 59: DOUBLE PRECISION, DIMENSION(MUPDATE)     :: RHO1,ALPHA 59: DOUBLE PRECISION, DIMENSION(MUPDATE)     :: RHO1,ALPHA
 60: DOUBLE PRECISION :: EOLD, DMOVED(NATOMS) 60: DOUBLE PRECISION :: EOLD, DMOVED(NATOMS)
 61: LOGICAL SWITCHED, AABACK(NATOMS), BACKDONE 61: LOGICAL SWITCHED
 62: DOUBLE PRECISION, POINTER :: X(:), G(:) 62: DOUBLE PRECISION, POINTER :: X(:), G(:)
 63: ! 63: !
 64: ! efk: for freezenodes 64: ! efk: for freezenodes
 65: ! 65: !
 66: DOUBLE PRECISION :: TESTG, TOTGNORM 66: DOUBLE PRECISION :: TESTG, TOTGNORM
 67: INTEGER :: IM 67: INTEGER :: IM
 68: ! 68: !
 69: ! Dimensions involving INTIMAGE 69: ! Dimensions involving INTIMAGE
 70: ! 70: !
 71: DOUBLE PRECISION, ALLOCATABLE :: TRUEEE(:), & 71: DOUBLE PRECISION, ALLOCATABLE :: TRUEEE(:), &
 77: LOGICAL, ALLOCATABLE :: CHECKG(:), IMGFREEZE(:) 77: LOGICAL, ALLOCATABLE :: CHECKG(:), IMGFREEZE(:)
 78: LOGICAL READIMAGET, GROUPACTIVE(NPERMGROUP), CHIRALACTIVE(NATOMS) 78: LOGICAL READIMAGET, GROUPACTIVE(NPERMGROUP), CHIRALACTIVE(NATOMS)
 79: INTEGER LUNIT, GETUNIT 79: INTEGER LUNIT, GETUNIT
 80: CHARACTER(LEN=2) SDUMMY 80: CHARACTER(LEN=2) SDUMMY
 81: INTEGER JMAXEEE,JMAXRMS 81: INTEGER JMAXEEE,JMAXRMS
 82: DOUBLE PRECISION MAXEEE,MAXRMS,MINEEE,SAVELOCALPERMCUT 82: DOUBLE PRECISION MAXEEE,MAXRMS,MINEEE,SAVELOCALPERMCUT
 83:  83: 
 84: WHOLEDNEB=.FALSE. 84: WHOLEDNEB=.FALSE.
 85: READIMAGET=.FALSE. 85: READIMAGET=.FALSE.
 86: REMOVEIMAGE=.FALSE. 86: REMOVEIMAGE=.FALSE.
 87:  
 88: AABACK(1:NATOMS)=.FALSE. 
 89: BACKDONE=.FALSE. 
 90: IF (DOBACK) THEN 
 91:    LUNIT=GETUNIT() 
 92:    OPEN(UNIT=LUNIT,FILE='aabk',STATUS='OLD') 
 93:    DO J1=1,NATOMS 
 94:       READ(LUNIT,*,END=861) NDUMMY 
 95:       AABACK(NDUMMY)=.TRUE. 
 96:    ENDDO 
 97: 861   CLOSE(LUNIT) 
 98:    WRITE(*,'(A)') 'intlbfgs> Backbone atoms from file aabk:' 
 99:    WRITE(*,'(20L5)') AABACK(1:NATOMS) 
100: ENDIF 
101:  
102: IF (QCIRESTART) READIMAGET=.TRUE. 87: IF (QCIRESTART) READIMAGET=.TRUE.
103: IF (READIMAGET) THEN 88: IF (READIMAGET) THEN
104:    LUNIT=GETUNIT() 89:    LUNIT=GETUNIT()
105:    OPEN(UNIT=LUNIT,FILE='int.xyz',STATUS='OLD') 90:    OPEN(UNIT=LUNIT,FILE='int.xyz',STATUS='OLD')
106:    INTIMAGE=0 91:    INTIMAGE=0
107: 653 CONTINUE 92: 653 CONTINUE
108:    READ(LUNIT,*,END=654) NDUMMY 93:    READ(LUNIT,*,END=654) NDUMMY
109:    READ(LUNIT,*)  94:    READ(LUNIT,*) 
110:    DO J1=1,NATOMS 95:    DO J1=1,NATOMS
111:       READ(LUNIT,*) SDUMMY, DUMMYX, DUMMYY, DUMMYZ 96:       READ(LUNIT,*) SDUMMY, DUMMYX, DUMMYY, DUMMYZ
873: !!!                    WRITE(*,'(A,I10,A,2I6)') 'doaddatom> repulsion ',NREPULSIVE,' between ',J1,J2858: !!!                    WRITE(*,'(A,I10,A,2I6)') 'doaddatom> repulsion ',NREPULSIVE,' between ',J1,J2
874: !!!859: !!!
875: !!! Use the minimum of the end point distances and INTCONSTRAINREPCUT for each contact.860: !!! Use the minimum of the end point distances and INTCONSTRAINREPCUT for each contact.
876: !!!861: !!!
877: !!                     REPCUT(NREPULSIVE)=MIN(DMIN-1.0D-3,INTCONSTRAINREPCUT)862: !!                     REPCUT(NREPULSIVE)=MIN(DMIN-1.0D-3,INTCONSTRAINREPCUT)
878: !!                  ENDDO myrep2863: !!                  ENDDO myrep2
879: !!               ENDDO864: !!               ENDDO
880: !!               WRITE(*,'(A,I6,A)') ' intlbfgs> Now it looks like there are ',NREPULSIVE,' possible repulsions before adding new atom'865: !!               WRITE(*,'(A,I6,A)') ' intlbfgs> Now it looks like there are ',NREPULSIVE,' possible repulsions before adding new atom'
881: !!!!!!!!!!!!!!!DEBUG DJW !!!!!!!!!!!866: !!!!!!!!!!!!!!!DEBUG DJW !!!!!!!!!!!
882: 867: 
883:       CALL DOADDATOM(NCONSTRAINT,NTRIES,NEWATOM,IMGFREEZE,INTIMAGE,XYZ,EEE,GGG,TURNONORDER,NITERDONE,NACTIVE,AABACK,BACKDONE)  868:       CALL DOADDATOM(NCONSTRAINT,NTRIES,NEWATOM,IMGFREEZE,INTIMAGE,XYZ,EEE,GGG,TURNONORDER,NITERDONE,NACTIVE)
884:       NLASTGOODE=NITERDONE869:       NLASTGOODE=NITERDONE
885:       LASTGOODE=ETOTAL870:       LASTGOODE=ETOTAL
886:    ENDIF871:    ENDIF
887:    GTMP(1:D)=0.0D0872:    GTMP(1:D)=0.0D0
888:    CALL MAKESTEP(NITERUSE,POINT,DIAG,INTIMAGE,SEARCHSTEP,G,GTMP,STP,GDIF,NPT,D,RHO1,ALPHA)873:    CALL MAKESTEP(NITERUSE,POINT,DIAG,INTIMAGE,SEARCHSTEP,G,GTMP,STP,GDIF,NPT,D,RHO1,ALPHA)
889: !874: !
890: ! If the number of images has changed since G was declared then G is not the same875: ! If the number of images has changed since G was declared then G is not the same
891: ! size as Gtmp and Dot_Product cannot be used.876: ! size as Gtmp and Dot_Product cannot be used.
892: !877: !
893: !  IF (Dot_Product(G,Gtmp)/SQRT( Dot_Product(G,G)*Dot_Product(Gtmp,Gtmp) ) > 0.0D0) THEN878: !  IF (Dot_Product(G,Gtmp)/SQRT( Dot_Product(G,G)*Dot_Product(Gtmp,Gtmp) ) > 0.0D0) THEN
1749: DO I=2,INTIMAGE+11734: DO I=2,INTIMAGE+1
1750:    WRITE(UNIT=LUNIT,FMT='(2G24.13)') EEE(I)1735:    WRITE(UNIT=LUNIT,FMT='(2G24.13)') EEE(I)
1751: ENDDO1736: ENDDO
1752: WRITE(UNIT=LUNIT,FMT='(2G24.13)') EEE(INTIMAGE+2)1737: WRITE(UNIT=LUNIT,FMT='(2G24.13)') EEE(INTIMAGE+2)
1753: 1738: 
1754: CLOSE(LUNIT)1739: CLOSE(LUNIT)
1755: WRITE(*,'(A)') ' writeprofile> Interpolated energy profile was saved to file "'//trim(filename)//'"'1740: WRITE(*,'(A)') ' writeprofile> Interpolated energy profile was saved to file "'//trim(filename)//'"'
1756: 1741: 
1757: END SUBROUTINE WRITEPROFILE1742: END SUBROUTINE WRITEPROFILE
1758: 1743: 
1759: SUBROUTINE DOADDATOM(NCONSTRAINT,NTRIES,NEWATOM,IMGFREEZE,INTIMAGE,XYZ,EEE,GGG,TURNONORDER,NITERDONE,NACTIVE,AABACK,BACKDONE)1744: SUBROUTINE DOADDATOM(NCONSTRAINT,NTRIES,NEWATOM,IMGFREEZE,INTIMAGE,XYZ,EEE,GGG,TURNONORDER,NITERDONE,NACTIVE)
1760: USE KEY, ONLY : CONACTIVE, CONI, CONJ, ATOMACTIVE, CONDISTREF, REPI, REPJ, REPCUT, INTREPSEP,  &1745: USE KEY, ONLY : CONACTIVE, CONI, CONJ, ATOMACTIVE, CONDISTREF, REPI, REPJ, REPCUT, INTREPSEP,  &
1761:   &             INTCONSTRAINREPCUT, NREPULSIVE, NREPMAX, MAXCONUSE, CHECKCONINT, &1746:   &             INTCONSTRAINREPCUT, NREPULSIVE, NREPMAX, MAXCONUSE, CHECKCONINT, &
1762:   &             FREEZENODEST, NNREPULSIVE, INTFROZEN, ATOMSTORES, QCIADDACIDT, &1747:   &             FREEZENODEST, NNREPULSIVE, INTFROZEN, ATOMSTORES, QCIADDACIDT, &
1763:   &             NREPULSIVEFIX, REPIFIX, REPJFIX, REPCUTFIX, NREPI, NREPJ, NREPCUT, MAXNACTIVE, &1748:   &             NREPULSIVEFIX, REPIFIX, REPJFIX, REPCUTFIX, NREPI, NREPJ, NREPCUT, MAXNACTIVE, &
1764:   &             NCONSTRAINTFIX, CONIFIX, CONJFIX, INTCONCUT, INTCONSEP, QCIRADSHIFTT, QCIRADSHIFT, QCIADDREP, DOBACK1749:   &             NCONSTRAINTFIX, CONIFIX, CONJFIX, INTCONCUT, INTCONSEP, QCIRADSHIFTT, QCIRADSHIFT, QCIADDREP
1765: USE COMMONS, ONLY: NATOMS, DEBUG1750: USE COMMONS, ONLY: NATOMS, DEBUG
1766: IMPLICIT NONE1751: IMPLICIT NONE
1767: INTEGER INTIMAGE1752: INTEGER INTIMAGE
1768: INTEGER NBEST, NCONTOACTIVE(NATOMS),  NCONSTRAINT, J2, NTRIES(NATOMS), NEWATOM,  CONLIST(NATOMS), N1, N2, N3, &1753: INTEGER NBEST, NCONTOACTIVE(NATOMS),  NCONSTRAINT, J2, NTRIES(NATOMS), NEWATOM,  CONLIST(NATOMS), N1, N2, N3, &
1769:   &     NTOADD, NADDED, NMININT, NMAXINT, TURNONORDER(NATOMS), NDUMMY, J1, J3, NITERDONE, NCONFORNEWATOM, NACTIVE1754:   &     NTOADD, NADDED, NMININT, NMAXINT, TURNONORDER(NATOMS), NDUMMY, J1, J3, NITERDONE, NCONFORNEWATOM, NACTIVE
1770: DOUBLE PRECISION DUMMY, DUMMY2, DPRAND, RANDOM, CONDIST(NATOMS), DMIN1755: DOUBLE PRECISION DUMMY, DUMMY2, DPRAND, RANDOM, CONDIST(NATOMS), DMIN
1771: INTEGER NDFORNEWATOM, BESTPRESERVEDN(NATOMS), ACID1756: INTEGER NDFORNEWATOM, BESTPRESERVEDN(NATOMS), ACID
1772: DOUBLE PRECISION BESTPRESERVEDD(NATOMS), BESTCLOSESTD(NATOMS), INVDTOACTIVE(NATOMS)1757: DOUBLE PRECISION BESTPRESERVEDD(NATOMS), BESTCLOSESTD(NATOMS), INVDTOACTIVE(NATOMS)
1773: LOGICAL IMGFREEZE(INTIMAGE), ADDREP(NATOMS), CHOSENACID, AABACK(NATOMS), BACKDONE1758: LOGICAL IMGFREEZE(INTIMAGE), ADDREP(NATOMS), CHOSENACID
1774: DOUBLE PRECISION C1, C2, C3, VEC1(3), VEC2(3), VEC3(3), ESAVED, ESAVEC, ESAVE01759: DOUBLE PRECISION C1, C2, C3, VEC1(3), VEC2(3), VEC3(3), ESAVED, ESAVEC, ESAVE0
1775: INTEGER NCFORNEWATOM, BESTCLOSESTN(NATOMS), NNREPSAVE, NREPSAVE1760: INTEGER NCFORNEWATOM, BESTCLOSESTN(NATOMS), NNREPSAVE, NREPSAVE
1776: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2)), XSAVED(3,INTIMAGE+2), XSAVEC(3,INTIMAGE+2), XSAVE0(3,INTIMAGE+2),FRAC,RAN1, &1761: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2)), XSAVED(3,INTIMAGE+2), XSAVEC(3,INTIMAGE+2), XSAVE0(3,INTIMAGE+2),FRAC,RAN1, &
1777:   &              RMS,EEE(INTIMAGE+2),GGG((3*NATOMS)*(INTIMAGE+2)),ETOTAL,DS,DF,DNORM1762:   &              RMS,EEE(INTIMAGE+2),GGG((3*NATOMS)*(INTIMAGE+2)),ETOTAL,DS,DF,DNORM
1778: 1763: 
1779: 1764: 
1780: NTOADD=11765: NTOADD=1
1781: NADDED=01766: NADDED=0
1782: CHOSENACID=.FALSE.1767: CHOSENACID=.FALSE.
1783: 1768: 
1784: IF (DOBACK.AND.(.NOT.BACKDONE)) THEN 
1785:    DO J1=1,NATOMS 
1786:       IF (AABACK(J1)) THEN 
1787:          IF (.NOT.ATOMACTIVE(J1)) GOTO 763 
1788:       ENDIF 
1789:    ENDDO 
1790:    IF (DEBUG) WRITE(*,'(A,I6,A)') ' intlbfgs> All backbone atoms are active' 
1791:    BACKDONE=.TRUE. 
1792: ENDIF 
1793:  
1794: 763   CONTINUE 
1795:  
1796: !1769: !
1797: ! ATOMSTORES(J1) is the residue for atom J11770: ! ATOMSTORES(J1) is the residue for atom J1
1798: !1771: !
1799: ! AMBER12_GET_RESDATA needs a data type in amber12 interface and the number of residues1772: ! AMBER12_GET_RESDATA needs a data type in amber12 interface and the number of residues
1800: ! defined in amber12interface.f901773: ! defined in amber12interface.f90
1801: !1774: !
1802: 1775: 
1803: !1776: !
1804: ! Save current number of repulsions and number that are active to speed up the1777: ! Save current number of repulsions and number that are active to speed up the
1805: ! calls to CHECKREP1778: ! calls to CHECKREP
1877: !1850: !
1878: !  Choose NEWATOM deterministically. Take the inactive atom with the shortest constrained distance.1851: !  Choose NEWATOM deterministically. Take the inactive atom with the shortest constrained distance.
1879: !1852: !
1880:       DUMMY2=1.0D1001853:       DUMMY2=1.0D100
1881:       DO J1=1,NCONSTRAINT1854:       DO J1=1,NCONSTRAINT
1882:          IF (CONACTIVE(J1)) CYCLE1855:          IF (CONACTIVE(J1)) CYCLE
1883:          IF (ATOMACTIVE(CONJ(J1))) THEN1856:          IF (ATOMACTIVE(CONJ(J1))) THEN
1884:             IF (CHOSENACID.AND.(.NOT.(ATOMSTORES(CONI(J1)).EQ.ACID))) THEN1857:             IF (CHOSENACID.AND.(.NOT.(ATOMSTORES(CONI(J1)).EQ.ACID))) THEN
1885:             ELSE1858:             ELSE
1886:                IF (.NOT.ATOMACTIVE(CONI(J1))) THEN1859:                IF (.NOT.ATOMACTIVE(CONI(J1))) THEN
1887:                   IF (DOBACK.AND.(.NOT.BACKDONE).AND.(.NOT.AABACK(CONI(J1)))) THEN1860:                   IF (CONDISTREF(J1).LT.DUMMY2) THEN
1888:                   ELSE1861:                      DUMMY2=CONDISTREF(J1)
1889:                      IF (CONDISTREF(J1).LT.DUMMY2) THEN1862:                      NEWATOM=CONI(J1)
1890:                         DUMMY2=CONDISTREF(J1) 
1891:                         NEWATOM=CONI(J1) 
1892:                      ENDIF 
1893:                   ENDIF1863:                   ENDIF
1894:                ENDIF1864:                ENDIF
1895:             ENDIF1865:             ENDIF
1896:          ELSEIF (ATOMACTIVE(CONI(J1))) THEN1866:          ELSEIF (ATOMACTIVE(CONI(J1))) THEN
1897:             IF (CHOSENACID.AND.(.NOT.(ATOMSTORES(CONJ(J1)).EQ.ACID))) THEN1867:             IF (CHOSENACID.AND.(.NOT.(ATOMSTORES(CONJ(J1)).EQ.ACID))) THEN
1898:             ELSE1868:             ELSE
1899:                IF (.NOT.ATOMACTIVE(CONJ(J1))) THEN1869:                IF (.NOT.ATOMACTIVE(CONJ(J1))) THEN
1900:                   IF (DOBACK.AND.(.NOT.BACKDONE).AND.(.NOT.AABACK(CONJ(J1)))) THEN1870:                   IF (CONDISTREF(J1).LT.DUMMY2) THEN
1901:                   ELSE1871:                      DUMMY2=CONDISTREF(J1)
1902:                      IF (CONDISTREF(J1).LT.DUMMY2) THEN1872:                      NEWATOM=CONJ(J1)
1903:                         DUMMY2=CONDISTREF(J1) 
1904:                         NEWATOM=CONJ(J1) 
1905:                      ENDIF 
1906:                   ENDIF1873:                   ENDIF
1907:                ENDIF1874:                ENDIF
1908:             ENDIF1875:             ENDIF
1909:          ENDIF1876:          ENDIF
1910:       ENDDO1877:       ENDDO
1911:       IF (DEBUG) WRITE(*,'(3(A,I6),A,F15.5)') ' intlbfgs> Choosing new active atom ',NEWATOM,' new constraints=', &1878:       IF (DEBUG) WRITE(*,'(3(A,I6),A,F15.5)') ' intlbfgs> Choosing new active atom ',NEWATOM,' new constraints=', &
1912:   &                                       NCONTOACTIVE(NEWATOM),' maximum=',NBEST,' shortest constraint=',DUMMY21879:   &                                       NCONTOACTIVE(NEWATOM),' maximum=',NBEST,' shortest constraint=',DUMMY2
1913:       IF (DOBACK) WRITE(*,'(A,L5)') ' intlbfgs> AABACK=',AABACK(NEWATOM) 
1914: !     IF (DEBUG) CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,ETOTAL)1880: !     IF (DEBUG) CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,ETOTAL)
1915: !     IF (DEBUG) CALL WRITEPROFILE(NITERDONE,EEE,INTIMAGE)1881: !     IF (DEBUG) CALL WRITEPROFILE(NITERDONE,EEE,INTIMAGE)
1916:       IF (QCIADDACIDT.AND.(.NOT.CHOSENACID).AND.(.NOT.DOBACK)) THEN1882:       IF (QCIADDACIDT.AND.(.NOT.CHOSENACID)) THEN
1917:          ACID=ATOMSTORES(NEWATOM)1883:          ACID=ATOMSTORES(NEWATOM)
1918:          CHOSENACID=.TRUE.1884:          CHOSENACID=.TRUE.
1919:       ENDIF1885:       ENDIF
1920:           1886:           
1921:       IF (NEWATOM*NBEST.EQ.0) THEN ! sanity check1887:       IF (NEWATOM*NBEST.EQ.0) THEN ! sanity check
1922:          WRITE(*,'(A,I6,A,2I6)') ' intlbfgs> ERROR *** new active atom not set'1888:          WRITE(*,'(A,I6,A,2I6)') ' intlbfgs> ERROR *** new active atom not set'
1923:          STOP1889:          STOP
1924:       ELSE1890:       ELSE
1925: !1891: !
1926: !  We need a sorted list of up to 3 active atoms, sorted according to how well the1892: !  We need a sorted list of up to 3 active atoms, sorted according to how well the
2487:             ENDDO2453:             ENDDO
2488:             ETOTAL=ESAVE02454:             ETOTAL=ESAVE0
2489:          ENDIF2455:          ENDIF
2490:       ENDIF2456:       ENDIF
2491:       NADDED=NADDED+12457:       NADDED=NADDED+1
2492:       IF (NADDED.LT.NTOADD) GOTO 5422458:       IF (NADDED.LT.NTOADD) GOTO 542
2493: !2459: !
2494: ! Check whether we've added all atoms in the amino acid corresponding to the new atom. If not, go back to the top2460: ! Check whether we've added all atoms in the amino acid corresponding to the new atom. If not, go back to the top
2495: ! and choose the next candidate.2461: ! and choose the next candidate.
2496: !2462: !
2497:       IF (QCIADDACIDT.AND.(.NOT.DOBACK)) THEN2463:       IF (QCIADDACIDT) THEN
2498:          DO J1=1,NATOMS2464:          DO J1=1,NATOMS
2499:             IF ((ATOMSTORES(J1).EQ.ACID).AND.(.NOT.(ATOMACTIVE(J1)))) GOTO 5422465:             IF ((ATOMSTORES(J1).EQ.ACID).AND.(.NOT.(ATOMACTIVE(J1)))) GOTO 542
2500:          ENDDO2466:          ENDDO
2501:          WRITE(*,'(A,I6,A)') 'doaddatom> All atoms of residue ',ACID,' are active'2467:          WRITE(*,'(A,I6,A)') 'doaddatom> All atoms of residue ',ACID,' are active'
2502:       ENDIF2468:       ENDIF
2503: 2469: 
2504:       IF (QCIRADSHIFTT) THEN2470:       IF (QCIRADSHIFTT) THEN
2505:          WRITE(*,'(A,F15.5)') ' intlbfgs> Applying radial shift for unconstrained atoms of ',QCIRADSHIFT2471:          WRITE(*,'(A,F15.5)') ' intlbfgs> Applying radial shift for unconstrained atoms of ',QCIRADSHIFT
2506:          WRITE(*,'(20I6)') CONLIST(1:NCONFORNEWATOM)2472:          WRITE(*,'(20I6)') CONLIST(1:NCONFORNEWATOM)
2507:          DO J1=2,INTIMAGE+12473:          DO J1=2,INTIMAGE+1
3053: END SUBROUTINE MAKESTEP3019: END SUBROUTINE MAKESTEP
3054: 3020: 
3055: !3021: !
3056: ! Set up start and finish atom indices for each group once in intlbfgs3022: ! Set up start and finish atom indices for each group once in intlbfgs
3057: ! STARTGROUP(DOGROUP) and ENDGROUP(DOGROUP)3023: ! STARTGROUP(DOGROUP) and ENDGROUP(DOGROUP)
3058: !3024: !
3059: 3025: 
3060: SUBROUTINE QCIOPTPERM(COORDSB,COORDSA,NATOMS,DEBUG,DOGROUP,PERM,STARTGROUP,IM)3026: SUBROUTINE QCIOPTPERM(COORDSB,COORDSA,NATOMS,DEBUG,DOGROUP,PERM,STARTGROUP,IM)
3061: USE KEY,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS3027: USE KEY,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS
3062: IMPLICIT NONE3028: IMPLICIT NONE
3063: INTEGER NATOMS3029: INTEGER PERM(NATOMS), DOGROUP, J1, J2, NATOMS, STARTGROUP(NPERMGROUP), J3, I1, I2, I3, IM
3064: INTEGER PERM(NATOMS), DOGROUP, J1, J2, STARTGROUP(NPERMGROUP), J3, I1, I2, I3, IM 
3065: DOUBLE PRECISION COORDSA(3*NATOMS), COORDSB(3*NATOMS), D123, D132, D231, D213, D312, D321, DMIN, D12, D213030: DOUBLE PRECISION COORDSA(3*NATOMS), COORDSB(3*NATOMS), D123, D132, D231, D213, D312, D321, DMIN, D12, D21
3066: LOGICAL DEBUG, IDENTITY3031: LOGICAL DEBUG, IDENTITY
3067: 3032: 
3068: IDENTITY=.TRUE.3033: IDENTITY=.TRUE.
3069: DO J1=1,NATOMS3034: DO J1=1,NATOMS
3070:    PERM(J1)=J13035:    PERM(J1)=J1
3071: ENDDO3036: ENDDO
3072: 3037: 
3073: IF (NPERMSIZE(DOGROUP).EQ.3) THEN3038: IF (NPERMSIZE(DOGROUP).EQ.3) THEN
3074:    I1=PERMGROUP(STARTGROUP(DOGROUP))3039:    I1=PERMGROUP(STARTGROUP(DOGROUP))


r33418/key.f90 2017-10-25 14:30:10.816391059 +0100 r33417/key.f90 2017-10-25 14:30:12.224409753 +0100
 53:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, & 53:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, &
 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 63:      &        QCIDNEBT, QCIRESTART, QCILPERMDIST, FASTOVERLAPT, BNB_ALIGNT, QUIPT, QCIADDACIDT
 64:  64: 
 65:  65: 
 66: ! sy349 > for testing the flatpath after dneb 66: ! sy349 > for testing the flatpath after dneb
 67:       !LOGICAL, ALLOCATABLE :: FLATPATHT(:) 67:       !LOGICAL, ALLOCATABLE :: FLATPATHT(:)
 68:       LOGICAL FLATPATHT 68:       LOGICAL FLATPATHT
 69:  69: 
 70: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted) 70: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted)
 71:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential? 71:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential?
 72:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z) 72:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z)
 73:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1 73:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1


r33418/keywords.f 2017-10-25 14:30:11.044394084 +0100 r33417/keywords.f 2017-10-25 14:30:12.452412781 +0100
644:          INTLJDEL=0.1D0644:          INTLJDEL=0.1D0
645:          INTLJEPS=1.0D0645:          INTLJEPS=1.0D0
646: 646: 
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. 
655:          QCIADDACIDT=.FALSE.654:          QCIADDACIDT=.FALSE.
656:          QCIADDREPCUT=1.0D0655:          QCIADDREPCUT=1.0D0
657:          QCIADDREPEPS=1.0D0656:          QCIADDREPEPS=1.0D0
658:          QCINOREPINT=.FALSE.657:          QCINOREPINT=.FALSE.
659:          MAXNACTIVE=0658:          MAXNACTIVE=0
660: 659: 
661:          FREEZETOL=1.0D-3660:          FREEZETOL=1.0D-3
662:          FLATTESTT=.FALSE.661:          FLATTESTT=.FALSE.
663:          FLATEDIFF=1.0D-6662:          FLATEDIFF=1.0D-6
664:          QCIPERMCHECK=.FALSE.663:          QCIPERMCHECK=.FALSE.
3647:                   CLOSE(LUNIT)3646:                   CLOSE(LUNIT)
3648:                   PRINT '(A,I6,A)',' keyword> Read ',NCONGEOM,' reference geometries from congeom file'3647:                   PRINT '(A,I6,A)',' keyword> Read ',NCONGEOM,' reference geometries from congeom file'
3649:                   IF (NCONGEOM.LT.2) PRINT '(A)',' WARNING *** insufficient reference geometries - using end point minima'3648:                   IF (NCONGEOM.LT.2) PRINT '(A)',' WARNING *** insufficient reference geometries - using end point minima'
3650:                ENDIF3649:                ENDIF
3651:             ENDIF3650:             ENDIF
3652: ! 3651: ! 
3653: ! DO NOT Use the quasi-continuous metric for connection attempts, instead of distance.3652: ! DO NOT Use the quasi-continuous metric for connection attempts, instead of distance.
3654: ! 3653: ! 
3655:             INTERPCOSTFUNCTION=.FALSE.3654:             INTERPCOSTFUNCTION=.FALSE.
3656: !3655: !
3657: ! Do the backbone first 
3658: ! 
3659:       ELSE IF (WORD.EQ.'QCIDOBACK') THEN 
3660:          DOBACK=.TRUE. 
3661: ! 
3662: ! Add complete amino acids3656: ! Add complete amino acids
3663: !3657: !
3664:       ELSE IF (WORD.EQ.'QCIADDACID') THEN3658:       ELSE IF (WORD.EQ.'QCIADDACID') THEN
3665:          QCIADDACIDT=.TRUE.3659:          QCIADDACIDT=.TRUE.
3666: !3660: !
3667: !Use topology information for QCI constraints for AMBER3661: !Use topology information for QCI constraints for AMBER
3668: !3662: !
3669:       ELSE IF (WORD.EQ.'QCIAMBER') THEN3663:       ELSE IF (WORD.EQ.'QCIAMBER') THEN
3670:          QCIAMBERT=.TRUE.3664:          QCIAMBERT=.TRUE.
3671:          WRITE(*,'(A)') ' keyword> Use topology file for constraints in QCI'3665:          WRITE(*,'(A)') ' keyword> Use topology file for constraints in QCI'


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0