3.49 Symmetry
This functionality is considered "under development". Please report any errors to the issue tracker at https://aims-git.rz-berlin.mpg.de/.
No post-processing (DOS, band-structure) implemented, yet. Only realspace EXX.
FHI-aims can make use of symmetry to reduce the number of k-points and thus the number of calls to the eigensolver. The functionality is based on the external library spglib written by Atsushi Togo (https://atztogo.github.io/spglib/). For instructions how-to compile FHI-aims with spglib see Appendix E.2.
In real space, FHI-aims uses the Bloch functions
| (3.260) |
where
| (3.261) |
is the local basis function (atomic orbital) with the quantum numbers associated with atom in the periodic replica of the unit cell (see Fig. 3.14). The general space group symmetry operator has the form:
| (3.262) |
are rotations, (fractional) translation vectors and direct lattice translation vectors. Under such symmetry operations , the local basis function in equation 3.261 transform according to:
| (3.263) | ||||
| (3.264) |
We make use of the fact that Atom of the first unit cell is transformed by application of into atom in the th unit cell. Also, is the vector translating back to the first unit cell ():
| (3.265) | |||||
| (3.266) | |||||
| (3.267) |
Using this, we finally get:
| (3.268) |
in which is the transformation matrix of the spherical harmonics . Along the same line, the Bloch states in Eq. (3.260) fulfill
| (3.269) |
so that we get
| (3.270) |
Please note that the KS eigen-coefficients transform exactly like the basis functions:
| (3.271) | |||
| (3.272) |
The symmetry analysis, k-point reduction and reconstruction of the density matrix is done as follows:
-
1.
We use spglib (http://atztogo.github.io/spglib/) to
-
•
determine the space group of the system
-
•
determine translation vectors () and rotation matrices () for this space group
See Appendix E.2 how-to include spglib during the compilation of FHI-aims. Additionally, we implemented routines to
-
•
tabulate the rotation matrices () required for the calculation of .
-
•
and calculate the distance between equivalent atoms due to the symmetry operation to determine the phase factor in Eq. 3.272.
-
•
determine the equivalent -points
-
•
construct the map between symmetry-equivalent -points
-
•
-
2.
The Euler angles are calculated from the rotation matrices .
This corresponds to the “y-convention”:
-
1.
The -, -, -axes are rotated anticlockwise through an angle about the axis
-
2.
The -, -, -axes are rotated anticlockwise through an angle about the axis
-
3.
The -, -, -axes are rotated anticlockwise through an angle about the axis
-
1.
-
3.
The rotation matrices for the real spherical harmonics () are calculated.
The rotation matrix in the basis of the real spherical harmonics is calculated from the rotation matrix in the basis of the complex spherical harmonics, the Wigner D-Matrix , and a transformation matrix (see M. A. Blanco, M. Florez, M. Bermejo, J. of Mol. Strucure, 419 (1997) 19-27, [35]):-
•
The Wigner D-Matrix (rotation matrix in the basis of the complex spherical harmonics ) is defined by the formula:
(from “Bradley and Cracknell, The mathematical theory of symmetry in solids : representation theory for point groups and space groups, Clarendon Pr., 1972, p.53”, [42]) Thereby, improper rotations (combination of rotation and inversion) are made proper and . In practice the calculation of is done with a recursive algorithm, that does not require the calculation of factorials. (M. A. Blanco, M. Florez, M. Bermejo, J. of Mol. Strucure, 419 (1997) 19-27, [35])
-
•
is constructed by these 6 rules:
-
1.
if
-
2.
-
3.
-
4.
-
5.
-
6.
-
1.
-
•
Last but not least, we have to take care of the sign convention for the real spherical harmonics as implemented in FHI-aims – figuring this out took us some time. In practice, this is taken care of by an additional matrix multiplication (with ) yielding the correct signs in .
-
•
-
4.
Eventually, this matrices are used to transform the KS eigen-coefficients following Eq. (3.272). Furthermore, the rotation of the KS-eigenvectors can be made more efficient by directly transforming the density matrix at each k-point with the help of two matrix operations:
(3.273) The phase factor can be included in the transformation matrix during the pre-processing. This increases the matrix size (and required memory) by a factor of the size of the number of k-points to reconstruct at each computing task. Furthermore the density matrix only has to be reconstructed for k-points reduced by proper rotations. The corresponding improper (inversion symmetry) rotations are accounted for by the integration weights.
Tags for general section of control.in:
Tag: symmetry_reduced_k_grid_spg(control.in)
Usage: symmetry_reduced_k_grid_spg .true./.false.
Purpose: Only use the irreducible set of k-points during the calculation. Default: .false.
Tag: reconstruct_proper_only(control.in)
Usage: reconstruct_proper_only .true./.false.
Purpose: Only reconstruct the density matrix for proper rotations. Improper rotations (Inversion symmetry) are accounted for by the integration weights. Default: .true.
Tag: use_spg_full_Delta(control.in)
Usage: use_spg_full_Delta .true./.false.
Purpose: Include phase factors in the reconstruction matrix for the density matrix during pre-processing. Set to .false. if memory is an issue. Default: .true.
Tag: use_spg_mv_mm(control.in)
Usage: use_spg_mv_mm .true./.false.
Purpose: Reconstruct the density by rotating the eigenvector and setting up the density matrix in the standard way (matrix-vector and matrix-matrix operation instead of the matrix-matrix operations in Eq. 3.273). Default: .false.
Tag: use_symmetric_forces(control.in)
Usage: use_symmetric_forces .true./.false.
Purpose: Symmetrize the forces and generalized forces on the lattice, i. e.,
the stress, for geometry relaxation, e. g., to preserve crystal symmetry but
without fully reducing the k-point set. If full symmetry is used for k-point
reduction, forces are symmetrized. The forces are symmetrized by averaging
over all symmetry operations. Default: .false.
There keywords here are RLSY based symmetry related. It is a work by Yi Yao, Olle Hellman, and Volker Blum to use spacegroup symmetry to accelerate the DFT calculation. Please report bugs by opening issue in aims git repository.
Tag: rlsy_symmetry(control.in)
Usage: rlsy_symmetry all
Purpose: grid based symmetry reduction calculation to accelerate DFT calculations. Default: None
Tag: rlsy_symmetry_refine_structure(control.in)
Usage: rlsy_symmetry_refine_structure .true./.false.
Purpose: refine the structure and lattice vectors to idealized position based on the spacegroup symmetry. Default: .false.
Tag: hartree_d_matrix_method(control.in)
Usage: hartree_d_matrix_method pseudo_inverse/submatrix
Purpose: The original d matrix inversion method for Hartree potential calculation described in Delley’s paper is the submatrix method. It would introduce slightly asymmetricity in the calculation especially for stress tensor. Swithing it to the pseudo inverse method can reach a fully symmetry result with some additional calculation. Default: submatrix