Implement VibrationalOp.from_polynomial_tensor
#668
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
VibrationalOp
from those coefficients.Below, I summarize the proposed structure of the
PolynomialTensor.data
field:VibrationalOp
Finally, the vibrational structure use case is a bit more special. Let me first explain briefly, what the vibrational operator does:
m
modesVibrationalOp
is given byHarmonicBasis
) which we use to map to the second-quantization spaceGaussianLogResult
) actually only index the modes and, thus, have no concept of modalsWhat this means, is that the coefficients stored in a
PolynomialTensor
must be combined with a basis in order to produce a fullVibrationalOp
. We see the same in the current stack, because theVibrationalEnergy
requires a basis in combination with theVibrationalIntegrals
.That said, what should we actually store in a
PolynomialTensor
in the vibrational scenario? I would argue, that the splitting into n-body terms which we do in theVibrationalIntegrals
is not very suitable here, because of the following:A simple 1-body term, can have very different lengths. The same holds for n-body terms in general.
Instead, I suggest we store the coefficients in the same format as done in the
GaussianLogResult
, where we split them into quadratic, cubic and quartic force terms. These all have length 2, 3 and 4, respectively.The kinetic terms (negative indices in the example above) can be inferred from the quadratic terms by a simple negation of the coefficient, so they do not need to be stored separately.
This results in a structure like this:
The strings here do not carry useful information in their characters, as only their length is relevant. I am open to suggestions on what to do here.
The text was updated successfully, but these errors were encountered: