hdiff output

r33452/lopermdist.f90 2017-11-09 16:30:13.450173201 +0000 r33451/lopermdist.f90 2017-11-09 16:30:13.714176687 +0000
 28: ! 28: !
 29: !  The centres of coordinates for COORDSA and COORDSB can be anywhere. On return, the 29: !  The centres of coordinates for COORDSA and COORDSB can be anywhere. On return, the
 30: !  centre of coordinates of COORDSA will be the same as for COORDSB. 30: !  centre of coordinates of COORDSA will be the same as for COORDSB.
 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: USE COMMONS,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, PULLT, & 33: USE COMMONS,ONLY : NPERMGROUP, NPERMSIZE, PERMGROUP, NSETS, SETS, PULLT, &
 34:   &            LOCALPERMCUT, LOCALPERMNEIGH, LOCALPERMCUT2 34:   &            LOCALPERMCUT, LOCALPERMNEIGH, LOCALPERMCUT2
 35: IMPLICIT NONE 35: IMPLICIT NONE
 36:  36: 
 37: INTEGER, PARAMETER :: MAXIMUMTRIES=10 37: INTEGER, PARAMETER :: MAXIMUMTRIES=10
 38: INTEGER NATOMS, NPERM, PATOMS, NORBIT1, NORBIT2, NCHOOSE2, NCHOOSE1, NORBITB1, NORBITB2, BESTPERM(NATOMS), NDMEAN 38: INTEGER NATOMS, NPERM, PATOMS, NORBIT1, NORBIT2, NCHOOSE2, NCHOOSE1, NORBITB1, NORBITB2, BESTPERM(NATOMS)
 39: INTEGER J3, J4, NDUMMY, LPERM(NATOMS), J1, J2, NOTHER, LPERMBEST(NATOMS), NCHOOSEB1, NCHOOSEB2, & 39: INTEGER J3, J4, NDUMMY, LPERM(NATOMS), J1, J2, NOTHER, LPERMBEST(NATOMS), NCHOOSEB1, NCHOOSEB2, &
 40:         LPERMBESTATOM(NATOMS) 40:         LPERMBESTATOM(NATOMS)
 41: DOUBLE PRECISION DIST2, COORDSA(3*NATOMS), COORDSB(3*NATOMS), DISTANCE, DUMMYA(3*NATOMS), & 41: DOUBLE PRECISION DIST2, COORDSA(3*NATOMS), COORDSB(3*NATOMS), DISTANCE, DUMMYA(3*NATOMS), &
 42:   &              DUMMYB(3*NATOMS), DUMMY(3*NATOMS), DSUM 42:   &              DUMMYB(3*NATOMS), DUMMY(3*NATOMS), DSUM
 43: DOUBLE PRECISION BOXLX,BOXLY,BOXLZ,WORSTRAD,RMAT(3,3), DBEST, XBEST(3*NATOMS) 43: DOUBLE PRECISION BOXLX,BOXLY,BOXLZ,WORSTRAD,RMAT(3,3), DBEST, XBEST(3*NATOMS)
 44: DOUBLE PRECISION ROTA(3,3), ROTINVA(3,3), ROTB(3,3), ROTINVB(3,3), RMATBEST(3,3) 44: DOUBLE PRECISION ROTA(3,3), ROTINVA(3,3), ROTB(3,3), ROTINVB(3,3), RMATBEST(3,3)
 45: LOGICAL DEBUG, TWOD, RIGID, BULKT, ADDED, PERMUTABLE(NATOMS) 45: LOGICAL DEBUG, TWOD, RIGID, BULKT, ADDED, PERMUTABLE(NATOMS)
 46: DOUBLE PRECISION PDUMMYA(3*NATOMS), PDUMMYB(3*NATOMS), LDISTANCE, XDUMMY, & 46: DOUBLE PRECISION PDUMMYA(3*NATOMS), PDUMMYB(3*NATOMS), LDISTANCE, XDUMMY, &
 47:    &             LDBEST(NPERMGROUP), LDBESTATOM 47:    &             LDBEST(NPERMGROUP), LDBESTATOM
 48: DOUBLE PRECISION SPDUMMYA(3*NATOMS), SPDUMMYB(3*NATOMS) 48: DOUBLE PRECISION SPDUMMYA(3*NATOMS), SPDUMMYB(3*NATOMS)
122: !122: !
123: ! TRIED(J2) is 0 if atom J2 is eligible to be a neighbour, but has not123: ! TRIED(J2) is 0 if atom J2 is eligible to be a neighbour, but has not
124: ! yet been tried. It is -1 if it is ineligible, or has been tried and124: ! yet been tried. It is -1 if it is ineligible, or has been tried and
125: ! broke the alignment. It is +1 if it has been tried and did not break125: ! broke the alignment. It is +1 if it has been tried and did not break
126: ! the alignment. It is -1 for atoms already in the set of permutable126: ! the alignment. It is -1 for atoms already in the set of permutable
127: ! atoms in question. We add neighbours one at a time in order of 127: ! atoms in question. We add neighbours one at a time in order of 
128: ! increasing distance from primary permutable set128: ! increasing distance from primary permutable set
129: ! and test whether they break the alignment.129: ! and test whether they break the alignment.
130: !130: !
131:    DMEAN(1:NATOMS)=1.0D10131:    DMEAN(1:NATOMS)=1.0D10
132:    NDMEAN=0 
133: !132: !
134: ! Make a sorted list of distance from the permuting atoms.133: ! Make a sorted list of distance from the permuting atoms.
135: ! DMEAN, SORTLIST, TRIED, PERMUTABLE, and DLIST entries refer to original134: ! DMEAN, SORTLIST, TRIED, PERMUTABLE, and DLIST entries refer to original
136: ! atom labels. Use NEWPERM to find where they are in coordinate lists.135: ! atom labels. Use NEWPERM to find where they are in coordinate lists.
137: !136: !
138:    outer1: DO J2=1,NATOMS137:    outer1: DO J2=1,NATOMS
139: !138: !
140: ! Don't allow members of the same permutational group 139: ! Don't allow members of the same permutational group 
141: ! to appear as reference neighbours.140: ! to appear as reference neighbours.
142: !141: !
146:          DA=(XA-DUMMYA(3*(NEWPERM(J2)-1)+1))**2 &145:          DA=(XA-DUMMYA(3*(NEWPERM(J2)-1)+1))**2 &
147:   &        +(YA-DUMMYA(3*(NEWPERM(J2)-1)+2))**2 &146:   &        +(YA-DUMMYA(3*(NEWPERM(J2)-1)+2))**2 &
148:   &        +(ZA-DUMMYA(3*(NEWPERM(J2)-1)+3))**2147:   &        +(ZA-DUMMYA(3*(NEWPERM(J2)-1)+3))**2
149: !        DB=(XB-DUMMYB(3*(NEWPERM(J2)-1)+1))**2 &148: !        DB=(XB-DUMMYB(3*(NEWPERM(J2)-1)+1))**2 &
150: ! &        +(YB-DUMMYB(3*(NEWPERM(J2)-1)+2))**2 &149: ! &        +(YB-DUMMYB(3*(NEWPERM(J2)-1)+2))**2 &
151: ! &        +(ZB-DUMMYB(3*(NEWPERM(J2)-1)+3))**2150: ! &        +(ZB-DUMMYB(3*(NEWPERM(J2)-1)+3))**2
152:          DB=(XB-DUMMYB(3*(J2-1)+1))**2 &151:          DB=(XB-DUMMYB(3*(J2-1)+1))**2 &
153:   &        +(YB-DUMMYB(3*(J2-1)+2))**2 &152:   &        +(YB-DUMMYB(3*(J2-1)+2))**2 &
154:   &        +(ZB-DUMMYB(3*(J2-1)+3))**2153:   &        +(ZB-DUMMYB(3*(J2-1)+3))**2
155:          XDUMMY=(SQRT(DA)+SQRT(DB))/2.0D0154:          XDUMMY=(SQRT(DA)+SQRT(DB))/2.0D0
156:          IF (XDUMMY.GT.LOCALPERMCUT2) CYCLE outer1 
157:       ENDIF155:       ENDIF
158: 156:       loop1: DO J3=1,J2
159:       NDMEAN=NDMEAN+1 
160:       loop1: DO J3=1,NDMEAN ! J2 
161:          IF (XDUMMY.LT.DMEAN(J3)) THEN157:          IF (XDUMMY.LT.DMEAN(J3)) THEN
162: !158: !
163: ! Move the rest down.159: ! Move the rest down.
164: !160: !
165:             DO J4=NDMEAN,J3+1,-1   !    J2,J3+1,-1161:             DO J4=J2,J3+1,-1
166:                DMEAN(J4)=DMEAN(J4-1)162:                DMEAN(J4)=DMEAN(J4-1)
167:                SORTLIST(J4)=SORTLIST(J4-1)163:                SORTLIST(J4)=SORTLIST(J4-1)
168:             ENDDO164:             ENDDO
169:             DMEAN(J3)=XDUMMY165:             DMEAN(J3)=XDUMMY
170:             SORTLIST(J3)=J2166:             SORTLIST(J3)=J2
171:             EXIT loop1167:             EXIT loop1
172:          ENDIF168:          ENDIF
173:       ENDDO loop1169:       ENDDO loop1
174:    ENDDO outer1170:    ENDDO outer1
175: 171: 


legend
Lines Added 
Lines changed
 Lines Removed

hdiff - version: 2.1.0