File: dataset.md

package info (click to toggle)
spglib 2.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 14,180 kB
  • sloc: ansic: 125,066; python: 7,717; cpp: 2,197; f90: 2,143; ruby: 792; makefile: 22; sh: 18
file content (277 lines) | stat: -rw-r--r-- 9,460 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
(spglib-dataset)=

# Spglib dataset

**At version 1.9.4, SpglibDataset was modified.** The member
name `setting` is changed to `choice` and `pointgroup_number` is
removed.

The dataset is accessible through the C-structure given by

```c
typedef struct {
    int spacegroup_number;
    int hall_number;
    char international_symbol[11];
    char hall_symbol[17];
    char choice[6];
    double transformation_matrix[3][3];
    double origin_shift[3];
    int n_operations;
    int (*rotations)[3][3];
    double (*translations)[3];
    int n_atoms;
    int *wyckoffs;
    char (*site_symmetry_symbols)[7];
    int *equivalent_atoms;
    int *crystallographic_orbits;
    double primitive_lattice[3][3];
    int *mapping_to_primitive;
    int n_std_atoms;
    double std_lattice[3][3];
    int *std_types;
    double (*std_positions)[3];
    double std_rotation_matrix[3][3];
    int *std_mapping_to_primitive;
    char pointgroup_symbol[6];
} SpglibDataset;
```

(dataset_spg_get_dataset_spacegroup_type)=

## Space group type

### `spacegroup_number`

The space group type number defined in International Tables for
Crystallography (ITA).

(spglib_dataset_hall_number)=

### `hall_number`

The serial number from 1 to 530 which are found at [list of space
groups (Seto's web site)](https://yseto.net/en/sg/sg1). Be
sure that this is not a standard crystallographic definition as far as
the author of spglib knows.

### `international_symbol`

The (full) Hermann-Mauguin notation of space group type is given by .

### `hall_symbol`

The Hall symbol is stored here.

### `choice`

The information on unique axis, setting or cell choices.

## Symmetry operations

### `rotations`, `translations`, and `n_operations`

The symmetry operations of the input unit cell are stored in
`rotations` and `translations`. A crystallographic symmetry
operation $(\boldsymbol{W}, \boldsymbol{w})$ is made from a pair
of rotation $\boldsymbol{W}$ and translation
$\boldsymbol{w}$ parts with the same index. Number of symmetry
operations is given as `n_operations`. The detailed explanation of
the values is found at {ref}`api_spg_get_symmetry`.

(dataset_spg_get_dataset_site_symmetry)=

## Wyckoff positions and symmetrically equivalent atoms

### `n_atoms`

Number of atoms in the input unit cell. This gives the numbers of
elements in `wyckoffs` and `equivalent_atoms`.

### `wyckoffs`

This gives the information of Wyckoff letters by integer
numbers, where 0, 1, 2, $\ldots$, represent the Wyckoff letters
of a, b, c, $\ldots$. These are assigned to all atomic positions
of the input unit cell in this order. Therefore the number of elements in
`wyckoffs` is same as the number of atoms in the input unit cell,
which is given by `n_atoms`.

This is determined from the symmetry of the primitive cell.

### `site_symmetry_symbols`

This gives site-symmetry symbols. These are valid for the standard
settings. For different settings and choices belonging to the same
space group type, the same set of the symbols is returned.

This is determined from the symmetry of the primitive cell.

(spglib_dataset_equivalent_atoms)=

### `equivalent_atoms`

This gives the mapping table from the atomic indices of the input unit
cell to the atomic indices of symmetrically independent atom, such as
`[0, 0, 0, 0, 4, 4, 4, 4]`, where the symmetrically independent
atomic indices are 0 and
4\. We can see that the atoms from 0 to 3 are mapped to 0 and those
from 4 to 7 are mapped to 4. The number of elements in
`equivalent_atoms` is same as the number of atoms in the input unit
cell, which is given by `n_atoms`.

Symmetry operations found for the input cell are used to determine the
equivalent atoms. `equivalent_atoms` and `crystallographic_orbits`
are almost equivalent, but they can be different in a special
case as written in {ref}`api_spg_get_symmetry`.

### `crystallographic_orbits`

**New at version 1.15**

This is almost equivalent to `equivalent_atoms`. But symmetry of the
primitive cell is used to determine the symmetrically equivalent atoms.

(dataset_origin_shift_and_transformation)=

## Transformation matrix and origin shift

### `transformation_matrix` and `origin_shift`

`transformation_matrix` ($\boldsymbol{P}$) and
`origin_shift` ($\boldsymbol{p}$) are obtained as a result of
space-group-type matching under a set of unique axis, setting and cell
choices. These are operated to the basis vectors and atomic point
coordinates of the input unit cell as

$$
( \mathbf{a}_\mathrm{s} \; \mathbf{b}_\mathrm{s} \;
\mathbf{c}_\mathrm{s} ) = ( \mathbf{a} \; \mathbf{b} \; \mathbf{c}
) \boldsymbol{P}^{-1} \;\; \text{and} \;\; \boldsymbol{x}_\mathrm{s} =
\boldsymbol{P}\boldsymbol{x} + \boldsymbol{p}
\;\;(\mathrm{mod}\; \mathbf{1}),
$$

by which the basis vectors are transformed to those of a
standardized unit cell. Atomic point coordinates are shifted so that
symmetry operations have one of possible standard origins. The
detailed definition is presented at [](definition.md).

At **versions 1.7.x and 1.8 or before**, the set of
`transformation_matrix` ($\boldsymbol{P}_\text{old}$) and
`origin_shift` ($\boldsymbol{p}_\text{old}$) was differently defined from
the current definition as follows:

$$
( \mathbf{a}_\mathrm{s} \; \mathbf{b}_\mathrm{s} \;
\mathbf{c}_\mathrm{s} ) = ( \mathbf{a} \; \mathbf{b} \; \mathbf{c}
) \boldsymbol{P}_\text{old} \;\; \text{and} \;\; \boldsymbol{x}_\mathrm{s} =
\boldsymbol{P}^{-1}_\text{old}\boldsymbol{x} - \boldsymbol{p}_\text{old}
\;\;(\mathrm{mod}\; \mathbf{1}).
$$

(dataset_idealized_cell)=

## Standardized crystal structure after idealization

### `n_std_atoms`, `std_lattice`, `std_types`, and `std_positions`

The standardized crystal structure after {ref}`idealization <def_idealize_cell>` corresponding to a Hall symbol is stored in
`n_std_atoms`, `std_lattice`, `std_types`, and
`std_positions`. These output usually contains the rotation in Cartesian
coordinates and rearrangement of the order atoms with respect to the
input unit cell.

**At versions 1.7.x and 1.8 or before**, the variable names of the
members corresponding to those above are `n_brv_atoms`,
`brv_lattice`, `brv_types`, and `brv_positions`, respectively.

(dataset_std_rotation_matrix)=

### `std_rotation_matrix`

**New in version 1.11**

Rotation matrix that rotates the standardized crystal structure
before idealization $( \mathbf{a}_\mathrm{s} \;
\mathbf{b}_\mathrm{s} \; \mathbf{c}_\mathrm{s} )$ to that after
idealization $( \bar{\mathbf{a}}_\mathrm{s} \;
\bar{\mathbf{b}}_\mathrm{s} \; \bar{\mathbf{c}}_\mathrm{s} )$ in
Cartesian coordinates of the given input unit cell. The rotation
matrix $\boldsymbol{R}$ is defined by

$$

( \bar{\mathbf{a}}_\mathrm{s} \;
\bar{\mathbf{b}}_\mathrm{s} \; \bar{\mathbf{c}}_\mathrm{s} )
= ( \boldsymbol{R} \mathbf{a}_\mathrm{s} \;
\boldsymbol{R} \mathbf{b}_\mathrm{s} \; \boldsymbol{R}
\mathbf{c}_\mathrm{s} ).

$$ (rotation_in_standardization)

More precisely, this rotation matrix is an orthonormal matrix. Since $(
\mathbf{a}_\mathrm{s} \; \mathbf{b}_\mathrm{s} \; \mathbf{c}_\mathrm{s} )$ can
be distored, to make $\boldsymbol{R}$ orthonormal, it is calculated as
follows. Make cubes of $( \mathbf{a}_\mathrm{s} \; \mathbf{b}_\mathrm{s}
\; \mathbf{c}_\mathrm{s} )$ and $( \bar{\mathbf{a}}_\mathrm{s} \;
\bar{\mathbf{b}}_\mathrm{s} \; \bar{\mathbf{c}}_\mathrm{s} )$ by
$\mathrm{L} = \begin{pmatrix}\frac{\mathbf{a}}{|\mathbf{a}|} &
\frac{(\mathbf{a} \times \mathbf{b}) \times \mathbf{a}}{|(\mathbf{a} \times
\mathbf{b}) \times \mathbf{a}|} & \frac{\mathbf{a} \times
\mathbf{b}}{|\mathbf{a} \times \mathbf{b}|} \end{pmatrix}$. Watching
$\mathrm{L}$s as $3\times 3$ matrices, $\boldsymbol{R}$ is
obtained by solving $\bar{\mathrm{L}}_\mathrm{s} = \boldsymbol{R}
\mathrm{L}_\mathrm{s}$.

### `std_mapping_to_primitive`

This is available **at versions 1.10 or later**. This gives a list of
atomic indices in the primitive cell of the standardized crystal
structure, where the same number presents the same atom in the
primitive cell. By collective the atoms having the same number, a set
of relative lattice points in the standardized crystal structure
is obtained.

## Crystallographic point group

### `pointgroup_symbol`

**New in version 1.8.1**

% `pointgroup_number` is the serial number of the crystallographic
%    point group, which refers [list of space
%    groups (Seto's web site)](http://pmsl.planet.sci.kobe-u.ac.jp/~seto/?page_id=37&lang=en).

`pointgroup_symbol` is the symbol of the crystallographic point
group in the Hermann-Mauguin notation. There are 32 crystallographic
point groups

```
   1, -1, 2, m, 2/m, 222, mm2, mmm, 4, -4, 4/m, 422, 4mm, -42m, 4/mmm,
   3, -3, 32, 3m, -3m, 6, -6, 6/m, 622, 6mm, -6m2, 6/mmm, 23, m-3,
   432, -43m, m-3m
```

## Intermediate data in symmetry search

A primitive cell is searched from the translational symmetry. This
primitive cell is given by `primitive_lattice` and
`mapping_to_primitive` below.

(spglib_dataset_primitive_lattice)=

### `primitive_lattice`

**New at version 1.15**

Non-standardized basis vectors of a primitive cell in the input
cell.

### `mapping_to_primitive`

In version 1.10 or later, `mapping_to_primitive` is available. This
gives a list of atomic indices in the primitive cell of the input
crystal structure, where the same number presents the same atom in the
primitive cell. By collective the atoms having the same number, a set
of relative lattice points in the input crystal structure is obtained.