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)

Regroupe les termes d'un opérateur en fonction de leur structure électronique.

Cette fonction remplit automatiquement l'attribut groups de l'élément fourni de telle FermionOperator sorte que les termes satisfaisant à une perturbation symétrique présente dans les hamiltoniens de structure électronique soient regroupés.

Attention

L'opérateur fourni doit être ordonné selon l'ordre normal! Il s'agit d'une hypothèse sous-jacente de la mise en œuvre qui n'est pas vérifiée! Voir normal_ordered() pour savoir comment obtenir un opérateur de cette forme.

Plus concrètement, étant donné un hamiltonien de structure électronique de la forme

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 \, ,

Cette fonction regroupera les termes à un corps présentant une symétrie de permutation de (i, j) ainsi que les termes à deux corps présentant une symétrie de permutation de (i, j, k, l). En ce qui concerne les termes à deux corps, toutes les permutations ne seront pas regroupées. Au contraire, c'est qui détermine two_body_physicist_order comment les quatre indices sont regroupés en paires au sein desquelles existent des symétries de permutation :

  • two_body_physicist_order=False (par défaut) : (i, l) et (j, k)
  • two_body_physicist_order=True: et (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()

Paramètres

  • op – l'opérateur à ordre normal dont les termes doivent être regroupés.
  • num_modes – le nombre de modes fermioniques sans spin dans le système.
  • two_body_physicist_order – indique si les termes à deux corps sont stockés selon l'ordre des physiciens.

Augmentations

ValueError – si un terme inattendu est rencontré.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.