CARAT Introduction / Examples / Find all space groups with a given point group and decide for which superlattices each extension splits.
Author: Oliver Heidbüchel
Description: CARAT Introduction: Example 3 - Find all space groups with a given point group and decide for which superlattices each extension splits.
Keywords: CARAT, crystallography, spacegroups, space groups, space group, spacegroup, mathematics, algorithms, tables, algorithm, table, examples, example, Conj_bravais, Extract, Normalizer, Sublattices, ZZprog, Tr, Tr_bravais, Vector_systems, Extensions, KSupergroups, point group, superlattice, extension

Previous Example | Introduction | Next Example

### Example 4

Find all space groups with point group G generated by the following two matrices and decide for which superlattices each extension splits.

    4d1
    -1 1 1 1

    4
    0 0 1 0
    0 0 0 1
    0 1 0 0
    1 0 0 0

### Used Programs

Conj_bravais, Extract, Normalizer, Sublattices/ZZprog, Tr, Tr_bravais, Vector_systems/Extensions

### Solution

1. Write the two matrices in a file 'g' and add

                #g2

   as top line. Now 'g' has bravais_TYP as format.
2. Call

                Normalizer g > gn

   to produce a file 'gn' containing G, a basis of the space of invariant quadratic forms of G, generators for the normalizer of G in GL4(Z), and the order of G. Note 'gn' has bravais_TYP as format.
3. Call

                Vector_systems gn > gout

   to write a set of representatives of the vector systems under the normalizer action into the file 'out'. It turs out that the order of the extension group is 8 and that there are 6 orbits, i. e. one has 6 affine classes going with the Z-class of G.
4. For each of the 6 cocycles write it into a file 'coz' and call

                Extract -r gn coz > g.i

   to construct the affine classes in the Z-class of G in standard form (i.e. the translation lattice is Zn):

   g.1 | g.2 | g.3 | g.4 | g.5 | g.6

5. Call

                Tr_bravais gn > gn_tr

   to get the transposed group 'gn_tr of 'g'.
6. Call

                Sublattices -b gn_tr > gl

   to write the matrices representing the bases of the Gtr-sublattices of Z4 of 2-power index into file 'gl'. (Note G and Gtr have order 26.) These sublattices are ordered by inclusion and form a chain:

   L1 = Z4 > L2 > L3 > L4 > 2 L1

7. For each inverse write it into a file 'inv' call

                Tr inv > l.i

   to transpose it. So we get the G-invariant superlattices of Zn:

   l.1 = Zn < l.2 < l.3 < l.4 < 1/2 Zn

8. The following is trivial:
   - The first extension splits for every superlattice.
   - The first extension splits and the other extensions don't split for 1/2 Zn.
   So we only have to consider 'g.2' to 'g.6' with the lattices 'l.2' to 'l.4'.
9. Enlarge the matrices in the files 'l.2', 'l.3' and 'l.4', i.e. change

                4       /2              % tranposed of 1-th matrix of inv
                 2  0  0  1
                 0 -2  0 -1
                 0  0 -2 -1
                 0  0  0 -1

   to

                 5       /2              % tranposed of 1-th matrix of inv
                  2  0  0  1 0
                  0 -2  0 -1 0
                  0  0 -2 -1 0
                  0  0  0 -1 0
                  0  0  0  0 2

10. To decide for which superlattice each extension splits, one has to add the translations of a superlattice 'l.j' to a spacegroup 'g.i' and transform this group such that the translation lattice is Zn (Cf. Standard_affine_form). This can be done in one step by calling:

                 for i in 2 3 4 5 6 ; do
                    for j in 2 3 4 ; do
                       Conj_bravais -i g.i l.j > g.i.j ;
                    done ;
                 done

    We get the following spacegroups:

    g.2.2 | g.2.3 | g.2.4
    g.3.2 | g.3.4 | g.3.4
    g.4.2 | g.4.3 | g.4.4
    g.5.2 | g.5.3 | g.5.4
    g.6.2 | g.6.3 | g.6.4

11. For each of these groups, extract the cocycle and the point group:

                 for i in 2 3 4 5 6 ; do
                    for j in 2 3 4 ; do
                       Extract -p g.i.j > pg.i.j ;
                       Extract -c g.i.j > cg.i.j ;
                    done ;
                 done

    We get the following files:

    pg.2.2 | pg.2.3 | pg.2.4
    pg.3.2 | pg.3.4 | pg.3.4
    pg.4.2 | pg.4.3 | pg.4.4
    pg.5.2 | pg.5.3 | pg.5.4
    pg.6.2 | pg.6.3 | pg.6.4
    cg.2.2 | cg.2.3 | cg.2.4
    cg.3.2 | cg.3.4 | cg.3.4
    cg.4.2 | cg.4.3 | cg.4.4
    cg.5.2 | cg.5.3 | cg.5.4
    cg.6.2 | cg.6.3 | cg.6.4

12. Call

                 for i in 2 3 4 5 6 ; do
                    for j in 2 3 4 ; do
                       Vector_systems -i pg.$i.$j cg.$i.$j ;
                    done ;
                 done

    to identify the spacegroups in the files 'g.i.j'. The name is 0 iff the extension splits. We get the following output:

                 Name for the 1-th extension in pg.2.2: 1
                 Name for the 1-th extension in pg.2.3: 1
                 Name for the 1-th extension in pg.2.4: 0
                 Name for the 1-th extension in pg.3.2: 2
                 Name for the 1-th extension in pg.3.3: 0
                 Name for the 1-th extension in pg.3.4: 0
                 Name for the 1-th extension in pg.4.2: 2
                 Name for the 1-th extension in pg.4.3: 0
                 Name for the 1-th extension in pg.4.4: 0
                 Name for the 1-th extension in pg.5.2: 3
                 Name for the 1-th extension in pg.5.3: 1
                 Name for the 1-th extension in pg.5.4: 0
                 Name for the 1-th extension in pg.6.2: 0
                 Name for the 1-th extension in pg.6.3: 0
                 Name for the 1-th extension in pg.6.4: 0

### Remarks

- Step 3 and 4 can be done in one step with Vector_systems/Extensions -S.
- Minimal klassengleich supergroups of spacegroups can also be calculated with KSupergroups.

Previous Example | Introduction | Next Example

last change: 07.01.2003