hdiff output

r31917/keywords.f 2017-02-15 17:30:16.392819744 +0000 r31916/keywords.f 2017-02-15 17:30:17.704837437 +0000
5603:          DO J1=1,NADDTARGET5603:          DO J1=1,NADDTARGET
5604:             DO J2=1,NADDTARGET5604:             DO J2=1,NADDTARGET
5605:                READ(LUNIT,*) PYADDREP(J2,J1), PYADDATT(J2,J1)5605:                READ(LUNIT,*) PYADDREP(J2,J1), PYADDATT(J2,J1)
5606:                WRITE(*,'(2I6,2G20.10)') J1,J2,PYADDREP(J2,J1),PYADDATT(J2,J1)5606:                WRITE(*,'(2I6,2G20.10)') J1,J2,PYADDREP(J2,J1),PYADDATT(J2,J1)
5607:             ENDDO5607:             ENDDO
5608:          ENDDO5608:          ENDDO
5609:          CLOSE(LUNIT)5609:          CLOSE(LUNIT)
5610: 5610: 
5611:       ELSE IF (WORD.EQ.'PYGPERIODIC') THEN5611:       ELSE IF (WORD.EQ.'PYGPERIODIC') THEN
5612:             NRBSITES = 25612:             NRBSITES = 2
5613:             NPYSITE=NATOMS/2 
5614:             ALLOCATE(RBSITE(NRBSITES,3))5613:             ALLOCATE(RBSITE(NRBSITES,3))
5615:             PYGPERIODICT = .TRUE.5614:             PYGPERIODICT = .TRUE.
5616: !            ANGLEAXIS2=.TRUE.5615: !            ANGLEAXIS2=.TRUE.
5617:             RBAAT=.TRUE.5616:             RBAAT=.TRUE.
5618:             CALL READF(PYA1(1))5617:             CALL READF(PYA1(1))
5619:             CALL READF(PYA1(2))5618:             CALL READF(PYA1(2))
5620:             CALL READF(PYA1(3))5619:             CALL READF(PYA1(3))
5621:             CALL READF(PYA2(1))5620:             CALL READF(PYA2(1))
5622:             CALL READF(PYA2(2))5621:             CALL READF(PYA2(2))
5623:             CALL READF(PYA2(3))5622:             CALL READF(PYA2(3))


r31917/ncutils.f90 2017-02-15 17:30:16.164816718 +0000 r31916/ncutils.f90 2017-02-15 17:30:17.048828451 +0000
1534: ! format and updated for AMBER, NAB and AMH 30/5/11 DJW.1534: ! format and updated for AMBER, NAB and AMH 30/5/11 DJW.
1535: !1535: !
1536:      SUBROUTINE MAKEPATHINFO1536:      SUBROUTINE MAKEPATHINFO
1537:      USE SYMINF1537:      USE SYMINF
1538:      USE MODHESS1538:      USE MODHESS
1539:      USE MODCHARMM1539:      USE MODCHARMM
1540:      USE PORFUNCS1540:      USE PORFUNCS
1541:      USE MODUNRES1541:      USE MODUNRES
1542:      USE KEY, ONLY: FILTH, FILTHSTR, UNRST, TWOD, BULKT, MACHINE, RIGIDBODY, NOFRQS, PERMDIST, &1542:      USE KEY, ONLY: FILTH, FILTHSTR, UNRST, TWOD, BULKT, MACHINE, RIGIDBODY, NOFRQS, PERMDIST, &
1543:   &                 AMHT, SEQ, SDT, NRES_AMH_TEMP, AMBERT, NABT, MACROCYCLET, TTM3T, BOWMANT, &1543:   &                 AMHT, SEQ, SDT, NRES_AMH_TEMP, AMBERT, NABT, MACROCYCLET, TTM3T, BOWMANT, &
1544:   &                 HESSDUMPT,INSTANTONSTARTDUMPT, RBAAT, AMBER12T, VARIABLES, FRQCONV2, PYGPERIODICT1544:   &                 HESSDUMPT,INSTANTONSTARTDUMPT, RBAAT, AMBER12T, VARIABLES, FRQCONV2
1545: 1545: 
1546:      USE COMMONS, ONLY: ATMASS, NINTS, ZSYM, PARAM1, PARAM2, PARAM3, DEBUG1546:      USE COMMONS, ONLY: ATMASS, NINTS, ZSYM, PARAM1, PARAM2, PARAM3, DEBUG
1547: 1547: 
1548:      USE GENRIGID1548:      USE GENRIGID
1549: 1549: 
1550:      IMPLICIT NONE1550:      IMPLICIT NONE
1551:      DOUBLE PRECISION RMAT(3,3), DIST, DIST21551:      DOUBLE PRECISION RMAT(3,3), DIST, DIST2
1552: 1552: 
1553: !    LOCAL AMH VARIABLES1553: !    LOCAL AMH VARIABLES
1554:      INTEGER :: I_RES, GLY_COUNT1554:      INTEGER :: I_RES, GLY_COUNT
1775:               ENDIF1775:               ENDIF
1776:               WRITE(88,'(I6,1X,A4)') HORDER,FPGRP1776:               WRITE(88,'(I6,1X,A4)') HORDER,FPGRP
1777:               IF (.NOT.NOFRQS) THEN1777:               IF (.NOT.NOFRQS) THEN
1778:                  IF (RIGIDINIT) THEN1778:                  IF (RIGIDINIT) THEN
1779:                     CALL GENRIGID_EIGENVALUES(MI(DUMMY%I)%DATA%X, ATMASS, DIAG, INFO)1779:                     CALL GENRIGID_EIGENVALUES(MI(DUMMY%I)%DATA%X, ATMASS, DIAG, INFO)
1780: 1780: 
1781:                     IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN1781:                     IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN
1782:                        CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)1782:                        CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)
1783:                     ENDIF1783:                     ENDIF
1784: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame1784: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame
1785:                  ELSE IF (RBAAT.AND..NOT.PYGPERIODICT) THEN1785:                  ELSE IF (RBAAT) THEN
1786:                     RBAANORMALMODET = .TRUE.1786:                     RBAANORMALMODET = .TRUE.
1787:                     CALL POTENTIAL(MI(DUMMY%I)%DATA%X,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)1787:                     CALL POTENTIAL(MI(DUMMY%I)%DATA%X,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
1788:                     CALL NRMLMD (MI(DUMMY%I)%DATA%X, DIAG, .FALSE.)1788:                     CALL NRMLMD (MI(DUMMY%I)%DATA%X, DIAG, .FALSE.)
1789:                     RBAANORMALMODET = .FALSE.1789:                     RBAANORMALMODET = .FALSE.
1790: !                   WRITE(88,'(3G20.10)') (DIAG(J2),J2=1,NOPT)1790: !                   WRITE(88,'(3G20.10)') (DIAG(J2),J2=1,NOPT)
1791:                  ELSE1791:                  ELSE
1792:                     IF (ENDNUMHESS) THEN1792:                     IF (ENDNUMHESS) THEN
1793:                         CALL MAKENUMHESS(MI(DUMMY%I)%DATA%X,NATOMS)1793:                         CALL MAKENUMHESS(MI(DUMMY%I)%DATA%X,NATOMS)
1794:                     ELSE1794:                     ELSE
1795:                        CALL POTENTIAL(MI(DUMMY%I)%DATA%X,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)1795:                        CALL POTENTIAL(MI(DUMMY%I)%DATA%X,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
2103: ! hk286 - TS is recorded in rigid body coordinates2103: ! hk286 - TS is recorded in rigid body coordinates
2104: ! sn402 - but for some reason we have ATOMRIGIDCOORDT set to TRUE at this point (which suggests cartesian coordinates)2104: ! sn402 - but for some reason we have ATOMRIGIDCOORDT set to TRUE at this point (which suggests cartesian coordinates)
2105: ! In order for GENRIGID_EIGENVALUES to work, we switch it to FALSE for the duration of this call.2105: ! In order for GENRIGID_EIGENVALUES to work, we switch it to FALSE for the duration of this call.
2106:                     ATOMRIGIDCOORDT = .FALSE.2106:                     ATOMRIGIDCOORDT = .FALSE.
2107:                     CALL GENRIGID_EIGENVALUES(TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X, ATMASS, DIAG, INFO)2107:                     CALL GENRIGID_EIGENVALUES(TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X, ATMASS, DIAG, INFO)
2108:                     ATOMRIGIDCOORDT = .TRUE.2108:                     ATOMRIGIDCOORDT = .TRUE.
2109:                     IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN2109:                     IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN
2110:                         CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)2110:                         CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)
2111:                     ENDIF2111:                     ENDIF
2112: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame2112: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame
2113:                   ELSE IF (RBAAT.AND..NOT.PYGPERIODICT) THEN2113:                   ELSE IF (RBAAT) THEN
2114:                     RBAANORMALMODET = .TRUE.2114:                     RBAANORMALMODET = .TRUE.
2115:                     CALL POTENTIAL(TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)2115:                     CALL POTENTIAL(TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
2116:                     CALL NRMLMD (TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X, DIAG, .FALSE.)2116:                     CALL NRMLMD (TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X, DIAG, .FALSE.)
2117:                     RBAANORMALMODET = .FALSE.2117:                     RBAANORMALMODET = .FALSE.
2118: !                   WRITE(88,'(3G20.10)') (DIAG(J2),J2=1,NOPT)2118: !                   WRITE(88,'(3G20.10)') (DIAG(J2),J2=1,NOPT)
2119:                   ELSE2119:                   ELSE
2120:                     IF (ENDNUMHESS) THEN2120:                     IF (ENDNUMHESS) THEN
2121:                         CALL MAKENUMHESS(TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X,NATOMS)2121:                         CALL MAKENUMHESS(TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X,NATOMS)
2122:                     ELSE2122:                     ELSE
2123:                         CALL POTENTIAL(TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)2123:                         CALL POTENTIAL(TS(MI(DUMMY%I)%DATA%CTS(DUMMY%J))%DATA%X,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
2244: 2244: 
2245: !2245: !
2246: !  Dump min to path.info2246: !  Dump min to path.info
2247: !2247: !
2248:      SUBROUTINE MAKEMINPATHINFO(MINIMUM)2248:      SUBROUTINE MAKEMINPATHINFO(MINIMUM)
2249:      USE SYMINF 2249:      USE SYMINF 
2250:      USE MODHESS2250:      USE MODHESS
2251:      USE MODCHARMM2251:      USE MODCHARMM
2252:      USE MODUNRES2252:      USE MODUNRES
2253:      USE KEY, ONLY: FILTH, FILTHSTR, UNRST, TWOD, BULKT, MACHINE, NOFRQS, AMBERT, NABT, AMHT, SEQ, TARFL, NRES_AMH_TEMP, SDT, &2253:      USE KEY, ONLY: FILTH, FILTHSTR, UNRST, TWOD, BULKT, MACHINE, NOFRQS, AMBERT, NABT, AMHT, SEQ, TARFL, NRES_AMH_TEMP, SDT, &
2254:           AMBER12T, RBAAT, MACROCYCLET, GTHOMSONT, TTM3T, BOWMANT, HESSDUMPT, INSTANTONSTARTDUMPT,FREEZE,NONFREEZE, FRQCONV2, &2254:           AMBER12T, RBAAT, MACROCYCLET, GTHOMSONT, TTM3T, BOWMANT, HESSDUMPT, INSTANTONSTARTDUMPT,FREEZE,NONFREEZE, FRQCONV2
2255:           PYGPERIODICT 
2256:      USE COMMONS, ONLY: ATMASS, NINTS, ZSYM2255:      USE COMMONS, ONLY: ATMASS, NINTS, ZSYM
2257:      USE PORFUNCS2256:      USE PORFUNCS
2258:      USE GENRIGID2257:      USE GENRIGID
2259:      IMPLICIT NONE2258:      IMPLICIT NONE
2260: 2259: 
2261:      CHARACTER(LEN=20) :: PINFOSTRING2260:      CHARACTER(LEN=20) :: PINFOSTRING
2262:      DOUBLE PRECISION :: DIHE,ALLANG,DISTPF,DUMMY1,GRAD(3*NATOMS),RMS,DIAG(3*NATOMS),TEMPA(9*NATOMS),DUMQ(3*NATOMS)2261:      DOUBLE PRECISION :: DIHE,ALLANG,DISTPF,DUMMY1,GRAD(3*NATOMS),RMS,DIAG(3*NATOMS),TEMPA(9*NATOMS),DUMQ(3*NATOMS)
2263:      INTEGER :: HORDER,INFO,J2,K1,RECLEN,ISTAT,J1,LUNIT,GETUNIT, MINIMUM2262:      INTEGER :: HORDER,INFO,J2,K1,RECLEN,ISTAT,J1,LUNIT,GETUNIT, MINIMUM
2264:      LOGICAL :: BTEST,KD,NNZ,NINTB,MINFRQDONE2263:      LOGICAL :: BTEST,KD,NNZ,NINTB,MINFRQDONE
2265:      DOUBLE PRECISION :: QMIN(3*NATOMS),FRQSMIN(3*NATOMS),EMIN,INERTIA(3,3)2264:      DOUBLE PRECISION :: QMIN(3*NATOMS),FRQSMIN(3*NATOMS),EMIN,INERTIA(3,3)
2501:            CALL SYMMETRY(HORDER,.FALSE.,QMIN,INERTIA)2500:            CALL SYMMETRY(HORDER,.FALSE.,QMIN,INERTIA)
2502:            WRITE(88,'(I6,1X,A4)') HORDER,FPGRP2501:            WRITE(88,'(I6,1X,A4)') HORDER,FPGRP
2503:            IF (.NOT.NOFRQS) THEN2502:            IF (.NOT.NOFRQS) THEN
2504:               IF (RIGIDINIT) THEN2503:               IF (RIGIDINIT) THEN
2505:                  CALL GENRIGID_EIGENVALUES(QMIN, ATMASS, DIAG, INFO)2504:                  CALL GENRIGID_EIGENVALUES(QMIN, ATMASS, DIAG, INFO)
2506: 2505: 
2507:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN2506:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN
2508:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)2507:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)
2509:                  ENDIF2508:                  ENDIF
2510: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame2509: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame
2511:               ELSE IF (RBAAT.AND..NOT.PYGPERIODICT) THEN2510:               ELSE IF (RBAAT) THEN
2512:                  RBAANORMALMODET = .TRUE.2511:                  RBAANORMALMODET = .TRUE.
2513:                  CALL POTENTIAL(QMIN,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)2512:                  CALL POTENTIAL(QMIN,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
2514:                  CALL NRMLMD (QMIN, DIAG, .FALSE.)2513:                  CALL NRMLMD (QMIN, DIAG, .FALSE.)
2515:                  RBAANORMALMODET = .FALSE.2514:                  RBAANORMALMODET = .FALSE.
2516:               ELSE2515:               ELSE
2517:                  IF (ENDNUMHESS) THEN2516:                  IF (ENDNUMHESS) THEN
2518:                     CALL MAKENUMHESS(QMIN,NATOMS)2517:                     CALL MAKENUMHESS(QMIN,NATOMS)
2519:                  ELSE2518:                  ELSE
2520:                     CALL POTENTIAL(QMIN,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)2519:                     CALL POTENTIAL(QMIN,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
2521:                  ENDIF2520:                  ENDIF
2610: !2609: !
2611: !  Dump TS to path.info 2610: !  Dump TS to path.info 
2612: !2611: !
2613:      SUBROUTINE MAKETSPATHINFO(TSN)2612:      SUBROUTINE MAKETSPATHINFO(TSN)
2614: 2613: 
2615:      USE SYMINF 2614:      USE SYMINF 
2616:      USE MODHESS2615:      USE MODHESS
2617:      USE MODCHARMM2616:      USE MODCHARMM
2618:      USE MODUNRES2617:      USE MODUNRES
2619:      USE KEY, ONLY: FILTH, FILTHSTR, UNRST, TWOD, BULKT, MACHINE, NOFRQS, AMBERT, NABT, AMHT, SEQ, TARFL, NRES_AMH_TEMP, SDT, &2618:      USE KEY, ONLY: FILTH, FILTHSTR, UNRST, TWOD, BULKT, MACHINE, NOFRQS, AMBERT, NABT, AMHT, SEQ, TARFL, NRES_AMH_TEMP, SDT, &
2620:           AMBER12T, RBAAT, MACROCYCLET, GTHOMSONT, TTM3T, BOWMANT, HESSDUMPT, INSTANTONSTARTDUMPT,FREEZE,NONFREEZE, FRQCONV2, &2619:           AMBER12T, RBAAT, MACROCYCLET, GTHOMSONT, TTM3T, BOWMANT, HESSDUMPT, INSTANTONSTARTDUMPT,FREEZE,NONFREEZE, FRQCONV2
2621:           PYGPERIODICT 
2622:      USE COMMONS, ONLY: ATMASS, NINTS, ZSYM2620:      USE COMMONS, ONLY: ATMASS, NINTS, ZSYM
2623:      USE PORFUNCS2621:      USE PORFUNCS
2624:      USE GENRIGID2622:      USE GENRIGID
2625:      IMPLICIT NONE2623:      IMPLICIT NONE
2626: 2624: 
2627:      CHARACTER(LEN=20) :: PINFOSTRING2625:      CHARACTER(LEN=20) :: PINFOSTRING
2628:      DOUBLE PRECISION :: DIHE,ALLANG,DISTPF,DUMMY1,GRAD(3*NATOMS),RMS,DIAG(3*NATOMS),TEMPA(9*NATOMS),DUMQ(3*NATOMS)2626:      DOUBLE PRECISION :: DIHE,ALLANG,DISTPF,DUMMY1,GRAD(3*NATOMS),RMS,DIAG(3*NATOMS),TEMPA(9*NATOMS),DUMQ(3*NATOMS)
2629:      INTEGER :: HORDER,INFO,J2,K1,RECLEN,ISTAT,J1,LUNIT,GETUNIT,TSN2627:      INTEGER :: HORDER,INFO,J2,K1,RECLEN,ISTAT,J1,LUNIT,GETUNIT,TSN
2630:      LOGICAL :: BTEST,KD,NNZ,NINTB,TSFRQDONE2628:      LOGICAL :: BTEST,KD,NNZ,NINTB,TSFRQDONE
2631:      DOUBLE PRECISION :: QTS(3*NATOMS),FRQSTS(3*NATOMS),ETS,INERTIA(3,3)2629:      DOUBLE PRECISION :: QTS(3*NATOMS),FRQSTS(3*NATOMS),ETS,INERTIA(3,3)
2880:            IF (.NOT.NOFRQS) THEN2878:            IF (.NOT.NOFRQS) THEN
2881:               IF (RIGIDINIT) THEN2879:               IF (RIGIDINIT) THEN
2882: ! hk286 - TS is recorded in rigid body coordinates2880: ! hk286 - TS is recorded in rigid body coordinates
2883:                  ATOMRIGIDCOORDT = .FALSE.2881:                  ATOMRIGIDCOORDT = .FALSE.
2884:                  CALL GENRIGID_EIGENVALUES(QTS, ATMASS, DIAG, INFO)2882:                  CALL GENRIGID_EIGENVALUES(QTS, ATMASS, DIAG, INFO)
2885:                  ATOMRIGIDCOORDT = .TRUE.2883:                  ATOMRIGIDCOORDT = .TRUE.
2886:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN2884:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN
2887:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)2885:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)
2888:                  ENDIF2886:                  ENDIF
2889: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame2887: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame
2890:               ELSE IF (RBAAT.AND..NOT.PYGPERIODICT) THEN2888:               ELSE IF (RBAAT) THEN
2891:                  RBAANORMALMODET = .TRUE.2889:                  RBAANORMALMODET = .TRUE.
2892:                  CALL POTENTIAL(QTS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)2890:                  CALL POTENTIAL(QTS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
2893:                  CALL NRMLMD (QTS, DIAG, .FALSE.)2891:                  CALL NRMLMD (QTS, DIAG, .FALSE.)
2894:                  RBAANORMALMODET = .FALSE.2892:                  RBAANORMALMODET = .FALSE.
2895:               ELSE2893:               ELSE
2896:                  IF (ENDNUMHESS) THEN2894:                  IF (ENDNUMHESS) THEN
2897:                     CALL MAKENUMHESS(QTS,NATOMS)2895:                     CALL MAKENUMHESS(QTS,NATOMS)
2898:                  ELSE2896:                  ELSE
2899:                     CALL POTENTIAL(QTS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)2897:                     CALL POTENTIAL(QTS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
2900:                  ENDIF2898:                  ENDIF
2998: !2996: !
2999: !  Dump the latest min-sad-min triple to path.info in the usual format2997: !  Dump the latest min-sad-min triple to path.info in the usual format
3000: !  2998: !  
3001:      SUBROUTINE MAKEALLPATHINFO(QTS,QPLUS,QMINUS,ETS,EPLUS,EMINUS,FRQSTS,FRQSPLUS,FRQSMINUS)2999:      SUBROUTINE MAKEALLPATHINFO(QTS,QPLUS,QMINUS,ETS,EPLUS,EMINUS,FRQSTS,FRQSPLUS,FRQSMINUS)
3002:      USE SYMINF 3000:      USE SYMINF 
3003:      USE MODHESS3001:      USE MODHESS
3004:      USE MODCHARMM3002:      USE MODCHARMM
3005:      USE MODUNRES3003:      USE MODUNRES
3006:      USE KEY, ONLY: FILTH, FILTHSTR, UNRST, TWOD, BULKT, MACHINE, NOFRQS, AMBERT, NABT, AMHT, SEQ, TARFL, NRES_AMH_TEMP, SDT, &3004:      USE KEY, ONLY: FILTH, FILTHSTR, UNRST, TWOD, BULKT, MACHINE, NOFRQS, AMBERT, NABT, AMHT, SEQ, TARFL, NRES_AMH_TEMP, SDT, &
3007:           AMBER12T, RBAAT, MACROCYCLET, GTHOMSONT, TTM3T, BOWMANT, HESSDUMPT, INSTANTONSTARTDUMPT,FREEZE,NONFREEZE, &3005:           AMBER12T, RBAAT, MACROCYCLET, GTHOMSONT, TTM3T, BOWMANT, HESSDUMPT, INSTANTONSTARTDUMPT,FREEZE,NONFREEZE, &
3008:   &       VARIABLES, FRQCONV2, PYGPERIODICT3006:   &       VARIABLES, FRQCONV2
3009:      USE COMMONS, ONLY: ATMASS, NINTS, ZSYM3007:      USE COMMONS, ONLY: ATMASS, NINTS, ZSYM
3010:      USE PORFUNCS3008:      USE PORFUNCS
3011:      USE GENRIGID3009:      USE GENRIGID
3012:      IMPLICIT NONE3010:      IMPLICIT NONE
3013: 3011: 
3014:      CHARACTER(LEN=20) :: PINFOSTRING3012:      CHARACTER(LEN=20) :: PINFOSTRING
3015:      DOUBLE PRECISION :: DIHE,ALLANG,DISTPF,DUMMY1,GRAD(NOPT),RMS,DIAG(NOPT),TEMPA(9*NATOMS),DUMQ(NOPT)3013:      DOUBLE PRECISION :: DIHE,ALLANG,DISTPF,DUMMY1,GRAD(NOPT),RMS,DIAG(NOPT),TEMPA(9*NATOMS),DUMQ(NOPT)
3016:      INTEGER :: HORDER,INFO,J2,K1,RECLEN,ISTAT,J1,LUNIT,GETUNIT3014:      INTEGER :: HORDER,INFO,J2,K1,RECLEN,ISTAT,J1,LUNIT,GETUNIT
3017:      LOGICAL :: BTEST,KD,NNZ,NINTB,TSFRQDONE,MINFRQDONE3015:      LOGICAL :: BTEST,KD,NNZ,NINTB,TSFRQDONE,MINFRQDONE
3018:      DOUBLE PRECISION :: QTS(NOPT),QPLUS(NOPT),QMINUS(NOPT),FRQSTS(NOPT),FRQSPLUS(NOPT),FRQSMINUS(NOPT), &3016:      DOUBLE PRECISION :: QTS(NOPT),QPLUS(NOPT),QMINUS(NOPT),FRQSTS(NOPT),FRQSPLUS(NOPT),FRQSMINUS(NOPT), &
3260:            ENDIF3258:            ENDIF
3261:            WRITE(88,'(I6,1X,A4)') HORDER,FPGRP3259:            WRITE(88,'(I6,1X,A4)') HORDER,FPGRP
3262:            IF (.NOT.NOFRQS) THEN3260:            IF (.NOT.NOFRQS) THEN
3263:               IF (RIGIDINIT) THEN3261:               IF (RIGIDINIT) THEN
3264:                  CALL GENRIGID_EIGENVALUES(QPLUS, ATMASS, DIAG, INFO)3262:                  CALL GENRIGID_EIGENVALUES(QPLUS, ATMASS, DIAG, INFO)
3265: 3263: 
3266:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN3264:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN
3267:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)3265:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)
3268:                  ENDIF3266:                  ENDIF
3269: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame3267: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame
3270:               ELSE IF (RBAAT.AND..NOT.PYGPERIODICT) THEN3268:               ELSE IF (RBAAT) THEN
3271:                  RBAANORMALMODET = .TRUE.3269:                  RBAANORMALMODET = .TRUE.
3272:                  CALL POTENTIAL(QPLUS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)3270:                  CALL POTENTIAL(QPLUS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
3273:                  CALL NRMLMD (QPLUS, DIAG, .FALSE.)3271:                  CALL NRMLMD (QPLUS, DIAG, .FALSE.)
3274:                  RBAANORMALMODET = .FALSE.3272:                  RBAANORMALMODET = .FALSE.
3275:               ELSE3273:               ELSE
3276:                  IF (ENDNUMHESS) THEN3274:                  IF (ENDNUMHESS) THEN
3277:                     CALL MAKENUMHESS(QPLUS,NATOMS)3275:                     CALL MAKENUMHESS(QPLUS,NATOMS)
3278:                  ELSE3276:                  ELSE
3279:                     CALL POTENTIAL(QPLUS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)3277:                     CALL POTENTIAL(QPLUS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
3280:                  ENDIF3278:                  ENDIF
3613:            IF (.NOT.NOFRQS) THEN3611:            IF (.NOT.NOFRQS) THEN
3614:               IF (RIGIDINIT) THEN3612:               IF (RIGIDINIT) THEN
3615: ! hk286 - TS is recorded in rigid body coordinates3613: ! hk286 - TS is recorded in rigid body coordinates
3616:                  ATOMRIGIDCOORDT = .FALSE.3614:                  ATOMRIGIDCOORDT = .FALSE.
3617:                  CALL GENRIGID_EIGENVALUES(QTS, ATMASS, DIAG, INFO)3615:                  CALL GENRIGID_EIGENVALUES(QTS, ATMASS, DIAG, INFO)
3618:                  ATOMRIGIDCOORDT = .TRUE.3616:                  ATOMRIGIDCOORDT = .TRUE.
3619:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN3617:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN
3620:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)3618:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)
3621:                  ENDIF3619:                  ENDIF
3622: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame3620: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame
3623:               ELSE IF (RBAAT.AND..NOT.PYGPERIODICT) THEN3621:               ELSE IF (RBAAT) THEN
3624:                  RBAANORMALMODET = .TRUE.3622:                  RBAANORMALMODET = .TRUE.
3625:                  CALL POTENTIAL(QTS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)3623:                  CALL POTENTIAL(QTS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
3626:                  CALL NRMLMD (QTS, DIAG, .FALSE.)3624:                  CALL NRMLMD (QTS, DIAG, .FALSE.)
3627:                  RBAANORMALMODET = .FALSE.3625:                  RBAANORMALMODET = .FALSE.
3628:               ELSE3626:               ELSE
3629:                  IF (ENDNUMHESS) THEN3627:                  IF (ENDNUMHESS) THEN
3630:                     CALL MAKENUMHESS(QTS,NATOMS)3628:                     CALL MAKENUMHESS(QTS,NATOMS)
3631:                  ELSE3629:                  ELSE
3632:                     CALL POTENTIAL(QTS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)3630:                     CALL POTENTIAL(QTS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
3633:                  ENDIF3631:                  ENDIF
3961:            ENDIF3959:            ENDIF
3962:            WRITE(88,'(I6,1X,A4)') HORDER,FPGRP3960:            WRITE(88,'(I6,1X,A4)') HORDER,FPGRP
3963:            IF (.NOT.NOFRQS) THEN3961:            IF (.NOT.NOFRQS) THEN
3964:               IF (RIGIDINIT) THEN3962:               IF (RIGIDINIT) THEN
3965:                  CALL GENRIGID_EIGENVALUES(QMINUS, ATMASS, DIAG, INFO)3963:                  CALL GENRIGID_EIGENVALUES(QMINUS, ATMASS, DIAG, INFO)
3966: 3964: 
3967:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN3965:                  IF (DIAG(1).LT.DIAG(DEGFREEDOMS)) THEN
3968:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)3966:                     CALL EIGENSORT_VAL_ASC(DIAG(1:DEGFREEDOMS),HESS(1:DEGFREEDOMS,1:DEGFREEDOMS),DEGFREEDOMS,DEGFREEDOMS)
3969:                  ENDIF3967:                  ENDIF
3970: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame3968: ! hk286 - compute normal modes for rigid body angle axis, go to moving frame
3971:               ELSE IF (RBAAT.AND..NOT.PYGPERIODICT) THEN3969:               ELSE IF (RBAAT) THEN
3972:                  RBAANORMALMODET = .TRUE.3970:                  RBAANORMALMODET = .TRUE.
3973:                  CALL POTENTIAL(QMINUS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)3971:                  CALL POTENTIAL(QMINUS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
3974:                  CALL NRMLMD (QMINUS, DIAG, .FALSE.)3972:                  CALL NRMLMD (QMINUS, DIAG, .FALSE.)
3975:                  RBAANORMALMODET = .FALSE.3973:                  RBAANORMALMODET = .FALSE.
3976:               ELSE3974:               ELSE
3977:                  IF (ENDNUMHESS) THEN3975:                  IF (ENDNUMHESS) THEN
3978:                     CALL MAKENUMHESS(QMINUS,NATOMS)3976:                     CALL MAKENUMHESS(QMINUS,NATOMS)
3979:                  ELSE3977:                  ELSE
3980:                     CALL POTENTIAL(QMINUS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)3978:                     CALL POTENTIAL(QMINUS,DUMMY1,GRAD,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
3981:                  ENDIF3979:                  ENDIF


r31917/path.f 2017-02-15 17:30:16.608822610 +0000 r31916/path.f 2017-02-15 17:30:17.928840132 +0000
1892:          WRITE(88,'(I6,1X,A4)') HORDER,FPGRP1892:          WRITE(88,'(I6,1X,A4)') HORDER,FPGRP
1893: C        CALL H2OMODES(NATOMS,IPOT,Q,DIAG) ! WCOMMENT1893: C        CALL H2OMODES(NATOMS,IPOT,Q,DIAG) ! WCOMMENT
1894:          CALL H2OMODES(NATOMS/2,IPOT,Q,DIAG)1894:          CALL H2OMODES(NATOMS/2,IPOT,Q,DIAG)
1895: C        WRITE(88,'(3G20.10)') (DIAG(J2),J2=1,6*NATOMS) ! WCOMMENT1895: C        WRITE(88,'(3G20.10)') (DIAG(J2),J2=1,6*NATOMS) ! WCOMMENT
1896:          IF (.NOT.NOFRQS) WRITE(88,'(3G20.10)') (DIAG(J2),J2=1,3*NATOMS)1896:          IF (.NOT.NOFRQS) WRITE(88,'(3G20.10)') (DIAG(J2),J2=1,3*NATOMS)
1897: 1897: 
1898:       ! sn402: For the small number of potentials coded in the fully-rigid form (RBAAT), we can use the NRMLMD subroutine1898:       ! sn402: For the small number of potentials coded in the fully-rigid form (RBAAT), we can use the NRMLMD subroutine
1899:       ! directly to calculate the Hessian and calculate its eigenvalues. We write squared angular frequencies in whatever1899:       ! directly to calculate the Hessian and calculate its eigenvalues. We write squared angular frequencies in whatever
1900:       ! time unit is specified by FRQCONV (see documentation and comments in keywords.f)1900:       ! time unit is specified by FRQCONV (see documentation and comments in keywords.f)
1901: ! hk286 - compute potential for normal modes, notice the toggle1901: ! hk286 - compute potential for normal modes, notice the toggle
1902:       ELSE IF (RBAAT.AND..NOT.PYGPERIODICT) THEN1902:       ELSE IF (RBAAT) THEN
1903:          CALL POTENTIAL(Q,E,VNEW,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)1903:          CALL POTENTIAL(Q,E,VNEW,.TRUE.,.TRUE.,RMS,.FALSE.,.FALSE.)
1904:          WRITE(88, '(G20.10)') E1904:          WRITE(88, '(G20.10)') E
1905:          ! The following line should definitely not be hard-coded in!1905:          ! The following line should definitely not be hard-coded in!
1906:          WRITE(88, '(A,A)') "1  ", "C1" ! TEMP Solution1906:          WRITE(88, '(A,A)') "1  ", "C1" ! TEMP Solution
1907: 1907: 
1908:          IF (.NOT.NOFRQS) THEN1908:          IF (.NOT.NOFRQS) THEN
1909:             RBAANORMALMODET = .TRUE.           1909:             RBAANORMALMODET = .TRUE.           
1910:             CALL NRMLMD (Q, DIAG, .FALSE.)1910:             CALL NRMLMD (Q, DIAG, .FALSE.)
1911:             RBAANORMALMODET = .FALSE.1911:             RBAANORMALMODET = .FALSE.
1912:             WRITE(88,'(3G20.10)') (DIAG(J2)*FRQCONV2,J2=1,3*NATOMS)  ! sn402: Added the frequency conversion1912:             WRITE(88,'(3G20.10)') (DIAG(J2)*FRQCONV2,J2=1,3*NATOMS)  ! sn402: Added the frequency conversion


r31917/rbperm.f90 2017-02-15 17:30:16.828825531 +0000 r31916/rbperm.f90 2017-02-15 17:30:18.156843158 +0000
1382:       T1(1:3*NATOMS) = X(1:3*NATOMS)1382:       T1(1:3*NATOMS) = X(1:3*NATOMS)
1383: 1383: 
1384:       END SUBROUTINE RBROTXZ1384:       END SUBROUTINE RBROTXZ
1385: 1385: 
1386: !     ----------------------------------------------------------------------------------------------1386: !     ----------------------------------------------------------------------------------------------
1387: 1387: 
1388:       SUBROUTINE RBFRAME(C,XS,Q,RMATBEST)1388:       SUBROUTINE RBFRAME(C,XS,Q,RMATBEST)
1389: 1389: 
1390:       USE COMMONS, ONLY: NATOMS, NRBSITES1390:       USE COMMONS, ONLY: NATOMS, NRBSITES
1391:       USE KEY, ONLY    : DBPT, DBPTDT, DMBLPYT, NTIPT, MSSTOCKT, PAHAT, PATCHYDT, PAPT, PTSTSTT, NTSITES, NCARBON, &1391:       USE KEY, ONLY    : DBPT, DBPTDT, DMBLPYT, NTIPT, MSSTOCKT, PAHAT, PATCHYDT, PAPT, PTSTSTT, NTSITES, NCARBON, &
1392: &                        NPYSITE, MULTISITEPYT, PYT, SILANET, PYGPERIODICT !jwrm2> unused, STOCKAAT1392: &                        NPYSITE, MULTISITEPYT, PYT, SILANET !jwrm2> unused, STOCKAAT
1393:       USE pymodule, ONLY : SITECOORDS,ELLST1,ELLMAT1393:       USE pymodule, ONLY : SITECOORDS,ELLST1,ELLMAT
1394: 1394: 
1395:       IMPLICIT NONE1395:       IMPLICIT NONE
1396:       1396:       
1397:       INTEGER :: J1, J2, J31397:       INTEGER :: J1, J2, J3
1398:       DOUBLE PRECISION :: XS(3*NTSITES)1398:       DOUBLE PRECISION :: XS(3*NTSITES)
1399:       CHARACTER(LEN=132),INTENT(IN) :: C1399:       CHARACTER(LEN=132),INTENT(IN) :: C
1400:       DOUBLE PRECISION :: Q(3*NATOMS),RMATBEST(3,3)1400:       DOUBLE PRECISION :: Q(3*NATOMS),RMATBEST(3,3)
1401: 1401: 
1402:       IF (DBPTDT ) THEN1402:       IF (DBPTDT ) THEN
1523:          WRITE(55,'(1x,a)') trim(adjustl(c))1523:          WRITE(55,'(1x,a)') trim(adjustl(c))
1524:          DO J1 = 1, NATOMS/21524:          DO J1 = 1, NATOMS/2
1525:             J3 = (J1-1)*31525:             J3 = (J1-1)*3
1526:             WRITE(55,'(A5,1X,3F20.10)') 'O ', Q(J3+1), Q(J3+2), Q(J3+3)1526:             WRITE(55,'(A5,1X,3F20.10)') 'O ', Q(J3+1), Q(J3+2), Q(J3+3)
1527:             DO J2 = 1, NRBSITES 1527:             DO J2 = 1, NRBSITES 
1528:                J3 = ((J1-1)*NRBSITES + (J2-1))*31528:                J3 = ((J1-1)*NRBSITES + (J2-1))*3
1529:                WRITE(55,'(A5,1X,3F20.10)') 'H ', XS(J3+1), XS(J3+2), XS(J3+3)1529:                WRITE(55,'(A5,1X,3F20.10)') 'H ', XS(J3+1), XS(J3+2), XS(J3+3)
1530:             ENDDO1530:             ENDDO
1531:          ENDDO1531:          ENDDO
1532: 1532: 
1533:       ELSEIF (MULTISITEPYT.OR.PYGPERIODICT) THEN1533:       ELSEIF (MULTISITEPYT) THEN
1534:          WRITE(55,'(i6)') NATOMS*NPYSITE/21534:          WRITE(55,'(i6)') NATOMS*NPYSITE/2
1535:          WRITE(55,'(1x,a)') trim(adjustl(c))1535:          WRITE(55,'(1x,a)') trim(adjustl(c))
1536:              DO J2=1,NATOMS/21536:              DO J2=1,NATOMS/2
1537:                    CALL AAtoSites(Q(3*(J2-1)+1:3*(J2-1)+3),Q(3*NATOMS/2+3*(J2-1)+1:3*NATOMS/2+3*(J2-1)+3),SITECOORDS,RMATBEST)1537:                    CALL AAtoSites(Q(3*(J2-1)+1:3*(J2-1)+3),Q(3*NATOMS/2+3*(J2-1)+1:3*NATOMS/2+3*(J2-1)+3),SITECOORDS,RMATBEST)
1538:                     DO J3=1,NPYSITE1538:                     DO J3=1,NPYSITE
1539:                         WRITE(55,'(a5,2x,3f20.10,2x,a8,12f15.8,2x,a11,3f15.8)') 'O',&1539:                         WRITE(55,'(a5,2x,3f20.10,2x,a8,12f15.8,2x,a11,3f15.8)') 'O',&
1540:                         SITECOORDS(J3,1),SITECOORDS(J3,2),SITECOORDS(J3,3),&1540:                         SITECOORDS(J3,1),SITECOORDS(J3,2),SITECOORDS(J3,3),&
1541:                         'ellipse ',ELLST1(J3,1)*2.0D0,ELLST1(J3,2)*2.0D0,ELLST1(J3,3)*2.0D0,&1541:                         'ellipse ',ELLST1(J3,1)*2.0D0,ELLST1(J3,2)*2.0D0,ELLST1(J3,3)*2.0D0,&
1542:                         ELLMAT(J3,1,1),ELLMAT(J3,1,2),ELLMAT(J3,1,3),ELLMAT(J3,2,1),ELLMAT(J3,2,2),ELLMAT(J3,2,3),&1542:                         ELLMAT(J3,1,1),ELLMAT(J3,1,2),ELLMAT(J3,1,3),ELLMAT(J3,2,1),ELLMAT(J3,2,2),ELLMAT(J3,2,3),&
1543:                         ELLMAT(J3,3,1),ELLMAT(J3,3,2),ELLMAT(J3,3,3),&1543:                         ELLMAT(J3,3,1),ELLMAT(J3,3,2),ELLMAT(J3,3,3),&


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0