qiskit-nature
qiskit-nature copied to clipboard
Implement a `MixedOperator`
What should we add?
We would like to add support for more complex models which couple various types of particles (e.g. fermions with bosons). Among other things, this finds application in lattice gauge theory which is a planned addition to the lattice framework (see e.g. #556 which is the simplest LGT case).
A rough list of requirements which are needed for this to work are:
- a
MixedOperator
class which can hold multiple kinds of operators (i.e.FermionicOp
,SpinOp
, etc.)- the above class should allow storage of interaction coefficients between different operator kinds (in addition to the operator-internal coefficients ofcourse)
- an extension/addition of the
QubitConverter
to handle aMixedOperator
- this requires multiple
QubitMapper
instances for all operator types contained in the mixed op - this should handle delegation of the various qubit registers: e.g. the fermionic operators get mapped to qubits
q1 .. qN
and the spin operators get mapped to qubitsq(N+1) ... q(N+M)
- purely fermionic operators need to be tensored with all-identity operators on the qubit-registers assigned to the spin-subsystem
- purely spin operators are tensored with all-identity terms on the fermionic-subsystem (etc.)
- mixed operators are mapped individually and then tensored together in the qubit-space taking into account the potential mixing coefficients stored in the
MixedOperator
- this requires multiple
:warning: Disclaimer: this is mostly an assortment of some thoughts. A first step for tackling this issue would be to come with a design on how to achieve this, given the rough outline of requirements presented above. I am happy to answer questions with more details :+1:
I would like to participate implementing this MixedOp