c2x and Visualising Symmetry
Few programs are able to visualise symmetry operations, but here we explore two, Jmol and Mercury. The example system used is calcite, which contains rotation axes and glide planes.
The rest of this page describes the common start to the pages on
We start with a simple description of calcite:
calcite.cell
%block LATTICE_ABC ang 6.3600000 6.3600000 6.3600000 46.8330002 46.8330001 46.8330002 %endblock LATTICE_ABC %block POSITIONS_FRAC Ca 0.000000000 0.000000000 0.000000000 Ca 0.500000000 0.500000000 0.500000000 O 0.493000000 0.250000000 0.007000000 O 0.007000000 0.493000000 0.250000000 O 0.250000000 0.007000000 0.493000000 O 0.750000000 0.993000000 0.507000000 O 0.993000000 0.507000000 0.750000000 O 0.507000000 0.750000000 0.993000000 C 0.250000000 0.250000000 0.250000000 C 0.750000000 0.750000000 0.750000000 %endblock POSITIONS_FRAC
No symmetry operations are given, but, if c2x is compiled with SPGlib support, it can find them. From version 2.40b onwards, its output will be something like
$ c2x --list calcite.cell Tol=0.0001 12 symmetry operations found. Identity Inversion point at (0.000000,0.000000,0.000000) 3 axis along ( 1.000, 1.000, 1.000) through (0,0,0) -3 axis along ( 1.000, 1.000, 1.000) through (0,0,0) 3 axis along ( 1.000, 1.000, 1.000) through (0,0,0) -3 axis along ( 1.000, 1.000, 1.000) through (0,0,0) 2 axis along ( 0.000,-1.000, 1.000) through (0.250000,0.250000,0.250000) glide plane ( 0.000,-1.000, 1.000) offset (0,0,0) glide (0.5,0.5,0.5) 2 axis along (-1.000, 0.000, 1.000) through (0.250000,0.250000,0.250000) glide plane (-1.000, 0.000, 1.000) offset (0,0,0) glide (0.5,0.5,0.5) 2 axis along ( 1.000,-1.000, 0.000) through (0.250000,0.250000,0.250000) glide plane ( 1.000,-1.000, 0.000) offset (0,0,0) glide (0.5,0.5,0.5)
Note that such descriptions are not unique. An axis along (1,-1,0) is also an axis along (-1,1,0). If it passes through (0,0.5,0) it will also pass though (0.5,0,0) and (0.25,0.25,0), etc. It can be hard to determine whether two such descriptions do describe correctly the same operation.
Both Jmol and Mercury expect the symmetry operations to be listed, and would prefer .cif as input. So
$ c2x -r --sym --cif calcite.cell calcite.cif
where --sym
tells c2x to calculate the symmetry
operations, using SPGlib, and it will include them in
the output where possible. The -r
reduces
the CIF file to the symmetry-inequivalent atoms,
of which there are just three.
calcite.cif
# written by c2x data_c2x _cell_length_a 6.3600000 _cell_length_b 6.3600000 _cell_length_c 6.3600000 _cell_angle_alpha 46.8330002 _cell_angle_beta 46.8330001 _cell_angle_gamma 46.8330002 loop_ _atom_site_type_symbol _atom_site_fract_x _atom_site_fract_y _atom_site_fract_z _atom_site_U_iso_or_equiv _atom_site_occupancy Ca 0.0000000000 0.0000000000 0.0000000000 0.01 1.00 O 0.4930000000 0.2500000000 0.0070000000 0.01 1.00 C 0.2500000000 0.2500000000 0.2500000000 0.01 1.00 loop_ _symmetry_equiv_pos_as_xyz x,y,z -x,-y,-z +z,+x,+y -z,-x,-y +y,+z,+x -y,-z,-x -x+1/2,-z+1/2,-y+1/2 +x+1/2,+z+1/2,+y+1/2 -z+1/2,-y+1/2,-x+1/2 +z+1/2,+y+1/2,+x+1/2 -y+1/2,-x+1/2,-z+1/2 +y+1/2,+x+1/2,+z+1/2
(The above follows, imperfectly, an old version of the CIF standard. However, it is good enough for our purposes.)