LayerwiseEvolver
class LayerwiseEvolver(evolution_state, layers, *args, **kwargs)
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
TEBDEvolverkonstruktor weitergeleitet. - kwargs - alle weiteren Schlüsselwortargumente werden an den
TEBDEvolverkonstruktor 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)
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)
Führen Sie einen einzelnen Zeitschritt von TEBD durch.
Parameter
- N_steps (int) – sollte für diesen Zeit-Evolver immer
1sein, 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
suzuki_trotter_decomposition
static suzuki_trotter_decomposition(order, N_steps)
Gibt eine leere Liste zurück.
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
Rückgabe
Eine leere Liste.
Rückgabetyp
suzuki_trotter_time_steps
static suzuki_trotter_time_steps(order)
Gibt eine leere Liste zurück.
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