hdiff output

r33462/congrad.f90 2017-11-10 17:30:18.029405778 +0000 r33461/congrad.f90 2017-11-10 17:30:18.481411760 +0000
742:             EEMAX(J1-1)=DUMMY742:             EEMAX(J1-1)=DUMMY
743:          ENDIF743:          ENDIF
744:          EEE(J1-1)=EEE(J1-1)+DUMMY744:          EEE(J1-1)=EEE(J1-1)+DUMMY
745:          CONE(J1-1)=CONE(J1-1)+DUMMY745:          CONE(J1-1)=CONE(J1-1)+DUMMY
746:          ECON=ECON      +DUMMY746:          ECON=ECON      +DUMMY
747:          IF (LPRINT) WRITE(*, '(A,4I6,G15.5)') 'max J1,J2,CONI,CONJ,REPGRAD=',J1,J2,CONI(J2),CONJ(J2), &747:          IF (LPRINT) WRITE(*, '(A,4I6,G15.5)') 'max J1,J2,CONI,CONJ,REPGRAD=',J1,J2,CONI(J2),CONJ(J2), &
748:   &         SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2)748:   &         SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2)
749:          GGG(NI1+1:NI1+3)=GGG(NI1+1:NI1+3)+REPGRAD(1:3)749:          GGG(NI1+1:NI1+3)=GGG(NI1+1:NI1+3)+REPGRAD(1:3)
750:          GGG(NJ1+1:NJ1+3)=GGG(NJ1+1:NJ1+3)-REPGRAD(1:3)750:          GGG(NJ1+1:NJ1+3)=GGG(NJ1+1:NJ1+3)-REPGRAD(1:3)
751:       ENDIF751:       ENDIF
752: !     WRITE(*,'(A,2L5,2G20.10)') 'before intmin block EEE(J1),EEE(J1-1)=',CHECKCONINT,NOINT,EEE(J1),EEE(J1-1) 
753:       IF (CHECKCONINT.AND.(.NOT.NOINT).AND.(ABS(DINT-CONDISTREFLOCAL(J2)).GT.CCLOCAL)) THEN752:       IF (CHECKCONINT.AND.(.NOT.NOINT).AND.(ABS(DINT-CONDISTREFLOCAL(J2)).GT.CCLOCAL)) THEN
754:          DUMMY=DINT-CONDISTREFLOCAL(J2)  753:          DUMMY=DINT-CONDISTREFLOCAL(J2)  
755:          REPGRAD(1:3)=2*INTMINFAC*INTCONSTRAINTDEL*((DUMMY/CCLOCAL)**2-1.0D0)*DUMMY*G1INT(1:3)754:          REPGRAD(1:3)=2*INTMINFAC*INTCONSTRAINTDEL*((DUMMY/CCLOCAL)**2-1.0D0)*DUMMY*G1INT(1:3)
756:          GGG(NI1+1:NI1+3)=GGG(NI1+1:NI1+3)+REPGRAD(1:3)755:          GGG(NI1+1:NI1+3)=GGG(NI1+1:NI1+3)+REPGRAD(1:3)
757:          GGG(NJ1+1:NJ1+3)=GGG(NJ1+1:NJ1+3)-REPGRAD(1:3)756:          GGG(NJ1+1:NJ1+3)=GGG(NJ1+1:NJ1+3)-REPGRAD(1:3)
758:          REPGRAD(1:3)=2*INTMINFAC*INTCONSTRAINTDEL*((DUMMY/CCLOCAL)**2-1.0D0)*DUMMY*G2INT(1:3)757:          REPGRAD(1:3)=2*INTMINFAC*INTCONSTRAINTDEL*((DUMMY/CCLOCAL)**2-1.0D0)*DUMMY*G2INT(1:3)
759:          DUMMY=INTMINFAC*INTCONSTRAINTDEL*(DUMMY**2-CCLOCAL**2)**2/(2.0D0*CCLOCAL**2)758:          DUMMY=INTMINFAC*INTCONSTRAINTDEL*(DUMMY**2-CCLOCAL**2)**2/(2.0D0*CCLOCAL**2)
760: !        WRITE(*,'(A,3I7,9F13.5)') 'J1,NI1,NJ1,INTMINFAC,INTCONSTRAINTDEL,DUMMY,GGG=',J1,NI1,NJ1,INTMINFAC,INTCONSTRAINTDEL, & 
761: ! &            DUMMY, GGG(NI1+1:NI1+3),GGG(NJ1+1:NJ1+3)    
762: !        IF (PRINTE.AND.(DUMMY.GT.1.0D-4)) THEN759: !        IF (PRINTE.AND.(DUMMY.GT.1.0D-4)) THEN
763: !           WRITE(*, '(A,2I6,2L5,G20.10)') 'CONI,CONJ,INTFROZEN(CONI),INTFROZEN(CONJ),DUMMY=', &760: !           WRITE(*, '(A,2I6,2L5,G20.10)') 'B CONI,CONJ,INTFROZEN(CONI),INTFROZEN(CONJ),DUMMY=', &
764: ! &                                       CONI(J2),CONJ(J2),INTFROZEN(CONI(J2)),INTFROZEN(CONJ(J2)),DUMMY761: ! &                                       CONI(J2),CONJ(J2),INTFROZEN(CONI(J2)),INTFROZEN(CONJ(J2)),DUMMY
765: !        ENDIF762: !        ENDIF
766:          ECON=ECON+DUMMY763:          ECON=ECON+DUMMY
767:          IF (DUMMY.GT.EMAX) THEN764:          IF (DUMMY.GT.EMAX) THEN
768:             IMAX=J1765:             IMAX=J1
769:             JMAX=J2766:             JMAX=J2
770:             EMAX=DUMMY767:             EMAX=DUMMY
771:          ENDIF768:          ENDIF
772:          IF (DUMMY.GT.EMAXNOFF) THEN769:          IF (DUMMY.GT.EMAXNOFF) THEN
773:             IF (.NOT.CONOFFTRIED(J2)) THEN770:             IF (.NOT.CONOFFTRIED(J2)) THEN
797:             NCONINT(J1-1)=NCONINT(J1-1)+1794:             NCONINT(J1-1)=NCONINT(J1-1)+1
798:          ELSE IF (J1.EQ.INTIMAGE+2) THEN795:          ELSE IF (J1.EQ.INTIMAGE+2) THEN
799:             EEE(J1-1)=EEE(J1-1)+DUMMY796:             EEE(J1-1)=EEE(J1-1)+DUMMY
800:             CONEINT(J1-1)=CONEINT(J1-1)+DUMMY797:             CONEINT(J1-1)=CONEINT(J1-1)+DUMMY
801:             NCONINT(J1-1)=NCONINT(J1-1)+1798:             NCONINT(J1-1)=NCONINT(J1-1)+1
802:          ENDIF799:          ENDIF
803: !        WRITE(*, '(A,4I6,G15.5)') 'in2 J1,J2,CONI,CONJ,REPGRAD=',J1,J2,CONI(J2),CONJ(J2), &800: !        WRITE(*, '(A,4I6,G15.5)') 'in2 J1,J2,CONI,CONJ,REPGRAD=',J1,J2,CONI(J2),CONJ(J2), &
804: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2)801: ! &                              SQRT(REPGRAD(1)**2+REPGRAD(2)**2+REPGRAD(3)**2)
805:          GGG(NI2+1:NI2+3)=GGG(NI2+1:NI2+3)+REPGRAD(1:3)802:          GGG(NI2+1:NI2+3)=GGG(NI2+1:NI2+3)+REPGRAD(1:3)
806:          GGG(NJ2+1:NJ2+3)=GGG(NJ2+1:NJ2+3)-REPGRAD(1:3)803:          GGG(NJ2+1:NJ2+3)=GGG(NJ2+1:NJ2+3)-REPGRAD(1:3)
807: !        WRITE(*, '(A,3I7,9G13.5)') 'J1,NI2,NJ2,INTMINFAC,INTCONSTRAINTDEL,DUMMY,GGG=',J1,NI2,NJ2,INTMINFAC,INTCONSTRAINTDEL, &  
808: ! &            DUMMY, GGG(NI2+1:NI2+3),GGG(NJ2+1:NJ2+3)    
809: !        WRITE(*,'(A,2G20.10)') 'in intmin block EEE(J1),EEE(J1-1)=',EEE(J1),EEE(J1-1) 
810:       ENDIF804:       ENDIF
811:    ENDDO805:    ENDDO
812: ENDDO806: ENDDO
813: ! DO J2=1,INTIMAGE+2807: ! DO J2=1,INTIMAGE+2
814: !    IF (JJMAX(J2).GT.0) THEN808: !    IF (JJMAX(J2).GT.0) THEN
815: !       WRITE(*,'(A,I6,A,I6,A,2I6)') ' congrad2> Highest constraint contribution for image ',J2,' constraint ',JJMAX(J2),' atoms ', &809: !       WRITE(*,'(A,I6,A,I6,A,2I6)') ' congrad2> Highest constraint contribution for image ',J2,' constraint ',JJMAX(J2),' atoms ', &
816: !  &                                CONI(JJMAX(J2)),CONJ(JJMAX(J2))810: !  &                                CONI(JJMAX(J2)),CONJ(JJMAX(J2))
817: !    ENDIF811: !    ENDIF
818: ! ENDDO812: ! ENDDO
819: IF (JMAX.GT.0) THEN813: IF (JMAX.GT.0) THEN


r33462/intlbfgs.f90 2017-11-10 17:30:18.253408743 +0000 r33461/intlbfgs.f90 2017-11-10 17:30:18.713414831 +0000
 65: ! efk: for freezenodes 65: ! efk: for freezenodes
 66: ! 66: !
 67: DOUBLE PRECISION :: TESTG, TOTGNORM 67: DOUBLE PRECISION :: TESTG, TOTGNORM
 68: INTEGER :: IM 68: INTEGER :: IM
 69: ! 69: !
 70: ! Dimensions involving INTIMAGE 70: ! Dimensions involving INTIMAGE
 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(:)    
 76: ! DOUBLE PRECISION  EPLUS, EMINUS, DIFF    
 77: DOUBLE PRECISION, ALLOCATABLE, TARGET :: XYZ(:), GGG(:), DPTMP(:), D2TMP(:,:) 75: DOUBLE PRECISION, ALLOCATABLE, TARGET :: XYZ(:), GGG(:), DPTMP(:), D2TMP(:,:)
 78: ! saved interpolation 76: ! saved interpolation
 79: INTEGER BESTINTIMAGE, NSTEPS, NITERUSE 77: INTEGER BESTINTIMAGE, NSTEPS, NITERUSE
 80: LOGICAL, ALLOCATABLE :: CHECKG(:), IMGFREEZE(:) 78: LOGICAL, ALLOCATABLE :: CHECKG(:), IMGFREEZE(:)
 81: LOGICAL READIMAGET, GROUPACTIVE(NPERMGROUP), CHIRALACTIVE(NATOMS) 79: LOGICAL READIMAGET, GROUPACTIVE(NPERMGROUP), CHIRALACTIVE(NATOMS)
 82: INTEGER LUNIT, GETUNIT 80: INTEGER LUNIT, GETUNIT
 83: CHARACTER(LEN=2) SDUMMY 81: CHARACTER(LEN=2) SDUMMY
 84: INTEGER JMAXEEE,JMAXRMS 82: INTEGER JMAXEEE,JMAXRMS
 85: DOUBLE PRECISION MAXEEE,MAXRMS,MINEEE,SAVELOCALPERMCUT 83: DOUBLE PRECISION MAXEEE,MAXRMS,MINEEE,SAVELOCALPERMCUT
 86:  84: 
129: ENDIF127: ENDIF
130: 128: 
131: ALLOCATE(TRUEEE(INTIMAGE+2), &129: ALLOCATE(TRUEEE(INTIMAGE+2), &
132:   &      EEETMP(INTIMAGE+2), MYGTMP(3*NATOMS*INTIMAGE), &130:   &      EEETMP(INTIMAGE+2), MYGTMP(3*NATOMS*INTIMAGE), &
133:   &      GTMP(3*NATOMS*INTIMAGE), &131:   &      GTMP(3*NATOMS*INTIMAGE), &
134:   &      DIAG(3*NATOMS*INTIMAGE), STP(3*NATOMS*INTIMAGE), SEARCHSTEP(0:INTMUPDATE,(3*NATOMS)*INTIMAGE), &132:   &      DIAG(3*NATOMS*INTIMAGE), STP(3*NATOMS*INTIMAGE), SEARCHSTEP(0:INTMUPDATE,(3*NATOMS)*INTIMAGE), &
135:   &      GDIF(0:INTMUPDATE,(3*NATOMS)*INTIMAGE),GLAST((3*NATOMS)*INTIMAGE), XSAVE((3*NATOMS)*INTIMAGE), &133:   &      GDIF(0:INTMUPDATE,(3*NATOMS)*INTIMAGE),GLAST((3*NATOMS)*INTIMAGE), XSAVE((3*NATOMS)*INTIMAGE), &
136:   &      XYZ((3*NATOMS)*(INTIMAGE+2)), GGG((3*NATOMS)*(INTIMAGE+2)), CHECKG((3*NATOMS)*INTIMAGE), IMGFREEZE(INTIMAGE), &134:   &      XYZ((3*NATOMS)*(INTIMAGE+2)), GGG((3*NATOMS)*(INTIMAGE+2)), CHECKG((3*NATOMS)*INTIMAGE), IMGFREEZE(INTIMAGE), &
137:   &      EEE(INTIMAGE+2), STEPIMAGE(INTIMAGE))135:   &      EEE(INTIMAGE+2), STEPIMAGE(INTIMAGE))
138: 136: 
139: ! ALLOCATE(VPLUS((3*NATOMS)*(INTIMAGE+2)),VMINUS((3*NATOMS)*(INTIMAGE+2)))   
140:  
141: SWITCHED=.FALSE.137: SWITCHED=.FALSE.
142: INTIMAGESAVE=INTIMAGE138: INTIMAGESAVE=INTIMAGE
143: NBACKTRACK=1139: NBACKTRACK=1
144: CALL MYCPU_TIME(STIME,.FALSE.)140: CALL MYCPU_TIME(STIME,.FALSE.)
145: WRITE(*,'(A,I6)') ' intlbfgs> Maximum number of steps for constraint potential phase is ',INTSTEPS1141: WRITE(*,'(A,I6)') ' intlbfgs> Maximum number of steps for constraint potential phase is ',INTSTEPS1
146: WRITE(*,'(A,I6,A,G20.10)') ' intlbfgs> Updates: ',INTMUPDATE,' maximum step size=',MAXINTBFGS142: WRITE(*,'(A,I6,A,G20.10)') ' intlbfgs> Updates: ',INTMUPDATE,' maximum step size=',MAXINTBFGS
147: ADDATOM=.FALSE.143: ADDATOM=.FALSE.
148: NFAIL=0144: NFAIL=0
149: IMGFREEZE(1:INTIMAGE)=.FALSE.145: IMGFREEZE(1:INTIMAGE)=.FALSE.
150: D=(3*NATOMS)*INTIMAGE146: D=(3*NATOMS)*INTIMAGE
571: NSTEPSMAX=INTSTEPS1567: NSTEPSMAX=INTSTEPS1
572: !568: !
573: ! Don;t want to redistribute images before even taking a step, so don;t call CHECKSEP.569: ! Don;t want to redistribute images before even taking a step, so don;t call CHECKSEP.
574: ! Must call CHECKREP to initialise NNREULSIVE, NREPI, NREPJ, etc. SEGV otherwise on second cycle!570: ! Must call CHECKREP to initialise NNREULSIVE, NREPI, NREPJ, etc. SEGV otherwise on second cycle!
575: !571: !
576: ! To take BH-type steps in the QCI space, jump back here. Leave SWITCHED true.572: ! To take BH-type steps in the QCI space, jump back here. Leave SWITCHED true.
577: !573: !
578: BESTWORST=1.0D100574: BESTWORST=1.0D100
579: 9876 CONTINUE575: 9876 CONTINUE
580: CALL CHECKREP(INTIMAGE,XYZ,(3*NATOMS),0,1)576: CALL CHECKREP(INTIMAGE,XYZ,(3*NATOMS),0,1)
581:  
582:  
583: !                DIFF=1.0D-7 
584: !                PRINT*,'analytic and numerical gradients:' 
585: !                CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS) 
586: !                DO J1=2,INTIMAGE+1 
587: !                   DO J2=1,3*NATOMS 
588: !                      J3=3*NATOMS*(J1-1)+J2 
589: !                      XYZ(J3)=XYZ(J3)+DIFF 
590: !                      CALL CONGRAD2(NMAXINT,NMININT,EPLUS,XYZ,VPLUS,EEE,IMGFREEZE,RMS) 
591: !                      XYZ(J3)=XYZ(J3)-2.0D0*DIFF 
592: !                      CALL CONGRAD2(NMAXINT,NMININT,EMINUS,XYZ,VMINUS,EEE,IMGFREEZE,RMS) 
593: !                      XYZ(J3)=XYZ(J3)+DIFF 
594: !                      IF ((ABS(GGG(J3)).NE.0.0D0).AND. & 
595: !     &               (ABS(100.0D0*(GGG(J3)-(EPLUS-EMINUS)/(2.0D0*DIFF))/GGG(J3)).GT.1.0D0)) THEN 
596: !                         WRITE(*,'(A,2I5,2F20.10,L5,A)') 'anal and num ',J1,J2,GGG(J3),(EPLUS-EMINUS)/(2.0D0*DIFF),  & 
597: !     & ATOMACTIVE((J2-1)/3+1),'   X'    
598: !                      ELSE 
599: !                         WRITE(*,'(A,2I5,2F20.10,L5)') 'anal and num ',J1,J2,GGG(J3),(EPLUS-EMINUS)/(2.0D0*DIFF),  & 
600: !     & ATOMACTIVE((J2-1)/3+1)   
601: !                      ENDIF 
602: !                   ENDDO 
603: !                ENDDO 
604: !  
605: !                STOP 
606:  
607:  
608: IF (QCIADDREP.GT.0) THEN577: IF (QCIADDREP.GT.0) THEN
609:    CALL CONGRAD3(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)578:    CALL CONGRAD3(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)
610: !579: !
611: ! Don't do the CONINT part of CONGRAD2 if CONINT isn't set. CONGRAD seems to be580: ! Don't do the CONINT part of CONGRAD2 if CONINT isn't set. CONGRAD seems to be
612: ! dong something different at the moment. Focus on CONGRAD2581: ! dong something different at the moment. Focus on CONGRAD2
613: !582: !
614: ! ELSEIF (CHECKCONINT) THEN583: ! ELSEIF (CHECKCONINT) THEN
615: ELSE584: ELSE
616:    CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)585:    CALL CONGRAD2(NMAXINT,NMININT,ETOTAL,XYZ,GGG,EEE,IMGFREEZE,RMS)
617: ! ELSE586: ! ELSE
826:                      WRITE(*,'(A,I6,A,I6)') ' intlbfgs> inconsistent non-identity lopermdist permutations for start and finish'795:                      WRITE(*,'(A,I6,A,I6)') ' intlbfgs> inconsistent non-identity lopermdist permutations for start and finish'
827:                   ENDIF796:                   ENDIF
828:                ENDIF797:                ENDIF
829:             ENDDO798:             ENDDO
830:             XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))=COORDSA(1:3*NATOMS)799:             XYZ(3*NATOMS*J3+1:3*NATOMS*(J3+1))=COORDSA(1:3*NATOMS)
831:          ENDIF800:          ENDIF
832:        ENDDO801:        ENDDO
833:     ENDDO np802:     ENDDO np
834:     LOCALPERMCUT=SAVELOCALPERMCUT803:     LOCALPERMCUT=SAVELOCALPERMCUT
835: 804: 
 805: !   STOP  !!!! DEBUG DJW
 806: ! 
836: !    COORDSB(1:3*NATOMS)=XYZ(1:3*NATOMS) ! starting endpoint807: !    COORDSB(1:3*NATOMS)=XYZ(1:3*NATOMS) ! starting endpoint
837: !    COORDSC(1:3*NATOMS)=XYZ(3*NATOMS*(INTIMAGE+1)+1:3*NATOMS*(INTIMAGE+2)) ! finish endpoint808: !    COORDSC(1:3*NATOMS)=XYZ(3*NATOMS*(INTIMAGE+1)+1:3*NATOMS*(INTIMAGE+2)) ! finish endpoint
838: !    SAVELOCALPERMCUT=LOCALPERMCUT809: !    SAVELOCALPERMCUT=LOCALPERMCUT
839: ! !810: ! !
840: ! ! needs to be a bit sloppier than usual to allow for distorted geometries. Otherwise we may get wrong assignments811: ! ! needs to be a bit sloppier than usual to allow for distorted geometries. Otherwise we may get wrong assignments
841: ! ! because we don't have enough neighbours.812: ! ! because we don't have enough neighbours.
842: ! !813: ! !
843: !    LOCALPERMCUT=QCIPERMCUT ! 0.8D0 814: !    LOCALPERMCUT=QCIPERMCUT ! 0.8D0 
844: !    DO J3=1,INTIMAGE815: !    DO J3=1,INTIMAGE
845: !       np: DO J1=1,NPERMGROUP816: !       np: DO J1=1,NPERMGROUP


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0