-
Notifications
You must be signed in to change notification settings - Fork 139
Description
Unify existing models
In v2, we should unify nearest-neighbor-, coupling- and MPO- models into a single class.
I propose the name HamiltonianModel.
It should have methods similar to CouplingModel that allow us to add couplings during model definition.
Then, we only build the necessary Hamiltonian representations as needed, and cache them.
This means that adding further couplings needs to invalidate those caches! (and warn?)
I think we should rename H_bond, if we want to take PEPS seriously. The current H_bond assumes a one-dimensional NN Hamiltonian, but we may want to represent 2D NN as well for PEPS.
These methods would "meet the algorithm classes halfway", e.g. DMRG and TDVP would use get_H_MPO.
get_H_MPO should probably also cache an MPO graph.
Add more general models for evolution
We discussed two use-cases that could be interesting to incorporate in models in the future
- random evolution
- Lindblad evolution
In the future, this could be addressed by adding a new abstract base class EvolutionModel or similar that defines the necessary interface to do time-evolution as @abstractmethods.
This would be e.g. get_U_MPO for MPO time evolution, get_U_bond for TEBD (tho maybe we should rename that to emphasize the 1D nature?)
Then, we could make the new model class subclass from that, and define the evolution representation in terms of the Hamiltonian (e.g. U_bond from H_bond, U_MPO from the MPO graph), and add other subclasses for the other types of evolution