Loading [MathJax]/jax/output/HTML-CSS/jax.js

qml.qchem.one_particle

one_particle(matrix_elements, core=None, active=None, cutoff=1e-12)[source]

Generates the FermionOperator representing a given one-particle operator required to build many-body qubit observables.

Second quantized one-particle operators are expanded in the basis of single-particle states as

ˆT=α,βα|ˆt|β[ˆcαˆcβ+ˆcαˆcβ].

In the equation above the indices α,β run over the basis of spatial orbitals ϕα(r). Since the operator ˆt acts only on the spatial coordinates, the spin quantum numbers are indicated explicitly with the up/down arrows. The operators ˆc and ˆc are the particle creation and annihilation operators, respectively, and α|ˆt|β denotes the matrix elements of the operator ˆt

α|ˆt|β=dr ϕα(r)ˆt(r)ϕβ(r).

If an active space is defined (see active_space()), the summation indices run over the active orbitals and the contribution due to core orbitals is computed as tcore=2αcoreα|ˆt|α.

Parameters
  • matrix_elements (array[float]) – 2D NumPy array with the matrix elements α|ˆt|β

  • core (list) – indices of core orbitals, i.e., the orbitals that are not correlated in the many-body wave function

  • active (list) – indices of active orbitals, i.e., the orbitals used to build the correlated many-body wave function

  • cutoff (float) – Cutoff value for including matrix elements. The matrix elements with absolute value less than cutoff are neglected.

Returns

an instance of OpenFermion’s FermionOperator representing the one-particle operator ˆT.

Return type

FermionOperator

Example

>>> import numpy as np
>>> matrix_elements = np.array([[-1.27785301e+00,  0.00000000e+00],
...                             [ 1.52655666e-16, -4.48299696e-01]])
>>> t_op = one_particle(matrix_elements)
>>> print(t_op)
-1.277853006156875 [0^ 0] +
-1.277853006156875 [1^ 1] +
-0.44829969610163756 [2^ 2] +
-0.44829969610163756 [3^ 3]