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]