hdiff output

r30528/key.f90 2016-05-28 15:30:13.123780242 +0100 r30527/key.f90 2016-05-28 15:30:14.075792928 +0100
 45:      &        QSPCFWT, QTIP4PFT, CFUSIONT, DUMPINTXYZ, DUMPINTEOS, INTLJT, INTTST, EYTRAPT, OHCELLT, MKTRAPT, & 45:      &        QSPCFWT, QTIP4PFT, CFUSIONT, DUMPINTXYZ, DUMPINTEOS, INTLJT, INTTST, EYTRAPT, OHCELLT, MKTRAPT, &
 46:      &        INTFREEZET, LPERMDIST, CHECKNEGATIVET, CHECKOVERLAPT, ACK1, ACK2, CONDATT, USERPOTT, & 46:      &        INTFREEZET, LPERMDIST, CHECKNEGATIVET, CHECKOVERLAPT, ACK1, ACK2, CONDATT, USERPOTT, &
 47:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, & 47:      &        CONCUTFRACT, CONCUTABST, ENDNUMHESS2, CHARMMDFTBT, PAIRCOLOURT, REVERSEUPHILLT, WHOLEDNEB, &
 48:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, & 48:      &        NONEBMAX, READMASST, ONEDAPBCT, ONEDPBCT, INVTONEDPBCT, INVTTWODPBCT, TWODAPBCT, TWODPBCT, THREEDAPBCT, &
 49:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, & 49:      &        THREEDPBCT, FOURDAPBCT, FOURDPBCT, MODEDOWNT, CHEMSHIFT, TTM3T, &
 50:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, & 50:      &        NOINVERSION, INVERTPT, KNOWVECS, PMPATHT, AAORIENTT, MULTIJOBT, QUIPARGSTRT, QUIPPARAMST, HESSDUMPT, &
 51:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, & 51:      &        CLASSICALRATEST, TSPLITTINGT, HESSREADT, INSTANTONOPTT,INSTANTONSTARTDUMPT,VARSTEPOPTT, MOLPRO, REAXFFT, &
 52:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, & 52:      &        EIGENONLY,OVERCONV, GLJT,CLSTRINGT,CLSTRINGTST, PHI4MODT, EX1DT, MCPATHT, MCBIAST, RPHT, TWISTT, MCPATH2T, &
 53:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, & 53:      &        PBST, SSHT, GAUSSIAN03, CPPNEBT, CUDAT, CUDATIMET, TRUSTMODET,MODELOST, METRICTENSOR, INTSPRINGACTIVET, &
 54:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, & 54:      &        PERMGUESS, QCIPERMCHECK, DUMPFRQST, MULTIPOTT, MLP3T, MLPB3T, DUMPBESTPATH, ALIGNRBST, AVOID_COLLISIONS, MLPPROB, &
 55:      &        MALONALDEHYDE, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT 55:      &        MALONALDEHYDE, MLPNEWREG, DJWRBT, STEALTHYT, STEALTV, LJADDT, REBOXT
 56:  56: 
 57: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted) 57: ! bf269 > polymer in a pore (non-bonding (LJ) energy from neighbours is not subtracted)
 58:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential? 58:       LOGICAL :: PORE8T = .FALSE. ! add 8th power cylindrical pore to the potential?
 59:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z) 59:       INTEGER :: PORE8_AXIS = 3 ! principal axis of the cylindric pore (1:x, 2:y, 3:z)
 60:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1 60:       DOUBLE PRECISION :: PORE8_ENERGY = 1.0d1 ! energy of the pore when radius = 1
 61:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads 61:       LOGICAL :: HARMPOLYT = .FALSE. ! add harmonic bonds between the beads
 62:       DOUBLE PRECISION :: HARMPOLY_BONLEN = 0.0d0 ! equilibrium length of springs between beads 62:       DOUBLE PRECISION :: HARMPOLY_BONLEN = 0.0d0 ! equilibrium length of springs between beads
 63:       DOUBLE PRECISION :: HARMPOLY_K = 1.0d2 ! force constant of the springs 63:       DOUBLE PRECISION :: HARMPOLY_K = 1.0d2 ! force constant of the springs
 64:  64: 
 65: ! hk286 > generalised THOMSON problem 65: ! hk286 > generalised THOMSON problem


r30528/keywords.f 2016-05-28 15:30:13.319782854 +0100 r30527/keywords.f 2016-05-28 15:30:14.271795542 +0100
1613:                CALL READF(bulk_boxvec(2))1613:                CALL READF(bulk_boxvec(2))
1614:             ENDIF1614:             ENDIF
1615:             IF (NITEMS.GT.3) THEN1615:             IF (NITEMS.GT.3) THEN
1616:                CALL READF(bulk_boxvec(3))1616:                CALL READF(bulk_boxvec(3))
1617:             ENDIF1617:             ENDIF
1618: ! 1618: ! 
1619: ! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC1619: ! CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
1620: ! CADPAC tells the program to read derivative information in1620: ! CADPAC tells the program to read derivative information in
1621: ! CADPAC format.                                        - default FALSE1621: ! CADPAC format.                                        - default FALSE
1622: ! 1622: ! 
 1623:          ELSE IF (WORD.EQ.'REBOX') THEN
 1624:             REBOXT=.TRUE.
 1625: 
1623:          ELSE IF (WORD.EQ.'CADPAC') THEN1626:          ELSE IF (WORD.EQ.'CADPAC') THEN
1624:             CADPAC=.TRUE.1627:             CADPAC=.TRUE.
1625:             CALL READA(SYS)1628:             CALL READA(SYS)
1626:             DO J1=1,801629:             DO J1=1,80
1627:                IF (SYS(J1:J1).EQ.' ') THEN1630:                IF (SYS(J1:J1).EQ.' ') THEN
1628:                   LSYS=J1-11631:                   LSYS=J1-1
1629:                   GOTO 101632:                   GOTO 10
1630:                ENDIF1633:                ENDIF
1631:             ENDDO1634:             ENDDO
1632: 10          IF (NITEMS.GT.2) THEN1635: 10          IF (NITEMS.GT.2) THEN


r30528/minpermdist.f90 2016-05-28 15:30:13.511785414 +0100 r30527/minpermdist.f90 2016-05-28 15:30:14.463798100 +0100
 50: !  The centres of coordinates for COORDSA and COORDSB can be anywhere. On return, the 50: !  The centres of coordinates for COORDSA and COORDSB can be anywhere. On return, the
 51: !  centre of coordinates of COORDSA will be the same as for COORDSB, unless we 51: !  centre of coordinates of COORDSA will be the same as for COORDSB, unless we
 52: !  are doing an ion trap potential. 52: !  are doing an ion trap potential.
 53: ! 53: !
 54: SUBROUTINE MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST) 54: SUBROUTINE MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST)
 55: USE KEY,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, STOCKT, GEOMDIFFTOL, AMBERT, & 55: USE KEY,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, STOCKT, GEOMDIFFTOL, AMBERT, &
 56:   &            NFREEZE, NABT, RBAAT, ANGLEAXIS2, BESTPERM, LOCALPERMDIST, PULLT, EFIELDT, NTSITES, & 56:   &            NFREEZE, NABT, RBAAT, ANGLEAXIS2, BESTPERM, LOCALPERMDIST, PULLT, EFIELDT, NTSITES, &
 57:   &            RIGIDBODY, PERMDIST, OHCELLT, LPERMDIST, EYTRAPT, MKTRAPT, LOCALPERMCUT, LOCALPERMCUT2, & 57:   &            RIGIDBODY, PERMDIST, OHCELLT, LPERMDIST, EYTRAPT, MKTRAPT, LOCALPERMCUT, LOCALPERMCUT2, &
 58:   &            LOCALPERMCUTINC, NOINVERSION, MIEFT, & 58:   &            LOCALPERMCUTINC, NOINVERSION, MIEFT, &
 59:   &            EDIFFTOL, GMAX, CONVR, ATOMMATCHDIST, NRANROT, GTHOMSONT, GTHOMMET, & ! hk286 59:   &            EDIFFTOL, GMAX, CONVR, ATOMMATCHDIST, NRANROT, GTHOMSONT, GTHOMMET, & ! hk286
 60:   &            PHI4MODT, MCPATHT, AMBER12T, VARIABLES, MKTRAPT, ALIGNRBST 60:   &            PHI4MODT, MCPATHT, AMBER12T, VARIABLES, MKTRAPT, ALIGNRBST, REBOXT
 61: USE COMMONS,ONLY : NOPT 61: USE COMMONS,ONLY : NOPT
 62: USE MODCHARMM,ONLY : CHRMMT 62: USE MODCHARMM,ONLY : CHRMMT
 63: USE MODAMBER9, ONLY: NOPERMPROCHIRAL, PROCHIRALH 63: USE MODAMBER9, ONLY: NOPERMPROCHIRAL, PROCHIRALH
 64: USE INTCOMMONS, ONLY : INTMINPERMT, INTINTERPT, DESMINT, OLDINTMINPERMT, INTDISTANCET 64: USE INTCOMMONS, ONLY : INTMINPERMT, INTINTERPT, DESMINT, OLDINTMINPERMT, INTDISTANCET
 65: USE INTCUTILS, ONLY : INTMINPERM, OLD_INTMINPERM, INTMINPERM_CHIRAL, INTDISTANCE 65: USE INTCUTILS, ONLY : INTMINPERM, OLD_INTMINPERM, INTMINPERM_CHIRAL, INTDISTANCE
 66: USE GENRIGID 66: USE GENRIGID
 67: USE AMBER12_INTERFACE_MOD 67: USE AMBER12_INTERFACE_MOD
 68: USE CHIRALITY 68: USE CHIRALITY
 69: IMPLICIT NONE 69: IMPLICIT NONE
 70:  70: 
368:    ENDIF368:    ENDIF
369: ENDIF369: ENDIF
370: 370: 
371: !371: !
372: ! It is possible for the standard orientation to result in a distance that is worse than372: ! It is possible for the standard orientation to result in a distance that is worse than
373: ! the starting distance. Hence we need to set XBEST here.373: ! the starting distance. Hence we need to set XBEST here.
374: !374: !
375: 375: 
376: DUMMYA(1:3*NATOMS)=COORDSA(1:3*NATOMS)376: DUMMYA(1:3*NATOMS)=COORDSA(1:3*NATOMS)
377: DUMMYB(1:3*NATOMS)=COORDSB(1:3*NATOMS)377: DUMMYB(1:3*NATOMS)=COORDSB(1:3*NATOMS)
 378: IF (REBOXT) THEN
 379:    DO J1=1,NATOMS
 380:       DUMMYA(3*(J1-1)+1)=DUMMYA(3*(J1-1)+1)-BOXLX*NINT(DUMMYA(3*(J1-1)+1)/BOXLX)
 381:       DUMMYA(3*(J1-1)+2)=DUMMYA(3*(J1-1)+2)-BOXLY*NINT(DUMMYA(3*(J1-1)+2)/BOXLY)
 382:       IF (.NOT.TWOD) DUMMYA(3*(J1-1)+3)=DUMMYA(3*(J1-1)+3)-BOXLZ*NINT(DUMMYA(3*(J1-1)+3)/BOXLZ)
 383:    ENDDO
 384:    DO J1=1,NATOMS
 385:       DUMMYB(3*(J1-1)+1)=DUMMYB(3*(J1-1)+1)-BOXLX*NINT(DUMMYB(3*(J1-1)+1)/BOXLX)
 386:       DUMMYB(3*(J1-1)+2)=DUMMYB(3*(J1-1)+2)-BOXLY*NINT(DUMMYB(3*(J1-1)+2)/BOXLY)
 387:       IF (.NOT.TWOD) DUMMYB(3*(J1-1)+3)=DUMMYB(3*(J1-1)+3)-BOXLZ*NINT(DUMMYB(3*(J1-1)+3)/BOXLZ)
 388:    ENDDO
 389: ENDIF
378: DBEST=1.0D100390: DBEST=1.0D100
379: CALL NEWMINDIST(DUMMYB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)391: CALL NEWMINDIST(DUMMYB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)
380: DBEST=DISTANCE**2392: DBEST=DISTANCE**2
381: 393: 
382: IF (DEBUG) PRINT '(A,G20.10)',' minpermdist> Initial distance before standard orientation=',DISTANCE394: IF (DEBUG) PRINT '(A,G20.10)',' minpermdist> Initial distance before standard orientation=',DISTANCE
383: 395: 
384: ! If global translation is possible (i.e. no frozen atoms and not periodic boundary conditions) then396: ! If global translation is possible (i.e. no frozen atoms and not periodic boundary conditions) then
385: ! translate the origin of structure A to the CoM of structure B.397: ! translate the origin of structure A to the CoM of structure B.
386: IF ((NFREEZE.GT.0).OR.BULKT.OR.MIEFT.OR.MKTRAPT) THEN398: IF ((NFREEZE.GT.0).OR.BULKT.OR.MIEFT.OR.MKTRAPT) THEN
387:    XBEST(1:3*NATOMS)=DUMMYA(1:3*NATOMS)399:    XBEST(1:3*NATOMS)=DUMMYA(1:3*NATOMS)


r30528/newmindist.f90 2016-05-28 15:30:13.695787865 +0100 r30527/newmindist.f90 2016-05-28 15:30:14.655800658 +0100
 26: ! jmc As long as zsym isn't 'W' (in which case mind does something special) mind 26: ! jmc As long as zsym isn't 'W' (in which case mind does something special) mind
 27: ! doesn't care what atomic symbol we give it. 27: ! doesn't care what atomic symbol we give it.
 28: ! 28: !
 29: !  If PRESERVET is false we put RB into best correspondence with RA. This involves 29: !  If PRESERVET is false we put RB into best correspondence with RA. This involves
 30: !  a translation to the same centre of coordinates, followed by a rotation about that 30: !  a translation to the same centre of coordinates, followed by a rotation about that
 31: !  centre. 31: !  centre.
 32: ! 32: !
 33: SUBROUTINE NEWMINDIST(RA,RB,NATOMS,DIST,BULKT,TWOD,ZUSE,PRESERVET,RIGIDBODY,DEBUG,RMAT) 33: SUBROUTINE NEWMINDIST(RA,RB,NATOMS,DIST,BULKT,TWOD,ZUSE,PRESERVET,RIGIDBODY,DEBUG,RMAT)
 34: USE COMMONS,ONLY : PARAM1, PARAM2, PARAM3, NOPT 34: USE COMMONS,ONLY : PARAM1, PARAM2, PARAM3, NOPT
 35: USE KEY,ONLY : STOCKT, NFREEZE, MIEFT, RBAAT, PULLT, EFIELDT, EYTRAPT, MKTRAPT, USERPOTT, & 35: USE KEY,ONLY : STOCKT, NFREEZE, MIEFT, RBAAT, PULLT, EFIELDT, EYTRAPT, MKTRAPT, USERPOTT, &
 36:   &            GTHOMSONT, VARIABLES! hk286 36:   &            GTHOMSONT, VARIABLES, REBOXT ! hk286
 37:  37: 
 38: IMPLICIT NONE 38: IMPLICIT NONE
 39:  39: 
 40: INTEGER J1, NATOMS, NSIZE, INFO, JINFO, JMIN 40: INTEGER J1, NATOMS, NSIZE, INFO, JINFO, JMIN
 41: DOUBLE PRECISION RA(NOPT), RB(NOPT), DIST, QMAT(4,4), XM, YM, ZM, XP, YP, ZP, OVEC(3), H1VEC(3), H2VEC(3), & 41: DOUBLE PRECISION RA(NOPT), RB(NOPT), DIST, QMAT(4,4), XM, YM, ZM, XP, YP, ZP, OVEC(3), H1VEC(3), H2VEC(3), &
 42:   &              DIAG(4), TEMPA(3*NOPT), RMAT(3,3), MINV, Q1, Q2, Q3, Q4, CMXA, CMYA, CMZA, CMXB, CMYB, CMZB, & 42:   &              DIAG(4), TEMPA(3*NOPT), RMAT(3,3), MINV, Q1, Q2, Q3, Q4, CMXA, CMYA, CMZA, CMXB, CMYB, CMZB, &
 43:   &              MYROTMAT(3,3), OMEGATOT(3,3) 43:   &              MYROTMAT(3,3), OMEGATOT(3,3)
 44: DOUBLE PRECISION, ALLOCATABLE :: XA(:), XB(:) 44: DOUBLE PRECISION, ALLOCATABLE :: XA(:), XB(:)
 45: LOGICAL BULKT, TWOD, RIGIDBODY, PRESERVET, DEBUG, UPRETURN 45: LOGICAL BULKT, TWOD, RIGIDBODY, PRESERVET, DEBUG, UPRETURN
 46: CHARACTER(LEN=5) ZUSE 46: CHARACTER(LEN=5) ZUSE
162:    &               + (XA(3*(J1-1)+2)-XB(3*(J1-1)+2))**2 &162:    &               + (XA(3*(J1-1)+2)-XB(3*(J1-1)+2))**2 &
163:    &               + (XA(3*(J1-1)+3)-XB(3*(J1-1)+3))**2163:    &               + (XA(3*(J1-1)+3)-XB(3*(J1-1)+3))**2
164:       ENDDO164:       ENDDO
165:    ENDIF165:    ENDIF
166:    DIST=SQRT(DIST)166:    DIST=SQRT(DIST)
167:    167:    
168:    RMAT(1:3,1:3)=0.0D0 ! rotation matrix is the identity168:    RMAT(1:3,1:3)=0.0D0 ! rotation matrix is the identity
169:    RMAT(1,1)=1.0D0; RMAT(2,2)=1.0D0; RMAT(3,3)=1.0D0169:    RMAT(1,1)=1.0D0; RMAT(2,2)=1.0D0; RMAT(3,3)=1.0D0
170:    RETURN170:    RETURN
171: ENDIF171: ENDIF
172: IF (BULKT) THEN172: IF (BULKT.AND. .NOT. REBOXT) THEN
173:    BOXLX=PARAM1; BOXLY=PARAM2; BOXLZ=PARAM3173:    BOXLX=PARAM1; BOXLY=PARAM2; BOXLZ=PARAM3
174:    DO J1=1,NSIZE174:    DO J1=1,NSIZE
175:       XA(3*(J1-1)+1)=XA(3*(J1-1)+1)-BOXLX*NINT(XA(3*(J1-1)+1)/BOXLX)175:       XA(3*(J1-1)+1)=XA(3*(J1-1)+1)-BOXLX*NINT(XA(3*(J1-1)+1)/BOXLX)
176:       XA(3*(J1-1)+2)=XA(3*(J1-1)+2)-BOXLY*NINT(XA(3*(J1-1)+2)/BOXLY)176:       XA(3*(J1-1)+2)=XA(3*(J1-1)+2)-BOXLY*NINT(XA(3*(J1-1)+2)/BOXLY)
177:       IF (.NOT.TWOD) XA(3*(J1-1)+3)=XA(3*(J1-1)+3)-BOXLZ*NINT(XA(3*(J1-1)+3)/BOXLZ)177:       IF (.NOT.TWOD) XA(3*(J1-1)+3)=XA(3*(J1-1)+3)-BOXLZ*NINT(XA(3*(J1-1)+3)/BOXLZ)
178:    ENDDO178:    ENDDO
179:    DO J1=1,NSIZE179:    DO J1=1,NSIZE
180:       XB(3*(J1-1)+1)=XB(3*(J1-1)+1)-BOXLX*NINT(XB(3*(J1-1)+1)/BOXLX)180:       XB(3*(J1-1)+1)=XB(3*(J1-1)+1)-BOXLX*NINT(XB(3*(J1-1)+1)/BOXLX)
181:       XB(3*(J1-1)+2)=XB(3*(J1-1)+2)-BOXLY*NINT(XB(3*(J1-1)+2)/BOXLY)181:       XB(3*(J1-1)+2)=XB(3*(J1-1)+2)-BOXLY*NINT(XB(3*(J1-1)+2)/BOXLY)
182:       IF (.NOT.TWOD) XB(3*(J1-1)+3)=XB(3*(J1-1)+3)-BOXLZ*NINT(XB(3*(J1-1)+3)/BOXLZ)182:       IF (.NOT.TWOD) XB(3*(J1-1)+3)=XB(3*(J1-1)+3)-BOXLZ*NINT(XB(3*(J1-1)+3)/BOXLZ)
403: !  Translate the RB coordinates to the centre of coordinates of RA.403: !  Translate the RB coordinates to the centre of coordinates of RA.
404: !404: !
405:       DO J1=1,NSIZE405:       DO J1=1,NSIZE
406:          RB(3*(J1-1)+1)=RB(3*(J1-1)+1)-CMXB+CMXA+XSHIFT406:          RB(3*(J1-1)+1)=RB(3*(J1-1)+1)-CMXB+CMXA+XSHIFT
407:          RB(3*(J1-1)+2)=RB(3*(J1-1)+2)-CMYB+CMYA+YSHIFT407:          RB(3*(J1-1)+2)=RB(3*(J1-1)+2)-CMYB+CMYA+YSHIFT
408:          RB(3*(J1-1)+3)=RB(3*(J1-1)+3)-CMZB+CMZA+ZSHIFT408:          RB(3*(J1-1)+3)=RB(3*(J1-1)+3)-CMZB+CMZA+ZSHIFT
409:       ENDDO409:       ENDDO
410:       !write(*,*) "movetest"410:       !write(*,*) "movetest"
411:       !write(*,*) -CMXB+CMXA+XSHIFT, -CMYB+CMYA+YSHIFT, -CMZB+CMZA+ZSHIFT411:       !write(*,*) -CMXB+CMXA+XSHIFT, -CMYB+CMYA+YSHIFT, -CMZB+CMZA+ZSHIFT
412: 412: 
413:       IF (BULKT) THEN413:       IF (BULKT.AND. .NOT.REBOXT) THEN
414:          DO J1=1,NSIZE414:          DO J1=1,NSIZE
415:             RB(3*(J1-1)+1)=RB(3*(J1-1)+1)-BOXLX*NINT(RB(3*(J1-1)+1)/BOXLX)415:             RB(3*(J1-1)+1)=RB(3*(J1-1)+1)-BOXLX*NINT(RB(3*(J1-1)+1)/BOXLX)
416:             RB(3*(J1-1)+2)=RB(3*(J1-1)+2)-BOXLY*NINT(RB(3*(J1-1)+2)/BOXLY)416:             RB(3*(J1-1)+2)=RB(3*(J1-1)+2)-BOXLY*NINT(RB(3*(J1-1)+2)/BOXLY)
417:             RB(3*(J1-1)+3)=RB(3*(J1-1)+3)-BOXLZ*NINT(RB(3*(J1-1)+3)/BOXLZ)417:             RB(3*(J1-1)+3)=RB(3*(J1-1)+3)-BOXLZ*NINT(RB(3*(J1-1)+3)/BOXLZ)
418:          ENDDO418:          ENDDO
419:       ENDIF419:       ENDIF
420: 420: 
421:       IF (.NOT.BULKT) THEN421:       IF (.NOT.BULKT) THEN
422:          IF (STOCKT) THEN422:          IF (STOCKT) THEN
423:             CALL NEWROTGEOMSTOCK(NATOMS,RB,RMAT,CMXA,CMYA,CMZA)423:             CALL NEWROTGEOMSTOCK(NATOMS,RB,RMAT,CMXA,CMYA,CMZA)


r30528/stealthy.f90 2016-05-28 15:30:13.883790372 +0100 r30527/stealthy.f90 2016-05-28 15:30:14.847803217 +0100
 22:        TIDU=0 22:        TIDU=0
 23:     END IF 23:     END IF
 24:  24: 
 25:     IF (STEST) THEN 25:     IF (STEST) THEN
 26:        HESS=0 26:        HESS=0
 27:     END IF 27:     END IF
 28:  28: 
 29: !   get the initial box 29: !   get the initial box
 30:  30: 
 31: !   calculate the wave vector 31: !   calculate the wave vector
 32:     KX(1)=360/BULK_BOXVEC(1) 32:     KX(1)=2*PI/BULK_BOXVEC(1)
 33:     KX(2)=0 33:     KX(2)=0
 34:     KX(3)=0 34:     KX(3)=0
 35:     KY(1)=0 35:     KY(1)=0
 36:     KY(2)=360/BULK_BOXVEC(2) 36:     KY(2)=2*PI/BULK_BOXVEC(2)
 37:     KY(3)=0 37:     KY(3)=0
 38:     KZ(1)=0 38:     KZ(1)=0
 39:     KZ(2)=0 39:     KZ(2)=0
 40:     KZ(3)=360/BULK_BOXVEC(3) 40:     KZ(3)=2*PI/BULK_BOXVEC(3)
 41:     VF=BULK_BOXVEC(1)*BULK_BOXVEC(2)*BULK_BOXVEC(3) 41:     VF=BULK_BOXVEC(1)*BULK_BOXVEC(2)*BULK_BOXVEC(3)
 42: !   WRITE(*,*) KI(1), KI(2), KI(3) 42: !   WRITE(*,*) KI(1), KI(2), KI(3)
 43:  43: 
 44: !   periodic boundary condition 44: !   periodic boundary condition
 45:     IF (BULKT) THEN 45:     IF (BULKT.AND. .NOT.REBOXT) THEN
 46:        DO J1=1, NATOMS 46:        DO J1=1, NATOMS
 47:           J2=3*(J1-1) 47:           J2=3*(J1-1)
 48:           XS(J2+1)=XS(J2+1) - BULK_BOXVEC(1)*DNINT(XS(J2+1)/BULK_BOXVEC(1)) 48:           XS(J2+1)=XS(J2+1) - BULK_BOXVEC(1)*DNINT(XS(J2+1)/BULK_BOXVEC(1))
 49:           XS(J2+2)=XS(J2+2) - BULK_BOXVEC(2)*DNINT(XS(J2+2)/BULK_BOXVEC(2)) 49:           XS(J2+2)=XS(J2+2) - BULK_BOXVEC(2)*DNINT(XS(J2+2)/BULK_BOXVEC(2))
 50:           XS(J2+3)=XS(J2+3) - BULK_BOXVEC(3)*DNINT(XS(J2+3)/BULK_BOXVEC(3)) 50:           XS(J2+3)=XS(J2+3) - BULK_BOXVEC(3)*DNINT(XS(J2+3)/BULK_BOXVEC(3))
 51:        END DO 51:        END DO
 52:     END IF 52:     END IF
 53: !    write(*,*) XS 53: !    write(*,*) XS
 54:   54:  
 55: !   sum of k 55: !   sum of k
 56:     DO M1=0, KI 56:     DO M1=0, KI
 57:        DO M2=-KI, KI 57:        DO M2=-KI, KI
 58:           DO M3=-KI, KI 58:           DO M3=-KI, KI
 59:  59: 
 60:              IF (M1.EQ.0.AND.M2.GE.0.AND.M3.LT.0) CYCLE 60:              IF (M1==0.AND.M2>=0.AND.M3<0) CYCLE
 61:              IF (M1.EQ.0.AND.M2.LE.0.AND.M3.LE.0) CYCLE 61:              IF (M1==0.AND.M2<=0.AND.M3<=0) CYCLE
 62:  62: 
 63:              M=M1*M1+M2*M2+M3*M3 63:              M=M1*M1+M2*M2+M3*M3
 64:              IF (M.GT.KM.OR.M.EQ.0) CYCLE 64:              IF (M>KM.OR.M==0) CYCLE
 65:  65: 
 66:              C=0 66:              C=0
 67:              S=0 67:              S=0
 68:              KN(1)=KX(1)*M1 + KY(1)*M2 + KZ(1)*M3 68:              KN(1)=KX(1)*M1 + KY(1)*M2 + KZ(1)*M3
 69:              KN(2)=KX(2)*M1 + KY(2)*M2 + KZ(2)*M3 69:              KN(2)=KX(2)*M1 + KY(2)*M2 + KZ(2)*M3
 70:              KN(3)=KX(3)*M1 + KY(3)*M2 + KZ(3)*M3 70:              KN(3)=KX(3)*M1 + KY(3)*M2 + KZ(3)*M3
 71:  71: 
 72: !            calculation of Re[n(k)] and Im[n(k)] 72: !            calculation of Re[n(k)] and Im[n(k)]
 73:              DO I1=1, NATOMS 73:              DO I1=1, NATOMS
 74:                 I2=3*(I1-1) 74:                 I2=3*(I1-1)
 75:                 KR=KN(1)*XS(I2+1) + KN(2)*XS(I2+2) + KN(3)*XS(I2+3) 75:                 KR=KN(1)*XS(I2+1) + KN(2)*XS(I2+2) + KN(3)*XS(I2+3)
 76:                 CKR(I1)=COSD(KR) 76:                 CKR(I1)=COS(KR)
 77:                 SKR(I1)=SIND(KR) 77:                 SKR(I1)=SIN(KR)
 78:                 !if (M1==0.AND.M2==-3) write(*,'(T1,4(I,1X),F,1X,F)') M1, M2, M3, I1, CKR(I1), SKR(I1) 78:                 !if (M1==0.AND.M2==-3) write(*,'(T1,4(I,1X),F,1X,F)') M1, M2, M3, I1, CKR(I1), SKR(I1)
 79:  79: 
 80:                 C=C+CKR(I1) 80:                 C=C+CKR(I1)
 81:                 S=S+SKR(I1) 81:                 S=S+SKR(I1)
 82: !                if (M1==0.AND.M2==-3) write(*,'(T1,F,1X,F)') C, S 82: !                if (M1==0.AND.M2==-3) write(*,'(T1,F,1X,F)') C, S
 83:              END DO 83:              END DO
 84:              !write(*,*) M1, M2, M3 84:              !write(*,*) M1, M2, M3
 85:              !write(*,*) CKR(1:6) 85:              !write(*,*) CKR(1:6)
 86:              !write(*,*) SKR(1:6) 86:              !write(*,*) SKR(1:6)
 87:              !if (M1==0.AND.M2==-8) then 87:              !if (M1==0.AND.M2==-8) then
147:       HESS(I2+3, I2+3)=HESS(I2+3, I2+3) - 2*K(3)*K(3)/V * CF147:       HESS(I2+3, I2+3)=HESS(I2+3, I2+3) - 2*K(3)*K(3)/V * CF
148: 148: 
149:       DO J1=I1+1, NATOMS149:       DO J1=I1+1, NATOMS
150:          J2=3*(J1-1)150:          J2=3*(J1-1)
151: 151: 
152:          RIJ(1)=X(I2+1) - X(J2+1)152:          RIJ(1)=X(I2+1) - X(J2+1)
153:          RIJ(2)=X(I2+2) - X(J2+2)153:          RIJ(2)=X(I2+2) - X(J2+2)
154:          RIJ(3)=X(I2+3) - X(J2+3)154:          RIJ(3)=X(I2+3) - X(J2+3)
155: 155: 
156:          KRIJ=K(1)*RIJ(1) + K(2)*RIJ(2) + K(3)*RIJ(3)156:          KRIJ=K(1)*RIJ(1) + K(2)*RIJ(2) + K(3)*RIJ(3)
157:          CSKR= COSD(KRIJ)*SCA157:          CSKR= COS(KRIJ)*SCA
158: 158: 
159:          HESS(I2+1, J2+1)=HESS(I2+1, J2+1) + 2*K(1)*K(1)/V * CSKR159:          HESS(I2+1, J2+1)=HESS(I2+1, J2+1) + 2*K(1)*K(1)/V * CSKR
160:          HESS(I2+1, J2+2)=HESS(I2+1, J2+2) + 2*K(1)*K(2)/V * CSKR160:          HESS(I2+1, J2+2)=HESS(I2+1, J2+2) + 2*K(1)*K(2)/V * CSKR
161:          HESS(I2+1, J2+3)=HESS(I2+1, J2+3) + 2*K(1)*K(3)/V * CSKR161:          HESS(I2+1, J2+3)=HESS(I2+1, J2+3) + 2*K(1)*K(3)/V * CSKR
162: 162: 
163:          HESS(I2+2, J2+1)=HESS(I2+2, J2+1) + 2*K(2)*K(1)/V * CSKR163:          HESS(I2+2, J2+1)=HESS(I2+2, J2+1) + 2*K(2)*K(1)/V * CSKR
164:          HESS(I2+2, J2+2)=HESS(I2+2, J2+2) + 2*K(2)*K(2)/V * CSKR164:          HESS(I2+2, J2+2)=HESS(I2+2, J2+2) + 2*K(2)*K(2)/V * CSKR
165:          HESS(I2+2, J2+3)=HESS(I2+2, J2+3) + 2*K(2)*K(3)/V * CSKR165:          HESS(I2+2, J2+3)=HESS(I2+2, J2+3) + 2*K(2)*K(3)/V * CSKR
166: 166: 
167:          HESS(I2+3, J2+1)=HESS(I2+3, J2+1) + 2*K(3)*K(1)/V * CSKR167:          HESS(I2+3, J2+1)=HESS(I2+3, J2+1) + 2*K(3)*K(1)/V * CSKR
278:    EVABS=DABS(EVARY)278:    EVABS=DABS(EVARY)
279:    BNNUM=3*NATOMS279:    BNNUM=3*NATOMS
280:    EQYN=.FALSE.280:    EQYN=.FALSE.
281:    281:    
282:    DO I=1, NLING+1282:    DO I=1, NLING+1
283:       MYMIN=EVABS(3*NATOMS)283:       MYMIN=EVABS(3*NATOMS)
284:       DO J=1, 3*NATOMS-1284:       DO J=1, 3*NATOMS-1
285:          DO K=1, I285:          DO K=1, I
286:             IF (J.EQ.BNNUM(K)) EQYN=.TRUE.286:             IF (J.EQ.BNNUM(K)) EQYN=.TRUE.
287:          ENDDO287:          ENDDO
288:          IF (EQYN) THEN288:          IF (EQYN.EQ..TRUE.) THEN
289:             EQYN=.FALSE.289:             EQYN=.FALSE.
290:             CYCLE290:             CYCLE
291:          ENDIF291:          ENDIF
292:          IF (EVABS(J).LT.MYMIN) THEN292:          IF (EVABS(J).LT.MYMIN) THEN
293:             MYMIN=EVABS(J)293:             MYMIN=EVABS(J)
294:             BNNUM(I)=J294:             BNNUM(I)=J
295:          ENDIF295:          ENDIF
296:       ENDDO296:       ENDDO
297:       IF (I.EQ.NLING) ELCUT=BNNUM(I)297:       IF (I==NLING) ELCUT=BNNUM(I)
298:       IF (I.EQ.NLING+1) EHCUT=BNNUM(I)298:       IF (I==NLING+1) EHCUT=BNNUM(I)
299:    ENDDO299:    ENDDO
300: 300: 
301: END SUBROUTINE301: END SUBROUTINE


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0