Skip to main content
IBM Quantum Platform

LayerwiseEvolver

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

GitHub

Basi: TEBDEvolver

Un caso particolare di TEBDEvolver basato su modelli di evoluzione a strati.

Come spiegato anche in tenpy_layers, questa implementazione estrae l'aggiornamento alternato dei legami pari/dispari implementato all'interno dell'originale TEBDEngine per diventare responsabilità degli utenti finali. Lo fa sostituendo la singola Hamiltoniana fornita all'istanza con una sequenza di TEBDEvolver con una sequenza di LayerModel istanze. Ogni singola istanza di questi codifica un singolo livello di interazioni. Questi dovrebbero imporre l'aggiornamento alternato dei legami pari e dispari della rete tensoriale sottostante.

La motivazione di questa interfaccia più complessa è che offre una maggiore flessibilità e consente agli utenti di definire formule di prodotto Trotter personalizzate, anziché limitarsi a quelle implementate direttamente da TeNPy.

Inizializza un'istanza LayerwiseEvolver istanza.

Parametri

  • evolution_state (tenpy_tebd.MPOState) – inoltrata a TEBDEvolver. Per maggiori dettagli, consultare la documentazione.
  • layers (list[LayerModel]) – l'elenco dei modelli che descrivono singoli strati di interazioni. Vedi sopra e le spiegazioni fornite in tenpy_layers.
  • args - qualsiasi altro argomento posizionale sarà inoltrato al costruttore TEBDEvolver costruttore.
  • kwargs - qualsiasi altro argomento di parola chiave sarà inoltrato al costruttore TEBDEvolver al costruttore.

Attributi

layers

Gli strati di interazioni utilizzati per implementare l'evoluzione temporale.

dt

Il passo temporale da utilizzare per questa istanza di evoluzione temporale.


Metodi

calc_U

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

GitHub

Calcola gli aggiornamenti delle obbligazioni locali.

Questo si adatta calc_U() per lavorare con l'implementazione a livelli.

Parametri

  • order (int) – questo viene ignorato.
  • delta_t (float) – il passo temporale da utilizzare.
  • type_evo (str) – il tipo di evoluzione temporale. L'evoluzione temporale immaginaria non è attualmente supportata.
  • E_offset (list[float] | None) – un offset di energia costante da applicare.

Tipo di restituzione

Nessuna

evolve

evolve(N_steps, dt)

GitHub

Eseguire un singolo passo temporale di TEBD.

Parametri

  • N_steps (int) – deve essere sempre 1 per questo time-evolver, altrimenti verrà sollevato un errore (vedere sotto).
  • dt (float) – il passo temporale da utilizzare.

Risultati

L'errore di troncamento.

Aumenti

RuntimeError - se N_steps non è uguale a 1.

Tipo di restituzione

TruncationError

suzuki_trotter_decomposition

static suzuki_trotter_decomposition(order, N_steps)

GitHub

Restituisce un elenco vuoto.

Nota

Questo metodo è indefinito per questa sottoclasse, ma non si può generare un errore quando viene chiamato, a causa del flusso interno dell'algoritmo. Invece, la decomposizione di Trotter in questa classe è codificata direttamente nel file layers.

Parametri

  • order (int) – viene ignorata.
  • N_steps (int) – viene ignorata.

Risultati

Un elenco vuoto.

Tipo di restituzione

lista[ tupla[ int, int ]]

suzuki_trotter_time_steps

static suzuki_trotter_time_steps(order)

GitHub

Restituisce un elenco vuoto.

Nota

Questo metodo è indefinito per questa sottoclasse, ma non si può generare un errore quando viene chiamato, a causa del flusso interno dell'algoritmo. Invece, la decomposizione di Trotter in questa classe è codificata direttamente nel file layers.

Parametri

order (int) – viene ignorata.

Risultati

Un elenco vuoto.

Tipo di restituzione

lista[ float ]

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.