## 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 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.