TEBDEvolver
class TEBDEvolver(evolution_state, *args, order=2, **kwargs)
Um algoritmo TEBD para a evolução de um MPO interno.
Conforme discutido em mais detalhes em quimb_tebdessa extensão da implementação existente do quimbquimb.tensor.TEBD da implementação existente do evolui no tempo um operador de produto matricial interno (MPO) em vez do estado de produto matricial convencional (MPS).
Em termos mais concretos, espera-se que o objeto interno seja um MPOState.
A API dessa classe é, na verdade, muito maior do que a mostrada aqui, porque ela herda métodos adicionais da quimb.tensor.TEBD classe base. No entanto, não duplicamos essa API aqui.
Inicializar uma TEBDEvolver instância.
Parâmetros
-
evolution_state (MPOState | MatrixProductState) –
uma referência ao estado da evolução temporal. Isso substitui o argumento
p0da classequimb.tensor.TEBDclasse subjacente.AvisoEm contraste com o comportamento padrão, esse estado NÃO será canonizado. Em vez disso, ele é considerado como está e é mantido por referência (ou seja, nenhuma cópia é criada). Isso garante que o mesmo objeto possa ser compartilhado entre duas instâncias dessa classe, conforme exigido pelo
DynamicMPFalgoritmo. -
args - quaisquer outros argumentos posicionais serão encaminhados para o
quimb.tensor.TEBDconstrutor. -
order (int) – a ordem da fórmula Suzuki-Trotter integrada a ser usada durante a evolução do tempo. Esse será o valor encaminhado para o método
quimb.tensor.TEBD.step()método. -
kwargs - qualquer outro argumento de palavra-chave será encaminhado para o
quimb.tensor.TEBDconstrutor.
Atributos
conjugate
Retorna se essa instância do time-evolver atua no lado direito.
evolved_time
Retorna o tempo de evolução atual.
Métodos
step
step()
Execute uma única etapa de tempo do TEBD.
Isso basicamente chama quimb.tensor.TEBD.step() e encaminha o valor do atributo order que foi fornecido na construção.
Tipo de retorno
Nenhum
sweep
sweep(direction, dt_frac, dt=None, queue=False)
Executar uma única varredura do algoritmo TEBD [1].
O algoritmo TEBD atualiza as ligações pares e ímpares da rede de tensores subjacente de forma alternada. Na implementação da classe base quimb.tensor.TEBD isso é realizado na forma de "varreduras" alternadas nas direções esquerda e direita sobre o estado interno.
Estamos sobrescrevendo o comportamento desse método nessa subclasse para chamar o método especializado gate_split() especializado.
Parâmetros
- direction (Literal['left', 'right']) – a direção da varredura. Deve ser uma das cadeias de caracteres literais,
"left"ou"right". - dt_frac (float) – a fração da etapa de tempo interna (
dt) para a qual evoluir no tempo. É assim que qualquer fórmula Suzuki-Trotter integrada especifica sua divisão. - dt (float | None) – um valor opcional para substituir o intervalo de tempo interno.
- queue (bool) – definir isso como
Truegerará uma mensagemNotImplementedError.
Aumentos
- NotImplementedError - se
queue=True. - NotImplementedError - se
cyclicéTrue. - NotImplementedError - se
imagéTrue. - RuntimeError - se for fornecido um
directioninválido.
Tipo de retorno
Nenhum
Referências
[1]: https://en.wikipedia.org/wiki/Time-evolving _block_decimation