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 los términos de un operador según su estructura electrónica.

Esta función rellena automáticamente el atributo groups del objeto proporcionado, FermionOperator de tal forma que se agrupen los términos que satisfacen una perturbación simétrica presente en los hamiltonianos de estructura electrónica.

Precaución

¡El operador proporcionado debe estar ordenado de forma normal! ¡Se trata de una suposición subyacente de la implementación que no se está verificando! Consulta normal_ordered() cómo obtener un operador de esa forma.

Más concretamente, dado un hamiltoniano de estructura electrónica de la 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 \, ,

Esta función agrupará los términos de un cuerpo con simetría permutacional de, (i, j) así como los términos de dos cuerpos con simetría permutacional de (i, j, k, l). En el caso de los términos de dos cuerpos, no se agruparán todas las permutaciones. En cambio, el determina two_body_physicist_order cómo se agrupan los cuatro índices en pares de dos, dentro de los cuales existen simetrías de permutación:

  • two_body_physicist_order=False (por defecto): (i, l) y (j, k)
  • two_body_physicist_order=True: y (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 : el operador de orden normal cuyos términos se van a agrupar.
  • num_modes : el número de modos fermiónicos sin espín del sistema.
  • two_body_physicist_order – indica si los términos de dos cuerpos se almacenan en el orden de los físicos.

Subidas

ValueError – si se encuentra un término inesperado.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.