Schnelle Multipol-Methode - Wissenschaftliches Schnelle Multipol-Methode DIPLOMARBEIT zur Erlangung

  • View
    6

  • Download
    0

Embed Size (px)

Text of Schnelle Multipol-Methode - Wissenschaftliches Schnelle Multipol-Methode DIPLOMARBEIT zur Erlangung

  • Schnelle Multipol-Methode

    DIPLOMARBEIT

    zur Erlangung des akademischen Grades

    Diplom-Mathematiker

    FRIEDRICH-SCHILLER-UNIVERSITÄT JENA

    Fakultät für Mathematik und Informatik

    eingereicht von Thomas Franz

    geb. am 02.04.1978 in Saalfeld

    Betreuer: Prof. Dr. G. Zumbusch

    Jena, 14.07.2008

  • Zusammenfassung

    Diese Arbeit befaßt sich mit der Berechnung von Wechselwirkungen zwi- schen geladenen Partikeln nach dem Coulombschen Gesetz. Werden die Kräfte für jedes Partikel einzeln berechnet, führt dies zu einem Algorith- mus der Ordnung O(N2). Dies ist in der Praxis für große Partikelzahlen nicht praktikabel, wenn nicht sogar ummöglich, zu berechnen. Deshalb be- fassen sich viele Wissenschaftler mit Algorithmen, die diese Berechnungen vereinfachen und stark beschleunigen. Im Wesentlichen baut diese Arbeit auf den Artikeln von L. Greengard, V. Rohklin, R. Beatson und J. Carrier auf ([1], [2] und [3]). Sie entwickel- ten die Schnelle Multipol-Methode, einen Algorithmus, der die Ordnung O(NlogN) besitzt. Dadurch ist es möglich, auch für eine sehr große Parti- kelanzahl die Wechelwirkungen zu berechnen. Ziel der Diplomarbeit war die Umsetzung des Multipol-Algorithmus in JAVA, wobei hier besonders großer Wert auf die Parallelisierung mit Hilfe von Threads gelegt wurde.

  • Inhaltsverzeichnis

    1 Grundlagen zur Entwicklung der Multipol-Methode 5 1.1 Multipolentwicklung . . . . . . . . . . . . . . . . . . . . 6 1.2 Verschieben der Multipol-Entwicklung . . . . . . . . . . . 8 1.3 Lokale Entwicklung . . . . . . . . . . . . . . . . . . . . . 9 1.4 Verschieben der lokalen Entwicklung . . . . . . . . . . . 11 1.5 Ableitung der Potenzreihen . . . . . . . . . . . . . . . . . 11

    2 Der adaptive Multipol-Algorithmus 13 2.1 Notationen . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Grundlegende Beschreibung des Algorithmus . . . . . . . 16 2.3 Formale Beschreibung des Algorithmus . . . . . . . . . . 18 2.4 Aufwandsanalyse . . . . . . . . . . . . . . . . . . . . . . 22

    3 Wichtige Methoden aus dem Java-Programm 25 3.1 Aufbau des Baumes . . . . . . . . . . . . . . . . . . . . . 25

    3.1.1 Sequentieller Teil . . . . . . . . . . . . . . . . . . 25 3.1.2 Paralleler Teil . . . . . . . . . . . . . . . . . . . . 27

    3.2 Setzen der Listen . . . . . . . . . . . . . . . . . . . . . . 30 3.2.1 V-Liste . . . . . . . . . . . . . . . . . . . . . . . 33 3.2.2 U-Liste . . . . . . . . . . . . . . . . . . . . . . . 33 3.2.3 W-Liste . . . . . . . . . . . . . . . . . . . . . . . 34

    3.3 Berechnung der Wechselwirkungen . . . . . . . . . . . . 35 3.3.1 UpwardPass . . . . . . . . . . . . . . . . . . . . . 35 3.3.2 Interaktionen zwischen den Boxen . . . . . . . . . 37 3.3.3 DownwardPass . . . . . . . . . . . . . . . . . . . 41 3.3.4 Partikelpositionen berechnen . . . . . . . . . . . . 43

    4 Test des Programms 45 4.1 Absoluter Fehler . . . . . . . . . . . . . . . . . . . . . . 45 4.2 Messung der Laufzeiten . . . . . . . . . . . . . . . . . . . 46

    4.2.1 Partikelanzahl . . . . . . . . . . . . . . . . . . . . 46 4.2.2 Expansionsterme . . . . . . . . . . . . . . . . . . 48 4.2.3 Parameter s . . . . . . . . . . . . . . . . . . . . . 48

    4.3 Mehrprozessor-Systeme . . . . . . . . . . . . . . . . . . 49 4.3.1 Intel Pentium D805 . . . . . . . . . . . . . . . . . 50 4.3.2 Opteron . . . . . . . . . . . . . . . . . . . . . . . 50 4.3.3 Sun Fire T1000 . . . . . . . . . . . . . . . . . . . 53

  • 4.4 Zusammenstoß zweier Körper . . . . . . . . . . . . . . . 54

    5 Glossar 57

  • 1 Grundlagen zur Entwicklung der Multipol-Methode

    Wir gehen von einem 2-dimensionalen Modell mit einer großen Zahl von Partikeln aus, welche paarweisen Wechselwirkungen, die durch das Coulomb-Gesetz beschrieben werden, unterliegen.

    Gegeben sei eine Punktladung, die sich im Punkt x0 = (x0, y0) ∈ R2 be- findet. Dann gilt für ein x = (x, y) ∈ R2\{x0}, dass das Potential und das elektrostatische Feld beschrieben werden durch folgende Ausdrücke:

    φx0(x) = − log(||x − x0||) , (1.1)

    und Ex0(x) =

    (x − x0) ||x − x0||2

    . (1.2)

    Es ist bekannt, dass φx0 in Gebieten, die x0 nicht enthalten, harmonisch ist. Zu jeder harmonischen Funktion u existiert eine analytische Funktion w : C → C, so dass u =

  • 6 1 Grundlagen zur Entwicklung der Multipol-Methode

    Weiterhin gilt:

    (log z)′ = 1 z =

    1 a + ıb

    = a − ıb

    (a + ıb) (a − ıb) = a − ıb a2 + b2

    = (a,−b) |z|2 . (1.7)

    Vergleich von (1.6) und (1.7) ergibt die Behauptung. �

    1.1 Multipolentwicklung

    In diesem Abschnitt werden die theoretischen Grundlagen für den Algo- rithmus entwickelt und Fehlerabschätzungen für die Näherungsformeln be- sprochen.

    Die zu Grunde liegende Idee besteht darin, den Ausdruck log(z − zi) in eine Potenzreihe zu entwickeln. Für ein |y| < 1 hat die Taylor-Entwicklung von log(1 − y) folgende Form

    log(1 − y) = y + y 2

    2 +

    y3

    3 + ... . (1.8)

    Daraus ergibt sich dann

    log(z − zi) = log(z) + log ( 1 − zi

    z

    ) = log(z) +

    ∞∑ j=1

    1 j

    (zi z

    ) j , (1.9)

    und für das Potential φx0 gilt

    φz0(z) = q log(z − z0) = q log(z) − ∞∑

    k=1

    1 k

    (z0 z

    )k . (1.10)

    Lemma 1.2. (Multipol-Entwicklung) Angenommen, dass m Partikel mit Ladungen qi in den Punkten zi, mit |zi| < r liegen (i = 1, ...,m). Dann gilt für ein z mit |z| > r, dass das durch die Ladungen hervorgerufene Potential φ(z) gegeben ist durch

  • 1 Grundlagen zur Entwicklung der Multipol-Methode 7

    φ(z) = a0 log(z) + ∞∑

    k=1

    ak zk , (1.11)

    wobei

    a0 = m∑

    i=1

    qi und ak = m∑

    i=1

    −qizik k . (1.12)

    Weiterhin gilt für p ≥ 1,

    ∣∣∣∣∣∣∣φ(z) − a0 log(z) − p∑

    k=1

    ak zk

    ∣∣∣∣∣∣∣ ≤ 1p + 1 α ∣∣∣∣∣rz

    ∣∣∣∣∣p+1 ≤ ( Ac − 1 ) (1

    c

    )p , (1.13)

    wobei

    c = ∣∣∣∣∣zr

    ∣∣∣∣∣ , A = m∑ i=1

    |qi| und α = A

    1 − ∣∣∣ rz ∣∣∣ . (1.14)

    Beweis. Die Multipol-Entwicklung wird durch das Summieren über p Ter- me für m Punkte zi gebildet. Der Fehler ist beschränkt durch

    ∣∣∣∣∣∣∣φ(z) − a0 log(z) − p∑

    k=1

    ak zk

    ∣∣∣∣∣∣∣ ≤ ∣∣∣∣∣∣∣∣ ∞∑

    k=p+1

    ak zk

    ∣∣∣∣∣∣∣∣ . (1.15) Einsetzen von (1.12) für ak ergibt

    ∣∣∣∣∣∣∣∣ ∞∑

    k=p+1

    ak zk

    ∣∣∣∣∣∣∣∣ ≤ A ∞∑

    k=p+1

    ∣∣∣∣∣rz ∣∣∣∣∣k = αp + 1

    ∣∣∣∣∣rz ∣∣∣∣∣p+1 = ( Ap + 1

    ) ( 1

    c − 1

    ) ( 1 c

    )p , (1.16)

    womit (1.13) gezeigt ist. �

  • 8 1 Grundlagen zur Entwicklung der Multipol-Methode

    Anmerkung: Für c ≥ 2 gilt∣∣∣∣∣∣∣φ(z) − a0 log(z) − p∑

    k=1

    ak zk

    ∣∣∣∣∣∣∣ ≤ A ( 1 2

    )p . (1.17)

    1.2 Verschieben der Multipol-Entwicklung

    Das folgende Lemma zeigt, wie eine Multipol-Entwicklung verschoben werden kann.

    Lemma 1.3. (Verschieben der Multipol-Entwicklung)

    φ(z) = a0 log(z − z0) + ∞∑

    k=1

    ak (z − z0)k

    (1.18)

    sei die Multipol-Entwicklung des Potentials, dass duch m Ladungen q1, ..., qm , welche alle in einem Kreis D mit Radius R und Zentrum z0 liegen, erzeugt wird. Dann gilt für ein z, dass außerhalb des Kreises D1 mit Radius (R + |z0|) und dem Ursprung als Zentrum liegt

    φ(z) = a0 log(z) + ∞∑

    l=1

    bl zl , (1.19)

    wobei

    bl = − a0 z0l

    l +

    l∑ k=1

    ak z0l−k ( l − 1 k − 1

    ) , (1.20)

    mit (

    l k

    ) Binominalkoeffizient. Weiterhin gilt für ein p ≥ 1,

    ∣∣∣∣∣∣∣φ(z) − a0 log(z) − p∑

    l=1

    bl zl

    ∣∣∣∣∣∣∣ ≤  A 1 −

    ∣∣∣ |z0|+Rz ∣∣∣  ∣∣∣∣∣ |z0| + Rz

    ∣∣∣∣∣p+1 (1.21) mit A definiert in (1.14).

  • 1 Grundlagen zur Entwicklung der Multipol-Methode 9

    Beweis. Die Formel für die Verschiebung der Multipol-Entwicklung ergibt sich aus folgenden Gleichungen

    log(z − z0) = log ( z ( 1 − z0

    z

    )) = log(z) −

    ∞∑ l=1

    1 l

    (z0 z

    )l , (1.22)

    und

    (z − z0)−k = ∞∑

    l=k

    ( l − 1 k − 1

    ) z0l−k

    zl , (1.23)

    beide gültig für |z| > |z0|, durch Substituieren, Summieren und Abschnei- den. Die Fehlerschranke folgt aus der Eindeutigkeit der Multipol-Entwick- lung, die besagt, dass die indirekte Entwicklung um den Ursprung iden- tisch zur direkten Entwicklung sein muß. �

    1.3 Lokale Entwicklung

    Das folgende Lemma beschreibt, wie die Multipol-Entwicklung in eine lo- kale Entwicklung umgewandelt wird.

    Lemma 1.4. (Lokale Entwicklung) Im Kreis D1 mit Radius R und Zentrum z0, wobei |z0| > (c + 1)R mit c > 1, seien m Partikel mit den Ladungen q1, ..., qm verteilt. Dann konvergiert die Multipol-Entwicklung (1.18) innerhalb eines Kreises D2 mit Radius R und dem Ursprung als Zentrum. Im Inneren von D2 gilt dann für das Potential:

    φ(z) = ∞∑

    l=0

    bl zl, (1.24)