hdiff output

r33453/lopermdist.f90 2017-11-09 16:30:13.954179855 +0000 r33452/lopermdist.f90 2017-11-09 16:30:14.178182814 +0000
 31: ! 31: !
 32: SUBROUTINE LOPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST) 32: SUBROUTINE LOPERMDIST(COORDSB,COORDSA,NATOMS,DEBUG,BOXLX,BOXLY,BOXLZ,BULKT,TWOD,DISTANCE,DIST2,RIGID,RMATBEST)
 33:  33: 
 34: USE COMMONS,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, GEOMDIFFTOL, & 34: USE COMMONS,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, GEOMDIFFTOL, &
 35:   &            NFREEZE, RBAAT, BESTPERM, LOCALPERMDIST, NTSITES, & 35:   &            NFREEZE, RBAAT, BESTPERM, LOCALPERMDIST, NTSITES, &
 36:   &            LOCALPERMCUT, STOCKT, GMAX, INTCONSTRAINTT, & 36:   &            LOCALPERMCUT, STOCKT, GMAX, INTCONSTRAINTT, &
 37:   &            LOCALPERMNEIGH, LOCALPERMCUT2, CHRMMT, MYUNIT 37:   &            LOCALPERMNEIGH, LOCALPERMCUT2, CHRMMT, MYUNIT
 38: IMPLICIT NONE 38: IMPLICIT NONE
 39:  39: 
 40: INTEGER, PARAMETER :: MAXIMUMTRIES=10 40: INTEGER, PARAMETER :: MAXIMUMTRIES=10
 41: INTEGER NATOMS, NPERM, PATOMS, NRB, OPNUM,  NORBIT1, NORBIT2, NCHOOSE2, NCHOOSE1, NTRIES, NORBITB1, NORBITB2, NDMEAN 41: INTEGER NATOMS, NPERM, PATOMS, NRB, OPNUM,  NORBIT1, NORBIT2, NCHOOSE2, NCHOOSE1, NTRIES, NORBITB1, NORBITB2
 42: INTEGER J3, J4, NDUMMY, LPERM(NATOMS), J1, J2, NOTHER, LPERMBEST(NATOMS), NCHOOSEB1, NCHOOSEB2, & 42: INTEGER J3, J4, NDUMMY, LPERM(NATOMS), J1, J2, NOTHER, LPERMBEST(NATOMS), NCHOOSEB1, NCHOOSEB2, &
 43:         LPERMBESTATOM(NATOMS) 43:         LPERMBESTATOM(NATOMS)
 44: DOUBLE PRECISION DIST2, COORDSA(3*NATOMS), COORDSB(3*NATOMS), DISTANCE, DUMMYA(3*NATOMS), & 44: DOUBLE PRECISION DIST2, COORDSA(3*NATOMS), COORDSB(3*NATOMS), DISTANCE, DUMMYA(3*NATOMS), &
 45:   &              BESTA(3*NATOMS), DUMMYB(3*NATOMS), DUMMY(3*NATOMS), DIST, DSUM 45:   &              BESTA(3*NATOMS), DUMMYB(3*NATOMS), DUMMY(3*NATOMS), DIST, DSUM
 46: DOUBLE PRECISION BOXLX,BOXLY,BOXLZ,WORSTRAD,RMAT(3,3),ENERGY, VNEW(3*NATOMS), DX, DY, DZ, RMS, DBEST, XBEST(3*NATOMS) 46: DOUBLE PRECISION BOXLX,BOXLY,BOXLZ,WORSTRAD,RMAT(3,3),ENERGY, VNEW(3*NATOMS), DX, DY, DZ, RMS, DBEST, XBEST(3*NATOMS)
 47: DOUBLE PRECISION CMXA, CMXB, CMXC, QBEST(4), SITESA(3*NTSITES), SITESB(3*NTSITES) 47: DOUBLE PRECISION CMXA, CMXB, CMXC, QBEST(4), SITESA(3*NTSITES), SITESB(3*NTSITES)
 48: DOUBLE PRECISION ROTA(3,3), ROTINVA(3,3), ROTB(3,3), ROTINVB(3,3), RMATBEST(3,3), TMAT(3,3) 48: DOUBLE PRECISION ROTA(3,3), ROTINVA(3,3), ROTB(3,3), ROTINVB(3,3), RMATBEST(3,3), TMAT(3,3)
 49: DOUBLE PRECISION PVEC(3), RTEMP1(3,3), RTEMP2(3,3) 49: DOUBLE PRECISION PVEC(3), RTEMP1(3,3), RTEMP2(3,3)
 50: LOGICAL DEBUG, TWOD, RIGID, BULKT, PITEST, AOK, BOK, ADDED, PERMUTABLE(NATOMS) 50: LOGICAL DEBUG, TWOD, RIGID, BULKT, PITEST, AOK, BOK, ADDED, PERMUTABLE(NATOMS)
 51: DOUBLE PRECISION PDUMMYA(3*NATOMS), PDUMMYB(3*NATOMS), LDISTANCE, DUMMYC(3*NATOMS), XDUMMY, DUMMYD(3*NATOMS), & 51: DOUBLE PRECISION PDUMMYA(3*NATOMS), PDUMMYB(3*NATOMS), LDISTANCE, DUMMYC(3*NATOMS), XDUMMY, DUMMYD(3*NATOMS), &
130: !130: !
131: ! TRIED(J2) is 0 if atom J2 is eligible to be a neighbour, but has not131: ! TRIED(J2) is 0 if atom J2 is eligible to be a neighbour, but has not
132: ! yet been tried. It is -1 if it is ineligible, or has been tried and132: ! yet been tried. It is -1 if it is ineligible, or has been tried and
133: ! broke the alignment. It is +1 if it has been tried and did not break133: ! broke the alignment. It is +1 if it has been tried and did not break
134: ! the alignment. It is -1 for atoms already in the set of permutable134: ! the alignment. It is -1 for atoms already in the set of permutable
135: ! atoms in question. We add neighbours one at a time in order of 135: ! atoms in question. We add neighbours one at a time in order of 
136: ! increasing distance from primary permutable set136: ! increasing distance from primary permutable set
137: ! and test whether they break the alignment.137: ! and test whether they break the alignment.
138: !138: !
139:    DMEAN(1:NATOMS)=1.0D10139:    DMEAN(1:NATOMS)=1.0D10
140:    NDMEAN=0 
141: !140: !
142: ! Make a sorted list of distance from the permuting atoms.141: ! Make a sorted list of distance from the permuting atoms.
143: ! DMEAN, SORTLIST, TRIED, PERMUTABLE, and DLIST entries refer to original142: ! DMEAN, SORTLIST, TRIED, PERMUTABLE, and DLIST entries refer to original
144: ! atom labels. Use NEWPERM to find where they are in coordinate lists.143: ! atom labels. Use NEWPERM to find where they are in coordinate lists.
145: !144: !
146:    outer1: DO J2=1,NATOMS145:    outer1: DO J2=1,NATOMS
147: !146: !
148: ! Don't allow members of the same permutational group 147: ! Don't allow members of the same permutational group 
149: ! to appear as reference neighbours.148: ! to appear as reference neighbours.
150: !149: !
154:          DA=(XA-DUMMYA(3*(NEWPERM(J2)-1)+1))**2 &153:          DA=(XA-DUMMYA(3*(NEWPERM(J2)-1)+1))**2 &
155:   &        +(YA-DUMMYA(3*(NEWPERM(J2)-1)+2))**2 &154:   &        +(YA-DUMMYA(3*(NEWPERM(J2)-1)+2))**2 &
156:   &        +(ZA-DUMMYA(3*(NEWPERM(J2)-1)+3))**2155:   &        +(ZA-DUMMYA(3*(NEWPERM(J2)-1)+3))**2
157: !        DB=(XB-DUMMYB(3*(NEWPERM(J2)-1)+1))**2 &156: !        DB=(XB-DUMMYB(3*(NEWPERM(J2)-1)+1))**2 &
158: ! &        +(YB-DUMMYB(3*(NEWPERM(J2)-1)+2))**2 &157: ! &        +(YB-DUMMYB(3*(NEWPERM(J2)-1)+2))**2 &
159: ! &        +(ZB-DUMMYB(3*(NEWPERM(J2)-1)+3))**2158: ! &        +(ZB-DUMMYB(3*(NEWPERM(J2)-1)+3))**2
160:          DB=(XB-DUMMYB(3*(J2-1)+1))**2 &159:          DB=(XB-DUMMYB(3*(J2-1)+1))**2 &
161:   &        +(YB-DUMMYB(3*(J2-1)+2))**2 &160:   &        +(YB-DUMMYB(3*(J2-1)+2))**2 &
162:   &        +(ZB-DUMMYB(3*(J2-1)+3))**2161:   &        +(ZB-DUMMYB(3*(J2-1)+3))**2
163:          XDUMMY=(SQRT(DA)+SQRT(DB))/2.0D0162:          XDUMMY=(SQRT(DA)+SQRT(DB))/2.0D0
164:          IF (XDUMMY.GT.LOCALPERMCUT2) CYCLE outer1 
165:       ENDIF163:       ENDIF
166: 164:       loop1: DO J3=1,J2
167:       NDMEAN=NDMEAN+1 
168:       loop1: DO J3=1,NDMEAN ! J2 
169:          IF (XDUMMY.LT.DMEAN(J3)) THEN165:          IF (XDUMMY.LT.DMEAN(J3)) THEN
170: !166: !
171: ! Move the rest down.167: ! Move the rest down.
172: !168: !
173:             DO J4=NDMEAN,J3+1,-1   !    J2,J3+1,-1169:             DO J4=J2,J3+1,-1
174:                DMEAN(J4)=DMEAN(J4-1)170:                DMEAN(J4)=DMEAN(J4-1)
175:                SORTLIST(J4)=SORTLIST(J4-1)171:                SORTLIST(J4)=SORTLIST(J4-1)
176:             ENDDO172:             ENDDO
177:             DMEAN(J3)=XDUMMY173:             DMEAN(J3)=XDUMMY
178:             SORTLIST(J3)=J2174:             SORTLIST(J3)=J2
179:             EXIT loop1175:             EXIT loop1
180:          ENDIF176:          ENDIF
181:       ENDDO loop1177:       ENDDO loop1
182:    ENDDO outer1178:    ENDDO outer1
183: 179: 


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0