# Scissors operator for LCAO mode¶

Warning

Work in progress

class gpaw.lcao.scissors.Scissors(shifts: Sequence[Tuple[float, float, int]])[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}.$