hdiff output

r31911/geopt.f 2017-02-14 10:30:21.606619964 +0000 r31910/geopt.f 2017-02-14 10:30:22.050625852 +0000
461: !              ALLOCATE(ZWK(NOPT,NEXMODES+1))461: !              ALLOCATE(ZWK(NOPT,NEXMODES+1))
462:                ALLOCATE(ZWK(1,1))462:                ALLOCATE(ZWK(1,1))
463:                ALLOCATE(ZSAVE(NOPT,NOPT))463:                ALLOCATE(ZSAVE(NOPT,NOPT))
464:                ZSAVE(1:NOPT,1:NOPT)=HESS(1:NOPT,1:NOPT)464:                ZSAVE(1:NOPT,1:NOPT)=HESS(1:NOPT,1:NOPT)
465: 465: 
466:                IF (RIGIDINIT) THEN466:                IF (RIGIDINIT) THEN
467:                   RBAANORMALMODET = .TRUE.467:                   RBAANORMALMODET = .TRUE.
468:                   CALL GENRIGID_EIGENVALUES(Q, ATMASS, EVALUES, INFO)468:                   CALL GENRIGID_EIGENVALUES(Q, ATMASS, EVALUES, INFO)
469:                   RBAANORMALMODET = .FALSE.469:                   RBAANORMALMODET = .FALSE.
470:                   WRITE(*,*) "geopt> This combination of keywords (LOWESTFRQ) has not been checked - sn402"470:                   WRITE(*,*) "geopt> This combination of keywords (LOWESTFRQ) has not been checked - sn402"
471:                ELSEIF (RBAAT.AND..NOT.PYGPERIODICT) THEN  ! hk286471:                ELSEIF (RBAAT) THEN  ! hk286
472:                   RBAANORMALMODET = .TRUE.472:                   RBAANORMALMODET = .TRUE.
473:                   CALL NRMLMD (Q, EVALUES, .TRUE.)473:                   CALL NRMLMD (Q, EVALUES, .TRUE.)
474:                   RBAANORMALMODET = .FALSE.474:                   RBAANORMALMODET = .FALSE.
475:                   PRINT *, "geopt> This combination of keywords has not been checked carefully - hk286"475:                   PRINT *, "geopt> This combination of keywords has not been checked carefully - hk286"
476:                ELSE476:                ELSE
477:                   CALL DSYEVR('N','I','U',NOPT,HESS,NOPT,0.0D0,1.0D0,1,NEXMODES+1,ABSTOL,477:                   CALL DSYEVR('N','I','U',NOPT,HESS,NOPT,0.0D0,1.0D0,1,NEXMODES+1,ABSTOL,
478:      &                        NFOUND,EVALUES,478:      &                        NFOUND,EVALUES,
479:      &                        ZWK,NOPT,ISUPPZ,WORK,479:      &                        ZWK,NOPT,ISUPPZ,WORK,
480:      &                        LWORK, IWORK, ILWORK, INFO )480:      &                        LWORK, IWORK, ILWORK, INFO )
481:                ENDIF481:                ENDIF
894: ! Back into the main branch of the subroutine.894: ! Back into the main branch of the subroutine.
895: ! This is where we actually calculate the eigenvectors of the (mass-weighted) Hessian.895: ! This is where we actually calculate the eigenvectors of the (mass-weighted) Hessian.
896:             ELSE896:             ELSE
897:                IF (DUMPV) THEN ! use job type 'V' to get eigenvectors897:                IF (DUMPV) THEN ! use job type 'V' to get eigenvectors
898: ! hk286898: ! hk286
899:                   IF (RIGIDINIT) THEN899:                   IF (RIGIDINIT) THEN
900:                      RBAANORMALMODET = .TRUE.900:                      RBAANORMALMODET = .TRUE.
901:                      ! Eigenvectors will be calculated because DUMPV = .TRUE.901:                      ! Eigenvectors will be calculated because DUMPV = .TRUE.
902:                      CALL GENRIGID_EIGENVALUES(Q, ATMASS, EVALUES, INFO)902:                      CALL GENRIGID_EIGENVALUES(Q, ATMASS, EVALUES, INFO)
903:                      RBAANORMALMODET = .FALSE.903:                      RBAANORMALMODET = .FALSE.
904:                   ELSEIF (RBAAT.AND..NOT.PYGPERIODICT) THEN904:                   ELSEIF (RBAAT) THEN
905:                      RBAANORMALMODET = .TRUE.905:                      RBAANORMALMODET = .TRUE.
906:                      ! Last argument to NRMLMD is EIGENVECTORT. Set this to .TRUE. so eigenvectors are calculated906:                      ! Last argument to NRMLMD is EIGENVECTORT. Set this to .TRUE. so eigenvectors are calculated
907:                      CALL NRMLMD (Q, EVALUES, .TRUE.)907:                      CALL NRMLMD (Q, EVALUES, .TRUE.)
908:                      RBAANORMALMODET = .FALSE.908:                      RBAANORMALMODET = .FALSE.
909:                   ELSE909:                   ELSE
910:                      CALL DSYEV('V','U',NOPT,HESS,NOPT,EVALUES,TEMPA,9*NATOMS,INFO)910:                      CALL DSYEV('V','U',NOPT,HESS,NOPT,EVALUES,TEMPA,9*NATOMS,INFO)
911:                   ENDIF911:                   ENDIF
912:                ELSE   ! Then we don't need to calculate the eigenvectors. Eigenvalues only.912:                ELSE   ! Then we don't need to calculate the eigenvectors. Eigenvalues only.
913: ! hk286 - optional number of ENDHESS not yet implemented913: ! hk286 - optional number of ENDHESS not yet implemented
914:                   IF (RIGIDINIT) THEN914:                   IF (RIGIDINIT) THEN
915:                      RBAANORMALMODET = .TRUE.915:                      RBAANORMALMODET = .TRUE.
916:                      CALL GENRIGID_EIGENVALUES(Q, ATMASS, EVALUES, INFO)916:                      CALL GENRIGID_EIGENVALUES(Q, ATMASS, EVALUES, INFO)
917:                      RBAANORMALMODET = .FALSE.917:                      RBAANORMALMODET = .FALSE.
918:                   ELSE918:                   ELSE
919:                      IF ((NENDHESS.GE.NOPT).OR.(VARIABLES.AND.(NENDHESS.GE.NATOMS))) THEN919:                      IF ((NENDHESS.GE.NOPT).OR.(VARIABLES.AND.(NENDHESS.GE.NATOMS))) THEN
920: C                       CALL DSYEV('N','U',NOPT,HESS,NOPT,EVALUES,TEMPA,9*NATOMS,INFO)920: C                       CALL DSYEV('N','U',NOPT,HESS,NOPT,EVALUES,TEMPA,9*NATOMS,INFO)
921: C  csw34> changed the call used here to be the same as if NENDHESS < NOPT below921: C  csw34> changed the call used here to be the same as if NENDHESS < NOPT below
922: C         as this leads to a 20% speed increase!922: C         as this leads to a 20% speed increase!
923:                         ABSTOL=DLAMCH('Safe  minimum')923:                         ABSTOL=DLAMCH('Safe  minimum')
924:                         ALLOCATE(ZWK(1,1)) ! not referenced for job type 'N'924:                         ALLOCATE(ZWK(1,1)) ! not referenced for job type 'N'
925:                         IF (RBAAT.AND..NOT.PYGPERIODICT) THEN ! hk286925:                         IF (RBAAT) THEN ! hk286
926:                            RBAANORMALMODET = .TRUE.926:                            RBAANORMALMODET = .TRUE.
927:                            CALL NRMLMD (Q, EVALUES, .TRUE.)927:                            CALL NRMLMD (Q, EVALUES, .TRUE.)
928:                            RBAANORMALMODET = .FALSE.928:                            RBAANORMALMODET = .FALSE.
929:                         ELSE929:                         ELSE
930:                            CALL DSYEVR('N','I','U',NOPT,HESS,NOPT,0.0D0,1.0D0,1,NOPT,ABSTOL,930:                            CALL DSYEVR('N','I','U',NOPT,HESS,NOPT,0.0D0,1.0D0,1,NOPT,ABSTOL,
931:      &                          NFOUND,EVALUES,ZWK,NOPT,ISUPPZ,WORK,LWORK,IWORK,ILWORK,INFO )931:      &                          NFOUND,EVALUES,ZWK,NOPT,ISUPPZ,WORK,LWORK,IWORK,ILWORK,INFO )
932:                         ENDIF932:                         ENDIF
933:                         DEALLOCATE(ZWK)933:                         DEALLOCATE(ZWK)
934:                      ELSE934:                      ELSE
935:                         ABSTOL=DLAMCH('Safe  minimum')935:                         ABSTOL=DLAMCH('Safe  minimum')
936:                         ALLOCATE(ZWK(1,1)) ! not referenced for job type 'N'936:                         ALLOCATE(ZWK(1,1)) ! not referenced for job type 'N'
937:                         IF (RBAAT.AND..NOT.PYGPERIODICT) THEN ! hk286937:                         IF (RBAAT) THEN ! hk286
938:                            RBAANORMALMODET = .TRUE.938:                            RBAANORMALMODET = .TRUE.
939:                            CALL NRMLMD (Q, EVALUES, .TRUE.)939:                            CALL NRMLMD (Q, EVALUES, .TRUE.)
940:                            RBAANORMALMODET = .FALSE.940:                            RBAANORMALMODET = .FALSE.
941:                         ELSE941:                         ELSE
942:                            CALL DSYEVR('N','I','U',NOPT,HESS,NOPT,0.0D0,1.0D0,1,NENDHESS,ABSTOL,942:                            CALL DSYEVR('N','I','U',NOPT,HESS,NOPT,0.0D0,1.0D0,1,NENDHESS,ABSTOL,
943:      &                          NFOUND,EVALUES,ZWK,NOPT,ISUPPZ,WORK,LWORK,IWORK,ILWORK,INFO )943:      &                          NFOUND,EVALUES,ZWK,NOPT,ISUPPZ,WORK,LWORK,IWORK,ILWORK,INFO )
944:                         ENDIF944:                         ENDIF
945:                         DEALLOCATE(ZWK)945:                         DEALLOCATE(ZWK)
946:                      ENDIF946:                      ENDIF
947:                   ENDIF947:                   ENDIF
1368:                       IF (RINGPOLYMERT) THEN1368:                       IF (RINGPOLYMERT) THEN
1369:                          CALL MASSWTRP(NOPT,RPMASSES,RPDOF)1369:                          CALL MASSWTRP(NOPT,RPMASSES,RPDOF)
1370:                       ELSE1370:                       ELSE
1371:                          ! sn402: we're wasting a bit of time here when RBAAT is TRUE - we call this function1371:                          ! sn402: we're wasting a bit of time here when RBAAT is TRUE - we call this function
1372:                          ! but we then overwrite the mass-weighted hessian in NRMLMD1372:                          ! but we then overwrite the mass-weighted hessian in NRMLMD
1373:                          CALL MASSWT2(NATOMS,ATMASS,Q,VNEW,.TRUE.)1373:                          CALL MASSWT2(NATOMS,ATMASS,Q,VNEW,.TRUE.)
1374:                       ENDIF1374:                       ENDIF
1375:                    ENDIF1375:                    ENDIF
1376: ! Diagonalise1376: ! Diagonalise
1377: ! hk286 - normal modes calculation, for rigid body angle-axis the diagonalization is rather complex1377: ! hk286 - normal modes calculation, for rigid body angle-axis the diagonalization is rather complex
1378:                    IF (RBAAT.AND..NOT.PYGPERIODICT) THEN1378:                    IF (RBAAT) THEN
1379:                       RBAANORMALMODET = .TRUE.1379:                       RBAANORMALMODET = .TRUE.
1380:                       CALL NRMLMD (Q, DIAG, .TRUE.)1380:                       CALL NRMLMD (Q, DIAG, .TRUE.)
1381:                       RBAANORMALMODET = .FALSE.1381:                       RBAANORMALMODET = .FALSE.
1382:                    ELSE1382:                    ELSE
1383:                       CALL DSYEV('V','U',NOPT,HESS,SIZE(HESS,1),DIAG,TEMPA,9*NATOMS,INFO)1383:                       CALL DSYEV('V','U',NOPT,HESS,SIZE(HESS,1),DIAG,TEMPA,9*NATOMS,INFO)
1384:                    ENDIF1384:                    ENDIF
1385: ! hk2861385: ! hk286
1386: ! If we're freezing atoms, some zero eiganvalue modes can creep in that1386: ! If we're freezing atoms, some zero eiganvalue modes can creep in that
1387: ! are NOT real i.e. one atoms moving and all others stationary. Here, we1387: ! are NOT real i.e. one atoms moving and all others stationary. Here, we
1388: ! check and remove these using ZT1388: ! check and remove these using ZT


r31911/grad.f90 2017-02-14 10:30:21.382616993 +0000 r31910/grad.f90 2017-02-14 10:30:21.826622882 +0000
536: 536: 
537:           GGG(NOPT+1:NOPT*(NIMAGE+1)) = GGG(NOPT+1:NOPT*(NIMAGE+1)) + SSS(NOPT+1:NOPT*(NIMAGE+1))537:           GGG(NOPT+1:NOPT*(NIMAGE+1)) = GGG(NOPT+1:NOPT*(NIMAGE+1)) + SSS(NOPT+1:NOPT*(NIMAGE+1))
538: 538: 
539:           IF (NEBRESEEDT.AND.(NREPULSIVE.GT.0).AND.ADDREPT) THEN539:           IF (NEBRESEEDT.AND.(NREPULSIVE.GT.0).AND.ADDREPT) THEN
540:              DO J2=1,NREPULSIVE540:              DO J2=1,NREPULSIVE
541:                 DO J1=2,NIMAGE+1541:                 DO J1=2,NIMAGE+1
542:                    IF ((BADIMAGE(J1).AND.(REPPOW(J2).GT.0)).OR.(BADPEPTIDE(J1).AND.(REPPOW(J2).LT.0))) THEN542:                    IF ((BADIMAGE(J1).AND.(REPPOW(J2).GT.0)).OR.(BADPEPTIDE(J1).AND.(REPPOW(J2).LT.0))) THEN
543: !543: !
544: !  Add repulsive/constraint terms defined as interatomic distances.544: !  Add repulsive/constraint terms defined as interatomic distances.
545: !545: !
 546: 
546:                       DIST=SQRT((XYZ(NOPT*(J1-1)+3*(ORDERI(J2)-1)+1)-XYZ(NOPT*(J1-1)+3*(ORDERJ(J2)-1)+1))**2 &547:                       DIST=SQRT((XYZ(NOPT*(J1-1)+3*(ORDERI(J2)-1)+1)-XYZ(NOPT*(J1-1)+3*(ORDERJ(J2)-1)+1))**2 &
547:   &                            +(XYZ(NOPT*(J1-1)+3*(ORDERI(J2)-1)+2)-XYZ(NOPT*(J1-1)+3*(ORDERJ(J2)-1)+2))**2 &548:   &                            +(XYZ(NOPT*(J1-1)+3*(ORDERI(J2)-1)+2)-XYZ(NOPT*(J1-1)+3*(ORDERJ(J2)-1)+2))**2 &
548:   &                            +(XYZ(NOPT*(J1-1)+3*(ORDERI(J2)-1)+3)-XYZ(NOPT*(J1-1)+3*(ORDERJ(J2)-1)+3))**2)549:   &                            +(XYZ(NOPT*(J1-1)+3*(ORDERI(J2)-1)+3)-XYZ(NOPT*(J1-1)+3*(ORDERJ(J2)-1)+3))**2)
549: 550: 
550:                       REPGRAD(1:NOPT)=0.0D0551:                       REPGRAD(1:NOPT)=0.0D0
551: 552: 
552:                       DUMMY=DIST-DISTREF(J2)  !  DJW BUG this J2 was J1!553:                       DUMMY=DIST-DISTREF(J2)  !  DJW BUG this J2 was J1!
553:                       IF (DUMMY.EQ.0.0D0) DUMMY=1.0D-10554:                       IF (DUMMY.EQ.0.0D0) DUMMY=1.0D-10
554: 555: 
555:                       REPGRAD(3*(ORDERI(J2)-1)+1:3*(ORDERI(J2)-1)+3)= &556:                       REPGRAD(3*(ORDERI(J2)-1)+1:3*(ORDERI(J2)-1)+3)= &


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0