qml.qchem.moment_integral

moment_integral(basis_a, basis_b, order, idx, normalize=True)[source]

Return a function that computes the multipole moment integral for two contracted Gaussians.

The multipole moment integral for two primitive Gaussian functions is computed as

\[S^e = \left \langle G_i | q^e | G_j \right \rangle \left \langle G_k | G_l \right \rangle \left \langle G_m | G_n \right \rangle,\]

where \(G_{i-n}\) is a one-dimensional Gaussian function, \(q = x, y, z\) is the coordinate at which the integral is evaluated and \(e\) is a positive integer that is represented by the order argument. For contracted Gaussians, these integrals will be computed over primitive Gaussians, multiplied by the normalized contraction coefficients and finally summed over.

The idx argument determines the coordinate \(q\) at which the integral is computed. It can be \(0, 1, 2\) for \(x, y, z\) components, respectively.

Parameters
  • basis_a (BasisFunction) – left basis function

  • basis_b (BasisFunction) – right basis function

  • order (integer) – exponent of the position component

  • idx (integer) – index determining the dimension of the multipole moment integral

  • normalize (bool) – if True, the basis functions get normalized

Returns

function that computes the multipole moment integral

Return type

function

Example

>>> symbols  = ['H', 'Li']
>>> geometry = np.array([[0.0, 0.0, 0.0], [2.0, 0.0, 0.0]], requires_grad = True)
>>> mol = qml.qchem.Molecule(symbols, geometry)
>>> args = [mol.r] # initial values of the differentiable parameters
>>> order, idx =  1, 0
>>> moment_integral(mol.basis_set[0], mol.basis_set[1], order, idx)(*args)
3.12846324e-01