23.12.2012 Aufrufe

Vielteilchentheorien in Modellräumen mit diskreter Darstellung

Vielteilchentheorien in Modellräumen mit diskreter Darstellung

Vielteilchentheorien in Modellräumen mit diskreter Darstellung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

46 Kapitel 4 Technische Aspekte<br />

für Gleichungssysteme) zurückgreifen kann, ist man oft gezwungen selbst Programme zu<br />

entwickeln, <strong>mit</strong> denen die zur Verfügung stehenden Ressourcen bestmöglichst genutzt<br />

werden können.<br />

Inwieweit e<strong>in</strong>e solche Optimierung möglich ist, hängt stark von der Problemstellung ab<br />

und muß im E<strong>in</strong>zelnen geprüft werden. In dieser Arbeit wurde speziell für die Berechnung<br />

des Hubbard–Modells <strong>mit</strong> dem SCGF–Verfahren e<strong>in</strong> speicheroptimiertes und größtenteils<br />

parallelisiertes Programm entwickelt. Deshalb soll im folgenden anhand e<strong>in</strong>iger Beispiele<br />

auf die nötigen Programmiertechniken e<strong>in</strong>gegangen werden.<br />

4.3.1 Speicheroptimierung<br />

Zur selbstkonsistenten Lösung des SCGF–Verfahrens muß im Verlaufe der Iteration häufig<br />

die Matrix aufgestellt werden, die sich aus der Überführung der Dyson–Gleichung <strong>in</strong> e<strong>in</strong><br />

Eigenwertproblem ergibt. Numerisch gesehen zerfällt die Matrix (2.1.40) <strong>in</strong> vier relevante<br />

Blöcke, die <strong>in</strong> (4.3.1) schematisch dargestellt s<strong>in</strong>d.<br />

⎛<br />

⎜<br />

⎝<br />

ε1 0 ··· 0 c1 1 c1 2 ··· c1 0 ε2 ··· 0 c<br />

n<br />

2 1 c2 2 ··· c2 .<br />

0<br />

.<br />

0<br />

. ..<br />

···<br />

.<br />

εm<br />

.<br />

c<br />

.<br />

n<br />

.<br />

m 1 cm 2 ··· cm c<br />

n<br />

1 1 c2 1 ··· cm c<br />

1 E1 0 ··· 0<br />

1 2 c2 2 ··· cm . .<br />

2<br />

.<br />

0<br />

.<br />

E2<br />

.<br />

···<br />

. ..<br />

0<br />

.<br />

c1 n c2 n ··· cm ⎞<br />

⎟<br />

⎠<br />

n 0 0 ··· En<br />

(4.3.1)<br />

Während <strong>in</strong> (4.3.1) die Zahl der E<strong>in</strong>–Teilchen–Energien εi im oberen l<strong>in</strong>ken Block der<br />

Matrix zu Beg<strong>in</strong>n bekannt s<strong>in</strong>d, ergeben sich die 2T1L– und 2L1T–Energien im Block<br />

<strong>in</strong> den beiden übrigen<br />

unten rechts und die dazugehörigen gewichteten Matrixelemente ci j<br />

Blöcken erst im Verlauf der Rechnung. Da sich die Gesamtdimension der Matrix im Verlauf<br />

der Iteration stark ändern kann, ist es wenig s<strong>in</strong>nvoll bei Programmstart e<strong>in</strong>en geschätzten<br />

Speicherbedarf für alle E<strong>in</strong>träge der Matrix zu reservieren. Diese Vorgehensweise führt<br />

zwangsläufig dazu, daß man entweder zu wenig Speicher reserviert hat, was zum Programmabbruch<br />

führt, oder man Speicher verschwendet hat, den man dann für andere<br />

Daten nicht mehr verwenden kann. Deswegen sollte nur der tatsächliche Speicherbedarf<br />

zur Laufzeit alloziert werden. Dieser tatsächliche Speicherbedarf ist bei e<strong>in</strong>er N × N–<br />

Matrix jedoch <strong>in</strong> vielen Fällen nicht N 2 × 8Byte1 , wenn man bestimmte Eigenschaften<br />

der Matrix ausnützt. Insbesondere ist die hier relevante Matrix (4.3.1) symmetrisch und<br />

schwach besetzt. Die Symmetrie der Matrix erlaubt es, nur die Diagonale und alle darüber<br />

1 Auf den meisten Rechnerarchitekturen wird e<strong>in</strong>e doppeltgenaue reelle Zahl <strong>mit</strong> 8 Byte dargestellt.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!