qml.qchem.fermionic_dipole

fermionic_dipole(mol, cutoff=1e-18, core=None, active=None)[source]

Return a function that builds the fermionic dipole moment observable.

The dipole operator in the second-quantized form is

\[\hat{D} = -\sum_{pq} d_{pq} [\hat{c}_{p\uparrow}^\dagger \hat{c}_{q\uparrow} + \hat{c}_{p\downarrow}^\dagger \hat{c}_{q\downarrow}] - \hat{D}_\mathrm{c} + \hat{D}_\mathrm{n},\]

where the matrix elements \(d_{pq}\) are given by the integral of the position operator \(\hat{{\bf r}}\) over molecular orbitals \(\phi\)

\[d_{pq} = \int \phi_p^*(r) \hat{{\bf r}} \phi_q(r) dr,\]

and \(\hat{c}^{\dagger}\) and \(\hat{c}\) are the creation and annihilation operators, respectively. The contribution of the core orbitals and nuclei are denoted by \(\hat{D}_\mathrm{c}\) and \(\hat{D}_\mathrm{n}\), respectively, which are computed as

\[\hat{D}_\mathrm{c} = 2 \sum_{i=1}^{N_\mathrm{core}} d_{ii},\]

and

\[\hat{D}_\mathrm{n} = \sum_{i=1}^{N_\mathrm{atoms}} Z_i {\bf R}_i,\]

where \(Z_i\) and \({\bf R}_i\) denote, respectively, the atomic number and the nuclear coordinates of the \(i\)-th atom of the molecule.

Parameters
  • mol (Molecule) – the molecule object

  • cutoff (float) – cutoff value for discarding the negligible dipole moment integrals

  • core (list[int]) – indices of the core orbitals

  • active (list[int]) – indices of the active orbitals

Returns

function that builds the fermionic dipole moment observable

Return type

function

Example

>>> symbols  = ['H', 'H']
>>> geometry = np.array([[0.0, 0.0, 0.0], [0.0, 0.0, 1.0]], requires_grad = False)
>>> alpha = np.array([[3.42525091, 0.62391373, 0.1688554],
>>>                   [3.42525091, 0.62391373, 0.1688554]], requires_grad=True)
>>> mol = qml.qchem.Molecule(symbols, geometry, alpha=alpha)
>>> args = [alpha]
>>> fermionic_dipole(mol)(*args)[2]
-0.4999999988651487 * a⁺(0) a(0)
+ 0.82709948984052 * a⁺(0) a(2)
+ -0.4999999988651487 * a⁺(1) a(1)
+ 0.82709948984052 * a⁺(1) a(3)
+ 0.82709948984052 * a⁺(2) a(0)
+ -0.4999999899792451 * a⁺(2) a(2)
+ 0.82709948984052 * a⁺(3) a(1)
+ -0.4999999899792451 * a⁺(3) a(3)
+ 1.0 * I