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
ˆD=−∑pqdpq[ˆc†p↑ˆcq↑+ˆc†p↓ˆcq↓]−ˆDc+ˆDn,where the matrix elements 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, which are computed as
ˆDc=2Ncore∑i=1dii,and
ˆDn=Natoms∑i=1ZiRi,where Zi and Ri 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