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