Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan...

12
1 Algorithms for Crystal Symmetry Alan Richardson Supervisor: Dr. Charles Patterson I wrote a computer program which, given a crystal lattice and a corresponding set of crystallographic point group symmetry operators as input, generates an ordered list of unique pairs of ions on the lattice, and their equivalent pairs. Introduction A crystal is a lattice of atoms. The positions of the atoms in the lattice can be described in terms of the primitive lattice vectors plus a (possibly zero) basis vector. There are many different possible lattice structures. This report will discuss several of these. Simple Cubic structure does not occur frequently in nature due to poor atom packing, but is the structure of Polonium, for example. The primitive lattice vectors are orthogonal, so they correspond to the Cartesian coordinate axes. All of the lattice points are separated from their six nearest neighbour lattice points by the same distance (say a) and can be written as (a,0,0), (0,a,0), (0,0,a). The atoms are positioned on the lattice points. 2D Hexagonal will be the main structure considered. This is the structure of Graphene. The primitive lattice vectors that will be used are: y x a a y x a a r r r r r r 2 3 2 1 2 3 2 1 2 1 + = - = Where x r and y r are the usual Cartesian coordinates. This structure has a two point basis. In terms of the above primitive lattice vectors this is: 2 1 2 2 1 1 3 1 3 2 3 2 3 1 a a b a a b r r r r r r + = + = Fig. 1 Primitive cell of Graphene All of the atoms in Graphene are Carbon, and are identical. Graphene has 14 symmetry operations: the identity, six mirror planes, rotations by 60°, 120°, 180°, 240°, 300° and 360°, and inversion. Fig. 2 Hexagonal crystal structure showing six mirror planes (dashed lines) Transformations can be performed on a crystal by applying an operator to the

Transcript of Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan...

Page 1: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

1

Algorithms for Crystal Symmetry Alan Richardson

Supervisor: Dr. Charles Patterson

I wrote a computer program which, given a crystal lattice and a corresponding set of crystallographic point group symmetry operators as input, generates an ordered list of unique pairs of ions on the lattice, and their equivalent pairs.

Introduction A crystal is a lattice of atoms. The positions of the atoms in the lattice can be described in terms of the primitive lattice vectors plus a (possibly zero) basis vector. There are many different possible lattice structures. This report will discuss several of these. Simple Cubic structure does not occur frequently in nature due to poor atom packing, but is the structure of Polonium, for example. The primitive lattice vectors are orthogonal, so they correspond to the Cartesian coordinate axes. All of the lattice points are separated from their six nearest neighbour lattice points by the same distance (say a) and can be written as (a,0,0), (0,a,0), (0,0,a). The atoms are positioned on the lattice points. 2D Hexagonal will be the main structure considered. This is the structure of Graphene. The primitive lattice vectors that will be used are:

yxaa

yxaa

rrr

rrr

2

3

2

1

2

3

2

1

2

1

+=

−=

Where xr

andyr

are the usual Cartesian coordinates. This structure has a two point basis. In terms of the above primitive lattice vectors this is:

212

211

3

1

3

23

2

3

1

aab

aab

rrr

rrr

+=

+=

Fig. 1

Primitive cell of Graphene

All of the atoms in Graphene are Carbon, and are identical. Graphene has 14 symmetry operations: the identity, six mirror planes, rotations by 60°, 120°, 180°, 240°, 300° and 360°, and inversion.

Fig. 2

Hexagonal crystal structure showing six mirror planes (dashed lines)

Transformations can be performed on a crystal by applying an operator to the

Page 2: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

2

positions of the atoms in the crystal. If a transformation consists of zero or more linear transformations and translations it is called an affine transformation. Affine transformations preserve collinearity between points and the ratio of distances between points. The group of all the isometric affine transformations of a crystal (i.e. affine transformations that preserve the distance between points) is called the space group of the crystal (see Appendix). The elements of the group are called symmetry operations. Symmetry operations can be written as a 3 x 3 matrix plus a (possibly zero) translation vector. An infinite crystal would look exactly the same before and after any of the operations in its space group. The space group of a crystal depends on its structure. A crystallographic point group is a set of symmetry operations, like rotations or reflections, that leave a point fixed while moving each atom of the crystal to the position of an atom of the same kind. It is therefore a subgroup of the space group of a crystal consisting of only those symmetry operations which do not contain a translation. A pair is a grouping of two points on the lattice. A point can be paired with any other point in the lattice. One pair is said to be equivalent to another if it can be transformed into that pair by the application of a symmetry operation. That is, if the symmetry operation is applied to each of the two points in a pair, the two resulting points are the members of the equivalent pair. Being equivalent under the application of a symmetry operation is an equivalence relation on the set of pairs in a lattice (see Appendix). The lattice of a crystal can therefore be split into the equivalence classes of this equivalence relation. One pair arbitrarily selected from each of the equivalence classes

forms the set of unique pairs of the lattice.

Fig. 3

The pairs (0,1) and (0,2) are equivalent as they can be transformed into each other by the application of the mirror plane symmetry operator (dashed line) Possible transformations are rotations, reflections through a point or plane, translations, skew axis, and glide plane. Rotations are point group symmetry operations and are described as being ‘n’-fold, where ‘n’ is the integer number of times that the rotation would have to be applied to rotate through 360°. Reflections are also point group symmetry operations. Reflection by a plane that passes through the origin is often referred to as a mirror operation, while reflection through the origin is commonly known as inversion. A screw axis is a combination of rotation about an axis and a translation parallel to that axis. A glide plane operation is a reflection in a plane followed by a translation. A symmorphic space group is one which may be entirely specified by symmetry operations all acting at a common point and which do not involve any non-integer primitive lattice translations. When it is necessary to specify a space group, with respect to any choice of origin, by at least one operation involving a non-integer primitive lattice translation, the space group is said to be non-symmorphic.

Page 3: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

3

Wyckoff points are the points of a lattice that are left invariant by symmetry operations. Crystallographic point group symmetry operations can only be specified with respect to a Wyckoff point. In the case of Graphene, the lattice points are Wyckoff points. Determining the unique pairs of a crystal structure given along with its crystallographic point group symmetry operations will be the subject of this report. Crystal structures with a non-symmorphic space group will not be considered. Knowledge of the unique pairs of a lattice and their equivalent pairs allows one to use the symmetry of a crystal lattice to reduce the computational effort required in certain calculations. As equivalent pairs can be transformed into each other by the application of a symmetry operation, calculations that involve the pairs of one point with each of the other points on the crystal lattice out to a finite distance can be greatly simplified. The calculations need to be performed for the unique pairs and then the results can be transformed into those of the other pairs by composition with symmetry operations. For example, to determine the kinetic energy operator over an atom-centred basis set, the operator matrix elements only need to be computed for the unique pairs, and then the matrix elements for the remaining pairs can be generated by applying the relevant symmetry operation.

Method By the definition of unique pairs, the crucial task in determining them is to find which pairs of points on the lattice

are related by symmetry operations. This will allow us to construct sets of equivalent pairs and therefore create a list of unique pairs. For the output to be useful we must choose a point on the lattice and require that it forms at least one of the points in each pair considered. We therefore generate the unique pairs of that point with the lattice. This point will be referred to as the chosen point. Consider a square with identical atoms on each of the four corners. As no orientation is specified, none of the atoms can be distinguished from any of the others. There is therefore no difference between the pair of two atoms along one of the sides of the square and the pair of atoms along any of the other three sides of the square. These pairs are similar. Likewise, the two possible diagonal pairs of atoms are similar. The pair of a point with itself is also similar to the pair of the other three points with themselves. There are thus three sets of similar pairs.

Fig. 4

A more formal method of determining this is to arbitrarily choose one of the points on the square, say the point 1 in Fig. 4. There are four possible pairs that contain the point 1: 1 with itself, 1 with 2, 1 with 3, and 1 with 4. There are several symmetry operations on the

4 1

2 3

Page 4: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

4

square, but only one of them will leave the point 1 fixed; the mirror plane passing through the points 1 and 3. Performing this operation on all of the points in the square has the effect of transforming 2 into 4 and 4 into 2, leaving 1 and 3 fixed. By definition, two pairs are equivalent if one can be transformed into the other by the application of a symmetry operation. Therefore the pairs of 1 with 2 and 1 with 4 are equivalent. There are thus three unique pairs containing the point 1 as shown in Fig. 5. But as point 1 is indistinguishable from any of the other points, there are only three unique pairs on the square.

Fig. 5

Red lines indicate the unique pairs In three dimensions we can consider the simple cubic structure. All of the points are again identical. Applying the same method, we choose the point 1. There are eight possible pairs containing the point 1: 1 with itself and 1 with the other seven points. Now, however, two symmetry operations do not move the point 1: the mirror plane passing through 1 and 3 as in the two dimensional case, and rotation by 180° about the axis passing through 1 and 7. The effect of applying the mirror plane operation will be to transform the point 2 into 4, and 6 into 8. Rotating about the axis transforms 5 into 3, 6 into 4, and 8 into 2. This implies that there are four unique pairs on the simple cube: 1

with itself, 1 with 4, 1 with 3, and 1 with 7.

Fig. 6

Progressing to an infinite lattice introduces more complexity. There will be an infinite number of possible unique pairs. A maximum distance must be specified to limit the program to a finite number of points. If the chosen point is located at a Wyckoff point of the lattice then only symmetry operations with zero translation will leave the chosen point fixed. This is usually not the case, however. If the chosen point is not located at the Wyckoff point on which the symmetry operations we are using are defined, then there is the possibility of a symmetry operation combining a point group operation and a lattice vector translation leaving the chosen point fixed.

Fig. 7

7 6

4

3

4 1

2 3

1

2

5 8

Page 5: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

5

The pair (0,3) is transformed into the pair (4,5) under the mirror plane (dashed line). This is followed by an integer lattice vector translation (red lines) to the pair (0,1) implying that the pairs (0,3) and (0,1) are equivalent One must therefore consider not just the point group symmetry operations, but all of the symmorphic operations (operations with an integer lattice vector translation). It is possible, however, to avoid having to input all of the operators with non-zero translation vectors. This is because we can generate all of the relevant symmorphic symmetry operations from the point group. Translating the lattice by an integer lattice vector does not alter the appearance of the structure, therefore if a symmetry operation exists that combines a point group operation and an integer lattice vector translation, this implies that the point group operation with no translation is also a symmetry operation on the lattice. The operations required are those which leave the chosen point of the lattice fixed. If the result of applying a point symmetry operation to this point results in another point on the lattice separated from the chosen point by a vector consisting of an integer number of lattice vectors, then the operation combined with this vector is a symmorphic symmetry operation that leaves the chosen point fixed. It must be an integer lattice vector translation so that the lattice appears unchanged after the application, otherwise it would not be a symmetry operation. Further complexity arises when one attempts to apply the method to structures where the lattice vectors do not correspond to the Cartesian axes, as in the case of Graphene which we will consider for the remainder of this report. Graphene has the added

difficulty of a two-point basis. These complications do not alter the method of finding the unique pairs, but require consideration when writing a program to apply it. For the first task of the program to determine the unique pairs, the crystallographic point group symmetry operation matrices, primitive lattice vectors (in Cartesian coordinates), and basis points (in terms of the primitive lattice vectors) are loaded and the number of each is determined. This is the required input of the program. The points of the lattice out to the specified distance are determined in terms of the primitive lattice vectors and loaded into an array. The Cartesian coordinates of the points are also calculated and loaded into a separate array. The Cartesian coordinates are needed to calculate distances. An array called basispairs is also created which contains a list of all of the points of the lattice that will be considered. The capability of handling more than one chosen point was included in the program. This may be required if, for example, there were two different types of atoms in the crystal. In this case if there was only one chosen point, say an atom of type 1, then pairs consisting of two atoms of type 2 would not be considered, resulting in some unique pairs not being found. In Graphene, however, the output of the program will be similar regardless of which atom on the lattice is chosen, and so only one chosen point will be used. All of the loaded symmetry operations are performed on the chosen point of the lattice. If the output is a point on the lattice of the same basis as the

Page 6: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

6

chosen point, then the operation and the number of times it was applied are recorded, together with the translation vector that takes the result point back to the chosen point. This is performed with each operation until the output is the chosen point, ensuring that all possible unique operations have been considered. The significance of requiring that the output of the operation is of the same basis as the chosen point is that this ensures that the translation vector back to the chosen point is a vector consisting of only integer multiples of the lattice translation vectors, as discussed earlier. The result is then compared with the list of defined points and if it matches one, then this implies that the pairs of the chosen point with the original point and the chosen point with the resultant point are equivalent. This is recorded by writing the pair (x,y) into the EP (equivalent pairs) structure, where x is the original point and y is the resultant point. Mathematically this process can be described as follows:

'0

0

)()0(

0

12

21

gss

OOVgss

OVgsOs

gsVsV

gss

ki

ki

ki

ji

ji

++

−+++

+++

++

++

Where si, sj, sk, are basis vectors; g, g’, O1, and O2 are lattice translation vectors; 0 is the zero translation vector; V is a symmetry operation. In this example the pair of the chosen point with the point at si + g is equivalent to the pair of the chosen

point with the point at sk + g’. The combination of V with the lattice translation vector –O1 is a symmorphic symmetry operation which leaves the chosen point fixed. The program then moves onto the removenonunique function, which is the central element of the algorithm. The recorded operations are performed on all of the points loaded (the points of the lattice out to the specified distance). The output of each application is translated by the relevant translation vector. Fig. 7 demonstrates that performing the operation followed by this translation is equivalent to keeping the chosen point fixed. EP will now contain a list of points such that the pair of the chosen point with each point in the list is equivalent to the pair of the chosen point with some other point on the list. The program removes any point from basispairs that occurs in EP. This results in basispairs containing only the points such that the pair of the chosen point with each point on the list is not equivalent to the pair of the chosen point with any other point that has been defined. The equivrecursive function is called with one of the pairs (with elements of the pair assigned to the variables a and b) in the EP structure. It goes through all of the pairs in EP and if it finds a pair that contains the point a (i.e. the first point in the pair with which the function was called) then it replaces that point by b (the second point in the calling pair) and calls equivrecursive with this pair. When this section of the program is completed, the structure EP will only contain one point from each equivalence class.

Page 7: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

7

For example, if EP contains the following pairs:

(0, 1), (2, 4), (3, 2), (1, 8) Where (x,y) means the pair of the chosen point with x and the pair of the chosen point with y are equivalent. The function equivrecursive will first be called with the pair (0,1). It will replace 0 by 1 and search the remaining pairs for 0. As no other pair contains 0 it will move on to the next pair, (2,4). It replaces the 2 by 4 and searches the other pairs for 2. It finds it in the pair (3,2). It replaces this 2 by 4, and replaces any occurrences of 3 by 4, and so on. In this way, the final output will be: (8, 8), (4, 4), (4, 4), (8, 8) This implies that there were two equivalence classes: the pairs of the chosen point with 0, 1, and 8 are equivalent, and the pairs of the chosen point with 2, 3, and 4 are equivalent. The points that remain in EP are written back to basispairs, so that it now contains all of the unique pairs. The unique pairs are ordered by length to facilitate applying the data, when it may not be necessary to consider pairs out to the length that was considered in the program. For the knowledge of the unique pairs to be useful it is also necessary to know the equivalent pairs of each unique pair and what symmetry operation is necessary to transform the unique pair into the equivalent pair. It is therefore required to again apply all of the symmetry operations which leave the chosen point fixed to the unique pairs, recording the output and the operation applied.

Note that it may be possible to transform one pair into another in several different ways, for example with one application of one operation or two applications of another. The program only records one way of performing the transformation. To make applying the data more efficient it is preferable to present the operation which needs to be applied the least amount of times to reach the desired pair, however such functionality has not been implemented in the program. 2D hexagonal structure (Graphene) was chosen as the primary crystal structure to test the program with as it is quite complex, having lattice vectors which do not correspond to Cartesian axes and a two point basis, but was simple enough to verify the results by inspection and could be clearly illustrated diagrammatically. Several alterations would need to be made to the program for it to be capable of accepting more complicated structures, such as those with non-symmorphic space groups. As these changes would not affect the main algorithm of the program, and due to the shortage of time, they were not implemented. Although currently not in use, functions were included in the program to allow vectors in Cartesian coordinates to be converted into vectors in terms of the primitive lattice vectors. This could be used if the symmetry operation matrices were given for Cartesian coordinates.

Results The unique pairs of the lattice with the chosen point are printed followed by their length in order of increasing length. If there are any pairs of the

Page 8: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

8

chosen point with another point on the lattice that are equivalent to a unique pair, they are printed after the unique pair with a one tab stop indentation. Equivalent pairs are followed by the operation that is necessary to transform the unique pair into the equivalent pair and the number of times it must be applied. The points that form the pairs in the output are referred to by the first two components of their coordinates in terms of the primitive lattice vectors.

This can easily be altered to use Cartesian coordinates instead if required. The operations are identified by an integer number starting from 0 signifying the order of their occurrence in the ops.dat file. For example the first operation in the ops.dat file would be referred to as operation 0, while the second would be operation 1. This is followed by the integer number of the two primitive lattice vectors that the output must be translated by.

[Unique Pairs] Length [Equivalent Pairs] Operator (Translation vector) Times Applied [(0.333333,0.666667), (0.333333, 0.666667)] 0.000000 [(0.333333,0.666667), (0.666667, 0.333333)] 0.577350 [(0.333333,0.666667), (0.666667, 1.333333)] 4 (0, 1) 1 [(0.333333,0.666667), (-0.333333, 0.333333)] 3 (0, 0) 1 [(0.333333,0.666667), (1.333333, 1.666667)] 1.000000 [(0.333333,0.666667), (1.333333, 0.666667)] 4 (0, 1) 1 [(0.333333,0.666667), (0.333333, 1.666667)] 3 (0, 0) 1 [(0.333333,0.666667), (0.333333, -0.333333)] 2 (0, 1) 2 [(0.333333,0.666667), (-0.666667, 0.666667)] 2 (1, 1) 1 [(0.333333,0.666667), (-0.666667, -0.333333)] 0 (1, 1) 1 [(0.333333,0.666667), (-0.333333, 1.333333)] 1.154701 [(0.333333,0.666667), (-0.333333, -0.666667)] 4 (0, 1) 1 [(0.333333,0.666667), (1.666667, 1.333333)] 3 (0, 0) 1 [(0.333333,0.666667), (1.666667, 2.333333)] 1.527525 [(0.333333,0.666667), (1.666667, 0.333333)] 4 (0, 1) 1 [(0.333333,0.666667), (0.666667, 2.333333)] 3 (0, 0) 1 [(0.333333,0.666667), (0.666667, -0.666667)] 2 (0, 1) 2 [(0.333333,0.666667), (-1.333333, 0.333333)] 2 (1, 1) 1 [(0.333333,0.666667), (-1.333333, -0.666667)] 0 (1, 1) 1 [(0.333333,0.666667), (-0.666667, 1.666667)] 1.732051 [(0.333333,0.666667), (-0.666667, -1.333333)] 4 (0, 1) 1 [(0.333333,0.666667), (2.333333, 1.666667)] 3 (0, 0) 1 [(0.333333,0.666667), (1.333333, 2.666667)] 1.732051 [(0.333333,0.666667), (1.333333, -0.333333)] 4 (0, 1) 1 [(0.333333,0.666667), (-1.666667, -0.333333)] 2 (1, 1) 1 [(0.333333,0.666667), (2.333333, 2.666667)] 2.000000 [(0.333333,0.666667), (2.333333, 0.666667)] 4 (0, 1) 1 [(0.333333,0.666667), (0.333333, 2.666667)] 3 (0, 0) 1 [(0.333333,0.666667), (0.333333, -1.333333)] 2 (0, 1) 2 [(0.333333,0.666667), (-1.666667, 0.666667)] 2 (1, 1) 1 [(0.333333,0.666667), (-1.666667, -1.333333)] 0 (1, 1) 1

Page 9: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

9

Fig. 8 Graphical representation of program output. The central point is the chosen point. Red dots indicate points that form unique pairs with the chosen point. Circles display shells formed by equivalent pairs.

Dashed circles signify more than one equivalence class on the shell.

Page 10: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

10

As can be seen from the diagram, the equivalent pairs in Graphene occur in shells around the chosen point. This is expected as symmetry operations preserve distance. What was not as apparent, however, was that not all pairs of the same length are equivalent. In the fifth shell, for example, there are two separate equivalence classes. These results indicate that the pair [(1/3, 2/3), (2/3, 1/3)] can be transformed into the pair [(1/3, 2/3), (2/3, 4/3)] by the application of operation 4 followed by a translation of one primitive lattice vector in the a2 direction. If all of the atoms in the lattice were not identical, two atoms of different type might be positioned at the same distance from the chosen point. These two atoms, although part of the same shell, would not be members of the same equivalence class. There would therefore be more unique pairs, and so the benefit of applying knowledge of the unique pairs to reduce computational effort may be reduced.

References ‘Solid State Physics’, Neil W. Ashcroft, David N. Mermin, Harcourt, Inc. ‘Space Groups for Solid State Scientists, 2e’, Gerald Burns, A.M. Glazer, Academic Press.

Page 11: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

A1

Appendix

Space group satisfies properties of a group A group is a set on which an operation o is defined such that there exists:

1. Associative property: a o (b o c) = (a o b) o c 2. Identity: a o I = I o a = a 3. Inverse: a o a’ = a’ o a = I

Where a, b, c, a’, and I are elements of the set (symmetry operations). In the case of a space group the operation o is composition. These properties are easily demonstrated by recalling the definition of a space group: The set of all symmetry operations on the lattice, where a symmetry operation is a transformation such that an infinite lattice appears to be unchanged by its application. Symmetry operations are isomorphisms and can be written as 3 x 3 real matrices. Property 1 holds for any real matrices, and so is trivial. It is obvious that the identity matrix is a symmetry operation and is equivalent to the identity in property 2. It is also obvious that the inverse of a symmetry operation is also a symmetry operation, proving property 3.

Equivalence relation on pairs An equivalence relation must satisfy three properties:

1. Transitive: cacbba ~~,~ ⇒ 2. Symmetric: abba ~~ ⇒ 3. Reflexive: a ~ a

Where a, b, and c are pairs. It is claimed that two pairs are equivalent if one can be transformed into the other by the application of a symmetry operation. Let a represent the pair (x,y), b represent the pair (h,l), and c represent the pair (j,k), where x, y, h, l, j, and k are points on the lattice. a ~ b implies that the application of a symmetry operation to x results in h and the application of a symmetry operation to y results in l. Similarly b ~ c implies that the application of a symmetry operation to h results in j and the application of a symmetry operation to l results in k. Property 1 is therefore obvious as the composition of two symmetry operations is another symmetry operation, so it is possible to transform x into j by the application of a symmetry operation and y into k by the application of the same symmetry operation, implying a ~ c Property 2 follows trivially from the existence of an inverse for each symmetry operation which is also a symmetry operation. As the identity operation is a symmetry operation, property 3 is obviously satisfied.

Page 12: Algorithms for Crystal Symmetry - School of …alanr/report.pdfAlgorithms for Crystal Symmetry Alan Richardson ... space group of a crystal consisting of only those symmetry operations

A2

Downloads Program source code: http://www.maths.tcd.ie/~alanr/project_final.c Package containing source code and input files used: http://www.maths.tcd.ie/~alanr/project_final.tar.bz2 This report: http://www.maths.tcd.ie/~alanr/report.pdf

Input Used ops.dat: 0.00 -1.00 0.00 -1.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 -1.00 1.00 0.00 -1.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 0.00 -1.00 0.00 1.00 -1.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 -1.00 1.00 0.00 0.00 1.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 1.00 0.00 0.00 1.00 -1.00 0.00 0.00 0.00 1.00 0.00 0.00 0.00 latvects.dat: 5 -0.866025 0.0 0.5 0.866025 0.0 0.0 0.0 1.0 pts.dat: 0.333333 0.666666 0.0 0.666666 0.333333 0.0