Skip to main content
IBM Quantum Platform

LayerwiseEvolver

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

GitHub

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 TEBDEvolver constructeur.
  • kwargs - tout autre argument de type mot-clé sera transmis au TEBDEvolver constructeur.

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)

GitHub

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)

GitHub

Effectuer un seul pas de temps de la TEBD.

Paramètres

  • N_steps (int) – doit toujours être 1 pour 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

TruncationError

suzuki_trotter_decomposition

static suzuki_trotter_decomposition(order, N_steps)

GitHub

Renvoie une liste vide.

Remarque

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.
  • N_steps (int) – est ignorée.

Retours

Une liste vide.

Type de retour

liste[ tuple[ int, int ]]

suzuki_trotter_time_steps

static suzuki_trotter_time_steps(order)

GitHub

Renvoie une liste vide.

Remarque

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

liste[ float ]

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.