Skip to main content
IBM Quantum Platform

LayerwiseEvolver

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

GitHub

Bases: TEBDEvolver

Um caso especial do TEBDEvolver baseado em modelos de evolução em camadas.

Como também explicado em tenpy_layersesta implementação extrai as atualizações alternadas de títulos pares/ímpares implementadas dentro da versão original do TEBDEngine original para se tornar responsabilidade do usuário final. Ele faz isso substituindo o único Hamiltoniano fornecido à instância TEBDEvolver por uma sequência de instâncias LayerModel instâncias. Cada instância dessas codifica uma única camada de interações. Eles devem impor as atualizações alternadas de ligações pares e ímpares da rede de tensores subjacente.

A motivação para essa interface mais complicada é que ela oferece muito mais flexibilidade e permite que os usuários definam fórmulas personalizadas de produtos Trotter em vez de ficarem limitados às implementadas diretamente pelo site TeNPy.

Inicializar uma LayerwiseEvolver instância.

Parâmetros

  • evolution_state (tenpy_tebd.MPOState) – encaminhado para TEBDEvolver. Consulte sua documentação para obter mais detalhes.
  • layers (list[LayerModel]) – a lista de modelos que descrevem camadas únicas de interações. Veja acima, bem como as explicações fornecidas em tenpy_layers.
  • args - quaisquer outros argumentos posicionais serão encaminhados para o TEBDEvolver construtor.
  • kwargs - qualquer outro argumento de palavra-chave será encaminhado para o TEBDEvolver construtor.

Atributos

layers

As camadas de interações usadas para implementar a evolução temporal.

dt

O intervalo de tempo a ser usado por essa instância de evolução temporal.


Métodos

calc_U

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

GitHub

Calcula as atualizações de títulos locais.

Isso se adapta calc_U() para trabalhar com a implementação em camadas.

Parâmetros

  • order (int) – isso está sendo ignorado.
  • delta_t (float) – a etapa de tempo a ser usada.
  • type_evo (str) – o tipo de evolução temporal. A evolução imaginária do tempo não é suportada no momento.
  • E_offset (list[float] | None) – uma compensação de energia constante a ser aplicada.

Tipo de retorno

Nenhum

evolve

evolve(N_steps, dt)

GitHub

Execute uma única etapa de tempo do TEBD.

Parâmetros

  • N_steps (int) – deve ser sempre 1 para esse time-evolver, caso contrário, será gerado um erro (veja abaixo).
  • dt (float) – a etapa de tempo a ser usada.

Retorna

O erro de truncamento.

Aumentos

RuntimeError - se N_steps não for igual a 1.

Tipo de retorno

TruncationError

suzuki_trotter_decomposition

static suzuki_trotter_decomposition(order, N_steps)

GitHub

Retorna uma lista vazia.

Nota

Esse método não está definido para essa subclasse, mas não podemos gerar um erro ao chamá-lo devido ao fluxo interno do algoritmo. Em vez disso, a decomposição de Trotter nessa classe é codificada diretamente no layers.

Parâmetros

  • order (int) – está sendo ignorado.
  • N_steps (int) – está sendo ignorado.

Retorna

uma lista vazia.

Tipo de retorno

lista[ tupla[ int, int ]]

suzuki_trotter_time_steps

static suzuki_trotter_time_steps(order)

GitHub

Retorna uma lista vazia.

Nota

Esse método não está definido para essa subclasse, mas não podemos gerar um erro ao chamá-lo devido ao fluxo interno do algoritmo. Em vez disso, a decomposição de Trotter nessa classe é codificada diretamente no layers.

Parâmetros

order (int) – está sendo ignorado.

Retorna

uma lista vazia.

Tipo de retorno

lista[ float ]

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.