Skip to main content
IBM Quantum Platform

Elektronische Integrale

Die hier aufgeführten Konstruktorfunktionen nehmen in der Regel die Koeffizienten der Hamilton-Operatoren der Elektronenstruktur als Eingabe entgegen. Es gibt verschiedene Geschmacksrichtungen:

  • tril: Diese Funktionen verarbeiten eindimensionale Arrays mit abgeflachten (verallgemeinerten) dreieckigen Indizes
  • full: Diese Funktionen verarbeiten hochdimensionale Arrays
  • spin: Diese Funktionen nehmen separate Arrays für die verschiedenen Spinarten entgegen
  • sym: Diese Funktionen nehmen ein einzelnes Array für eine Spinart entgegen und leiten daraus die andere Spinart ab

qf_ferm_op_from_1body_tril_spin_sym

QfFermionOperator *qf_ferm_op_from_1body_tril_spin_sym(double *one_body_a, uint32_t norb)

Erstellt einen Operator aus spinsymmetrischen, dreieckigen 1-Körper-Integralen.

Der resultierende Operator ist definiert durch

∑iciiα(ai†ai+ai+n†ai+n)+∑i<jcijα(ai†aj+aj†ai+ai+n†aj+n+aj+n†ai+n)\sum_i c^\alpha_{ii} (a^\dagger_i a_i + a^\dagger_{i+n} a_{i+n}) + \sum_{i \lt j} c^\alpha_{ij} (a^\dagger_i a_j + a^\dagger_j a_i + a^\dagger_{i+n} a_{j+n} + a^\dagger_{j+n} a_{i+n})

wobei cαc^\alpha die in gespeicherten Integralkoeffizienten sind one_body_a, ii und jj die aus dem dreieckigen Index ijij erweiterten Indizes sind, der das Array indiziert, und nn die Anzahl der Orbitalen ist, norb.

1int norb = 2;
2double one_body_a[3] = {1.0, 2.0, 3.0};
3QfFermionOperator *op = qf_ferm_op_from_1body_tril_spin_sym(one_body_a, norb);

Sicherheit

Das Verhalten ist undefiniert, wenn eine der folgenden Bedingungen nicht erfüllt ist:

  • one_body_a ist ein nicht-null-Wert und ein ausgerichteter Zeiger auf ein Array double der Länge norb * (norb + 1) / 2

Ein Null-Zeiger oder ein falsch ausgerichteter Zeiger wird erkannt und löst einen Panic aus; die Länge des Arrays lässt sich nicht aus dem Zeiger ableiten, sodass es sich weiterhin um einen ungeprüften Aufrufervertrag handelt.

Parameter

  • one_body_a – ein eindimensionales Array der Länge, in dem die Koeffizienten des 1-Körper-Elektronenintegrals der Alpha-Spin-Spezies als abgeflachte Dreiecksmatrix gespeichert norb * (norb + 1) / 2 sind.
  • norb – die Anzahl der Orbitalen.

Rückgabe

Ein Zeiger auf die Komponente des unten definierten Hamilton-Operators der elektronischen Struktur.

qf_ferm_op_from_1body_tril_spin

QfFermionOperator *qf_ferm_op_from_1body_tril_spin(double *one_body_a, double *one_body_b, uint32_t norb)

Erstellt einen Operator aus einzelnen dreieckigen 1-Körper-Integralen verschiedener Spinarten.

Der resultierende Operator ist definiert durch

∑iciiαai†ai+ciiβai+n†ai+n+∑i<jcijα(ai†aj+aj†ai)+cijβ(ai+n†aj+n+aj+n†ai+n)\sum_i c^\alpha_{ii} a^\dagger_i a_i + c^\beta_{ii} a^\dagger_{i+n} a_{i+n} + \sum_{i \lt j} c^\alpha_{ij} (a^\dagger_i a_j + a^\dagger_j a_i) + c^\beta_{ij} (a^\dagger_{i+n} a_{j+n} + a^\dagger_{j+n} a_{i+n})

wobei cαc^\alpha ( cβc^\beta ) die in ( one_body_a``one_body_b bzw.) gespeicherten Integral-Koeffizienten sind, ii und jj die aus dem dreieckigen Index ijij erweiterten Indizes sind, der die Arrays indiziert, und nn die Anzahl der Orbitale ist, norb.

1int norb = 2;
2double one_body_a[3] = {1.0, 2.0, 3.0};
3double one_body_b[3] = {-1.0, -2.0, -3.0};
4QfFermionOperator *op = qf_ferm_op_from_1body_tril_spin(one_body_a, one_body_b, norb);

Sicherheit

Das Verhalten ist undefiniert, wenn eine der folgenden Bedingungen nicht erfüllt ist:

  • one_body_a und sind one_body_b nicht-Null-Zeiger auf double Arrays, die jeweils die Länge norb * (norb + 1) / 2

Ein Null-Zeiger oder ein falsch ausgerichteter Zeiger wird erkannt und löst einen Panic aus; die Array -Längen lassen sich nicht aus den Zeigern ableiten, sodass sie als ungeprüfter Aufrufer-Vertrag verbleiben.

Parameter

  • one_body_a – ein eindimensionales Array der Länge, in dem die Koeffizienten des 1-Körper-Elektronenintegrals der Alpha-Spin-Spezies als abgeflachte Dreiecksmatrix gespeichert norb * (norb + 1) / 2 sind.
  • one_body_b – ein eindimensionales Array der Länge, das die Koeffizienten des 1-Körper-Elektronenintegrals der Beta-Spin-Spezies als abgeflachte Dreiecksmatrix speichert norb * (norb + 1) / 2 .
  • norb – die Anzahl der Orbitalen.

Rückgabe

Ein Zeiger auf die Komponente des unten definierten Hamilton-Operators der elektronischen Struktur.

qf_ferm_op_from_2body_tril_spin_sym

QfFermionOperator *qf_ferm_op_from_2body_tril_spin_sym(double *two_body_aa, uint32_t norb)

Erstellt einen Operator aus spinsymmetrischen dreieckigen 2-Körper-Integralen.

Der resultierende Operator ist definiert durch

∑ijkl12cijklαα∑(i,j,k,l)∈P(ijkl)(ai†ak†alaj+ai+n†ak†alaj+n+ai†ak+n†al+naj+ai+n†ak+n†al+naj+n)\sum_{ijkl} \frac{1}{2} c^{\alpha\alpha}_{ijkl} \sum_{(i,j,k,l) \in \mathcal{P}(ijkl)} (a^\dagger_i a^\dagger_k a_l a_j + a^\dagger_{i+n} a^\dagger_k a_l a_{j+n} + a^\dagger_i a^\dagger_{k+n} a_{l+n} a_j + a^\dagger_{i+n} a^\dagger_{k+n} a_{l+n} a_{j+n})

wobei cααc^{\alpha\alpha} die in gespeicherten Integral-Koeffizienten sind two_body_aa, ijklijkl der laufende Index des Arrays ist, P\mathcal{P} die eindeutigen Permutationen des 4-Index (i,j,k,l)(i,j,k,l) (siehe unten) generiert und nn die Anzahl der Orbitalen ist, norb.

1int norb = 2;
2double two_body_aa[6] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
3QfFermionOperator *op = qf_ferm_op_from_2body_tril_spin_sym(two_body_aa, norb);

Sicherheit

Das Verhalten ist undefiniert, wenn eine der folgenden Bedingungen nicht erfüllt ist:

  • two_body_aa ist ein von Null verschiedener, ausgerichteter Zeiger auf ein Array double der Länge npair * (npair + 1) / 2, wobei npair = norb * (norb + 1) / 2

Ein Null-Zeiger oder ein falsch ausgerichteter Zeiger wird erkannt und löst einen Panic aus; die Länge des Arrays lässt sich nicht aus dem Zeiger ableiten, sodass es sich weiterhin um einen ungeprüften Aufrufervertrag handelt.

Anmerkung

two_body_aa ist ein symmetrisches Array vom Typ „ S8-fold “. Das bedeutet, es handelt sich um die abgeflachten, unterhalb der Diagonalen angeordneten Daten einer Matrix der Form (npair, npair), wobei npair = (norb * (norb + 1) // 2. Dies sind wiederum die unteren dreieckigen Daten des vierdimensionalen Arrays der Form (norb, norb, norb, norb). Daher erweitert die obige Formel „ P\mathcal{P} “ den abgeflachten Index „ ijklijkl “ auf alle Indexpermutationen „ (i,j,k,l)(i,j,k,l) “, die dieses 4-dimensionale Array indizieren.

Parameter

  • two_body_aa – ein eindimensionales Array der symmetrischen 2-Körper-Elektronenintegralkoeffizienten der Alpha/Alpha-Spin-Spezies gemäß der Formel „ S8-fold “, dargestellt als abgeflachtes Array.
  • norb – die Anzahl der Orbitalen.

Rückgabe

Ein Zeiger auf die Komponente des unten definierten Hamilton-Operators der elektronischen Struktur.

qf_ferm_op_from_2body_tril_spin

QfFermionOperator *qf_ferm_op_from_2body_tril_spin(double *two_body_aa, double *two_body_ab, double *two_body_bb, uint32_t norb)

Erstellt einen Operator aus einzelnen dreieckigen 2-Körper-Integralen für verschiedene Spinarten.

Der resultierende Operator ist definiert durch

∑ijkl12∑(i,j,k,l)∈P(ijkl)cijklααai†ak†alaj+cijklββai+n†ak+n†al+naj+n+∑ijkl12∑(i,j,k,l)∈P′(ijkl)cijklαβai+n†ak†alaj+n+cijklαβai†ak+n†al+naj+\sum_{ijkl} \frac{1}{2} \sum_{(i,j,k,l) \in \mathcal{P}(ijkl)} c^{\alpha\alpha}_{ijkl} a^\dagger_i a^\dagger_k a_l a_j + c^{\beta\beta}_{ijkl} a^\dagger_{i+n} a^\dagger_{k+n} a_{l+n} a_{j+n} + \sum_{ijkl} \frac{1}{2} \sum_{(i,j,k,l) \in \mathcal{P'}(ijkl)} c^{\alpha\beta}_{ijkl} a^\dagger_{i+n} a^\dagger_k a_l a_{j+n} + c^{\alpha\beta}_{ijkl} a^\dagger_i a^\dagger_{k+n} a_{l+n} a_j +

wobei cααc^{\alpha\alpha} ( cαβc^{\alpha\beta}, cββc^{\beta\beta} ) die in ( two_body_aa``two_body_ab , two_body_bb, bzw.) gespeicherten Integral-Koeffizienten sind, ijklijkl der laufende Index des Arrays ist, P\mathcal{P} ( P′\mathcal{P'} ) die eindeutigen Permutationen des 4-Index (i,j,k,l)(i,j,k,l) (siehe unten) generiert und nn die Anzahl der Orbitalen ist, norb.

1int norb = 2;
2double two_body_aa[6] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0};
3double two_body_ab[9] = {11.0, 12.0, 13.0, 14.0, 15.0,
4                         16.0, 17.0, 18.0, 19.0};
5double two_body_bb[6] = {-1.0, -2.0, -3.0, -4.0, -5.0, -6.0};
6QfFermionOperator *op = qf_ferm_op_from_2body_tril_spin(
7    two_body_aa, two_body_ab, two_body_bb, norb);

Sicherheit

Das Verhalten ist undefiniert, wenn eine der folgenden Bedingungen nicht erfüllt ist:

  • two_body_aa und sind two_body_bb nicht-Null-Zeiger auf double Arrays, die jeweils die Länge haben npair * (npair + 1) / 2, wobei npair = norb * (norb + 1) / 2
  • two_body_ab ist ein nicht-null-Wert und ein ausgerichteter Zeiger auf ein Array double der Länge npair * npair

Ein Null-Zeiger oder ein falsch ausgerichteter Zeiger wird erkannt und löst einen Panic aus; die Array -Längen lassen sich nicht aus den Zeigern ableiten, sodass sie als ungeprüfter Aufrufer-Vertrag verbleiben.

Anmerkung

two_body_aa und two_body_bb sind symmetrische Arrays vom Typ S8-fold. Das bedeutet, es handelt sich um die abgeflachten, unterhalb der Diagonalen liegenden Daten von Matrizen der Form (npair, npair), wobei npair = (norb * (norb + 1) // 2. Dies sind wiederum die unteren dreieckigen Daten der 4-dimensionalen Arrays der Form (norb, norb, norb, norb). Daher erweitert die obige Formel „ P\mathcal{P} “ den abgeflachten Index „ ijklijkl “ auf alle Indexpermutationen „ (i,j,k,l)(i,j,k,l) “, die diese vierdimensionalen Arrays indizieren.

Allerdings two_body_ab ist nur S4-fold symmetrisch. Somit enthält sie die vollständigen Daten der Matrix (npair, npair) (allerdings weiterhin in abgeflachter Form). Mit dem Befehl „ P′\mathcal{P'} “ wird die entsprechende Indexerweiterung durchgeführt. (In der obigen Definition haben wir den Index „ ijklijkl “ als Notationsmissbrauch wiederverwendet.)

Parameter

  • two_body_aa – ein eindimensionales Array der symmetrischen 2-Körper-Elektronenintegralkoeffizienten der Alpha/Alpha-Spin-Spezies gemäß der Formel „ S8-fold “, dargestellt als abgeflachtes Array.
  • two_body_ab – ein eindimensionales Array der symmetrischen 2-Körper-Elektronenintegralkoeffizienten der Alpha-/Beta-Spin-Spezies gemäß S4-fold, als abgeflachtes Array.
  • two_body_bb – ein eindimensionales Array der symmetrischen 2-Körper-Elektronenintegralkoeffizienten der Beta/Beta-Spin-Spezies aus der Reihe „ S8-fold “, dargestellt als abgeflachtes Array.
  • norb – die Anzahl der Orbitalen.

Rückgabe

Ein Zeiger auf die Komponente des unten definierten Hamilton-Operators der elektronischen Struktur.

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