hdiff output

r33477/intlbfgs.f90 2017-11-14 17:30:19.392105145 +0000 r33476/intlbfgs.f90 2017-11-14 17:30:19.684109005 +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 52: INTEGER POINT,NPT,J3,J4,NIMAGEFREEZE,NACTIVE,NBEST,NEWATOM,NBEST2
 53: INTEGER TURNONORDER(NATOMS),NBACKTRACK,NQCIFREEZE 53: INTEGER TURNONORDER(NATOMS),NBACKTRACK,NQCIFREEZE, NBONDED(NATOMS), BONDEDLIST(NATOMS,6), NBOND
 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
 63: DOUBLE PRECISION, POINTER :: X(:), G(:) 63: DOUBLE PRECISION, POINTER :: X(:), G(:)
 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: LOGICAL READIMAGET, GROUPACTIVE(NPERMGROUP) 81: LOGICAL READIMAGET, GROUPACTIVE(NPERMGROUP), CHIRALACTIVE(NATOMS)
 82: INTEGER LUNIT, GETUNIT 82: INTEGER LUNIT, GETUNIT
 83: CHARACTER(LEN=2) SDUMMY 83: CHARACTER(LEN=2) SDUMMY
 84: INTEGER JMAXEEE,JMAXRMS,num_chiral_centres,atom_number 84: INTEGER JMAXEEE,JMAXRMS
 85: DOUBLE PRECISION MAXEEE,MAXRMS,MINEEE,SAVELOCALPERMCUT 85: DOUBLE PRECISION MAXEEE,MAXRMS,MINEEE,SAVELOCALPERMCUT
 86:  86: 
 87: WHOLEDNEB=.FALSE. 87: WHOLEDNEB=.FALSE.
 88: READIMAGET=.FALSE. 88: READIMAGET=.FALSE.
 89: REMOVEIMAGE=.FALSE. 89: REMOVEIMAGE=.FALSE.
 90: ECON=0.0D0; EREP=0.0D0; ESPRING=0.0D0 90: ECON=0.0D0; EREP=0.0D0; ESPRING=0.0D0
 91:  91: 
 92: IF (QCIAMBERT) THEN ! copied from corresponding chirality subroutine 
 93:  
 94:    num_chiral_centres=SIZE(sr_atoms,1) 
 95:    WRITE(*,'(A,I8)') ' intlbfgs> Number of chiral sites=',num_chiral_centres 
 96:  
 97: !  do J1 = 1, num_chiral_centres 
 98: !     write(*, '(5i8)') sr_atoms(J1, :) 
 99: !     write(*,'(A,L5)') 'sr_states_initial(J1) = ',sr_states_initial(J1) 
100: !  end do 
101:  
102: ENDIF 
103:  
104: ! DO J1=1,NATOMS 92: ! DO J1=1,NATOMS
105: !    WRITE(*,'(A,2I8)') 'intlbfgs> atom and residue: ',J1,ATOMSTORES(J1) 93: !    WRITE(*,'(A,2I8)') 'intlbfgs> atom and residue: ',J1,ATOMSTORES(J1)
106: ! ENDDO 94: ! ENDDO
107: ! STOP 95: ! STOP
108: NCONOFF=0 96: NCONOFF=0
109: AABACK(1:NATOMS)=.FALSE. 97: AABACK(1:NATOMS)=.FALSE.
110: BACKDONE=.FALSE. 98: BACKDONE=.FALSE.
111: IF (DOBACK) THEN 99: IF (DOBACK) THEN
112:    LUNIT=GETUNIT()100:    LUNIT=GETUNIT()
113:    OPEN(UNIT=LUNIT,FILE='aabk',STATUS='OLD')101:    OPEN(UNIT=LUNIT,FILE='aabk',STATUS='OLD')
158: WRITE(*,'(A,I6,A,G20.10)') ' intlbfgs> Updates: ',INTMUPDATE,' maximum step size=',MAXINTBFGS146: WRITE(*,'(A,I6,A,G20.10)') ' intlbfgs> Updates: ',INTMUPDATE,' maximum step size=',MAXINTBFGS
159: ADDATOM=.FALSE.147: ADDATOM=.FALSE.
160: NFAIL=0148: NFAIL=0
161: IMGFREEZE(1:INTIMAGE)=.FALSE.149: IMGFREEZE(1:INTIMAGE)=.FALSE.
162: D=(3*NATOMS)*INTIMAGE150: D=(3*NATOMS)*INTIMAGE
163: U=INTMUPDATE151: U=INTMUPDATE
164: NITERDONE=1152: NITERDONE=1
165: NITERUSE=1153: NITERUSE=1
166: NQDONE=0154: NQDONE=0
167: 155: 
 156: !
 157: ! Read AMBER topology and count bonded neighbours for each atom.
 158: ! Assume that we won't have more than 6 bonds!
 159: !
 160: IF (QCIAMBERT) THEN
 161:    CALL TOPOLOGY_READER(NBOND)
 162:    NBONDED(1:NATOMS)=0
 163:    BONDEDLIST(1:NATOMS,1:6)=0
 164:    DO J2=1,NBOND    
 165:       NBONDED(BONDS(J2,1))=NBONDED(BONDS(J2,1))+1
 166:       IF (NBONDED(BONDS(J2,1)).GT.6) THEN
 167:          WRITE(*,'(A,I6)') 'intlbfgs> ERROR *** atom ',BONDS(J2,1),' has more than 6 bonds'
 168:          STOP
 169:       ENDIF
 170:       BONDEDLIST(BONDS(J2,1),NBONDED(BONDS(J2,1)))=BONDS(J2,2)
 171:       NBONDED(BONDS(J2,2))=NBONDED(BONDS(J2,2))+1
 172:       IF (NBONDED(BONDS(J2,2)).GT.6) THEN
 173:          WRITE(*,'(A,I6)') 'intlbfgs> ERROR *** atom ',BONDS(J2,2),' has more than 6 bonds'
 174:          STOP
 175:       ENDIF
 176:       BONDEDLIST(BONDS(J2,2),NBONDED(BONDS(J2,2)))=BONDS(J2,1)
 177:    ENDDO
 178: !  DO J2=1,NATOMS
 179: !     WRITE(*,'(A,I6,A,I6,A,6I6)') 'intlbfgs> atom ',J2,' bonds ',NBONDED(J2),' to atoms ',BONDEDLIST(J2,1:NBONDED(J2))
 180: !  ENDDO
 181: ENDIF
 182: 
168: IF ( D<=0 ) THEN183: IF ( D<=0 ) THEN
169:    WRITE(*,*) 'd is not positive, d=',d184:    WRITE(*,*) 'd is not positive, d=',d
170:    STOP185:    STOP
171: ENDIF186: ENDIF
172: IF ( U<=0 ) THEN187: IF ( U<=0 ) THEN
173:    WRITE(*,*) 'u is not positive, u=',u188:    WRITE(*,*) 'u is not positive, u=',u
174:    STOP189:    STOP
175: ENDIF190: ENDIF
176: IF (INTSTEPS1 < 0) THEN191: IF (INTSTEPS1 < 0) THEN
177:    WRITE(*,'(1x,a)') 'Maximal number of iterations is less than zero! Stop.'192:    WRITE(*,'(1x,a)') 'Maximal number of iterations is less than zero! Stop.'
300: NACTIVE=0315: NACTIVE=0
301: TURNONORDER(1:NATOMS)=0316: TURNONORDER(1:NATOMS)=0
302: ATOMACTIVE(1:NATOMS)=.FALSE.317: ATOMACTIVE(1:NATOMS)=.FALSE.
303: REPCON=-INTCONSTRAINTREP/INTCONSTRAINREPCUT**6 ! also needed for congrad.f90 potential318: REPCON=-INTCONSTRAINTREP/INTCONSTRAINREPCUT**6 ! also needed for congrad.f90 potential
304: IF (QCIRESTART) THEN319: IF (QCIRESTART) THEN
305:    LUNIT=GETUNIT()320:    LUNIT=GETUNIT()
306:    OPEN(UNIT=LUNIT,FILE='QCIdump',STATUS='OLD')321:    OPEN(UNIT=LUNIT,FILE='QCIdump',STATUS='OLD')
307: 322: 
308:    READ(LUNIT,*) NACTIVE323:    READ(LUNIT,*) NACTIVE
309:    WRITE(*,'(A,I10,A)') ' intlbfgs> restart has ',NACTIVE,' active atoms'324:    WRITE(*,'(A,I10,A)') ' intlbfgs> restart has ',NACTIVE,' active atoms'
310:    READ(LUNIT,*) KINT, INTCONSTRAINTREP 
311:    WRITE(*,'(A,2G20.10)') ' intlbfgs> spring constant and repulsive prefactor: ',KINT, INTCONSTRAINTREP 
312:    WRITE(*,'(A)') ' intlbfgs> reading turnonorder'325:    WRITE(*,'(A)') ' intlbfgs> reading turnonorder'
313:    READ(LUNIT,*) TURNONORDER(1:NACTIVE)326:    READ(LUNIT,*) TURNONORDER(1:NACTIVE)
314: !  WRITE(*,'(12I8)') TURNONORDER(1:NACTIVE)327: !  WRITE(*,'(12I8)') TURNONORDER(1:NACTIVE)
315:    WRITE(*,'(A)') ' intlbfgs> reading atomactive'328:    WRITE(*,'(A)') ' intlbfgs> reading atomactive'
316:    READ(LUNIT,*) ATOMACTIVE(1:NATOMS)329:    READ(LUNIT,*) ATOMACTIVE(1:NATOMS)
317: !  WRITE(*,'(12L5)') ATOMACTIVE(1:NATOMS) 330: !  WRITE(*,'(12L5)') ATOMACTIVE(1:NATOMS) 
318:    READ(LUNIT,*) NCONSTRAINT331:    READ(LUNIT,*) NCONSTRAINT
319:    WRITE(*,'(A)') ' intlbfgs> reading conactive'332:    WRITE(*,'(A)') ' intlbfgs> reading conactive'
320:    WRITE(*,'(A,I10,A)') ' intlbfgs> restart has ',NCONSTRAINT,' constraints'333:    WRITE(*,'(A,I10,A)') ' intlbfgs> restart has ',NCONSTRAINT,' constraints'
321:    ALLOCATE(CONACTIVE(NCONSTRAINT))334:    ALLOCATE(CONACTIVE(NCONSTRAINT))
687: ENDIF700: ENDIF
688: 701: 
689: !702: !
690: !  Check permutational alignments. Maintain a list of the permutable groups where all703: !  Check permutational alignments. Maintain a list of the permutable groups where all
691: !  members are active. See if we have any new complete groups. MUST update NDUMMY704: !  members are active. See if we have any new complete groups. MUST update NDUMMY
692: !  counter to step through permutable atom list.705: !  counter to step through permutable atom list.
693: !706: !
694: IF (QCILPERMDIST.AND.(MOD(NITERDONE-1,QCIPDINT).EQ.0)) THEN707: IF (QCILPERMDIST.AND.(MOD(NITERDONE-1,QCIPDINT).EQ.0)) THEN
695: 708: 
696:    PRINT *,'DOING CHIRALCHECK NOW'709:    PRINT *,'DOING CHIRALCHECK NOW'
697: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state before CHIRALCHECK index -4'710:    CHIRALACTIVE(1:NATOMS)=.FALSE.
698: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-4,INTIMAGE,XYZ,TURNONORDER,NCONOFF)711:    chicheck: DO J1=1,NATOMS
699: 712:       IF (.NOT.ATOMACTIVE(J1)) CYCLE chicheck
700:    chicheck: DO J5=1, num_chiral_centres713:       IF (NBONDED(J1).NE.4) CYCLE chicheck
701:       atom_number=sr_atoms(J5, 1)  
702: !     WRITE(*,'(A,I6,A,I6,A,I6)') 'chiral centre ',J5,' is atom ',atom_number 
703:       IF (.NOT.ATOMACTIVE(atom_number)) CYCLE chicheck 
704:       DO J2=1,4714:       DO J2=1,4
705:          IF (.NOT.ATOMACTIVE(sr_atoms(J5,J2))) CYCLE chicheck715:          IF (.NOT.ATOMACTIVE(BONDEDLIST(J1,J2))) CYCLE chicheck
706:       ENDDO716:       ENDDO
707: 717:       CHIRALACTIVE(J1)=.TRUE.
708:       DO J3=1,INTIMAGE+2718:       DO J3=1,INTIMAGE+2
709: 719:          CENTRE_COORDS(1)=XYZ(3*NATOMS*(J3-1)+3*(J1-1)+1)
710:          CENTRE_COORDS(1)=XYZ(3*NATOMS*(J3-1)+3*(atom_number-1)+1)720:          CENTRE_COORDS(2)=XYZ(3*NATOMS*(J3-1)+3*(J1-1)+2)
711:          CENTRE_COORDS(2)=XYZ(3*NATOMS*(J3-1)+3*(atom_number-1)+2)721:          CENTRE_COORDS(3)=XYZ(3*NATOMS*(J3-1)+3*(J1-1)+3)
712:          CENTRE_COORDS(3)=XYZ(3*NATOMS*(J3-1)+3*(atom_number-1)+3) 
713: 722: 
714:          DO J4=1,4723:          DO J4=1,4
715:             J2=sr_atoms(J5, J4 + 1)724:             J2=BONDEDLIST(J1,J4)
716:             NEIGHBOUR_COORDS(3*(J4-1)+1)=XYZ(3*NATOMS*(J3-1)+3*(J2-1)+1)725:             NEIGHBOUR_COORDS(3*(J4-1)+1)=XYZ(3*NATOMS*(J3-1)+3*(J2-1)+1)
717:             NEIGHBOUR_COORDS(3*(J4-1)+2)=XYZ(3*NATOMS*(J3-1)+3*(J2-1)+2)726:             NEIGHBOUR_COORDS(3*(J4-1)+2)=XYZ(3*NATOMS*(J3-1)+3*(J2-1)+2)
718:             NEIGHBOUR_COORDS(3*(J4-1)+3)=XYZ(3*NATOMS*(J3-1)+3*(J2-1)+3)727:             NEIGHBOUR_COORDS(3*(J4-1)+3)=XYZ(3*NATOMS*(J3-1)+3*(J2-1)+3)
719:          ENDDO728:          ENDDO
720:  
721:          CHIRALSR=CHIRALITY_SR(NEIGHBOUR_COORDS,CENTRE_COORDS)729:          CHIRALSR=CHIRALITY_SR(NEIGHBOUR_COORDS,CENTRE_COORDS)
722: !        WRITE(*,'(A,I6,I6,2L5)') 'image, atom, chirality, initial=',J3,atom_number,CHIRALSR,sr_states_initial(J5)730:          IF ((J3.GT.1).AND.(CHIRALSR.NEQV.CHIRALSRP)) THEN
723:          IF (J3.EQ.1) CHIRALSRP=sr_states_initial(J5)731:             WRITE(*,'(A,I6,A,I6,A,I6)') 'intlbfgs> Atom ',J1,' image ',J3,' chirality CHANGED; use previous image coordinates'  
724:          IF (CHIRALSR.NEQV.CHIRALSRP) THEN 
725:             WRITE(*,'(A,I6,A,I6,A,I6)') 'intlbfgs> Atom ',atom_number,' image ',J3,' chirality CHANGED; use previous image coordinates'   
726:             NLASTCHANGE=NITERDONE732:             NLASTCHANGE=NITERDONE
727: !733: !
728: ! need to revert to whole aa coordinates, active atoms or not.734: ! need to revert to whole aa coordinates, active atoms or not.
729: !735: !
730:             ACID=ATOMSTORES(atom_number)736:             ACID=ATOMSTORES(J1)
731: 737: 
732:             DO J4=1,NATOMS738:             DO J4=1,NATOMS
733:                IF (ATOMSTORES(J4).NE.ACID) CYCLE739:                IF (ATOMSTORES(J4).NE.ACID) CYCLE
734:                IF (.NOT.ATOMACTIVE(J4)) CYCLE740:                IF (.NOT.ATOMACTIVE(J4)) CYCLE
735:                WRITE(*,'(A,I6,A,I6,A,I6)') 'intlbfgs> Changing active atom ',J4,' image ',J3741:                WRITE(*,'(A,I6,A,I6,A,I6)') 'intlbfgs> Changing active atom ',J4,' image ',J3
736:                XYZ(3*NATOMS*(J3-1)+3*(J4-1)+1)=XYZ(3*NATOMS*(J3-2)+3*(J4-1)+1)742:                XYZ(3*NATOMS*(J3-1)+3*(J4-1)+1)=XYZ(3*NATOMS*(J3-2)+3*(J4-1)+1)
737:                XYZ(3*NATOMS*(J3-1)+3*(J4-1)+2)=XYZ(3*NATOMS*(J3-2)+3*(J4-1)+2)743:                XYZ(3*NATOMS*(J3-1)+3*(J4-1)+2)=XYZ(3*NATOMS*(J3-2)+3*(J4-1)+2)
738:                XYZ(3*NATOMS*(J3-1)+3*(J4-1)+3)=XYZ(3*NATOMS*(J3-2)+3*(J4-1)+3)744:                XYZ(3*NATOMS*(J3-1)+3*(J4-1)+3)=XYZ(3*NATOMS*(J3-2)+3*(J4-1)+3)
739:             ENDDO745:             ENDDO
740:          ENDIF746:          ENDIF
741: !        IF (J3.EQ.1) CHIRALSRP=CHIRALSR  ! just use result for fixed end point image 1747:          IF (J3.EQ.1) CHIRALSRP=CHIRALSR  ! just use result for fixed end point image 1
742:       ENDDO748:       ENDDO
743:    ENDDO chicheck749:    ENDDO chicheck
744: !        IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state after CHIRALCHECK index -3'750: 
745: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-3,INTIMAGE,XYZ,TURNONORDER,NCONOFF)751: !  STOP
746: 752: 
747:    NDUMMY=1753:    NDUMMY=1
748:    DO J1=1,NPERMGROUP754:    DO J1=1,NPERMGROUP
749:       IF (GROUPACTIVE(J1)) GOTO 975755:       IF (GROUPACTIVE(J1)) GOTO 975
750:       DO J2=1,NPERMSIZE(J1)756:       DO J2=1,NPERMSIZE(J1)
751:          IF (.NOT.ATOMACTIVE(PERMGROUP(NDUMMY+J2-1))) GOTO 975757:          IF (.NOT.ATOMACTIVE(PERMGROUP(NDUMMY+J2-1))) GOTO 975
752:       ENDDO758:       ENDDO
753:       GROUPACTIVE(J1)=.TRUE.759:       GROUPACTIVE(J1)=.TRUE.
754:       IF (DEBUG) WRITE(*,'(A,I6,A)') ' intlbfgs> All permutable atoms in group ',J1,' are active'760:       IF (DEBUG) WRITE(*,'(A,I6,A)') ' intlbfgs> All permutable atoms in group ',J1,' are active'
755: 975   NDUMMY=NDUMMY+NPERMSIZE(J1)761: 975   NDUMMY=NDUMMY+NPERMSIZE(J1)
756:    ENDDO 762:    ENDDO 
757: 763: 
758: !  IF (NITERDONE.EQ.1) THEN764: !  IF (NITERDONE.EQ.1) THEN
759: !     COORDSB(1:3*NATOMS)=XYZ(1:3*NATOMS) ! starting endpoint765: !     COORDSB(1:3*NATOMS)=XYZ(1:3*NATOMS) ! starting endpoint
760: !     COORDSC(1:3*NATOMS)=XYZ(3*NATOMS*(INTIMAGE+1)+1:3*NATOMS*(INTIMAGE+2)) ! finish endpoint766: !     COORDSC(1:3*NATOMS)=XYZ(3*NATOMS*(INTIMAGE+1)+1:3*NATOMS*(INTIMAGE+2)) ! finish endpoint
761: !     WRITE(*,'(A)') ' intlbfgs> checking alignment of endpoints - should be no permutations'767: !     WRITE(*,'(A)') ' intlbfgs> checking alignment of endpoints - should be no permutations'
762: !     CALL LOPERMDIST(COORDSB,COORDSC,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,.FALSE.,RMATBEST,0,NMOVE,PERM)768: !     CALL LOPERMDIST(COORDSB,COORDSC,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,.FALSE.,RMATBEST,0,NMOVE,PERM)
763: !     WRITE(*,'(A,G20.10,A,I6)') ' intlbfgs> endpoint distance ',DISTANCE,' permutations=',NMOVE 769: !     WRITE(*,'(A,G20.10,A,I6)') ' intlbfgs> endpoint distance ',DISTANCE,' permutations=',NMOVE 
764: !  ENDIF770: !  ENDIF
765: 771: 
766: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state before lopermdist index -6' 
767: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-6,INTIMAGE,XYZ,TURNONORDER,NCONOFF) 
768:    SAVELOCALPERMCUT=LOCALPERMCUT772:    SAVELOCALPERMCUT=LOCALPERMCUT
769:    LOCALPERMCUT=QCIPERMCUT ! 773:    LOCALPERMCUT=QCIPERMCUT ! 0.8D0 
770:    np: DO J1=1,NPERMGROUP774:    np: DO J1=1,NPERMGROUP
771:       IF (.NOT.GROUPACTIVE(J1)) CYCLE np775:       IF (.NOT.GROUPACTIVE(J1)) CYCLE np
772:       DO J3=1,INTIMAGE776:       DO J3=1,INTIMAGE
773: !        WRITE(*,'(A,I6,A,I6)') 'intlbfgs> Doing group ',J1,' image ',J3+1777: !        WRITE(*,'(A,I6,A,I6)') 'intlbfgs> Doing group ',J1,' image ',J3+1
774: !          COORDSB(1:3*NATOMS)=XYZ(3*NATOMS*(J3-1)+1:3*NATOMS*J3) ! coordinates for intervening image J3-1, which is the starting endpoint for J3=1778: !          COORDSB(1:3*NATOMS)=XYZ(3*NATOMS*(J3-1)+1:3*NATOMS*J3) ! coordinates for intervening image J3-1, which is the starting endpoint for J3=1
775: !          COORDSA(1:3*NATOMS)=XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))  ! coordinates for intervening image J3, which is image J3+1 including starting endpoint779: !          COORDSA(1:3*NATOMS)=XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))  ! coordinates for intervening image J3, which is image J3+1 including starting endpoint
776: !          CALL QCIOPTPERM(COORDSB,COORDSA,NATOMS,DEBUG,J1,PERM,STARTGROUP,J3)780: !          CALL QCIOPTPERM(COORDSB,COORDSA,NATOMS,DEBUG,J1,PERM,STARTGROUP,J3)
777: !          IF (.NOT.IDENTITY) THEN781: !          IF (.NOT.IDENTITY) THEN
778: !             DO J2=1,NATOMS782: !             DO J2=1,NATOMS
779: ! !           IF (PERM(J2).NE.J2) WRITE(*,'(4(A,I6))') ' intlbfgs> image ',J3+1,' qcipermopt would move atom ',J2,' to position ',PERM(J2), &  783: ! !           IF (PERM(J2).NE.J2) WRITE(*,'(4(A,I6))') ' intlbfgs> image ',J3+1,' qcipermopt would move atom ',J2,' to position ',PERM(J2), &  
785: !                COORDSA(3*(J2-1)+3)=XYZ(3*NATOMS*J3+3*(PERM(J2)-1)+3)789: !                COORDSA(3*(J2-1)+3)=XYZ(3*NATOMS*J3+3*(PERM(J2)-1)+3)
786: !             ENDDO790: !             ENDDO
787: !             XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))=COORDSA(1:3*NATOMS)791: !             XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))=COORDSA(1:3*NATOMS)
788: !          ELSE792: !          ELSE
789: !             WRITE(*,'(A,I6,A,I6)') 'intlbfgs> identity permutation for image ',J3+1,' with preceeding image ',J3793: !             WRITE(*,'(A,I6,A,I6)') 'intlbfgs> identity permutation for image ',J3+1,' with preceeding image ',J3
790: !          ENDIF794: !          ENDIF
791: 795: 
792:          COORDSB(1:3*NATOMS)=XYZ(1:3*NATOMS) ! starting endpoint796:          COORDSB(1:3*NATOMS)=XYZ(1:3*NATOMS) ! starting endpoint
793:          COORDSC(1:3*NATOMS)=XYZ(3*NATOMS*(INTIMAGE+1)+1:3*NATOMS*(INTIMAGE+2)) ! finish endpoint797:          COORDSC(1:3*NATOMS)=XYZ(3*NATOMS*(INTIMAGE+1)+1:3*NATOMS*(INTIMAGE+2)) ! finish endpoint
794:          COORDSA(1:3*NATOMS)=XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1)) ! coordinates for intervening image J3, which is image J3+1 including starting endpoint798:          COORDSA(1:3*NATOMS)=XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1)) ! coordinates for intervening image J3, which is image J3+1 including starting endpoint
795: !        WRITE(*,'(A,I6,A,I6,A)') 'intlbfgs> Doing group ',J1,' image ',J3+1,' with start' 
796:          CALL LOPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCES,DIST2,.FALSE.,RMATBEST,J1,NMOVES,PERMS)799:          CALL LOPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCES,DIST2,.FALSE.,RMATBEST,J1,NMOVES,PERMS)
797:          COORDSA(1:3*NATOMS)=XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1)) ! coordinates for intervening image J3, which is image J3+1 including starting endpoint800:          COORDSA(1:3*NATOMS)=XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1)) ! coordinates for intervening image J3, which is image J3+1 including starting endpoint
798: !        WRITE(*,'(A,I6,A,I6,A)') 'intlbfgs> Doing group ',J1,' image ',J3+1,' with finish' 
799:          CALL LOPERMDIST(COORDSC,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCEF,DIST2,.FALSE.,RMATBEST,J1,NMOVEF,PERMF)801:          CALL LOPERMDIST(COORDSC,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCEF,DIST2,.FALSE.,RMATBEST,J1,NMOVEF,PERMF)
800: !        WRITE(*,'(A,I6,A,I6,A,2G20.10,A,2I6)') ' intlbfgs> image ',J3+1,' group ',J1,' start and finish distances=', &802: !        WRITE(*,'(A,I6,A,I6,A,2G20.10,A,2I6)') ' intlbfgs> image ',J3+1,' group ',J1,' start and finish distances=', &
801: !  &                                       DISTANCES,DISTANCEF,' permutations=',NMOVES, NMOVEF803: !  &                                       DISTANCES,DISTANCEF,' permutations=',NMOVES, NMOVEF
802: 804: 
803:          IF ((NMOVES.GT.0).OR.(NMOVEF.GT.0)) THEN805:          IF ((NMOVES.GT.0).OR.(NMOVEF.GT.0)) THEN
804:             WRITE(*,'(A,I6,A,I6,A,2G20.10,A,2I6)') ' intlbfgs> image ',J3+1,' group ',J1,' start and finish distances=', &806:             WRITE(*,'(A,I6,A,I6,A,2G20.10,A,2I6)') ' intlbfgs> image ',J3+1,' group ',J1,' start and finish distances=', &
805:    &                                           DISTANCES,DISTANCEF,' permutations=',NMOVES, NMOVEF807:    &                                           DISTANCES,DISTANCEF,' permutations=',NMOVES, NMOVEF
806:          ENDIF808:          ENDIF
807: 809: 
808:          IF ((NMOVES.GT.0).AND.(NMOVES.EQ.NMOVEF)) THEN810:          IF ((NMOVES.GT.0).AND.(NMOVES.EQ.NMOVEF)) THEN
865: !                      WRITE(*,'(A,I6,A,I6)') ' intlbfgs> inconsistent non-identity permutations for start and finish'867: !                      WRITE(*,'(A,I6,A,I6)') ' intlbfgs> inconsistent non-identity permutations for start and finish'
866: !                   ENDIF868: !                   ENDIF
867: !                ENDIF869: !                ENDIF
868: !             ENDDO870: !             ENDDO
869: !             XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))=COORDSA(1:3*NATOMS)871: !             XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))=COORDSA(1:3*NATOMS)
870: !          ENDIF872: !          ENDIF
871: !       ENDDO np873: !       ENDDO np
872: !    ENDDO874: !    ENDDO
873: !    LOCALPERMCUT=SAVELOCALPERMCUT875: !    LOCALPERMCUT=SAVELOCALPERMCUT
874: !    CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,NCONOFF)876: !    CALL INTRWG(NACTIVE,NITERDONE,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
875: 877: ! !  STOP
876: !       IF (DEBUG) WRITE(*,'(A)') 'intlbfgs> dump state after lopermdist index -7' 
877: !        IF (DEBUG) CALL INTRWG2(NACTIVE,-7,INTIMAGE,XYZ,TURNONORDER,NCONOFF) 
878:  
879: !    STOP !!! DEBUG DJW 
880: 878: 
881: ENDIF879: ENDIF
882: 880: 
883: !881: !
884: !  Add next atom to active set if ADDATOM is true. 882: !  Add next atom to active set if ADDATOM is true. 
885: !  Constraints to atoms already in the active set are turned on883: !  Constraints to atoms already in the active set are turned on
886: !  and short-range repulsions to active atoms that are not distance constrained are turned on.884: !  and short-range repulsions to active atoms that are not distance constrained are turned on.
887: !  *** OLD Find nearest atom to active set attached by a constraint885: !  *** OLD Find nearest atom to active set attached by a constraint
888: !  *** NEW Find atom with most constraints to active set886: !  *** NEW Find atom with most constraints to active set
889: !  Turn on constraint terms for this atom with all previous members of the active set887: !  Turn on constraint terms for this atom with all previous members of the active set
1747: !  ENDDO 1745: !  ENDDO 
1748: 246 CONTINUE1746: 246 CONTINUE
1749: ENDDO1747: ENDDO
1750: IF (DEBUG) WRITE(*,'(A,2I8)') ' checkrep> number of active repulsions and total=',NNREPULSIVE,NREPULSIVE1748: IF (DEBUG) WRITE(*,'(A,2I8)') ' checkrep> number of active repulsions and total=',NNREPULSIVE,NREPULSIVE
1751: 1749: 
1752: END SUBROUTINE CHECKREP1750: END SUBROUTINE CHECKREP
1753: 1751: 
1754: SUBROUTINE INTRWG(NACTIVE,NITER,INTIMAGE,XYZ,TURNONORDER,NCONOFF)1752: SUBROUTINE INTRWG(NACTIVE,NITER,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
1755: USE PORFUNCS1753: USE PORFUNCS
1756: USE KEY,ONLY: STOCKT,STOCKAAT, RBAAT, ATOMACTIVE, NCONSTRAINT, CONACTIVE, NREPULSIVE, NNREPULSIVE, REPI, REPJ, REPCUT, NREPCUT, &1754: USE KEY,ONLY: STOCKT,STOCKAAT, RBAAT, ATOMACTIVE, NCONSTRAINT, CONACTIVE, NREPULSIVE, NNREPULSIVE, REPI, REPJ, REPCUT, NREPCUT, &
1757:   &           NREPMAX, NREPI, NREPJ, INTFROZEN, CONOFFLIST,CONOFFTRIED, KINT, INTCONSTRAINTREP1755:   &           NREPMAX, NREPI, NREPJ, INTFROZEN, CONOFFLIST,CONOFFTRIED
1758: USE COMMONS, ONLY: NATOMS, DEBUG1756: USE COMMONS, ONLY: NATOMS, DEBUG
1759: IMPLICIT NONE1757: IMPLICIT NONE
1760: INTEGER NCONOFF1758: INTEGER NCONOFF
1761: CHARACTER(LEN=10) :: XYZFILE   = 'int.xyz   '1759: CHARACTER(LEN=10) :: XYZFILE   = 'int.xyz   '
1762: CHARACTER(LEN=10) :: QCIFILE   = 'QCIdump   '1760: CHARACTER(LEN=10) :: QCIFILE   = 'QCIdump   '
1763: INTEGER,INTENT(IN) :: NITER, TURNONORDER(NATOMS)1761: INTEGER,INTENT(IN) :: NITER, TURNONORDER(NATOMS)
1764: INTEGER :: J1,J2,INTIMAGE,J3,NACTIVE,LUNIT,GETUNIT1762: INTEGER :: J1,J2,INTIMAGE,J3,NACTIVE,LUNIT,GETUNIT
1765: CHARACTER(LEN=80) :: FILENAME,DUMMYS1763: CHARACTER(LEN=80) :: FILENAME,DUMMYS
1766: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2))1764: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2))
1767: 1765: 
1790: WRITE(*,*) 'rwg> Interpolated image coordinates were saved to xyz file "'//TRIM(FILENAME)//'"'1788: WRITE(*,*) 'rwg> Interpolated image coordinates were saved to xyz file "'//TRIM(FILENAME)//'"'
1791: 1789: 
1792: CLOSE(LUNIT)1790: CLOSE(LUNIT)
1793: 1791: 
1794: FILENAME=QCIFILE1792: FILENAME=QCIFILE
1795: LUNIT=GETUNIT()1793: LUNIT=GETUNIT()
1796: OPEN(UNIT=LUNIT,FILE=TRIM(ADJUSTL(FILENAME)),STATUS='replace')1794: OPEN(UNIT=LUNIT,FILE=TRIM(ADJUSTL(FILENAME)),STATUS='replace')
1797: 1795: 
1798: IF (DEBUG) WRITE(*,'(A,I10,A)') ' intlbfgs> dumping state for ',NACTIVE,' active atoms'1796: IF (DEBUG) WRITE(*,'(A,I10,A)') ' intlbfgs> dumping state for ',NACTIVE,' active atoms'
1799: WRITE(LUNIT,'(I10)') NACTIVE1797: WRITE(LUNIT,'(I10)') NACTIVE
1800: ! IF (DEBUG)   WRITE(*,'(A,I10,A)') ' intlbfgs> dumping spring constant and repulsive prefactor' 
1801: WRITE(LUNIT,'(2G20.10)') KINT, INTCONSTRAINTREP 
1802: ! WRITE(*,'(A,I10,A)') ' intlbfgs> dumping turnonorder for ',NACTIVE,' active atoms'1798: ! WRITE(*,'(A,I10,A)') ' intlbfgs> dumping turnonorder for ',NACTIVE,' active atoms'
1803: WRITE(LUNIT,'(12I8)') TURNONORDER(1:NACTIVE)1799: WRITE(LUNIT,'(12I8)') TURNONORDER(1:NACTIVE)
1804: ! WRITE(*,'(A)') ' intlbfgs> dumping atomactive'1800: ! WRITE(*,'(A)') ' intlbfgs> dumping atomactive'
1805: WRITE(LUNIT,'(12L5)') ATOMACTIVE(1:NATOMS)1801: WRITE(LUNIT,'(12L5)') ATOMACTIVE(1:NATOMS)
1806: WRITE(LUNIT,'(I10)') NCONSTRAINT1802: WRITE(LUNIT,'(I10)') NCONSTRAINT
1807: ! WRITE(*,'(A,I10,A)') ' intlbfgs> dumping conactive for ',NCONSTRAINT,' constraints'1803: ! WRITE(*,'(A,I10,A)') ' intlbfgs> dumping conactive for ',NCONSTRAINT,' constraints'
1808: WRITE(LUNIT,'(12L5)') CONACTIVE(1:NCONSTRAINT)1804: WRITE(LUNIT,'(12L5)') CONACTIVE(1:NCONSTRAINT)
1809: 1805: 
1810: WRITE(LUNIT,'(3I12,G20.10)') NREPULSIVE,NNREPULSIVE,NREPMAX1806: WRITE(LUNIT,'(3I12,G20.10)') NREPULSIVE,NNREPULSIVE,NREPMAX
1811: ! WRITE(*,'(A,3I10,G20.10)') 'intlbfgs> dumping NREPULSIVE,NNREPULSIVE,NREPMAX=',NREPULSIVE,NNREPULSIVE,NREPMAX1807: ! WRITE(*,'(A,3I10,G20.10)') 'intlbfgs> dumping NREPULSIVE,NNREPULSIVE,NREPMAX=',NREPULSIVE,NNREPULSIVE,NREPMAX
3444: !  PRINT *,'Z=',Z3440: !  PRINT *,'Z=',Z
3445: ENDIF3441: ENDIF
3446: 3442: 
3447: END SUBROUTINE TRILATERATION 3443: END SUBROUTINE TRILATERATION 
3448: 3444: 
3449: 3445: 
3450: 3446: 
3451: SUBROUTINE INTRWG2(NACTIVE,NITER,INTIMAGE,XYZ,TURNONORDER,NCONOFF)3447: SUBROUTINE INTRWG2(NACTIVE,NITER,INTIMAGE,XYZ,TURNONORDER,NCONOFF)
3452: USE PORFUNCS3448: USE PORFUNCS
3453: USE KEY,ONLY: STOCKT,STOCKAAT, RBAAT, ATOMACTIVE, NCONSTRAINT, CONACTIVE, NREPULSIVE, NNREPULSIVE, REPI, REPJ, REPCUT, NREPCUT, &3449: USE KEY,ONLY: STOCKT,STOCKAAT, RBAAT, ATOMACTIVE, NCONSTRAINT, CONACTIVE, NREPULSIVE, NNREPULSIVE, REPI, REPJ, REPCUT, NREPCUT, &
3454:   &           NREPMAX, NREPI, NREPJ, INTFROZEN, CONOFFLIST,CONOFFTRIED, KINT,INTCONSTRAINTREP3450:   &           NREPMAX, NREPI, NREPJ, INTFROZEN, CONOFFLIST,CONOFFTRIED
3455: USE COMMONS, ONLY: NATOMS, DEBUG3451: USE COMMONS, ONLY: NATOMS, DEBUG
3456: IMPLICIT NONE3452: IMPLICIT NONE
3457: INTEGER NCONOFF3453: INTEGER NCONOFF
3458: CHARACTER(LEN=10) :: XYZFILE   = 'int.xyz   '3454: CHARACTER(LEN=10) :: XYZFILE   = 'int.xyz   '
3459: CHARACTER(LEN=10) :: QCIFILE   = 'QCIdump   '3455: CHARACTER(LEN=10) :: QCIFILE   = 'QCIdump   '
3460: INTEGER,INTENT(IN) :: NITER, TURNONORDER(NATOMS)3456: INTEGER,INTENT(IN) :: NITER, TURNONORDER(NATOMS)
3461: INTEGER :: J1,J2,INTIMAGE,J3,NACTIVE,LUNIT,GETUNIT3457: INTEGER :: J1,J2,INTIMAGE,J3,NACTIVE,LUNIT,GETUNIT
3462: CHARACTER(LEN=80) :: FILENAME,DUMMYS3458: CHARACTER(LEN=80) :: FILENAME,DUMMYS
3463: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2))3459: DOUBLE PRECISION XYZ((3*NATOMS)*(INTIMAGE+2))
3464: 3460: 
3491: FILENAME=QCIFILE3487: FILENAME=QCIFILE
3492: LUNIT=GETUNIT()3488: LUNIT=GETUNIT()
3493: ! IF (NITER.GT.0) THEN3489: ! IF (NITER.GT.0) THEN
3494:    WRITE(DUMMYS,'(I8)') NITER3490:    WRITE(DUMMYS,'(I8)') NITER
3495:    FILENAME='QCIdump.' // TRIM(ADJUSTL(DUMMYS)) 3491:    FILENAME='QCIdump.' // TRIM(ADJUSTL(DUMMYS)) 
3496: ! ENDIF3492: ! ENDIF
3497: OPEN(UNIT=LUNIT,FILE=TRIM(ADJUSTL(FILENAME)),STATUS='replace')3493: OPEN(UNIT=LUNIT,FILE=TRIM(ADJUSTL(FILENAME)),STATUS='replace')
3498: 3494: 
3499: IF (DEBUG) WRITE(*,'(A,I10,A)') ' intlbfgs> dumping state for ',NACTIVE,' active atoms'3495: IF (DEBUG) WRITE(*,'(A,I10,A)') ' intlbfgs> dumping state for ',NACTIVE,' active atoms'
3500: WRITE(LUNIT,'(I10)') NACTIVE3496: WRITE(LUNIT,'(I10)') NACTIVE
3501: ! IF (DEBUG)   WRITE(*,'(A,I10,A)') ' intlbfgs> dumping spring constant and repulsive prefactor' 
3502: WRITE(LUNIT,'(2G20.10)') KINT, INTCONSTRAINTREP 
3503: ! WRITE(*,'(A,I10,A)') ' intlbfgs> dumping turnonorder for ',NACTIVE,' active atoms'3497: ! WRITE(*,'(A,I10,A)') ' intlbfgs> dumping turnonorder for ',NACTIVE,' active atoms'
3504: WRITE(LUNIT,'(12I8)') TURNONORDER(1:NACTIVE)3498: WRITE(LUNIT,'(12I8)') TURNONORDER(1:NACTIVE)
3505: ! WRITE(*,'(A)') ' intlbfgs> dumping atomactive'3499: ! WRITE(*,'(A)') ' intlbfgs> dumping atomactive'
3506: WRITE(LUNIT,'(12L5)') ATOMACTIVE(1:NATOMS)3500: WRITE(LUNIT,'(12L5)') ATOMACTIVE(1:NATOMS)
3507: WRITE(LUNIT,'(I10)') NCONSTRAINT3501: WRITE(LUNIT,'(I10)') NCONSTRAINT
3508: ! WRITE(*,'(A,I10,A)') ' intlbfgs> dumping conactive for ',NCONSTRAINT,' constraints'3502: ! WRITE(*,'(A,I10,A)') ' intlbfgs> dumping conactive for ',NCONSTRAINT,' constraints'
3509: WRITE(LUNIT,'(12L5)') CONACTIVE(1:NCONSTRAINT)3503: WRITE(LUNIT,'(12L5)') CONACTIVE(1:NCONSTRAINT)
3510: 3504: 
3511:    WRITE(LUNIT,'(3I12,G20.10)') NREPULSIVE,NNREPULSIVE,NREPMAX3505:    WRITE(LUNIT,'(3I12,G20.10)') NREPULSIVE,NNREPULSIVE,NREPMAX
3512:    ! WRITE(*,'(A,3I10,G20.10)') 'intlbfgs> dumping NREPULSIVE,NNREPULSIVE,NREPMAX=',NREPULSIVE,NNREPULSIVE,NREPMAX3506:    ! WRITE(*,'(A,3I10,G20.10)') 'intlbfgs> dumping NREPULSIVE,NNREPULSIVE,NREPMAX=',NREPULSIVE,NNREPULSIVE,NREPMAX


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0