Scissors operator for LCAO mode¶
Warning
Work in progress
- class gpaw.lcao.scissors.Scissors(shifts)[source]¶
Scissors-operator eigensolver.
The shifts are given as a sequence of tuples:
[(<shift for occupied states>, <shift for unoccupied states>, <number of atoms>), ...]
Here we open a gap for states on atoms with indices 3, 4 and 5:
>>> eigensolver = Scissors([(0.0, 0.0, 3), ... (-0.5, 0.5, 3)])
In LCAO Mode we solve the following generalized eigenvalue problem:
\[\sum_\nu (H + \Delta H)_{\mu\nu} C_{\nu n}
= \sum_{\nu} S_{\mu\nu} C_{\nu n} \epsilon_n,\]
where \(\Delta H\) is a scissors operator.
Space is divided into regions \(\Omega_i\) and for each region we define desired shifts of the occupied and unoccupied bands: \(\Delta_{i,\text{occ}}\) and \(\Delta_{i,\text{unocc}}\). The scissors operator is given as:
\[\Delta H = \sum_i(\Delta H^{i,\text{occ}}+\Delta H^{i,\text{unocc}}),\]
where
\[\Delta H_{\mu\nu}^{i,\text{occ}} =
\Delta_{i,\text{occ}}
\sum_{n,n'}^{\text{occ}}
\sum_{\mu',\nu'\in\Omega_i}
C_{n\mu}^{-1}
C_{\mu'n}
S_{\mu'\nu'}
C_{\nu'n'}
C_{n'\nu}^{-1},\]
\[\Delta H_{\mu\nu}^{i,\text{unocc}} =
\Delta_{i,\text{unocc}}
\sum_{n,n'}^{\text{unocc}}
\sum_{\mu',\nu'\in\Omega_i}
C_{n\mu}^{-1}
C_{\mu'n}
S_{\mu'\nu'}
C_{\nu'n'}
C_{n'\nu}^{-1}.\]