TEBDEvolver
class TEBDEvolver(evolution_state, *args, order=2, **kwargs)
Un algoritmo TEBD per l'evoluzione di un MPO interno.
Come discusso in dettaglio in quimb_tebdquesta estensione dell'esistente quimbquimb.tensor.TEBD di 'evolve nel tempo un operatore di prodotto matriciale interno (MPO) piuttosto che il convenzionale stato di prodotto matriciale (MPS).
Più concretamente, ci si aspetta che l'oggetto interno sia un oggetto MPOState.
L'API di questa classe è in realtà molto più ampia di quella mostrata qui, perché eredita metodi aggiuntivi dalla classe base quimb.tensor.TEBD classe base. Tuttavia, non riproduciamo qui l'API.
Inizializza un'istanza TEBDEvolver istanza.
Parametri
-
evolution_state (MPOState | MatrixProductState) –
un riferimento allo stato di evoluzione temporale. Questo sovrascrive l'argomento
p0della classe sottostantequimb.tensor.TEBDdella classe.AvvertenzaA differenza del comportamento predefinito, questo stato NON sarà canonicalizzato. Invece, viene preso così com'è e conservato per riferimento (cioè non viene creata alcuna copia). Questo assicura che lo stesso oggetto possa essere condiviso tra due istanze di questa classe, come richiesto dall'algoritmo
DynamicMPFalgoritmo. -
args - qualsiasi altro argomento posizionale sarà inoltrato al costruttore
quimb.tensor.TEBDcostruttore. -
order (int) – l'ordine della formula Suzuki-Trotter incorporata da utilizzare durante l'evoluzione temporale. Questo sarà il valore inviato al metodo
quimb.tensor.TEBD.step()metodo. -
kwargs - qualsiasi altro argomento di parola chiave sarà inoltrato al costruttore
quimb.tensor.TEBDal costruttore.
Attributi
conjugate
Restituisce se questa istanza di time-evolver agisce sul lato destro.
evolved_time
Restituisce il tempo di evoluzione corrente.
Metodi
step
step()
Eseguire un singolo passo temporale di TEBD.
Questo richiama essenzialmente quimb.tensor.TEBD.step() e inoltra il valore dell'attributo order fornito al momento della costruzione.
Tipo di restituzione
Nessuna
sweep
sweep(direction, dt_frac, dt=None, queue=False)
Eseguire un singolo sweep dell'algoritmo TEBD [1].
L'algoritmo TEBD aggiorna alternativamente i legami pari e dispari della rete tensoriale sottostante. Nell'implementazione della classe quimb.tensor.TEBD è realizzata sotto forma di "sweep" alternati in direzione sinistra e destra sullo stato interno.
Stiamo sovrascrivendo il comportamento di questo metodo in questa sottoclasse, per chiamare il metodo specializzato gate_split() specializzato.
Parametri
- direction (Literal['left', 'right']) – la direzione della spazzata. Deve essere una delle stringhe letterali
"left"o"right". - dt_frac (float) – la frazione del passo temporale interno (
dt) per cui evolvere nel tempo. Questo è il modo in cui qualsiasi formula Suzuki-Trotter incorporata specifica la sua suddivisione. - dt (float | None) – un valore opzionale per sovrascrivere il passo temporale interno.
- queue (bool) – impostando questo valore a
Truesi solleverà un problema diNotImplementedError.
Aumenti
- NotImplementedError - se
queue=True. - NotImplementedError - se
cyclicèTrue. - NotImplementedError - se
imagèTrue. - RuntimeError - se viene fornito un
directionnon valido.
Tipo di restituzione
Nessuna
Riferimenti
[1]: https://en.wikipedia.org/wiki/Time-evolving _block_decimazione