ElectronicDipoleMoment#
- class ElectronicDipoleMoment(x_dipole, y_dipole, z_dipole, *, constants=None, reverse_dipole_sign=False)[source]#
Bases:
object
The ElectronicDipoleMoment property.
This Property implements the operator which evaluates the electronic dipole moment, based on the electronic integrals:
\[\vec{d}_{pq} = \int \phi_{p} \vec{r} \phi_{q} ,\]where the integral is over the all space. The operator can then be expressed as:
\[\hat{d} = \sum_{p, q} d^x_{pq} a^\dagger_p a_q ,\]where \(x\) can be any of the three Cartesian axes (\(\{x, y, z\}\)).
Just like in the
qiskit_nature.second_q.hamiltonians.ElectronicEnergy
, the nuclear contribution is stored separately in thenuclear_dipole_moment
attribute and will not be included into the generated operator. It is however possible, to manually add this constant shift to the electronic dipole components as a constant term in the internalqiskit_nature.second_q.operators.ElectronicIntegrals
instances. Assuming you have obtained anElectronicDipoleMoment
instance (for example from one of the classical code drivers), you can add the nuclear component to be included in the qubit operator like so:from qiskit_nature.second_q.operators import PolynomialTensor # you have obtained your dipole moment property and store it in this variable dipole: ElectronicDipoleMoment nuclear_dip = dipole.nuclear_dipole_moment dipole.x_dipole.alpha += PolynomialTensor({"": nuclear_dip[0]}) dipole.y_dipole.alpha += PolynomialTensor({"": nuclear_dip[1]}) dipole.z_dipole.alpha += PolynomialTensor({"": nuclear_dip[2]})
The following attributes can be set via the initializer but can also be read and updated once the
ElectronicDipoleMoment
object has been constructed.- x_dipole#
the
ElectronicIntegrals
for the \(x\)-axis component.- Type:
- y_dipole#
the
ElectronicIntegrals
for the \(y\)-axis component.- Type:
- z_dipole#
the
ElectronicIntegrals
for the \(z\)-axis component.- Type:
- constants#
a mapping of constant dipole offsets, not mapped to the qubit operator. Each entry must be a tuple of length three (for the three Cartesian axes).
- Type:
MutableMapping[str, DipoleTuple]
- reverse_dipole_sign#
whether or not to reverse the sign of the computed electronic dipole moment when adding it to the
nuclear_dipole_moment
to obtain the total.
- Parameters:
x_dipole (ElectronicIntegrals) – the
qiskit_nature.second_q.operators.ElectronicIntegrals
for the \(x\)-axis component.y_dipole (ElectronicIntegrals) – the
qiskit_nature.second_q.operators.ElectronicIntegrals
for the \(y\)-axis component.z_dipole (ElectronicIntegrals) – the
qiskit_nature.second_q.operators.ElectronicIntegrals
for the \(z\)-axis component.constants (MutableMapping[str, DipoleTuple]) – a mapping of constant dipole offsets, not mapped to the qubit operator. Each entry must be a tuple of length three (for the three Cartesian axes).
reverse_dipole_sign (bool) – whether or not to reverse the dipole sign.
Attributes
- nuclear_dipole_moment#
The nuclear dipole moment.
See
qiskit_nature.second_q.hamiltonians.ElectronicEnergy.nuclear_repulsion_energy
for an example on how to add the constant terms as offsets to the internalqiskit_nature.second_q.operators.ElectronicIntegrals
.
Methods
- interpret(result)[source]#
Interprets an
qiskit_nature.second_q.problems.EigenstateResult
.In particular, this extracts the evaluated electronic dipole moment values from the auxiliary operator eigenvalues and this adds the constant dipole shifts stored in this property to the result object.
- Parameters:
result (qiskit_nature.second_q.problems.EigenstateResult) – the result to add meaning to.