Quantencomputing in der Physik der kondensierten Materie











In diesem Blogpost wollen wir anregen, dass Quantencomputing im
Bereich Quanten-Vielteilchenphysik genutzt wird. Dieser Post wird
veröffentlicht im Kontext des QUICS-Projektes, welches ein
Gemeinschaftsprojekt der Gesellschaft für wissenschaftliche
Datenverarbeitung Göttingen, der Leibniz Universität Hannover und der
Physikalisch-Technischen Bundesanstalt ist. Das Bundesministerium für
Forschung, Technologie und Raumfahrt (BMFTR) fördert QUICS, um Beratung
und einen niederschwelligen Zugang zu verschiedenen Quantenhardware- und
-softwarelösungen für die Erprobung praktischer Anwendungsfälle,
insbesondere für kleine und mittlere Unternehmen, anzubieten. Weitere
Informationen erhalten Sie unter quics-info@gwdg.de.

Hierzu präsentieren wir die OpenFermion-Python-Bibliothek. Das
Hauptziel dieser Bibliothek ist es, die Lücke zwischen
Quantenalgorithmen-Entwicklern und Quantenchemikern sowie -physikern zu
überbrücken. Die Idee ist, die Entwicklung von Algorithmen für
Quantensimulationen zu vereinfachen, indem die genannten Gruppen
zusammengebracht werden. Man kann in dieser Bibliothek ein Molekül oder
den Hamiltonian eines Problems formulieren, um die Eigenschaften des
Quantensystems mithilfe von Quantensimulatoren zu untersuchen. Dies
geschieht über Bibliotheks-Plugins. Wenn Sie mehr über OpenFermion
erfahren möchten, können Sie sich deren Veröffentlichungspapier
anschauen.

In diesem Blogpost fokussieren wir uns auf die Physik der
kondensierten Materie. Hierbei untersucht man die Eigenschaften von
Materiezuständen, indem theoretische Modelle oder Experimente, z.B. mit
kalten Atomgasen, genutzt werden. Physik der kondensierten Materie
enthält Themen wie Hochtemperatursupraleitung oder topologische Phasen.
Die Forschung in
der Physik der kondensierten Materie
führte zu Anwendungen in
Nanoelektronik und Nanostrukturen, Gassensoren,
Stickstoff-Fehlstellen-Zentren und mehr.

Das Simulieren von quantenmechanischen Systemen ist eine der ersten
vorgeschlagenen Anwendungen für Quantencomputing. Die Dimension des
Hilbertraumes wächst exponentiell mit der Systemgröße für diese Systeme,
was das Simulieren von großen Quantensystemen unpraktikabel macht. Feynman
schlug folglich den Quantencomputer in den 1980er Jahren zum Simulieren
von Quantensystemen vor: “Nature isn’t classical and if you want to make
a simulation of Nature, you’d better make it quantum mechanical, and by
golly it’s a wonderful problem, because it doesn’t look so easy.”

In diesem Tutorial untersuchen wir das Bose-Hubbard-Modell. Wir haben
uns für dieses Modell entschieden, da es in der Theorie der
kondensierten Materie bereits eingehend untersucht und genutzt wurde,
sodass wir unsere Ergebnisse mit bestehenden vergleichen können. Das
Bose-Hubbard-Modell beschreibt wechselwirkende Bosonen in einem Gitter
und weist einen Phasenübergang zwischen der superfluiden (SF) und der
Mottinsulator-Phase (MI) auf. Der Hamiltonian des Bose-Hubbard-Modells
ist beschrieben durch \[H =
-t\sum\limits_{\langle ij \rangle} a_i^\dagger a_j + \frac{U}{2}
\sum\limits_i n_i (n_i -1)\,\text{.}\]
\(\langle ij \rangle\) beschreibt das
Summieren über benachbarte Gitterplätze und \(a_i^\dagger\) und \(a_i\) sind die Erzeugungs- und
Vernichtungsoperatoren. \(t\) ist die
Hoppingamplitude und \(U\) die Stärke
der On-Site-Wechselwirkung. Wir benutzen als Quelle für das
Bose-Hubbard-Modell diese zwei Papiere:

Das Ziel von diesem Blogpost ist, die OpenFermion-Python-Bibliothek
als Möglichkeit zum Simulieren von Materialien mittels Quantencomputing
vorzustellen. Hierfür wird der Hamiltonian des entsprechenden Systems
genutzt. OpenFermion bietet Funktionen für bestimmte Hamiltonians, wie
bose_hubbard, aber enthält auch ein Framework zum Kreieren
von eigenen Operatoren oder Hamiltonians. Die Bibliothek kann ebenso für
Quantenchemieprobleme genutzt werden, vor allem zum Bestimmen der
Elektronenanordnung von Molekülen. Unser Code ist verfügbar in einem
Notebook, welches in unserem OpenFermion-Apptainer-Container in dem
Ordner /opt/notebooks/ enthalten ist. Sie können unsere
Quantencomputing-Container hier
finden. In Zukunft wird es die Möglichkeit geben, Quantensimulatoren
innerhalb der HPC-Umgebung, welche von dem QUICS-Projekt angeboten wird,
zu nutzen.

Untersuchen der zwei Phasen

In der SF-Phase ist \(U=0\) und die
Vielteilchen-Wellenfunktion ist delokalisiert. Die sogenannte “inverse participation
ratio
” (IPR) ist ein Maß der Lokalisierung und ist definiert als
\[IPR = \sum\limits_\alpha
\mid\phi_\alpha\mid^4\, ,\]
wobei über alle Fock-Zustände \(\alpha\) summiert wird. Im
erweiterten/delokalisierten Zustand verschwindet die IPR. Nur im
lokalisierten Zustand ist die IPR nicht Null. Wir erwarten also dass die
IPR sehr klein ist in der SF Phase. Für \(t=0\) ist das System in der MI-Phase. Die
Vielteilchen-Wellenfunktion wird durch lokalisierte atomare
Wellenfunktionen ausgedrückt. Daher erwarten wir dass die IPR in diesem
Fall nahe an \(1\) ist. Im
Nachfolgenden zeigen wir, wie man den Bose-Hubbard-Hamiltonian mit der
OpenFermion-Bibliothek erzeugt und die IPR berechnet:

import numpy as np
from openfermion.hamiltonians import bose_hubbard
from openfermion.linalg import get_sparse_operator, get_ground_state

H = bose_hubbard(
        x_dimension,
        y_dimension,
        tunneling,
        interaction,
        chemical_potential=0.5,
        dipole=0.0,
        periodic=True,)

H_sparse = get_sparse_operator(H, trunc=trunc)
eigenenergy, eigenstate = get_ground_state(H_sparse)

# Calculate the IPR:
IPR_SF = np.sum(np.abs(eigenstate)**4)

Tatsächlich erhalten wir \(IPR_{SF} =
0.00139\)
und \(IPR_{MI} =
0.99999\)
. Sie können dies im bereitgestellten Notebook selbst
ausprobieren. In der MI-Phase genügt die Lokalisierung nicht, um zu
entscheiden, ob man die MI-Phase gefunden hat. Man muss auch darauf
achten, ob eine Lücke im Anregungsspektrum entsteht:

from openfermion.linalg import get_gap,
gap = get_gap(H_sparse)
print("Gap in the excitation spectrum: ", gap)

Man erhält als Ergebnis
Gap in the excitation spectrum: 0.49999999999998135, sodass
wir tatsächlich die MI-Phase gefunden haben.

Zeitentwicklung nach einem
Quench

Nun möchten wir die Zeitentwicklung des Bose-Hubbard-Modells nach
einem Quench zum Zeitpunkt Null untersuchen. Wir testen hier einen
Quench von dem SF-Regime in die MI-Phase und umgekehrt. Um die
Zeitentwicklung von Bosonen mit OpenFermion durchzuführen, kann man das
SFOpenBoson-Plugin oder Strawberry Fields nutzen. Wir berechnen die IPR
mit dem zeitabhängigen Zustand des Systems, um die Lokalisierung im
Laufe der Zeit zu bestimmen:

from sfopenboson.ops import BoseHubbardPropagation
from strawberryfields.ops import *
import strawberryfields as sf

k = 20 # Lie product truncation
for time in total_time:
    H_MI = bose_hubbard(
               x_dimension,
               y_dimension,
               t_MI,
               U_MI,
               chemical_potential=0.5,
               dipole=0.0,
               periodic=True,)
    H_SF = bose_hubbard( # Hamiltonian after quench
               x_dimension,
               y_dimension,
               t_SF,
               U_SF,
               chemical_potential=0.5,
               dipole=0.0,
               periodic=True,)
    prog = sf.Program(n_lattice_sites)
    with prog.context as q:
        Ket(eigenstate_MI) | q
        BoseHubbardPropagation(H_SF, time, k, mode='global') | q
        
    eng = sf.Engine("fock", backend_options={"cutoff_dim": trunc})
    final_state = eng.run(prog).state
    state_vector = final_state.ket()

Die Zeitentwicklung wird mit der Funktion
BoseHubbardPropagation durchgeführt, welche die
Lie-Produktformel nutzt und unitäre Operatoren in eine Kombination von
Strahlteilern, Kerr-Gattern und Rotationen im Phasenraum zerlegt.

Die Abbildung zeigt die Zeitentwicklung der IPR nach dem Quench von
dem MI-Regime zu der SF Phase. Man kann erkennen, dass die anfängliche
MI-Phase verschwindet, aber später wiederkehrt. Dieses Wiederkehren
einer Phase wird ebenso in dem zweiten Bose-Hubbard-Modell-Papier von
oben gezeigt, wo sie von der SF-Phase in die MI-Phase quenchen in einem
Experiment mit kalten Atomen in optischen Gittern.

Wie Sie sehen können, kann man mit OpenFermion gut einen Hamiltonian
implementieren und dessen Eigenschaften mithilfe von Quantencomputing
studieren. Dies kann für Quantenchemiker und -physiker den Zugang zur
Nutzung von Quantencomputing erleichtern. Es sind auch schon weitere
Modelle in der OpenFermion-Bibliothek implementiert, wie z.B. das
D-Wave-Modell für Supraleitfähigkeit, das Richardson-Gaudin-Modell, oder
Modelle für homogenes Elektronengas (Jellium). In OpenFermion gibt es
auch unterschiedliche Methoden wie die Hartree-Fock-Methode, die
Davidson-Methode und das Graßmann-Wedgeprodukt. Sie können also auch
andere Hamiltonians oder Aufbauten mit dieser Bibliothek ausprobieren.
Noch ein kurzer Ausblick: Es gibt unterschiedliche Papiere, die die
Elektronstruktur und den Grundzustand von verschiedenen Molekülen und
Modellen untersuchen, z.B. das FeMoco Molekül und
Cytochrom P450
, \(BeH_2\), \(CH_4\), \(H_2O\), \(HF\) und \(NH_3\), ein \(H_4\) Quadrat, eine \(H_4\) Kette und das Hubbard-Modell,
oder homogenes
Elektronengas, Diamant, und Nickeloxid
. Diese benutzen alle die
OpenFermion-Bibliothek zumindest teilweise in ihren Berechnungen.