Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[v2] Redesign models #590

@Jakob-Unfried

Description

@Jakob-Unfried

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

Metadata

Metadata

Assignees

Labels

v2Target is v2 branch, not main

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions