Skip to main content
IBM Quantum Platform

LayerwiseEvolver

class LayerwiseEvolver(evolution_state, layers, *args, **kwargs)

GitHub

Basen: TEBDEvolver

Ein Spezialfall des TEBDEvolver auf der Grundlage schichtweiser Evolutionsmodelle.

Wie auch in tenpy_layerserläutert, werden bei dieser Implementierung die abwechselnden geraden/ungeraden Aktualisierungen der Anleihen, die im Original TEBDEngine in die Verantwortung des Endnutzers. Dies geschieht, indem der einzelne Hamiltonian, der der TEBDEvolver instanz durch eine Folge von LayerModel instanzen. Jede einzelne dieser Instanzen kodiert eine einzige Ebene von Interaktionen. Diese sollten die abwechselnde Aktualisierung von geraden und ungeraden Bindungen des zugrunde liegenden Tensornetzes erzwingen.

Die Motivation für diese kompliziertere Schnittstelle ist, dass sie viel mehr Flexibilität bietet und es den Benutzern ermöglicht, eigene Trotter-Produktformeln zu definieren, anstatt auf die von TeNPy direkt implementierten Formeln beschränkt zu sein.

Initialisieren Sie eine LayerwiseEvolver instanz.

Parameter

  • evolution_state (tenpy_tebd.MPOState) – weitergeleitet an TEBDEvolver. Weitere Einzelheiten entnehmen Sie bitte der Dokumentation.
  • layers (list[LayerModel]) – die Liste der Modelle, die einzelne Schichten von Interaktionen beschreiben. Siehe oben sowie die Erläuterungen in tenpy_layers.
  • args - alle weiteren Positionsargumente werden an den TEBDEvolver konstruktor weitergeleitet.
  • kwargs - alle weiteren Schlüsselwortargumente werden an den TEBDEvolver konstruktor weitergeleitet.

Attribute

layers

Die Interaktionsebenen, die zur Umsetzung der zeitlichen Entwicklung verwendet werden.

dt

Der Zeitschritt, der von dieser Zeitentwicklungsinstanz verwendet werden soll.


Methoden

calc_U

calc_U(order, delta_t, type_evo='real', E_offset=None)

GitHub

Berechnet die Aktualisierungen der lokalen Anleihen.

Diese passt sich calc_U() an die schichtweise Implementierung an.

Parameter

  • order (int) – dies wird ignoriert.
  • delta_t (float) – den zu verwendenden Zeitschritt.
  • type_evo (str) – die Art der Zeitevolution. Die imaginäre Zeitentwicklung wird zur Zeit nicht unterstützt.
  • E_offset (list[float] | None) – ein konstanter Energieausgleich angewendet werden.

Rückgabetyp

Keine

evolve

evolve(N_steps, dt)

GitHub

Führen Sie einen einzelnen Zeitschritt von TEBD durch.

Parameter

  • N_steps (int) – sollte für diesen Zeit-Evolver immer 1 sein, sonst wird ein Fehler ausgelöst (siehe unten).
  • dt (float) – den zu verwendenden Zeitschritt.

Rückgabe

Der Trunkierungsfehler.

Erhöht

RuntimeError - wenn N_steps nicht gleich 1 ist.

Rückgabetyp

TruncationError

suzuki_trotter_decomposition

static suzuki_trotter_decomposition(order, N_steps)

GitHub

Gibt eine leere Liste zurück.

Anmerkung

Diese Methode ist für diese Unterklasse undefiniert, aber wir können aufgrund des internen Algorithmusflusses keinen Fehler beim Aufruf auslösen. Stattdessen wird die Trotter-Zerlegung in dieser Klasse direkt in die layers.

Parameter

  • order (int) – wird ignoriert.
  • N_steps (int) – wird ignoriert.

Rückgabe

Eine leere Liste.

Rückgabetyp

liste[ Tupel[ int, int ]]

suzuki_trotter_time_steps

static suzuki_trotter_time_steps(order)

GitHub

Gibt eine leere Liste zurück.

Anmerkung

Diese Methode ist für diese Unterklasse undefiniert, aber wir können aufgrund des internen Algorithmusflusses keinen Fehler beim Aufruf auslösen. Stattdessen wird die Trotter-Zerlegung in dieser Klasse direkt in die layers.

Parameter

order (int) – wird ignoriert.

Rückgabe

Eine leere Liste.

Rückgabetyp

liste[ Float ]

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.