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

qml.qchem.dipole_integrals

dipole_integrals(mol, core=None, active=None)[source]

Return a function that computes the dipole moment integrals over the molecular orbitals.

These integrals are required to construct the dipole operator in the second-quantized form

ˆD=pqdpq[ˆcpˆcq+ˆcpˆcq]ˆDc+ˆDn,

where the coefficients dpq are given by the integral of the position operator ˆr over molecular orbitals ϕ

dpq=ϕp(r)ˆrϕq(r)dr,

and ˆc and ˆc are the creation and annihilation operators, respectively. The contribution of the core orbitals and nuclei are denoted by ˆDc and ˆDn, respectively.

The molecular orbitals are represented as a linear combination of atomic orbitals as

ϕi(r)=νciνχν(r).

Using this equation the dipole moment integral dpq can be written as

dpq=μνCpμdμνCνq,

where dμν is the dipole moment integral over the atomic orbitals and C is the molecular orbital expansion coefficient matrix. The contribution of the core molecular orbitals is computed as

ˆDc=2Ncorei=1dii,

where Ncore is the number of core orbitals.

Parameters
  • mol (Molecule) – the molecule object

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

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

Returns

function that computes the dipole moment integrals in the molecular orbital basis

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]
>>> constants, integrals = dipole_integrals(mol)(*args)
>>> print(integrals)
(array([[0., 0.],
        [0., 0.]]),
 array([[0., 0.],
        [0., 0.]]),
 array([[ 0.5      , -0.8270995],
        [-0.8270995,  0.5      ]]))