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[ˆc†p↑ˆcq↑+ˆc†p↓ˆ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=2Ncore∑i=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 ]]))