Skip to main content
IBM Quantum Platform

group_terms_by_electronic_structure

group_terms_by_electronic_structure(op, num_modes, *, two_body_physicist_order=False)

Agrupa os termos de um operador de acordo com sua estrutura eletrônica.

Essa função preenche automaticamente o atributo groups do fornecido, FermionOperator de modo que os termos que satisfazem uma perturbação simétrica presente nos hamiltonianos da estrutura eletrônica sejam agrupados.

Cuidado

O operador fornecido deve seguir a ordem normal! Essa é uma suposição subjacente à implementação que não está sendo verificada! Veja normal_ordered() como obter um operador dessa forma.

Mais especificamente, dado um hamiltoniano de estrutura eletrônica da forma

H=ijcijaiaj+ijklcijklaiajakal,\mathcal{H} = \sum_{ij} c_{ij} a^\dagger_i a_j + \sum_{ijkl} c_{ijkl} a^\dagger_i a^\dagger_j a_k a_l \, ,

Essa função agrupará os termos de 1 corpo com simetria permutacional de, bem (i, j) como os termos de 2 corpos com simetria permutacional de (i, j, k, l). No caso dos termos de dois corpos, nem todas as permutações serão agrupadas. Em vez disso, o determina two_body_physicist_order como os quatro índices são agrupados em pares de dois, nos quais existem simetrias permutacionais:

  • two_body_physicist_order=False (padrão): (i, l) e (j, k)
  • two_body_physicist_order=True: e (i, k) (j, l)
from qiskit_fermions.operators import FermionOperator
from qiskit_fermions.operators.library import FCIDump

fcidump = FCIDump.from_file("molecule.fcidump")
operator = FermionOperator.from_fcidump(fcidump)

normal = op.normal_ordered().simplify(atol=0.0)

group_terms_by_electronic_structure(normal, 2 * fcidump.norb, two_body_physicist_order=False)

assert normal.has_groups()

Parâmetros

  • op – o operador de ordem normal cujos termos devem ser agrupados.
  • num_modes – o número de modos fermiónicos sem spin no sistema.
  • two_body_physicist_order – se os termos de dois corpos são armazenados na ordem dos físicos.

Aumentos

ValueError – caso seja encontrado um termo inesperado.

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