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 a MixedOperator
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 qubits q(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
: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:
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:
MixedOperator
class which can hold multiple kinds of operators (i.e.FermionicOp
,SpinOp
, etc.)QubitConverter
to handle aMixedOperator
QubitMapper
instances for all operator types contained in the mixed opq1 .. qN
and the spin operators get mapped to qubitsq(N+1) ... q(N+M)
MixedOperator