hdiff output

r29845/commons.f90 2016-01-26 15:30:16.400944076 +0000 r29844/commons.f90 2016-01-26 15:30:17.320956054 +0000
 98:      &        BARRIERSHORT, FREEZE, RATESHORT, DUMMYRUNT, REWEIGHTT, REGROUPFREET, RFMULTIT, REGROUPFREEABT, READMINT, & 98:      &        BARRIERSHORT, FREEZE, RATESHORT, DUMMYRUNT, REWEIGHTT, REGROUPFREET, RFMULTIT, REGROUPFREEABT, READMINT, &
 99:      &        DUMPGROUPST, FREEPAIRT, KSHORTESTPATHST, KSHORT_FULL_PRINTT, DIJINITFLYT, BHINTERPT, ICINTERPT, & 99:      &        DUMPGROUPST, FREEPAIRT, KSHORTESTPATHST, KSHORT_FULL_PRINTT, DIJINITFLYT, BHINTERPT, ICINTERPT, &
100:      &        DUMMYTST, DOCKT, DSTAGE(6), USEPAIRST, LOWESTFRQT, BISECTT, NGTDISCONNECTALL, ANGLEAXIS2, TFOLDT, &100:      &        DUMMYTST, DOCKT, DSTAGE(6), USEPAIRST, LOWESTFRQT, BISECTT, NGTDISCONNECTALL, ANGLEAXIS2, TFOLDT, &
101:      &        SLURMT, INDEXCOSTFUNCTION, CVT, DOST, IMFRQT, CLOSEFILEST, PULLT, FRICTIONT, ATOMMATCHFULL, &101:      &        SLURMT, INDEXCOSTFUNCTION, CVT, DOST, IMFRQT, CLOSEFILEST, PULLT, FRICTIONT, ATOMMATCHFULL, &
102:      &        INTCONSTRAINTT, CHECKCONINT, INTLJT, INTERPCOSTFUNCTION, REMOVEUNCONNECTEDT, ATOMMATCHDIST, &102:      &        INTCONSTRAINTT, CHECKCONINT, INTLJT, INTERPCOSTFUNCTION, REMOVEUNCONNECTEDT, ATOMMATCHDIST, &
103:      &        DBPT, DBPTDT, DMBLPYT, EFIELDT, MSSTOCKT, NTIPT, PAHAT, PAPT, PATCHYDT, STOCKAAT, RBAAT, RBSYMT, TRAPT, SILANET, &103:      &        DBPT, DBPTDT, DMBLPYT, EFIELDT, MSSTOCKT, NTIPT, PAHAT, PAPT, PATCHYDT, STOCKAAT, RBAAT, RBSYMT, TRAPT, SILANET, &
104:      &        OHCELLT, INTFREEZET, LPERMDIST, PBST, RANDOMMETRICT, SSHT, ALLTST, USERPOTT, CHECKMINT, &104:      &        OHCELLT, INTFREEZET, LPERMDIST, PBST, RANDOMMETRICT, SSHT, ALLTST, USERPOTT, CHECKMINT, &
105:      &        CHECKTST, CHECKSPT, FROMLOWESTT, ADDMINXYZT, MACHINE, RATESCYCLET, NOINVERSION, NEWCONNECTIONST, NIMET, NIHEAM7T, &105:      &        CHECKTST, CHECKSPT, FROMLOWESTT, ADDMINXYZT, MACHINE, RATESCYCLET, NOINVERSION, NEWCONNECTIONST, NIMET, NIHEAM7T, &
106:      &        NIH2LEPST, DISTANCET, RATETARGETT, TARGETHIT, ALLOWABT, MICROTHERMT, RFKMCT, REGROUPKMCT, ONEREGROUPT, PHI4MODT, &106:      &        NIH2LEPST, DISTANCET, RATETARGETT, TARGETHIT, ALLOWABT, MICROTHERMT, RFKMCT, REGROUPKMCT, ONEREGROUPT, PHI4MODT, &
107:      &        PERSISTT, REGROUPPERSISTT, NOLABELST, SHANNONT, MAKEPAIRS, SKIPPAIRST, PERSISTAPPROXT, ALLCOMPONENTST, &107:      &        PERSISTT, REGROUPPERSISTT, NOLABELST, SHANNONT, MAKEPAIRS, SKIPPAIRST, PERSISTAPPROXT, ALLCOMPONENTST, &
108:      &        SHANNONRT, SHANNONZT, CUDAT, MLLJAT3, MLP3T, DIJPRUNET, PRINTSUMMARYT, MKTRAPT108:      &        SHANNONRT, SHANNONZT, CUDAT, MLLJAT3, MLP3T, DIJPRUNET, PRINTSUMMARYT
109: 109: 
110:       LOGICAL, ALLOCATABLE :: SHIFTABLE(:)110:       LOGICAL, ALLOCATABLE :: SHIFTABLE(:)
111:       CHARACTER(LEN=80) COORDSLIGANDSTR, COORDSCOMPLEXSTR, COORDSPROTEINSTR111:       CHARACTER(LEN=80) COORDSLIGANDSTR, COORDSCOMPLEXSTR, COORDSPROTEINSTR
112:       CHARACTER(LEN=80) EXEC,EXECGMIN112:       CHARACTER(LEN=80) EXEC,EXECGMIN
113:       CHARACTER(LEN=80) PATHNAME, MINNAME, ADDMINXYZNAME, ALLCOMPS113:       CHARACTER(LEN=80) PATHNAME, MINNAME, ADDMINXYZNAME, ALLCOMPS
114:       CHARACTER(LEN=150) COPYFILES114:       CHARACTER(LEN=150) COPYFILES
115:       CHARACTER(LEN=80) USEPAIRSFILE115:       CHARACTER(LEN=80) USEPAIRSFILE
116:       CHARACTER(LEN=80) MAKEPAIRSFILE116:       CHARACTER(LEN=80) MAKEPAIRSFILE
117:       CHARACTER(LEN=2) DIRECTION117:       CHARACTER(LEN=2) DIRECTION
118:       CHARACTER(LEN=5) UNCONNECTEDS118:       CHARACTER(LEN=5) UNCONNECTEDS


r29845/keywords.f 2016-01-26 15:30:16.620946939 +0000 r29844/keywords.f 2016-01-26 15:30:17.536958865 +0000
336:       ELOWBAR=TINY(1.0D0)336:       ELOWBAR=TINY(1.0D0)
337:       EHIGHBAR=HUGE(1.0D0)337:       EHIGHBAR=HUGE(1.0D0)
338:       BAILDIST=TINY(1.0D0)338:       BAILDIST=TINY(1.0D0)
339: !339: !
340: ! To document...340: ! To document...
341: !341: !
342: !342: !
343: ! Neural network potential343: ! Neural network potential
344: !344: !
345:       MLP3T=.FALSE.345:       MLP3T=.FALSE.
346: ! 
347: ! MK trap potential 
348: ! 
349:       MKTRAPT=.FALSE. 
350: 346: 
351:       PHI4MODT=.FALSE.347:       PHI4MODT=.FALSE.
352:       MLLJAT3=.FALSE.348:       MLLJAT3=.FALSE.
353:       RELATIVEET=.FALSE.349:       RELATIVEET=.FALSE.
354:       RATETARGETT=.FALSE.350:       RATETARGETT=.FALSE.
355:       RATETARGETAB=HUGE(1.0)351:       RATETARGETAB=HUGE(1.0)
356:       RATETARGETBA=HUGE(1.0)352:       RATETARGETBA=HUGE(1.0)
357:       TARGETHIT=.FALSE.353:       TARGETHIT=.FALSE.
358:       NRANROT=0354:       NRANROT=0
359:       CHECKSPT=.FALSE.355:       CHECKSPT=.FALSE.
1363:          CALL READI(NCONNMIN)1359:          CALL READI(NCONNMIN)
1364:          IF (NITEMS.GT.3) THEN 1360:          IF (NITEMS.GT.3) THEN 
1365:             CALL READA(LOYNO)1361:             CALL READA(LOYNO)
1366:             IF (LOYNO == 'T') KSHORT_FULL_PRINTT = .TRUE.1362:             IF (LOYNO == 'T') KSHORT_FULL_PRINTT = .TRUE.
1367:          ENDIF1363:          ENDIF
1368: C1364: C
1369: C  Whether to read extra curvatures from min.data.info files in DUMMYTS runs1365: C  Whether to read extra curvatures from min.data.info files in DUMMYTS runs
1370: C1366: C
1371:       ELSE IF (WORD.EQ.'LOWESTFRQ') THEN1367:       ELSE IF (WORD.EQ.'LOWESTFRQ') THEN
1372:          LOWESTFRQT=.TRUE.1368:          LOWESTFRQT=.TRUE.
1373:  
1374:       ELSE IF (WORD.EQ.'MKTRAP') THEN 
1375:          MKTRAPT=.TRUE. 
1376:          ZSYM='BE' 
1377: !1369: !
1378: ! MLLJAT3 for ML LJAT3 time series landscapes1370: ! MLLJAT3 for ML LJAT3 time series landscapes
1379: !1371: !
1380:       ELSE IF (WORD.EQ.'MLLJAT3') THEN1372:       ELSE IF (WORD.EQ.'MLLJAT3') THEN
1381:          MLLJAT3=.TRUE.1373:          MLLJAT3=.TRUE.
1382: !1374: !
1383: ! Three layer neural network (multilayer perceptron) with1375: ! Three layer neural network (multilayer perceptron) with
1384: ! MLPIN inputs (columns per data item)1376: ! MLPIN inputs (columns per data item)
1385: ! MLPOUT outputs1377: ! MLPOUT outputs
1386: ! MLPHIDDEN hidden nodes1378: ! MLPHIDDEN hidden nodes


r29845/main.F 2016-01-26 15:30:16.860950064 +0000 r29844/main.F 2016-01-26 15:30:18.096966151 +0000
205:          KAPPA=NATOMS205:          KAPPA=NATOMS
206:       ELSE IF (PULLT) THEN206:       ELSE IF (PULLT) THEN
207:          NFFINISH=3*NATOMS-4207:          NFFINISH=3*NATOMS-4
208:          KAPPA=3*NATOMS-4208:          KAPPA=3*NATOMS-4
209:       ELSE IF (BULKT) THEN209:       ELSE IF (BULKT) THEN
210:          NFFINISH=3*NATOMS-3210:          NFFINISH=3*NATOMS-3
211:          KAPPA=3*NATOMS-3211:          KAPPA=3*NATOMS-3
212:       ELSE IF (TRAPT) THEN212:       ELSE IF (TRAPT) THEN
213:          NFFINISH=3*NATOMS-3213:          NFFINISH=3*NATOMS-3
214:          KAPPA=3*NATOMS-3214:          KAPPA=3*NATOMS-3
215:       ELSE IF (MKTRAPT) THEN 
216:          NFFINISH=3*NATOMS 
217:          KAPPA=3*NATOMS 
218:       ELSE IF (FREEZE) THEN215:       ELSE IF (FREEZE) THEN
219:          NFFINISH=3*NATOMS-3*NFREEZE216:          NFFINISH=3*NATOMS-3*NFREEZE
220:          KAPPA=3*NATOMS-3*NFREEZE217:          KAPPA=3*NATOMS-3*NFREEZE
221:       ELSE IF (RIGIDINIT) THEN ! hk286218:       ELSE IF (RIGIDINIT) THEN ! hk286
222:          NFFINISH=DEGFREEDOMS - 6219:          NFFINISH=DEGFREEDOMS - 6
223:          KAPPA=DEGFREEDOMS - 6220:          KAPPA=DEGFREEDOMS - 6
224:       ELSE IF (UNRST) THEN221:       ELSE IF (UNRST) THEN
225:          NFFINISH=NINTS222:          NFFINISH=NINTS
226:          KAPPA=NINTS223:          KAPPA=NINTS
227:       ELSE IF (AMHT) THEN224:       ELSE IF (AMHT) THEN


r29845/minpermdist.f90 2016-01-26 15:30:17.096953138 +0000 r29844/minpermdist.f90 2016-01-26 15:30:18.320969074 +0000
 49: !  +/- RMATCUMUL ROTA (COORDSA - CMA) = permutation(DUMMYA) 49: !  +/- RMATCUMUL ROTA (COORDSA - CMA) = permutation(DUMMYA)
 50: !  where +/- is given by the value of INVERT. 50: !  where +/- is given by the value of INVERT.
 51: !  The centres of coordinates for COORDSA and COORDSB can be anywhere. On return, the 51: !  The centres of coordinates for COORDSA and COORDSB can be anywhere. On return, the
 52: !  centre of coordinates of COORDSA will be the same as for COORDSB, unless we 52: !  centre of coordinates of COORDSA will be the same as for COORDSB, unless we
 53: !  are doing an ion trap potential. 53: !  are doing an ion trap potential.
 54: ! 54: !
 55: SUBROUTINE MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST,USEINT) 55: SUBROUTINE MINPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST,USEINT)
 56: USE COMMONS,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, GEOMDIFFTOL, AMBERT, NFREEZE, CHARMMT, RBAAT, PULLT, & 56: USE COMMONS,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, GEOMDIFFTOL, AMBERT, NFREEZE, CHARMMT, RBAAT, PULLT, &
 57:   &               ANGLEAXIS, PERMISOMER, PERMDIST, ZSYM, INTCONSTRAINTT, INTLJT, OHCELLT, ATOMMATCHDIST, LPERMDIST, & 57:   &               ANGLEAXIS, PERMISOMER, PERMDIST, ZSYM, INTCONSTRAINTT, INTLJT, OHCELLT, ATOMMATCHDIST, LPERMDIST, &
 58:   &               TRAPT, NRANROT, MACROCYCLET, MCYCLEPERIOD, MCYCLEREPEATS, NOINVERSION, GTHOMSONT, & 58:   &               TRAPT, NRANROT, MACROCYCLET, MCYCLEPERIOD, MCYCLEREPEATS, NOINVERSION, GTHOMSONT, &
 59:   &               RATETARGETT, MLP3T, NOPT, MKTRAPT 59:   &               RATETARGETT, MLP3T, NOPT
 60: USE PORFUNCS  60: USE PORFUNCS 
 61: USE UTILS,ONLY : GETUNIT 61: USE UTILS,ONLY : GETUNIT
 62:  62: 
 63: IMPLICIT NONE 63: IMPLICIT NONE
 64:  64: 
 65: INTEGER :: MAXIMUMTRIES=10 65: INTEGER :: MAXIMUMTRIES=10
 66: INTEGER NATOMS, NPERM, PATOMS, NTRIES, BESTINVERT, I, LUNIT 66: INTEGER NATOMS, NPERM, PATOMS, NTRIES, BESTINVERT, I, LUNIT
 67: INTEGER INVERT, NORBIT1, NORBIT2, NCHOOSE2, NDUMMY, LPERM(NATOMS), J1, J2, NCHOOSE1, OPNUM, J3, NROTDONE 67: INTEGER INVERT, NORBIT1, NORBIT2, NCHOOSE2, NDUMMY, LPERM(NATOMS), J1, J2, NCHOOSE1, OPNUM, J3, NROTDONE
 68: INTEGER NORBITB1, NORBITB2, NCHOOSEB1, NCHOOSEB2 68: INTEGER NORBITB1, NORBITB2, NCHOOSEB1, NCHOOSEB2
 69:  69: 
166: !  WRITE(LUNIT,'(I6)') NATOMS/2166: !  WRITE(LUNIT,'(I6)') NATOMS/2
167: !  WRITE(LUNIT,'(A)') 'B initial'167: !  WRITE(LUNIT,'(A)') 'B initial'
168: !  DO J3=1,NATOMS/2168: !  DO J3=1,NATOMS/2
169: !      WRITE(LUNIT,'(A2,2X,3F20.10)') 'LA',COORDSB(3*(J3-1)+1),COORDSB(3*(J3-1)+2),COORDSB(3*(J3-1)+3)169: !      WRITE(LUNIT,'(A2,2X,3F20.10)') 'LA',COORDSB(3*(J3-1)+1),COORDSB(3*(J3-1)+2),COORDSB(3*(J3-1)+3)
170: !  ENDDO170: !  ENDDO
171: !  CLOSE(LUNIT)171: !  CLOSE(LUNIT)
172: !172: !
173: !  Calculate original centres of mass.173: !  Calculate original centres of mass.
174: !174: !
175: CMAX=0.0D0; CMAY=0.0D0; CMAZ=0.0D0175: CMAX=0.0D0; CMAY=0.0D0; CMAZ=0.0D0
176: IF ((NFREEZE.LE.0).AND.(.NOT.MKTRAPT)) THEN176: IF (NFREEZE .LE. 0) THEN
177:    IF (RBAAT) THEN177:    IF (RBAAT) THEN
178:       DO J1=1,NATOMS/2178:       DO J1=1,NATOMS/2
179:          CMAX=CMAX+COORDSA(3*(J1-1)+1)179:          CMAX=CMAX+COORDSA(3*(J1-1)+1)
180:          CMAY=CMAY+COORDSA(3*(J1-1)+2)180:          CMAY=CMAY+COORDSA(3*(J1-1)+2)
181:          CMAZ=CMAZ+COORDSA(3*(J1-1)+3)181:          CMAZ=CMAZ+COORDSA(3*(J1-1)+3)
182:       ENDDO182:       ENDDO
183:       CMAX=2*CMAX/NATOMS; CMAY=2*CMAY/NATOMS; CMAZ=2*CMAZ/NATOMS183:       CMAX=2*CMAX/NATOMS; CMAY=2*CMAY/NATOMS; CMAZ=2*CMAZ/NATOMS
184:       CMBX=0.0D0; CMBY=0.0D0; CMBZ=0.0D0184:       CMBX=0.0D0; CMBY=0.0D0; CMBZ=0.0D0
185:       DO J1=1,NATOMS/2185:       DO J1=1,NATOMS/2
186:          CMBX=CMBX+COORDSB(3*(J1-1)+1)186:          CMBX=CMBX+COORDSB(3*(J1-1)+1)
207: !207: !
208: ! It is possible for the standard orientation to result in a distance that is worse than208: ! It is possible for the standard orientation to result in a distance that is worse than
209: ! the starting distance. Hence we need to set XBEST here.209: ! the starting distance. Hence we need to set XBEST here.
210: !210: !
211: DUMMYA(1:3*NATOMS)=COORDSA(1:3*NATOMS)211: DUMMYA(1:3*NATOMS)=COORDSA(1:3*NATOMS)
212: DUMMYB(1:3*NATOMS)=COORDSB(1:3*NATOMS)212: DUMMYB(1:3*NATOMS)=COORDSB(1:3*NATOMS)
213: DBEST=1.0D100213: DBEST=1.0D100
214: CALL NEWMINDIST(DUMMYB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)214: CALL NEWMINDIST(DUMMYB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)
215: DBEST=DISTANCE**2215: DBEST=DISTANCE**2
216: IF (DEBUG) PRINT '(A,G20.10)',' minpermdist> Initial distance before standard orientation=',DISTANCE216: IF (DEBUG) PRINT '(A,G20.10)',' minpermdist> Initial distance before standard orientation=',DISTANCE
217: IF ((NFREEZE.GT.0).OR.BULKT.OR.MKTRAPT) THEN217: IF ((NFREEZE.GT.0).OR.BULKT) THEN
218:    XBEST(1:3*NATOMS)=DUMMYA(1:3*NATOMS)218:    XBEST(1:3*NATOMS)=DUMMYA(1:3*NATOMS)
219: ELSE219: ELSE
220:    DO J1=1,NATOMS220:    DO J1=1,NATOMS
221:       XBEST(3*(J1-1)+1)=DUMMYA(3*(J1-1)+1)-CMBX221:       XBEST(3*(J1-1)+1)=DUMMYA(3*(J1-1)+1)-CMBX
222:       XBEST(3*(J1-1)+2)=DUMMYA(3*(J1-1)+2)-CMBY222:       XBEST(3*(J1-1)+2)=DUMMYA(3*(J1-1)+2)-CMBY
223:       XBEST(3*(J1-1)+3)=DUMMYA(3*(J1-1)+3)-CMBZ223:       XBEST(3*(J1-1)+3)=DUMMYA(3*(J1-1)+3)-CMBZ
224:    ENDDO224:    ENDDO
225: ENDIF225: ENDIF
226: BESTINVERT=1226: BESTINVERT=1
227: DO J1=1,NATOMS227: DO J1=1,NATOMS
334:               RMATBEST(1:3,1:3)=0.0D0334:               RMATBEST(1:3,1:3)=0.0D0
335:               RMATBEST(1,1)=1.0D0; RMATBEST(2,2)=1.0D0; RMATBEST(3,3)=1.0D0335:               RMATBEST(1,1)=1.0D0; RMATBEST(2,2)=1.0D0; RMATBEST(3,3)=1.0D0
336:               RETURN  336:               RETURN  
337:              ENDIF 337:              ENDIF 
338:           ENDIF 338:           ENDIF 
339:        ELSE  339:        ELSE  
340:          CALL NEWMINDIST(DUMMYB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)340:          CALL NEWMINDIST(DUMMYB,DUMMYA,NATOMS,DISTANCE,BULKT,TWOD,'AX    ',.FALSE.,RIGID,DEBUG,RMAT)
341:          IF (DEBUG) PRINT '(A,G20.10)','minpermdist> after initial call to BULK/NEWMINDIST distance=',DISTANCE341:          IF (DEBUG) PRINT '(A,G20.10)','minpermdist> after initial call to BULK/NEWMINDIST distance=',DISTANCE
342:          DISTANCE=DISTANCE**2 ! minperdist returns the distance squared for historical reasons342:          DISTANCE=DISTANCE**2 ! minperdist returns the distance squared for historical reasons
343:       ENDIF343:       ENDIF
344:    ELSEIF (MKTRAPT) THEN 
345:       TMAT(1:3,1:3)=0.0D0 
346:       TMAT(1,1)=INVERT*1.0D0; TMAT(2,2)=INVERT*1.0D0; TMAT(3,3)=INVERT*1.0D0 
347:       NORBIT1=1; NORBIT2=1; NORBITB1=1; NORBITB2=1; 
348:       ROTB(1:3,1:3)=0.0D0 
349:       ROTB(1,1)=1.0D0; ROTB(2,2)=1.0D0; ROTB(3,3)=1.0D0 
350:       ROTINVB(1:3,1:3)=0.0D0 
351:       ROTINVB(1,1)=1.0D0; ROTINVB(2,2)=1.0D0; ROTINVB(3,3)=1.0D0 
352:       ROTA(1:3,1:3)=0.0D0 
353:       ROTA(1,1)=1.0D0; ROTA(2,2)=1.0D0; ROTA(3,3)=1.0D0 
354:       ROTINVA(1:3,1:3)=0.0D0 
355:       ROTINVA(1,1)=1.0D0; ROTINVA(2,2)=1.0D0; ROTINVA(3,3)=1.0D0 
356:       RMAT(1:3,1:3)=0.0D0 
357:       RMAT(1,1)=1.0D0; RMAT(2,2)=1.0D0; RMAT(3,3)=1.0D0 
358:       CMX=0.0D0; CMY=0.0D0; CMZ=0.0D0 
359:       DUMMYA(1:3*NATOMS)=INVERT*COORDSA(1:3*NATOMS) 
360:       DISTANCE=0.0D0 
361:       DO J1=1,3*NATOMS 
362:          DISTANCE=DISTANCE+(DUMMYA(J1)-DUMMYB(J1))**2       
363:       ENDDO 
364:    ELSE344:    ELSE
365:       IF ((TWOD.OR.PULLT).AND.(INVERT.EQ.-1)) THEN ! reflect in xz plane345:       IF ((TWOD.OR.PULLT).AND.(INVERT.EQ.-1)) THEN ! reflect in xz plane
366:          DO J1=1,NATOMS346:          DO J1=1,NATOMS
367:             DUMMYC(3*(J1-1)+1)=DUMMYA(3*(J1-1)+1)347:             DUMMYC(3*(J1-1)+1)=DUMMYA(3*(J1-1)+1)
368:             DUMMYC(3*(J1-1)+2)=-DUMMYA(3*(J1-1)+2)348:             DUMMYC(3*(J1-1)+2)=-DUMMYA(3*(J1-1)+2)
369:             DUMMYC(3*(J1-1)+3)=DUMMYA(3*(J1-1)+3)349:             DUMMYC(3*(J1-1)+3)=DUMMYA(3*(J1-1)+3)
370:          ENDDO350:          ENDDO
371:       ELSE IF (MACROCYCLET) THEN !Permutations for macrocycles351:       ELSE IF (MACROCYCLET) THEN !Permutations for macrocycles
372:       ! We can't use MACROCYCLE and PULL at the same time, but it's unlikely anyone will want to.352:       ! We can't use MACROCYCLE and PULL at the same time, but it's unlikely anyone will want to.
373:          DO J1=1,NATOMS353:          DO J1=1,NATOMS
375:             IF (J2.GT.NATOMS) THEN355:             IF (J2.GT.NATOMS) THEN
376:                J2=J2-NATOMS356:                J2=J2-NATOMS
377:             ENDIF357:             ENDIF
378:             DUMMYC(3*J1-2)=INVERT*DUMMYA(3*J2-2)358:             DUMMYC(3*J1-2)=INVERT*DUMMYA(3*J2-2)
379:             DUMMYC(3*J1-1)=INVERT*DUMMYA(3*J2-1)359:             DUMMYC(3*J1-1)=INVERT*DUMMYA(3*J2-1)
380:             DUMMYC(3*J1  )=INVERT*DUMMYA(3*J2  )360:             DUMMYC(3*J1  )=INVERT*DUMMYA(3*J2  )
381:          ENDDO361:          ENDDO
382:       ELSE362:       ELSE
383:          DUMMYC(1:3*NATOMS)=INVERT*DUMMYA(1:3*NATOMS)363:          DUMMYC(1:3*NATOMS)=INVERT*DUMMYA(1:3*NATOMS)
384:       ENDIF364:       ENDIF
385:       IF ((NRANROT.GT.0).AND.(NROTDONE.LE.NRANROT).AND.(NROTDONE.GT.0).AND.(.NOT.MKTRAPT)) THEN365:       IF ((NRANROT.GT.0).AND.(NROTDONE.LE.NRANROT).AND.(NROTDONE.GT.0)) THEN
386: !        IF (DEBUG) PRINT '(A,I6,A,G20.10)',' minpermdist> Trying random starting orientation number ',NROTDONE, &366: !        IF (DEBUG) PRINT '(A,I6,A,G20.10)',' minpermdist> Trying random starting orientation number ',NROTDONE, &
387: ! &                                         ' minimum distance=',SQRT(DBEST)367: ! &                                         ' minimum distance=',SQRT(DBEST)
388:          NORBIT1=1; NORBIT2=1; NORBITB1=1; NORBITB2=1;368:          NORBIT1=1; NORBIT2=1; NORBITB1=1; NORBITB2=1;
389:          ROTB(1:3,1:3)=0.0D0369:          ROTB(1:3,1:3)=0.0D0
390:          ROTB(1,1)=1.0D0; ROTB(2,2)=1.0D0; ROTB(3,3)=1.0D0370:          ROTB(1,1)=1.0D0; ROTB(2,2)=1.0D0; ROTB(3,3)=1.0D0
391:          ROTINVB(1:3,1:3)=0.0D0371:          ROTINVB(1:3,1:3)=0.0D0
392:          ROTINVB(1,1)=1.0D0; ROTINVB(2,2)=1.0D0; ROTINVB(3,3)=1.0D0372:          ROTINVB(1,1)=1.0D0; ROTINVB(2,2)=1.0D0; ROTINVB(3,3)=1.0D0
393:          ROTA(1:3,1:3)=0.0D0373:          ROTA(1:3,1:3)=0.0D0
394:          ROTA(1,1)=1.0D0; ROTA(2,2)=1.0D0; ROTA(3,3)=1.0D0374:          ROTA(1,1)=1.0D0; ROTA(2,2)=1.0D0; ROTA(3,3)=1.0D0
395:          ROTINVA(1:3,1:3)=0.0D0375:          ROTINVA(1:3,1:3)=0.0D0
631: 611: 
632: 50 DISTANCE=DBEST612: 50 DISTANCE=DBEST
633: !613: !
634: !  XBEST contains the best alignment of A coordinates for the orientation of B coordinates in DUMMYB.614: !  XBEST contains the best alignment of A coordinates for the orientation of B coordinates in DUMMYB.
635: !  Rotate XBEST by ROTINVBBEST to put in best correspondence with COORDSB, 615: !  Rotate XBEST by ROTINVBBEST to put in best correspondence with COORDSB, 
636: !  undoing the reorientation to DUMMYB from MYORIENT. 616: !  undoing the reorientation to DUMMYB from MYORIENT. 
637: !  We should get the same result for ROTINVBBEST * RMATBEST * (COORDSA-CMA)617: !  We should get the same result for ROTINVBBEST * RMATBEST * (COORDSA-CMA)
638: !  where RMATBEST = +/- RMATCUMUL * ROTA for the best alignment 618: !  where RMATBEST = +/- RMATCUMUL * ROTA for the best alignment 
639: !  (aside from a possible permutation of the atom ordering)619: !  (aside from a possible permutation of the atom ordering)
640: !  620: !  
641:    IF ((NFREEZE.GT.0).OR.RBAAT.OR.MKTRAPT) THEN621:    IF (NFREEZE.GT.0.OR.RBAAT) THEN
642:       XDUMMY=0.0D0622:       XDUMMY=0.0D0
643:       DO J1=1,NATOMS623:       DO J1=1,NATOMS
644:          XDUMMY=XDUMMY+(COORDSB(3*(J1-1)+1)-XBEST(3*(J1-1)+1))**2+ &624:          XDUMMY=XDUMMY+(COORDSB(3*(J1-1)+1)-XBEST(3*(J1-1)+1))**2+ &
645:   &                    (COORDSB(3*(J1-1)+2)-XBEST(3*(J1-1)+2))**2+ &625:   &                    (COORDSB(3*(J1-1)+2)-XBEST(3*(J1-1)+2))**2+ &
646:   &                    (COORDSB(3*(J1-1)+3)-XBEST(3*(J1-1)+3))**2626:   &                    (COORDSB(3*(J1-1)+3)-XBEST(3*(J1-1)+3))**2
647:       ENDDO627:       ENDDO
648:    ELSEIF (BULKT) THEN628:    ELSEIF (BULKT) THEN
649:       XDUMMY=0.0D0629:       XDUMMY=0.0D0
650:       DO J1=1,NATOMS630:       DO J1=1,NATOMS
651:          XDUMMY=XDUMMY+(COORDSB(3*(J1-1)+1)-XBEST(3*(J1-1)+1) - BOXLX*NINT((COORDSB(3*(J1-1)+1)-XBEST(3*(J1-1)+1))/BOXLX))**2+ &631:          XDUMMY=XDUMMY+(COORDSB(3*(J1-1)+1)-XBEST(3*(J1-1)+1) - BOXLX*NINT((COORDSB(3*(J1-1)+1)-XBEST(3*(J1-1)+1))/BOXLX))**2+ &
668:    IF (ABS(SQRT(XDUMMY)-SQRT(DISTANCE)).GT.GEOMDIFFTOL .AND. (.NOT. RBAAT)) THEN648:    IF (ABS(SQRT(XDUMMY)-SQRT(DISTANCE)).GT.GEOMDIFFTOL .AND. (.NOT. RBAAT)) THEN
669:       PRINT '(2(A,G20.10))','minpermdist> ERROR *** distance between transformed XBEST and COORDSB=',SQRT(XDUMMY), &649:       PRINT '(2(A,G20.10))','minpermdist> ERROR *** distance between transformed XBEST and COORDSB=',SQRT(XDUMMY), &
670:   &                         ' should be ',SQRT(DISTANCE)650:   &                         ' should be ',SQRT(DISTANCE)
671:       PRINT '(A)','transformed XBEST:'651:       PRINT '(A)','transformed XBEST:'
672:       PRINT '(3F20.10)',XBEST(1:3*NATOMS)652:       PRINT '(3F20.10)',XBEST(1:3*NATOMS)
673:       PRINT '(A)','COORDSB:'653:       PRINT '(A)','COORDSB:'
674:       PRINT '(3F20.10)',COORDSB(1:3*NATOMS)654:       PRINT '(3F20.10)',COORDSB(1:3*NATOMS)
675:       STOP655:       STOP
676:    ENDIF656:    ENDIF
677: 657: 
678:    IF ((NFREEZE.GT.0).OR.MKTRAPT) THEN658:    IF (NFREEZE.GT.0) THEN
679: !no rotation for NFREEZE .gt. 0659: !no rotation for NFREEZE .gt. 0
680:       RMATBEST(1:3,1:3)=0.0D0660:       RMATBEST(1:3,1:3)=0.0D0
681:       RMATBEST(1,1)=1.0D0; RMATBEST(2,2)=1.0D0; RMATBEST(3,3)=1.0D0661:       RMATBEST(1,1)=1.0D0; RMATBEST(2,2)=1.0D0; RMATBEST(3,3)=1.0D0
682:    ELSE662:    ELSE
683:       RMATBEST=MATMUL(ROTINVBBEST,RMATBEST)663:       RMATBEST=MATMUL(ROTINVBBEST,RMATBEST)
684:    ENDIF664:    ENDIF
685: !665: !
686: ! For TRAP potentials we need to preserve the centre of mass because666: ! For TRAP potentials we need to preserve the centre of mass because
687: ! the origin is a fixed point. Try using RMAT best and rotating COORDSA667: ! the origin is a fixed point. Try using RMAT best and rotating COORDSA
688: ! around the origin.668: ! around the origin.


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0