group_terms_by_electronic_structure
group_terms_by_electronic_structure(op, num_modes, *, two_body_physicist_order=False)
Gruppiert die Terme eines Operators nach ihrer elektronischen Struktur.
Diese Funktion füllt automatisch das Attribut groups des angegebenen Elements FermionOperator so aus, dass Terme, die einer in den Hamilton-Operatoren der Elektronenstruktur vorhandenen symmetrischen Störung entsprechen, gruppiert werden.
Der angegebene Operator muss normal geordnet sein! Dies ist eine Grundannahme der Implementierung, die nicht überprüft wird! Siehe normal_ordered() für eine Anleitung, wie man einen Operator dieser Form erhält.
Konkret bedeutet dies: Bei einem Hamilton-Operator für die elektronische Struktur der Form
Diese Funktion gruppiert 1-Körper-Terme mit Permutationssymmetrie von (i, j) sowie die 2-Körper-Terme mit Permutationssymmetrie von (i, j, k, l). Bei den 2-Körper-Termen werden nicht alle Permutationen gruppiert. Stattdessen legt two_body_physicist_order die fest, wie die vier Indizes zu Zweierpaaren gruppiert werden, innerhalb derer Permutationssymmetrien bestehen:
two_body_physicist_order=False(Standard):(i, l)und(j, k)two_body_physicist_order=True: und(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()Parameter
- op – der Operator mit normaler Reihenfolge, dessen Terme gruppiert werden sollen.
- num_modes – die Anzahl der spinlosen fermionischen Moden im System.
- two_body_physicist_order – Gibt an, ob die 2-Körper-Terme in der Reihenfolge der Physiker gespeichert werden.
Erhöhungen
ValueError – falls ein unerwarteter Begriff auftritt.