qml.qchem.excitations

excitations(electrons, orbitals, delta_sz=0)[source]

Generates single and double excitations from a Hartree-Fock reference state.

Single and double excitations can be generated by acting with the operators \(\hat T_1\) and \(\hat T_2\) on the Hartree-Fock reference state:

\[\begin{split}&& \hat{T}_1 = \sum_{r \in \mathrm{occ} \\ p \in \mathrm{unocc}} \hat{c}_p^\dagger \hat{c}_r \\ && \hat{T}_2 = \sum_{r>s \in \mathrm{occ} \\ p>q \in \mathrm{unocc}} \hat{c}_p^\dagger \hat{c}_q^\dagger \hat{c}_r \hat{c}_s.\end{split}\]

In the equations above the indices \(r, s\) and \(p, q\) run over the occupied (occ) and unoccupied (unocc) spin orbitals and \(\hat c\) and \(\hat c^\dagger\) are the electron annihilation and creation operators, respectively.


../../_images/sd_excitations.png

Parameters
  • electrons (int) – Number of electrons. If an active space is defined, this is the number of active electrons.

  • orbitals (int) – Number of spin orbitals. If an active space is defined, this is the number of active spin-orbitals.

  • delta_sz (int) – Specifies the selection rules sz[p] - sz[r] = delta_sz and sz[p] + sz[p] - sz[r] - sz[s] = delta_sz for the spin-projection sz of the orbitals involved in the single and double excitations, respectively. delta_sz can take the values \(0\), \(\pm 1\) and \(\pm 2\).

Returns

lists with the indices of the spin orbitals involved in the single and double excitations

Return type

tuple(list, list)

Example

>>> electrons = 2
>>> orbitals = 4
>>> singles, doubles = excitations(electrons, orbitals)
>>> print(singles)
[[0, 2], [1, 3]]
>>> print(doubles)
[[0, 1, 2, 3]]