Implement FermionicOp.from_polynomial_tensor
#666
Labels
type: feature request
New feature or request
Milestone
What should we add?
#665 proposes the addition of a
PolynomialTensor
class to handle coefficient storage.This issue tracks the implementation of the method which can construct a
FermionicOp
from those coefficients.Below, I summarize the proposed structure of the
PolynomialTensor.data
field:Currently, coefficients that will later become a
FermionicOp
are stored in most cases in theElectronicIntegrals
. Those are tailored to the electronic structure problems allowing some memory reduction in scenarios of identical coefficients for spin-up and -down orbitals, rendering them not generally applicable.Instead, I propose a structure of
data
as follows:Here
+-
stores a one-body term where the first axis of the stored matrix will be mapped to+
operators, and the second axis to-
. I.e. this will result in aFermionicOp
:Accordingly,
++--
indicates a two-body term, and, even more importantly, unambiguously stores the two-body terms in the setting of electronic structure problems, in the physicist notation:For brevity, I will not expand the 16 coefficients into the operator but will only show a few examples:
data["++--"][0, 0, 0, 0] -> 1.0 * "+_0 +_0 -_0 -_0"
data["++--"][0, 1, 0, 1] -> 6.0 * "+_0 +_1 -_0 -_1"
data["++--"][1, 0, 0, 0] -> 9.0 * "+_1 +_0 -_0 -_0"
For the specific case of electronic structure problems, we can implement a specialized variant of the
PolynomialTensor
which will allow simplified construction from chemistry-notation two body integrals (using the utilities developed in #520), can implement memory-reduction methods to exploit spin symmetries, and (in the future) could also exploit further symmetry information in chemical systems (like 8-fold symmetry of AO ERIs, for example).The text was updated successfully, but these errors were encountered: