TEBDEvolver
class TEBDEvolver(evolution_state, *args, order=2, **kwargs)
Ein TEBD-Algorithmus zur Entwicklung eines internen MPO.
Wie im Detail in quimb_tebdbeschrieben, entwickelt diese Erweiterung der bestehenden quimbquimb.tensor.TEBD implementierung ein interner Matrix-Produkt-Operator (MPO) anstelle des herkömmlichen Matrix-Produkt-Status (MPS) entwickelt.
Konkret wird erwartet, dass das interne Objekt ein MPOState.
Die API dieser Klasse ist in Wirklichkeit viel größer als hier gezeigt, da sie zusätzliche Methoden von der quimb.tensor.TEBD basisklasse erbt. Wir werden diese API hier jedoch nicht duplizieren.
Initialisieren einer TEBDEvolver instanz.
Parameter
-
evolution_state (MPOState | MatrixProductState) –
ein Verweis auf den Zustand der Zeitentwicklung. Dies überschreibt das Argument
p0der zugrunde liegendenquimb.tensor.TEBDklasse.AchtungIm Gegensatz zum Standardverhalten wird dieser Zustand NICHT kanonisiert. Stattdessen wird sie so übernommen, wie sie ist, und durch Verweis beibehalten (d. h. es wird keine Kopie erstellt). Dadurch wird sichergestellt, dass ein und dasselbe Objekt von zwei Instanzen dieser Klasse gemeinsam genutzt werden kann, wie es der
DynamicMPFalgorithmus erforderlich ist. -
args - alle weiteren Positionsargumente werden an den
quimb.tensor.TEBDkonstruktor weitergeleitet. -
order (int) – die Reihenfolge der eingebauten Suzuki-Trotter-Formel, die während der Zeitentwicklung verwendet werden soll. Dies ist der Wert, der an die
quimb.tensor.TEBD.step()methode weitergeleitet. -
kwargs - alle weiteren Schlüsselwortargumente werden an den
quimb.tensor.TEBDkonstruktor weitergeleitet.
Attribute
conjugate
Gibt zurück, ob diese Time-Evolver-Instanz auf der rechten Seite agiert.
evolved_time
Gibt die aktuelle Entwicklungszeit zurück.
Methoden
step
step()
Führen Sie einen einzelnen Zeitschritt von TEBD durch.
Dies ruft im Wesentlichen quimb.tensor.TEBD.step() auf und leitet den Wert des Attributs order weiter, der bei der Erstellung angegeben wurde.
Rückgabetyp
Keine
sweep
sweep(direction, dt_frac, dt=None, queue=False)
Führen Sie einen einzelnen Durchlauf des TEBD-Algorithmus [1] durch.
Der TEBD-Algorithmus aktualisiert abwechselnd die geraden und ungeraden Bindungen des zugrunde liegenden Tensornetzes. In der Implementierung der quimb.tensor.TEBD basisklasse wird dies in Form von abwechselnden "Sweeps" in linker und rechter Richtung über den internen Zustand realisiert.
Wir überschreiben das Verhalten dieser Methode in dieser Unterklasse, um die spezialisierte gate_split() methode aufzurufen.
Parameter
- direction (Literal['left', 'right']) – die Richtung des Sweeps. Dies muss entweder eine der Zeichenketten
"left"oder"right"sein. - dt_frac (float) – für welchen Bruchteil des internen Zeitschritts (
dt) die Zeitentwicklung durchgeführt werden soll. Dies ist die Art und Weise, in der jede eingebaute Suzuki-Trotter-Formel ihre Aufteilung spezifiziert. - dt (float | None) – ein optionaler Wert zum Überschreiben des internen Zeitschritts.
- queue (bool) – wenn Sie dies auf
Truesetzen, wird einNotImplementedError.
Erhöht
- NotImplementedError - wenn
queue=True. - NotImplementedError - wenn
cyclicTrueist. - NotImplementedError - wenn
imagTrueist. - RuntimeError - wenn eine ungültige
directionangegeben wird.
Rückgabetyp
Keine
Referenzen
[1]: https://en.wikipedia.org/wiki/Time-evolving _block_decimation