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.
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
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.