LayerwiseEvolver
class LayerwiseEvolver(evolution_state, layers, *args, **kwargs)
Bases : TEBDEvolver
Un cas particulier de la TEBDEvolver basé sur des modèles d'évolution en couches.
Comme l'explique également le document tenpy_layerscette implémentation extrait les mises à jour alternées des obligations paires/impaires implémentées dans l'original TEBDEngine pour en faire la responsabilité de l'utilisateur final. Pour ce faire, il remplace l'hamiltonien unique fourni à l'instance TEBDEvolver par une séquence d'instances LayerModel instances. Chacune de ces instances codifie une seule couche d' interactions. Ceux-ci devraient imposer la mise à jour alternée des liens pairs et impairs du réseau tensoriel sous-jacent.
Cette interface plus complexe est motivée par le fait qu'elle offre beaucoup plus de flexibilité et permet aux utilisateurs de définir des formules de produits Trotter personnalisées plutôt que d'être limités à celles implémentées directement par TeNPy.
Initialiser une LayerwiseEvolver instance.
Paramètres
- evolution_state (tenpy_tebd.MPOState) – transmis à
TEBDEvolver. Veuillez vous référer à sa documentation pour plus de détails. - layers (list[LayerModel]) – la liste des modèles décrivant des couches uniques d'interactions. Voir ci-dessus ainsi que les explications fournies dans
tenpy_layers. - args - tout autre argument positionnel sera transmis au constructeur
TEBDEvolverconstructeur. - kwargs - tout autre argument de type mot-clé sera transmis au
TEBDEvolverconstructeur.
Attributs
layers
Les couches d'interactions utilisées pour mettre en œuvre l'évolution temporelle.
dt
Le pas de temps à utiliser par cette instance d'évolution temporelle.
Méthodes
calc_U
calc_U(order, delta_t, type_evo='real', E_offset=None)
Calcule les mises à jour locales des obligations.
Cela permet d'adapter calc_U() pour qu'il fonctionne avec la mise en œuvre par couches.
Paramètres
- order (int) – cette question est ignorée.
- delta_t (float) – le pas de temps à utiliser.
- type_evo (str) – le type d'évolution temporelle. L'évolution temporelle imaginaire n'est pas prise en charge pour l'instant.
- E_offset (list[float] | None) – l'application d'une compensation énergétique constante.
Type de retour
Aucun
evolve
evolve(N_steps, dt)
Effectuer un seul pas de temps de la TEBD.
Paramètres
- N_steps (int) – doit toujours être
1pour cet évaporateur temporel, sinon une erreur sera soulevée (voir ci-dessous). - dt (float) – le pas de temps à utiliser.
Retours
L'erreur de troncature.
Augmentations
RuntimeError - si N_steps n'est pas égal à 1.
Type de retour
suzuki_trotter_decomposition
static suzuki_trotter_decomposition(order, N_steps)
Renvoie une liste vide.
Cette méthode n'est pas définie pour cette sous-classe, mais nous ne pouvons pas soulever d'erreur lors de son appel en raison du flux interne de l'algorithme. Au lieu de cela, la décomposition de Trotter dans cette classe est codée directement dans le fichier layers.
Paramètres
Retours
Une liste vide.
Type de retour
suzuki_trotter_time_steps
static suzuki_trotter_time_steps(order)
Renvoie une liste vide.
Cette méthode n'est pas définie pour cette sous-classe, mais nous ne pouvons pas soulever d'erreur lors de son appel en raison du flux interne de l'algorithme. Au lieu de cela, la décomposition de Trotter dans cette classe est codée directement dans le fichier layers.
Paramètres
order (int) – est ignorée.
Retours
Une liste vide.
Type de retour