Using crystal symmetry


Symmetry could be used in two ways :

  • reduce the k-mesh
  • reduce the Green's function L,L' matrix

The first of these is currently implemented, HOWEVER! The extent to which symmetry can be used depends on what one is calculating. E.g., to calculate the diagonal parts of GLL0 , one can reduce the k-mesh and just sum all the contributions from inequivalent k-vectors. BUT for the offdiagonal components (which are needed in order to add the core hole, if any), symmetry is more subtle and one needs to add all the equivalent ones, which can be somewhat shortcut by reconstructing them from the inequivalent ones through unitary transformations dictated by symmetry elements of the crystal. Whereas the first strategy would yield a speedup x 48 for diamond, the gain for the latter strategy is much more modest ( x 5?) and dependent on the size of the matrices, i.e. the number of atoms in the unit cell.

So, while a number of symmetry strategies are implemented in the code, it is currently recommended to test these cautiously on a smaller k-mesh before relying on them. Contact the author in case of doubt.

The second idea - LL' symmetry within the G matrix - has not been implemented in any way.

developer's resources