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.

Refer to caption
Figure 3.14: . Illustration of atomic coordinates in the unit cell (𝐑I), lattice vector (𝐑m) and atomic coordinates in super cell (𝐑Im=𝐑I+𝐑m). Image credits: Honghui Shang.

In real space, FHI-aims uses the Bloch functions

χI(μ),𝐤(𝐫)=mφI(μ),m(𝐫)exp(i𝐤𝐑m), (3.260)

where

φI(μ),m(𝐫)=φI(μ),m(𝐫𝐑I(μ)𝐑m) (3.261)

is the local basis function (atomic orbital) with the quantum numbers μ=(n,l,m) associated with atom I(μ) in the mth periodic replica of the unit cell (see Fig. 3.14). The general space group symmetry operator has the form:

S^={V|𝐑+𝐟} (3.262)

V are rotations, 𝐟 (fractional) translation vectors and 𝐑 direct lattice translation vectors. Under such symmetry operations {V|𝐟}, the local basis function in equation 3.261 transform according to:

{V|𝐟}φI(μ),m(𝐫)= (3.263)
φI(μ),m(V1𝐫 V1(𝐑I(μ)+𝐑m+𝐟)). (3.264)

We make use of the fact that Atom I of the first unit cell is transformed by application of V1|𝐟 into atom J in the jth unit cell. Also, 𝐎IV is the vector translating 𝐑J(μ) back to the first unit cell (V1(𝐑I(μ)𝐟)𝐑J,c;𝐎IV=𝐑J,0𝐑J,c):

𝐑I(μ)+𝐑m = V(𝐑I(μ)V+𝐑mV)+𝐟 (3.265)
𝐑I(μ)V = V1(𝐑I(μ)𝐟)+𝐎IV=𝐑J(μ) (3.266)
𝐑mV = V1𝐑m𝐎IV=𝐑j (3.267)

Using this, we finally get:

{V|𝐟}φI(μ),m(𝐫)=mT^(V,l,m,m)φJ(μ),j(𝐫𝐑J(μ)𝐑j), (3.268)

in which T^(V,l,m,m) is the transformation matrix of the spherical harmonics Ylm. Along the same line, the Bloch states in Eq. (3.260) fulfill

𝐤𝐑m=(V1𝐤)(V1𝐑m+𝐎IV𝐎IV)=𝐤V𝐑mV+𝐤V𝐎IV (3.269)

so that we get

{V|𝐟}χI(μ),𝐤(𝐫)=exp(i𝐤V𝐎IV)mT^(V,l,m,m)χJ(μ),𝐤V(𝐫) (3.270)

Please note that the KS eigen-coefficients transform exactly like the basis functions:

ci,I(μ),𝐤=exp(i𝐤V𝐎IV)mT^(V,l,m,m)ci,J(μ),𝐤V (3.271)
ci,J(μ),𝐤V=exp(i𝐤V𝐎IV)mT^+(V,l,m,m)ci,I(μ),𝐤 (3.272)

The symmetry analysis, k-point reduction and reconstruction of the density matrix is done as follows:

  1. 1.

    We use spglib (http://atztogo.github.io/spglib/) to

    • determine the space group of the system

    • determine translation vectors (𝐟) and rotation matrices (V) 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 (V) required for the calculation of T^(V,l,m,m).

    • and calculate the distance 𝐎 between equivalent atoms due to the symmetry operation {V|𝐟} to determine the phase factor in Eq. 3.272.

    • determine the equivalent 𝐤-points

    • construct the map between symmetry-equivalent 𝐤-points

  2. 2.

    The Euler angles are calculated from the rotation matrices V(α,β,γ).

    V(α,β,γ)=
    (cosγcosβcosαsinγsinαcosγcosβsinα+sinγcosαcosγsinβsinγcosβcosαcosγsinαsinγcosβsinα+cosγcosαsinγsinβsinβcosαsinβsinαcosβ),

    This corresponds to the “y-convention”:

    • 1.

      The x1-, x2-, x3-axes are rotated anticlockwise through an angle α about the x3 axis

    • 2.

      The x1′′-, x2′′-, x3′′-axes are rotated anticlockwise through an angle β about the x2 axis

    • 3.

      The x1′′′-, x2′′′-, x3′′′-axes are rotated anticlockwise through an angle γ about the x3′′ axis

  3. 3.

    The rotation matrices T^(V,l,m,m)=T^(V(α,β,γ),l,m,m)=T^m,ml(α,β,γ) for the real spherical harmonics (T^(V,l,m,m)) 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 Dmml(α,β,γ), and a transformation matrix C^m,ml (see M. A. Blanco, M. Florez, M. Bermejo, J. of Mol. Strucure, 419 (1997) 19-27, [35]):

    T^m,ml(α,β,γ)=C^m,mlD^mml(α,β,γ)C^m,mlT
    • The Wigner D-Matrix (rotation matrix in the basis of the complex spherical harmonics ) is defined by the formula:

      Dmml(α,β,γ) =i(1)i(l+m)!(lm)!(l+m)!(lm)!(lmi)!(l+mi)!i!(i+mm)!
      ×(cosβ2)2l+mm2i(sinβ2)2i+mmei(mα+mγ),

      (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 RR and Dmml(1)lDmml. In practice the calculation of Dmml(α,β,γ) 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])

    • C^m,ml is constructed by these 6 rules:

      1. 1.

        C^m,ml=0 if |m||m|

      2. 2.

        C^0,0l=1

      3. 3.

        C^m,ml=(1)m/2

      4. 4.

        C^m,ml=1/2

      5. 5.

        C^m,ml=i(1)m/2

      6. 6.

        C^m,ml=i/2

    • 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 Tm,ml) yielding the correct signs in C^m,ml.

      C^m,ml=Tm,ml×C^m,ml
  4. 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 n(𝐤,n,m) at each k-point with the help of two matrix operations:

    n(𝐤,n,m)=i,joccci,n,𝐤cj,m,𝐤= i,joccnexp(i𝐤V𝐎nV)Tn,nci,n,𝐤V (3.273)
    ×mexp(i𝐤V𝐎mV)Tm,mcj,m,𝐤V
    =T^n(𝐤V,n,m)T^T

    The phase factor exp(i𝐤V𝐎nV) 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