## Usage of symmetries

To speed up and guarantee the stability of calculations Fleur makes extensive use of symmetries. Symmetry operations which leave the unit cell unchanged are automatically detected by the Fleur input generator. The different atoms are then grouped into different types of symmetry-equivalent atoms.

In the Fleur input file the parametrization for the different atoms is placed in two different sections.
In the `atomSpecies`

section general parameters symmetry-independent parameters for the different
species are set. In the `atomGroups`

section the different symmetry-equivalent atoms are grouped together
in `atomGroups/atomGroup`

elements. The atom positions are specified there. Each `atomGroup`

is connected
to a certain species via the entry in `atomGroups/atomGroup/@species`

adressing the species with the same
entry in `atomSpecies/species/@name`

. The terms `atom group`

and `atom type`

are synonymous for each other.

The symmetries found for a unit cell are also explicitely provided in the Fleur input file within
the `cell/symmetryOperations`

, `cell/symmetryFile`

, or `cell/symmetry`

element.

Of course, the grouping of the atoms has to be consistent with the specified symmetry operations. Since it is cumbersome to ensure this consistency manually the preferred way to deal with symmetries is to invoke the input generator such that the symmetries do not have to be changed by the user afterwards.

For certain calculations the user should ensure in the input generator input that no symmetries are found that are inconsistent to the planned calculation. For this the user can discriminate between different atoms of the same chemical element to ensure that these atoms do not end up in the same atom group. For calculations involving spin-orbit coupling the user can define the spin-quantization axis in the input generator input. This axis can also break symmtries.

The usage of symmetries allows to subdivide the Brillouin zone into many irreducible wedges that are each equivalent to each other. The specified k point sets therefore only have to sample the irreducible wedge of the Brillouin zone (IBZ) and an integration over the whole Brillouin zone can be performed by assigning adequate weights to the k points in the IBZ and summing over them. The construction of the IBZ and the assignment of the weights to the k points is automatically performed by Fleur or the input generator.

In the Fleur input file k point mesh is specified within the `calculationSetup/bzIntegration/kPointCount`

,
the `calculationSetup/bzIntegration/kPointMesh`

, or the `calculationSetup/bzIntegration/kPointList`

elements, each specifying the
k point set in a different way. In `kPointMesh`

a regular mesh for the whole Brillouin zone is specified. It is
automatically reduced to the subset of k points in the IBZ. In `kPointCount`

only an approximate number of k points is
specified. To be in agreement to the symmetry operations Fleur chooses a number of k points in the Brilloin zone that
is only near to the specified number. In `kPointList`

a list of k points to be used for the calculation is specified
directly together with their weights. For certain calculations also alternative k point sets can be specified in the
input file. This is done in `calculationSetup/bzIntegration/altKPointSet`

XML elements. They are only used if such a
calculation is performed.