Skip to main content
IBM Quantum Platform

FCIDump

class FCIDump

Basen: object

Ein Hamilton-Operator für die elektronische Struktur im FCIDump-Format.


Begriffsbestimmung

Das FCIDump-Format wurde ursprünglich von Knowles und Handy im Jahr 1989 definiert [1]. Es handelt sich um ein weit verbreitetes Format zum Exportieren von Hamilton-Operatoren der elektronischen Struktur in eine Klartextdatei.

Die vorliegende Datenstruktur speichert lediglich die Informationen, die für die Konstruktion des sekundär quantisierten Operators relevant sind. Diese Implementierung geht jedoch über die ursprüngliche Definition hinaus, da sie das Laden beliebiger Spindaten unterstützt. Die folgende Tabelle zeigt, wie Integrale den Spinarten zugeordnet werden, je nachdem, in welche Intervalle die Indizes fallen (unter der Annahme einer Überschrift mit NORB=n):

Integraltyp
i
j
k
l
Konstante0{0}0{0}0{0}0{0}
1-Körper-Alpha0{0}0{0}[1,n][1,n][1,n][1,n]
1-Körper-Beta0{0}0{0}[n+1,2n][n+1,2n][n+1,2n][n+1,2n]
2-Körper-Alpha-Alpha[1,n][1,n][1,n][1,n][1,n][1,n][1,n][1,n]
2-Körper-Alpha-Beta[1,n][1,n][1,n][1,n][n+1,2n][n+1,2n][n+1,2n][n+1,2n]
2-Körper-Beta-Beta[n+1,2n][n+1,2n][n+1,2n][n+1,2n][n+1,2n][n+1,2n][n+1,2n][n+1,2n]

Die einzigen erforderlichen Werte sind die 1-Körper-Alpha-Spin-Integrale.

Die Zwei-Körper-Integrale werden in der Reihenfolge „ (ij∣kl)(ij|kl) “ angegeben, was der FCIDump-Konvention entspricht.


Bereitstellung

Die Integrale werden unter Ausnutzung ihrer Permutationssymmetrie als abgeflachte Arrays gespeichert; dies entspricht auch dem Layout, das die Konstruktoren für elektronische Integrale FermionOperator erwarten. Schreibt man „ nn “ für die Anzahl der Orbitalen (norb) und „ npair=n(n+1)/2\text{npair} = n (n + 1) / 2 “, enthält eine einzelne Datenstruktur bis zu 5 Arrays:

Kolumne „ 1 “
Kolumne „ 2 “
Kolumne „ 3 “
one_body_anpair\text{npair}Die Integrale von „ α\alpha “ für einen Teilchen mit Spin 1.
one_body_bnpair\text{npair}Die Integrale von „ β\beta “ für einen Teilchen mit Spin 1.
two_body_aanpair(npair+1)/2\text{npair} (\text{npair} + 1) / 2Die 2-Körper-Integrale von „ αα\alpha\alpha “.
two_body_abnpair2\text{npair}^2Die 2-Körper-Integrale von „ αβ\alpha\beta “.
two_body_bbnpair(npair+1)/2\text{npair} (\text{npair} + 1) / 2Die 2-Körper-Integrale von „ ββ\beta\beta “.

Die 1-Body-Arrays sind das abgeflachte untere Dreieck einer (n,n)(n, n) -Matrix, indiziert als ia = i * (i + 1) // 2 + a mit a <= i. Die Arrays two_body_bb und two_body_aa sind 8-fach ( S8 ) symmetrisch: das abgeflachte untere Dreieck einer (npair,npair)(\text{npair}, \text{npair}) -Matrix, deren eigene beiden Achsen jeweils ein solches Indexpaar darstellen.

Warnung

two_body_ab wird anders verpackt als seine Geschwister. Sie ist nur 4-fach ( S4 ) symmetrisch, enthält also die gesamte Matrix „ (npair,npair)(\text{npair}, \text{npair}) “ in zeilenorientierter Reihenfolge, indiziert als iajb = ia * npair + jb. Sein Zeilenpaar indiziert die Spinarten α\alpha und sein Spaltenpaar die Spinarten β\beta; daher ist es beim Vertauschen der beiden Paare nicht symmetrisch.

Anmerkung

Sie können über die entsprechenden Methoden: get_one_body_tril_a(), get_one_body_tril_b(), get_two_body_tril_aa(), get_two_body_tril_ab(), und auf schreibgeschützte Kopien dieser internen Arrays zugreifen get_two_body_tril_bb().

Der 1-Körper- β\beta -Spin sowie die 2-Körper-Arrays αβ\alpha\beta / ββ\beta\beta sind nur für eine Datei vorhanden, die uneingeschränkte Spindaten enthält. Da sie alle drei abwesend sind, wird über alle drei gleichzeitig is_unrestricted berichtet.

Die gespeicherten Werte sind die Integrale in der Form, wie sie in der Datei vorkommen. Insbesondere enthalten sie nicht den herkömmlichen Faktor „ 12\frac{1}{2} “, der in den 2-Körper-Operatortermen vorkommt; daher beträgt FermionOperator.from_fcidump() der Koeffizient eines über gebildeten Operators die Hälfte des hier angegebenen Wertes.


Konvertierung

Operator-Implementierungen, die aus einer Instanz von konstruiert werden können, stellen FCIDump eine Klassenmethode from_fcidump bereit:

Kolumne „ 1 “
Kolumne „ 2 “
FermionOperator.from_fcidump()Erzeugt ein FermionOperator aus einem FCIDump.

[ 1 ]

    1. Knowles und N. C. Handy, „Computer Physics Communications“ 54 (1989), S. 75–83.

Attribute

constant

Gibt den konstanten Energie-Offset zurück, sofern die Datei einen solchen enthält.

Dies ist der Wert der Integrallinie, deren vier Indizes alle Null sind; bei einem Hamilton-Operator der Elektronenstruktur entspricht dies der Kernabstoßungsenergie. Das ist der Fall, None wenn die Datei keine solche Zeile enthält.

Siehe auch

FermionOperator.from_fcidump(), das diesen Wert als Identitätsglied enthält.

>>> from qiskit_fermions.operators.library import FCIDump
>>> fcidump = FCIDump.from_file("tests/h2.fcidump")
>>> fcidump.constant
0.7199689944489797

Rückgabe

Der konstante Energie-Offset oder, None wenn in der Datei kein Wert angegeben ist.

is_unrestricted

Ob diese Datenstruktur uneingeschränkte (spinabhängige) Integrale enthält.

Die Anordnungen „ β\beta “ (Spin 1, 1 Teilchen) und „ αβ\alpha\beta “ / „ ββ\beta\beta “ (2 Teilchen) liegen genau dann vor, wenn dies der Fall ist True; sie fehlen gemeinsam.

>>> from qiskit_fermions.operators.library import FCIDump
>>> FCIDump.from_file("tests/h2.fcidump").is_unrestricted
False
>>> FCIDump.from_file("tests/heh.fcidump").is_unrestricted
True

Rückgabe

Ob die Beta-Spin-Integral-Arrays vorhanden sind.

ms2

Gibt das Doppelte der Spinquantenzahl zurück: 2S2S.

Diese Nummer, „ 2S2S “, wird aus dem MS2=2S Feld im Kopf der FCIDump-Datei extrahiert.

nelec

Gibt die Anzahl der Elektronen zurück.

Diese Zahl wird aus dem NELEC Feld im Header der FCIDump-Datei extrahiert.

norb

Gibt die Anzahl der Orbitalen zurück.

Diese Nummer, „ nn “, wird aus dem NORB=n Feld im Kopf der FCIDump-Datei extrahiert.


Methoden

from_file

classmethod from_file(file_path)

Analysiert eine FCIDump-Datei.

Angenommen, Sie haben eine FCIDump-Datei namens molecule.fcidump, dann wenden Sie diese Methode wie folgt an:

from qiskit_fermions.operators.library import FCIDump

fcidump = FCIDump.from_file("molecule.fcidump")

Parameter

file_path – der Pfad zur FCIDump-Datei.

Rückgabe

Die erstellte Datenstruktur.

Erhöhungen

  • OSError – wenn nicht file_path geöffnet oder gelesen werden kann.
  • ValueError – wenn die Datei nicht dem FCIDump-Format entspricht (fehlende Header-Namensliste, fehlendes oder NORB NELEC Feld oder ein fehlerhaftes MS2 Feld) oder wenn sie einen MO-Energiewert enthält, der noch nicht unterstützt wird.

get_one_body_tril_a

get_one_body_tril_a()

Gibt eine schreibgeschützte Kopie der α\alpha -Spin-1-Körper-Integrale zurück.

Anmerkung

Diese Methode gibt eine Kopie der internen Daten zurück.

Siehe auch

Die Erläuterung der internen Datenstruktur hier sowie von FermionOperator.from_1body_tril_spin_sym(), das dieses Array nutzt.

>>> from qiskit_fermions.operators.library import FCIDump
>>> fcidump = FCIDump.from_file("tests/h2.fcidump")
>>> fcidump.get_one_body_tril_a().shape
(3,)

Rückgabe

Die abgeflachten, im unteren Dreieck liegenden 1-Körper-Integrale der Länge npair=n(n+1)/2\text{npair} = n (n + 1) / 2.

get_one_body_tril_b

get_one_body_tril_b()

Gibt eine schreibgeschützte Kopie der β\beta -Spin-1-Körper-Integrale zurück.

Anmerkung

Diese Methode gibt eine Kopie der internen Daten zurück.

Siehe auch

Die Erläuterung der internen Datenstruktur hier sowie von FermionOperator.from_1body_tril_spin(), das dieses Array nutzt.

Rückgabe

Die abgeflachten Integrale des unteren Dreiecks für ein Teilchen, mit der Länge npair=n(n+1)/2\text{npair} = n (n + 1) / 2 oder None wenn ist is_unrestrictedFalse .

get_two_body_tril_aa

get_two_body_tril_aa()

Gibt eine schreibgeschützte Kopie der 2-Körper-Integrale von „ αα\alpha\alpha -spin“ zurück.

Die Werte entsprechen der chemischen Reihenfolge ( (ij∣kl)(ij|kl) ) und enthalten keinen Faktor von 12\frac{1}{2}.

Anmerkung

Diese Methode gibt eine Kopie der internen Daten zurück.

Siehe auch

Die Erläuterung der internen Datenstruktur hier sowie von FermionOperator.from_2body_tril_spin_sym(), das dieses Array nutzt.

>>> from qiskit_fermions.operators.library import FCIDump
>>> fcidump = FCIDump.from_file("tests/h2.fcidump")
>>> fcidump.get_two_body_tril_aa().shape
(6,)

Rückgabe

Die 8-fach symmetrischen ( S8 ) abgeflachten 2-Körper-Integrale der Länge npair(npair+1)/2\text{npair} (\text{npair} + 1) / 2.

get_two_body_tril_ab

get_two_body_tril_ab()

Gibt eine schreibgeschützte Kopie der 2-Körper-Integrale von „ αβ\alpha\beta -spin“ zurück.

Die Werte entsprechen der chemischen Reihenfolge ( (ij∣kl)(ij|kl) ) und enthalten keinen Faktor von 12\frac{1}{2}.

Warnung

Im Gegensatz zu den anderen 2-Körper-Arrays weist dieses nur eine 4-fache ( S4 ) Symmetrie auf: Es enthält die vollständige (npair,npair)(\text{npair}, \text{npair}) -Matrix, deren Zeilenpaare die α\alpha -Spins und deren Spaltenpaare die β\beta -Spinarten indizieren. Sie ist daher nicht symmetrisch, wenn man die beiden Paare vertauscht.

Anmerkung

Diese Methode gibt eine Kopie der internen Daten zurück.

Siehe auch

Die Erläuterung der internen Datenstruktur hier sowie von FermionOperator.from_2body_tril_spin(), das dieses Array nutzt.

Rückgabe

Die 4-fach symmetrischen ( S4 ) abgeflachten 2-Körper-Integrale der Länge npair2\text{npair}^2 oder None wenn ist is_unrestrictedFalse .

get_two_body_tril_bb

get_two_body_tril_bb()

Gibt eine schreibgeschützte Kopie der 2-Körper-Integrale von „ ββ\beta\beta -spin“ zurück.

Die Werte entsprechen der chemischen Reihenfolge ( (ij∣kl)(ij|kl) ) und enthalten keinen Faktor von 12\frac{1}{2}.

Anmerkung

Diese Methode gibt eine Kopie der internen Daten zurück.

Siehe auch

Die Erläuterung der internen Datenstruktur hier sowie von FermionOperator.from_2body_tril_spin(), das dieses Array nutzt.

Rückgabe

Die 8-fach symmetrischen ( S8 ) abgeflachten 2-Körper-Integrale der Länge npair(npair+1)/2\text{npair} (\text{npair} + 1) / 2 oder None wenn is_unrestricted ist False.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.