hdiff output

r33373/align_decide.f90 2017-10-04 19:30:10.799766733 +0100 r33372/align_decide.f90 2017-10-04 19:30:12.499789224 +0100
 23:  23: 
 24: IF (DEBUG .AND. BULKT .AND. ((ABS(NBOXLX-BOXLX).GT.1.0D-8) .OR. (ABS(NBOXLY-BOXLY).GT.1.0D-8) .OR. (ABS(NBOXLZ-BOXLZ).GT.1.0D-8))) THEN 24: IF (DEBUG .AND. BULKT .AND. ((ABS(NBOXLX-BOXLX).GT.1.0D-8) .OR. (ABS(NBOXLY-BOXLY).GT.1.0D-8) .OR. (ABS(NBOXLZ-BOXLZ).GT.1.0D-8))) THEN
 25:    WRITE(MYUNIT,*) "align_decide> ERROR: Box parameters passed in as arguments differ to those USEd from COMMONS." 25:    WRITE(MYUNIT,*) "align_decide> ERROR: Box parameters passed in as arguments differ to those USEd from COMMONS."
 26:    WRITE(MYUNIT,*) "Passed in: ", NBOXLX,NBOXLY,NBOXLZ 26:    WRITE(MYUNIT,*) "Passed in: ", NBOXLX,NBOXLY,NBOXLZ
 27:    WRITE(MYUNIT,*) "USEd: ", BOXLX, BOXLY, BOXLZ 27:    WRITE(MYUNIT,*) "USEd: ", BOXLX, BOXLY, BOXLZ
 28:    STOP 1 28:    STOP 1
 29: ENDIF   29: ENDIF  
 30:  30: 
 31: IF (FASTOVERLAPT .OR. BNB_ALIGNT) THEN 31: IF (FASTOVERLAPT .OR. BNB_ALIGNT) THEN
 32:    IF ((RIGIDINIT .AND. (.NOT.ATOMRIGIDCOORDT)) .OR. RIGID) THEN 32:    IF ((RIGIDINIT .AND. (.NOT.ATOMRIGIDCOORDT)) .OR. RIGID) THEN
 33:       WRITE(MYUNIT,'(A)') "align_decide> fastoverlap and BNB methods do not work in rigid body coordinates. Use cartesians instead." 33:       WRITE(MYUNIT,*) "align_decide> fastoverlap and BNB methods do not work in rigid body coordinates. Use cartesians instead."
 34:       STOP 34:       STOP
 35:    ELSEIF (ANY(NSETS(:).GT.0)) THEN 35:    ELSEIF (ANY(NSETS(:).GT.0)) THEN
 36:       WRITE(MYUNIT,'(A)') "align_decide> fastoverlap and BNB methods is not tested for secondary permutable sets, and probably doesn't work. Stopping now." 36:       WRITE(MYUNIT,*) "align_decide> fastoverlap and BNB methods is not tested for secondary permutable sets, and probably doesn't work. Stopping now."
 37:       STOP 37:       STOP
 38:    ENDIF 38:    ENDIF
 39:  39: 
 40:    ! In order to ensure that the correct logic is followed in MINPERMDIST, we need to make sure that PERMOPT and PERMINVOPT 40:    ! In order to ensure that the correct logic is followed in MINPERMDIST, we need to make sure that PERMOPT and PERMINVOPT
 41:    ! have the correct values for the system type. Unfortunately, we need PERMOPT set for clusters even if it's not being used 41:    ! have the correct values for the system type. Unfortunately, we need PERMOPT set for clusters even if it's not being used
 42:    ! for the rest of the program. 42:    ! for the rest of the program.
 43:    SAVEPERMOPT = PERMOPT; SAVEPERMINVOPT = PERMINVOPT 43:    SAVEPERMOPT = PERMOPT; SAVEPERMINVOPT = PERMINVOPT
 44:    IF(BULKT) THEN 44:    IF(BULKT) THEN
 45:       PERMOPT = .FALSE. 45:       PERMOPT = .FALSE.
 46:       PERMINVOPT = .FALSE. 46:       PERMINVOPT = .FALSE.
 77:       IF(DEBUG) WRITE(MYUNIT,*) "align_decide> using original MINPERMDIST routine" 77:       IF(DEBUG) WRITE(MYUNIT,*) "align_decide> using original MINPERMDIST routine"
 78:       CALL MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST) 78:       CALL MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST)
 79:  79: 
 80:    ENDIF 80:    ENDIF
 81:  81: 
 82: ELSE 82: ELSE
 83:  83: 
 84:    IF (DEBUG .AND. (FASTOVERLAPT .OR. BNB_ALIGNT)) THEN 84:    IF (DEBUG .AND. (FASTOVERLAPT .OR. BNB_ALIGNT)) THEN
 85:       WRITE(MYUNIT,*) "Warning: Specified new ALIGN routines without PERMDIST or with LOCALPERMDIST. Using MINPERMDIST instead." 85:       WRITE(MYUNIT,*) "Warning: Specified new ALIGN routines without PERMDIST or with LOCALPERMDIST. Using MINPERMDIST instead."
 86:    ENDIF 86:    ENDIF
 87:    IF(DEBUG) WRITE(MYUNIT,'(A)') "align_decide> using original MINPERMDIST routine" 87:    IF(DEBUG) WRITE(MYUNIT,*) "align_decide> using original MINPERMDIST routine"
 88:    CALL MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST) 88:    CALL MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST)
 89:  89: 
 90: IF (FASTOVERLAPT .OR. BNB_ALIGNT) THEN 90: IF (FASTOVERLAPT .OR. BNB_ALIGNT) THEN
 91:    PERMOPT = SAVEPERMOPT; PERMINVOPT = SAVEPERMINVOPT 91:    PERMOPT = SAVEPERMOPT; PERMINVOPT = SAVEPERMINVOPT
 92: ENDIF 92: ENDIF
 93:  93: 
 94: END SUBROUTINE 94: END SUBROUTINE


r33373/finalio.f90 2017-10-04 19:30:11.027769751 +0100 r33372/finalio.f90 2017-10-04 19:30:12.731792293 +0100
 85:   ! ds656> Extra stuff for HSA in OPTIM's min.data format 85:   ! ds656> Extra stuff for HSA in OPTIM's min.data format
 86:   INTEGER :: NUM_ZERO_EVS, INFO 86:   INTEGER :: NUM_ZERO_EVS, INFO
 87:   DOUBLE PRECISION :: LOG_PROD, EVALS(3*NATOMS), WORK(9*NATOMS) 87:   DOUBLE PRECISION :: LOG_PROD, EVALS(3*NATOMS), WORK(9*NATOMS)
 88:  88: 
 89:  89: 
 90:   PI = 4.D0*DATAN(1.D0) 90:   PI = 4.D0*DATAN(1.D0)
 91:  91: 
 92:   !ds656> test 92:   !ds656> test
 93:   !write(*,*) "finalio> START, PI=", PI 93:   !write(*,*) "finalio> START, PI=", PI
 94:  94: 
 95: ! 95:   IF (PERMOPT) THEN
 96: ! This block gave nonesense in the lowest file. Removed 4/10/17 DJW 96:      NSAVE=2
 97: ! 97:      QMIN(2)=0.0D0
 98: ! IF (PERMOPT) THEN 98:      QMINP(2,:)=FIN(:)
 99: !    NSAVE=2 99:      FF(:)=0
100: !    QMIN(2)=0.0D0100:   ENDIF
101: !    QMINP(2,:)=FIN(:) 
102: !    FF(:)=0 
103: ! ENDIF 
104: 101: 
105:   NUMPRO = 1102:   NUMPRO = 1
106:   NUMCRD = 3103:   NUMCRD = 3
107: 104: 
108:   ALLOCATE(DBNAME(NSAVE))105:   ALLOCATE(DBNAME(NSAVE))
109: 106: 
110:   IF (DEBUG) WRITE(MYUNIT,'(A,3I6)') ' in finalio MYNODE,MYUNIT,NSAVE=',MYNODE,MYUNIT,NSAVE !jdf43>107:   IF (DEBUG) WRITE(MYUNIT,'(A,3I6)') ' in finalio MYNODE,MYUNIT,NSAVE=',MYNODE,MYUNIT,NSAVE !jdf43>
111:   DO J1=1,NSAVE108:   DO J1=1,NSAVE
112:      WRITE(DBNUM,*) J1109:      WRITE(DBNUM,*) J1
113:      DBNAME(J1)='dbase.'//TRIM(ADJUSTL(DBNUM))110:      DBNAME(J1)='dbase.'//TRIM(ADJUSTL(DBNUM))


r33373/minpermdist.f90 2017-10-04 19:30:11.259772819 +0100 r33372/minpermdist.f90 2017-10-04 19:30:12.951795203 +0100
151: ENDIF151: ENDIF
152: 152: 
153: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!153: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
154: ! CALL OCHARMM(DUMMYA,VNEW,ENERGY,.FALSE.,.FALSE.)154: ! CALL OCHARMM(DUMMYA,VNEW,ENERGY,.FALSE.,.FALSE.)
155: ! CALL POTENTIAL(DUMMYA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)155: ! CALL POTENTIAL(DUMMYA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
156: ! PRINT '(2(A,F25.15))',' Initial energy=',ENERGY,' RMS=',RMS156: ! PRINT '(2(A,F25.15))',' Initial energy=',ENERGY,' RMS=',RMS
157: ! PRINT '(2(A,F25.15))',' for coordinates:'157: ! PRINT '(2(A,F25.15))',' for coordinates:'
158: ! PRINT '(3F25.15)',DUMMYA(1:3*NATOMS)158: ! PRINT '(3F25.15)',DUMMYA(1:3*NATOMS)
159: ! PRINT '(A,F25.15,A)',' Initial energy=',ENERGY,' kcal/mol'159: ! PRINT '(A,F25.15,A)',' Initial energy=',ENERGY,' kcal/mol'
160: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!160: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
161: !  WRITE(MYUNIT,'(A)') 'A initial' 
162: !  DO J3=1,NATOMS 
163: !      WRITE(MYUNIT,'(A2,2X,3F20.10)') 'LA',COORDSA(3*(J3-1)+1),COORDSA(3*(J3-1)+2),COORDSA(3*(J3-1)+3) 
164: !  ENDDO 
165: !  WRITE(MYUNIT,'(A)') 'B initial' 
166: !  DO J3=1,NATOMS 
167: !      WRITE(MYUNIT,'(A2,2X,3F20.10)') 'LA',COORDSB(3*(J3-1)+1),COORDSB(3*(J3-1)+2),COORDSB(3*(J3-1)+3) 
168: !  ENDDO 
169: 161: 
170: !  OPEN(UNIT=10,FILE='minpermdist.xyz',STATUS='UNKNOWN')162: !  OPEN(UNIT=10,FILE='minpermdist.xyz',STATUS='UNKNOWN')
171: !  WRITE(10,'(I6)') NATOMS/2163: !  WRITE(10,'(I6)') NATOMS/2
172: !  WRITE(10,'(A)') 'A initial'164: !  WRITE(10,'(A)') 'A initial'
173: !  DO J3=1,NATOMS/2165: !  DO J3=1,NATOMS/2
174: !      WRITE(10,'(A2,2X,3F20.10)') 'LA',COORDSA(3*(J3-1)+1),COORDSA(3*(J3-1)+2),COORDSA(3*(J3-1)+3)166: !      WRITE(10,'(A2,2X,3F20.10)') 'LA',COORDSA(3*(J3-1)+1),COORDSA(3*(J3-1)+2),COORDSA(3*(J3-1)+3)
175: !  ENDDO167: !  ENDDO
176: !  WRITE(10,'(I6)') NATOMS/2168: !  WRITE(10,'(I6)') NATOMS/2
177: !  WRITE(10,'(A)') 'B initial'169: !  WRITE(10,'(A)') 'B initial'
178: !  DO J3=1,NATOMS/2170: !  DO J3=1,NATOMS/2
364:    ROTB(1,1)=1.0D0; ROTB(2,2)=1.0D0; ROTB(3,3)=1.0D0356:    ROTB(1,1)=1.0D0; ROTB(2,2)=1.0D0; ROTB(3,3)=1.0D0
365:    ROTINVB(1:3,1:3)=0.0D0357:    ROTINVB(1:3,1:3)=0.0D0
366:    ROTINVB(1,1)=1.0D0; ROTINVB(2,2)=1.0D0; ROTINVB(3,3)=1.0D0358:    ROTINVB(1,1)=1.0D0; ROTINVB(2,2)=1.0D0; ROTINVB(3,3)=1.0D0
367:    ROTA(1:3,1:3)=0.0D0359:    ROTA(1:3,1:3)=0.0D0
368:    ROTA(1,1)=1.0D0; ROTA(2,2)=1.0D0; ROTA(3,3)=1.0D0360:    ROTA(1,1)=1.0D0; ROTA(2,2)=1.0D0; ROTA(3,3)=1.0D0
369:    ROTINVA(1:3,1:3)=0.0D0361:    ROTINVA(1:3,1:3)=0.0D0
370:    ROTINVA(1,1)=1.0D0; ROTINVA(2,2)=1.0D0; ROTINVA(3,3)=1.0D0362:    ROTINVA(1,1)=1.0D0; ROTINVA(2,2)=1.0D0; ROTINVA(3,3)=1.0D0
371:    RMAT(1:3,1:3)=0.0D0363:    RMAT(1:3,1:3)=0.0D0
372:    RMAT(1,1)=1.0D0; RMAT(2,2)=1.0D0; RMAT(3,3)=1.0D0364:    RMAT(1,1)=1.0D0; RMAT(2,2)=1.0D0; RMAT(3,3)=1.0D0
373:    CMX=0.0D0; CMY=0.0D0; CMZ=0.0D0365:    CMX=0.0D0; CMY=0.0D0; CMZ=0.0D0
374:    IF ((.NOT.MKTRAPT).AND.(NFREEZE.EQ.0)) THEN366:    IF (.NOT.MKTRAPT) THEN
375:       DO I=1,NATOMS367:       DO I=1,NATOMS
376:          CMX=CMX+DUMMYA(3*(I-1)+1)368:          CMX=CMX+DUMMYA(3*(I-1)+1)
377:          CMY=CMY+DUMMYA(3*(I-1)+2)369:          CMY=CMY+DUMMYA(3*(I-1)+2)
378:          CMZ=CMZ+DUMMYA(3*(I-1)+3)370:          CMZ=CMZ+DUMMYA(3*(I-1)+3)
379:       ENDDO371:       ENDDO
380:       CMX=CMX/NATOMS; CMY=CMY/NATOMS; CMZ=CMZ/NATOMS372:       CMX=CMX/NATOMS; CMY=CMY/NATOMS; CMZ=CMZ/NATOMS
381:       DO I=1,NATOMS373:       DO I=1,NATOMS
382:          DUMMYA(3*(I-1)+1)=DUMMYA(3*(I-1)+1)-CMX374:          DUMMYA(3*(I-1)+1)=DUMMYA(3*(I-1)+1)-CMX
383:          DUMMYA(3*(I-1)+2)=DUMMYA(3*(I-1)+2)-CMY375:          DUMMYA(3*(I-1)+2)=DUMMYA(3*(I-1)+2)-CMY
384:          DUMMYA(3*(I-1)+3)=DUMMYA(3*(I-1)+3)-CMZ376:          DUMMYA(3*(I-1)+3)=DUMMYA(3*(I-1)+3)-CMZ
400:    DISTANCE=0.0D0392:    DISTANCE=0.0D0
401:    DO J1=1,3*NATOMS393:    DO J1=1,3*NATOMS
402:       DISTANCE=DISTANCE+(DUMMYB(J1)-DUMMYA(J1))**2394:       DISTANCE=DISTANCE+(DUMMYB(J1)-DUMMYA(J1))**2
403:    ENDDO395:    ENDDO
404:    DISTANCE=SQRT(DISTANCE)396:    DISTANCE=SQRT(DISTANCE)
405:    IF (.NOT.(PERMOPT.OR.PERMINVOPT)) THEN397:    IF (.NOT.(PERMOPT.OR.PERMINVOPT)) THEN
406:       CALL NEWMINDIST(DUMMYB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)398:       CALL NEWMINDIST(DUMMYB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)
407:       IF (DEBUG) WRITE(MYUNIT,'(A,G20.10)') 'minpermdist> after initial call to NEWMINDIST distance=',DISTANCE399:       IF (DEBUG) WRITE(MYUNIT,'(A,G20.10)') 'minpermdist> after initial call to NEWMINDIST distance=',DISTANCE
408:    ENDIF400:    ENDIF
409:    DISTANCE=DISTANCE**2 ! minpermdist returns the distance squared for historical reasons401:    DISTANCE=DISTANCE**2 ! minpermdist returns the distance squared for historical reasons
410: !  IF (DEBUG) WRITE(MYUNIT,'(A,G20.10)') 'minpermdist> A distance=',SQRT(DISTANCE)402:    IF (DEBUG) WRITE(MYUNIT,'(A,G20.10)') 'minpermdist> A distance=',SQRT(DISTANCE)
 403: 
411: !     DUMMYC(1:3*NATOMS)=INVERT*DUMMYA(1:3*NATOMS)404: !     DUMMYC(1:3*NATOMS)=INVERT*DUMMYA(1:3*NATOMS)
412: !     CALL MYORIENT(DUMMYC,DUMMY,NORBIT1,NCHOOSE1,NORBIT2,NCHOOSE2,NATOMS,DEBUG,ROTA,ROTINVA,STOCKT)405: !     CALL MYORIENT(DUMMYC,DUMMY,NORBIT1,NCHOOSE1,NORBIT2,NCHOOSE2,NATOMS,DEBUG,ROTA,ROTINVA,STOCKT)
413: !     DUMMYA(1:3*NATOMS)=DUMMY(1:3*NATOMS)406: !     DUMMYA(1:3*NATOMS)=DUMMY(1:3*NATOMS)
414: !     CALL MYORIENT(DUMMYB,DUMMY,NORBITB1,NCHOOSEB1,NORBITB2,NCHOOSEB2,NATOMS,DEBUG,ROTB,ROTINVB,STOCKT)407: !     CALL MYORIENT(DUMMYB,DUMMY,NORBITB1,NCHOOSEB1,NORBITB2,NCHOOSEB2,NATOMS,DEBUG,ROTB,ROTINVB,STOCKT)
415: !     DUMMYB(1:3*NATOMS)=DUMMY(1:3*NATOMS)408: !     DUMMYB(1:3*NATOMS)=DUMMY(1:3*NATOMS)
416: !     DISTANCE=0.0D0409: !     DISTANCE=0.0D0
417: !     DO J1=1,3*NATOMS410: !     DO J1=1,3*NATOMS
418: !        DISTANCE=DISTANCE+(DUMMYA(J1)-DUMMYB(J1))**2411: !        DISTANCE=DISTANCE+(DUMMYA(J1)-DUMMYB(J1))**2
419: !     ENDDO412: !     ENDDO
420: !  IF (DEBUG) WRITE(MYUNIT,'(A,G20.10)') 'minpermdist> B distance=',SQRT(DISTANCE)413: !  IF (DEBUG) WRITE(MYUNIT,'(A,G20.10)') 'minpermdist> B distance=',SQRT(DISTANCE)
421: 414: 
422: ENDIF415: ENDIF
423: 416:    IF (DEBUG) WRITE(MYUNIT,'(A,G20.10,A,I6,A)') &
424: IF (DEBUG) WRITE(MYUNIT,'(A,G20.10,A,I6,A)') & 
425:   &       ' minpermdist> after initial call to MYORIENT distance=',SQRT(DISTANCE), ' for ',NATOMS,' atoms'417:   &       ' minpermdist> after initial call to MYORIENT distance=',SQRT(DISTANCE), ' for ',NATOMS,' atoms'
426: IF (DEBUG) WRITE(MYUNIT,'(A,6I8)') ' minpermdist> size of orbits, selected atoms, invert: ', &418:    IF (DEBUG) WRITE(MYUNIT,'(A,6I8)') ' minpermdist> size of orbits, selected atoms, invert: ', &
427:   &       NORBIT1,NORBIT2,NCHOOSE1,NCHOOSE2,INVERT419:   &       NORBIT1,NORBIT2,NCHOOSE1,NCHOOSE2,INVERT
428: 420: 
429: IF (DEBUG) WRITE(MYUNIT,'(A,4I8)') 'minpermdist> size of orbits and selected atoms: ',NORBIT1,NORBIT2,NCHOOSE1,NCHOOSE2421: IF (DEBUG) WRITE(MYUNIT,'(A,4I8)') 'minpermdist> size of orbits and selected atoms: ',NORBIT1,NORBIT2,NCHOOSE1,NCHOOSE2
430: 422: 
431: ! CALL POTENTIAL(DUMMYA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)423: ! CALL POTENTIAL(DUMMYA,ENERGY,VNEW,.TRUE.,.FALSE.,RMS,.FALSE.,.FALSE.)
432: ! PRINT '(2(A,F25.15))',' New initial energy=',ENERGY,' RMS=',RMS424: ! PRINT '(2(A,F25.15))',' New initial energy=',ENERGY,' RMS=',RMS
433: ! PRINT '(2(A,F25.15))',' for coordinates:'425: ! PRINT '(2(A,F25.15))',' for coordinates:'
434: ! PRINT '(3F25.15)',DUMMYA(1:3*NATOMS)426: ! PRINT '(3F25.15)',DUMMYA(1:3*NATOMS)
435: !427: !
436: !  Bipartite matching routine for permutations. Coordinates in DUMMYB do not change428: !  Bipartite matching routine for permutations. Coordinates in DUMMYB do not change


r33373/newmindist.f90 2017-10-04 19:30:11.487775835 +0100 r33372/newmindist.f90 2017-10-04 19:30:13.175798166 +0100
 24: !   Kearsley, Acta Cryst. A, 45, 208-210, 1989. 24: !   Kearsley, Acta Cryst. A, 45, 208-210, 1989.
 25: ! 25: !
 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: !     ---------------------------------------------------------------------------------------------- 29: !     ----------------------------------------------------------------------------------------------
 30: ! jdf43>        Modified for general angle-axis 30/01/12 30: ! jdf43>        Modified for general angle-axis 30/01/12
 31: !     ---------------------------------------------------------------------------------------------- 31: !     ----------------------------------------------------------------------------------------------
 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 : MYUNIT, MULLERBROWNT, BOXLX, BOXLY, BOXLZ, STOCKT, CSMT, MKTRAPT, FASTOVERLAPT, BNB_ALIGNT, NFREEZE 34: USE COMMONS,ONLY : MYUNIT, MULLERBROWNT, BOXLX, BOXLY, BOXLZ, STOCKT, CSMT, MKTRAPT, FASTOVERLAPT, BNB_ALIGNT
 35: IMPLICIT NONE 35: IMPLICIT NONE
 36: INTEGER J1, NATOMS, NSIZE, INFO, JINFO, JMIN 36: INTEGER J1, NATOMS, NSIZE, INFO, JINFO, JMIN
 37: INTEGER,PARAMETER :: LWORK=12 37: INTEGER,PARAMETER :: LWORK=12
 38: DOUBLE PRECISION RA(3*NATOMS), RB(3*NATOMS), DIST, QMAT(4,4), XM, YM, ZM, XP, YP, ZP, OVEC(3), H1VEC(3), H2VEC(3), & 38: DOUBLE PRECISION RA(3*NATOMS), RB(3*NATOMS), DIST, QMAT(4,4), XM, YM, ZM, XP, YP, ZP, OVEC(3), H1VEC(3), H2VEC(3), &
 39:   &              DIAG(4), TEMPA(LWORK), RMAT(3,3), MINV, Q1, Q2, Q3, Q4, CMXA, CMYA, CMZA, CMXB, CMYB, CMZB, & 39:   &              DIAG(4), TEMPA(LWORK), RMAT(3,3), MINV, Q1, Q2, Q3, Q4, CMXA, CMYA, CMZA, CMXB, CMYB, CMZB, &
 40:   &              NCMXB, NCMYB, NCMZB 40:   &              NCMXB, NCMYB, NCMZB
 41: DOUBLE PRECISION, ALLOCATABLE :: XA(:), XB(:) 41: DOUBLE PRECISION, ALLOCATABLE :: XA(:), XB(:)
 42: LOGICAL BULKT, TWOD, RIGIDBODY, PRESERVET, DEBUG 42: LOGICAL BULKT, TWOD, RIGIDBODY, PRESERVET, DEBUG
 43: CHARACTER(LEN=5) ZUSE 43: CHARACTER(LEN=5) ZUSE
 44: INTEGER NCIT 44: INTEGER NCIT
 45: DOUBLE PRECISION XSHIFT, YSHIFT, ZSHIFT, XSHIFTNEW, YSHIFTNEW, ZSHIFTNEW 45: DOUBLE PRECISION XSHIFT, YSHIFT, ZSHIFT, XSHIFTNEW, YSHIFTNEW, ZSHIFTNEW
 46: DOUBLE PRECISION MYROTMAT(3,3), OMEGATOT(3,3) 46: DOUBLE PRECISION MYROTMAT(3,3), OMEGATOT(3,3)
 47: COMMON /MINDOM/ MYROTMAT, OMEGATOT 47: COMMON /MINDOM/ MYROTMAT, OMEGATOT
 48:  48: 
 49: IF (RIGIDBODY) THEN 49: IF (RIGIDBODY) THEN
 50:    CALL RBMINDIST(RA,RB,NATOMS,DIST,RMAT,DEBUG) 50:    CALL RBMINDIST(RA,RB,NATOMS,DIST,RMAT,DEBUG)
 51:    RETURN 51:    RETURN
 52: ELSEIF (MKTRAPT.OR.(NFREEZE.GT.0)) THEN 52: ELSEIF (MKTRAPT) THEN
 53:    DIST=0.0D0 53:    DIST=0.0D0
 54:    DO J1=1,3*NATOMS 54:    DO J1=1,3*NATOMS
 55:       DIST=DIST+(RA(J1)-RB(J1))**2 55:       DIST=DIST+(RA(J1)-RB(J1))**2
 56:    ENDDO 56:    ENDDO
 57:    DIST=SQRT(DIST) 57:    DIST=SQRT(DIST)
 58:    RETURN 58:    RETURN
 59: !  59: ! 
 60: ! Convert rigid body coordinates to Cartesians for rigid bodies.  60: ! Convert rigid body coordinates to Cartesians for rigid bodies. 
 61: ! 61: !
 62: ELSE IF (ZUSE(1:1).EQ.'W') THEN 62: ELSE IF (ZUSE(1:1).EQ.'W') THEN


r33373/potential.f90 2017-10-04 19:30:12.047783244 +0100 r33372/potential.f90 2017-10-04 19:30:13.407801237 +0100
1057:          CSMGP=CSMGPSAVE1057:          CSMGP=CSMGPSAVE
1058:          CSMGPINDEX=CSMGPINDEXSAVE1058:          CSMGPINDEX=CSMGPINDEXSAVE
1059:          PTGP(1:3, 1:3, 1:2*CSMGPINDEX)=PTGPSAVE(1:3, 1:3, 1:2*CSMGPINDEX)1059:          PTGP(1:3, 1:3, 1:2*CSMGPINDEX)=PTGPSAVE(1:3, 1:3, 1:2*CSMGPINDEX)
1060:          CSMNORM=CSMNORMSAVE1060:          CSMNORM=CSMNORMSAVE
1061:       END IF1061:       END IF
1062: 1062: 
1063:    ELSE IF (PERMOPT .OR. PERMINVOPT .OR. DISTOPT .OR. ALIGNT) THEN1063:    ELSE IF (PERMOPT .OR. PERMINVOPT .OR. DISTOPT .OR. ALIGNT) THEN
1064: !  EREAL is the distance in this case1064: !  EREAL is the distance in this case
1065:       write(*,*) "Calling ALIGN_DECIDE from POTENTIAL, PERIODIC=",PERIODIC1065:       write(*,*) "Calling ALIGN_DECIDE from POTENTIAL, PERIODIC=",PERIODIC
1066:       CALL ALIGN_DECIDE(FIN, X, NATOMS, DEBUG, BOXLX, BOXLY, BOXLZ, PERIODIC, TWOD, EREAL, DIST2, RIGID, RMAT)1066:       CALL ALIGN_DECIDE(FIN, X, NATOMS, DEBUG, BOXLX, BOXLY, BOXLZ, PERIODIC, TWOD, EREAL, DIST2, RIGID, RMAT)
1067:  
1068: !     IF (DEBUG) THEN 1067: !     IF (DEBUG) THEN 
1069: !       WRITE(MYUNIT,'(A)') 'Rotation matrix:'1068: !       WRITE(MYUNIT,'(A)') 'Rotation matrix:'
1070: !       WRITE(MYUNIT,*) RMAT(:,:)1069: !       WRITE(MYUNIT,*) RMAT(:,:)
1071: !     ENDIF1070: !     ENDIF
1072: 1071: 
1073:    ELSE IF (MKTRAPT) THEN1072:    ELSE IF (MKTRAPT) THEN
1074:       CALL MKTRAP(NATOMS, X, GRAD, EREAL)1073:       CALL MKTRAP(NATOMS, X, GRAD, EREAL)
1075:    ELSE IF (BLJCLUSTER) THEN1074:    ELSE IF (BLJCLUSTER) THEN
1076:       CALL RAD(X, GRAD, EREAL, GRADT)1075:       CALL RAD(X, GRAD, EREAL, GRADT)
1077:       CALL LJPSHIFTBINC(X, GRAD, EREAL, GRADT, SECT)1076:       CALL LJPSHIFTBINC(X, GRAD, EREAL, GRADT, SECT)


r33373/takestep.f 2017-10-04 19:30:12.271786207 +0100 r33372/takestep.f 2017-10-04 19:30:13.631804200 +0100
 45: !        WRITE(177,'(I6)') NATOMS 45: !        WRITE(177,'(I6)') NATOMS
 46: !        WRITE(MYUNIT,'(A)') ' start of takestep coords ' 46: !        WRITE(MYUNIT,'(A)') ' start of takestep coords '
 47: !        WRITE(MYUNIT,'(A2,2X,3G20.10)') ('LA',COORDS(3*(J2-1)+1,NP),COORDS(3*(J2-1)+2,NP), 47: !        WRITE(MYUNIT,'(A2,2X,3G20.10)') ('LA',COORDS(3*(J2-1)+1,NP),COORDS(3*(J2-1)+2,NP),
 48: !    &                                 COORDS(3*(J2-1)+3,NP),J2=1,NATOMS) 48: !    &                                 COORDS(3*(J2-1)+3,NP),J2=1,NATOMS)
 49: !        WRITE(177,'(I6)') NATOMS 49: !        WRITE(177,'(I6)') NATOMS
 50: !        WRITE(MYUNIT,'(A)') ' start of takestep coordso' 50: !        WRITE(MYUNIT,'(A)') ' start of takestep coordso'
 51: !        WRITE(MYUNIT,'(A2,2X,3G20.10)') ('LA',COORDSO(3*(J2-1)+1,NP),COORDSO(3*(J2-1)+2,NP), 51: !        WRITE(MYUNIT,'(A2,2X,3G20.10)') ('LA',COORDSO(3*(J2-1)+1,NP),COORDSO(3*(J2-1)+2,NP),
 52: !    &                                 COORDSO(3*(J2-1)+3,NP),J2=1,NATOMS) 52: !    &                                 COORDSO(3*(J2-1)+3,NP),J2=1,NATOMS)
 53: !        CLOSE(177) 53: !        CLOSE(177)
 54:  54: 
 55: ! 
 56: ! We never want to move atoms if we are doing PERMOPT. Bug fix 4/10/17 DJW 
 57: ! 
 58:       IF (PERMOPT.OR.PERMINVOPT.OR.DISTOPT.OR.ALIGNT) RETURN  
 59:       IF ((PERMOPT.OR.PERMINVOPT.OR.DISTOPT.OR.ALIGNT).AND.PERIODIC) RETURN  55:       IF ((PERMOPT.OR.PERMINVOPT.OR.DISTOPT.OR.ALIGNT).AND.PERIODIC) RETURN 
 60:       IF ((PERMOPT.OR.PERMINVOPT.OR.ALIGNT).AND.MKTRAPT) RETURN  56:       IF ((PERMOPT.OR.PERMINVOPT.OR.ALIGNT).AND.MKTRAPT) RETURN 
 61:        57:       
 62:       IF (MODEL1T) THEN 58:       IF (MODEL1T) THEN
 63:          RANDOM=(DPRAND()-0.5D0)*2.0D0 59:          RANDOM=(DPRAND()-0.5D0)*2.0D0
 64:          COORDS(1,NP)=COORDSO(1,NP)+STEP(NP)*RANDOM 60:          COORDS(1,NP)=COORDSO(1,NP)+STEP(NP)*RANDOM
 65:          RETURN 61:          RETURN
 66:       ENDIF 62:       ENDIF
 67:       IF (MLQT.OR.MLPVB3T.OR.MLP3T.OR.ORBITALS) THEN 63:       IF (MLQT.OR.MLPVB3T.OR.MLP3T.OR.ORBITALS) THEN
 68:          DO J1=1,NATOMS 64:          DO J1=1,NATOMS


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0