-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathex09.lyx
145 lines (127 loc) · 3.52 KB
/
ex09.lyx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#LyX 1.6.3 created this file. For more info see http://www.lyx.org/
\lyxformat 345
\begin_document
\begin_header
\textclass article
\use_default_options false
\language ngerman
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize default
\spacing single
\use_hyperref false
\papersize default
\use_geometry false
\use_amsmath 1
\use_esint 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language english
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\author ""
\author ""
\end_header
\begin_body
\begin_layout Title
Computational Statistical Physics, Exercise 9
\end_layout
\begin_layout Author
Raphael Das Gupta
\end_layout
\begin_layout Section*
Zur Implementierung
\end_layout
\begin_layout Standard
Um das Programm nicht noch unordentlicher zu machen, habe ich die Funktionen
für die Linked-Cell-Methode als Methoden einer neuen Klasse
\family typewriter
Cells
\family default
in einem eigenen Modul
\family typewriter
cells
\family default
implementiert.
\end_layout
\begin_layout Standard
Ich habe versucht, möglichst viel schon im Konstruktor (Methode
\family typewriter
__init__()
\family default
) zu erledigen, sodass ein wiederholter Aufruf rechenintensiver Operationen
vermieden werden kann.
So lege ich z.B.
eine Look-Up-Table für die Indices der Nachbar-Zellen an (analog zur Look-Up-Ta
ble für Nachbar-Sites bei Ising-Si\SpecialChar \-
mu\SpecialChar \-
la\SpecialChar \-
tionen mit periodischen Randbedingungen).
\end_layout
\begin_layout Standard
Das Mapping von den Zellen zu den darin enthaltenen Teilchen wird in einem
Python-Dictionary gespeichert, sodass man direkt die
\begin_inset Quotes eld
\end_inset
Koordinaten
\begin_inset Quotes erd
\end_inset
einer Zelle als Key (entspricht dem Index bei Sequenz-Typen) verwenden
kann, ohne dass man Speicher für leere Zellen benötigt.
\end_layout
\begin_layout Section*
Resultate
\end_layout
\begin_layout Standard
Zuerst verwendete ich die Zellen nur bei der Kräfte-Berechnung.
Das brachte (bei 2D-Verteilung, 3D-simuliert und Teilchen-Dichte
\begin_inset Formula $n=0.95$
\end_inset
) erst ab einer Teilchenanzahl
\begin_inset Formula $N\stackrel{\sim}{>}100$
\end_inset
eine kürzere Laufzeit als ohne Verwendung von Linked Cells.
Beim Profiling des Scripts wurde ich darauf aufmerksam, dass beim Samplen
der potentiellen Energie ebenfalls über alle Teilchen-Paarungen geloopt
wird.
Nachdem auch dort auf die Cells-Klasse zurückgegriffen wurde, war der Speed-Up
einiges besser mess- und fühlbar.
\end_layout
\begin_layout Standard
Wie zu erwarten, ist der Speed-Up grösser, wenn die Teilchen-Dichte geringer
ist (da dann weniger Teilchen in der jeweiligen Zelle und ihren Nachbarzellen
liegen).
\end_layout
\begin_layout Standard
Die Simulations-Ergebnisse sehen zumindest nicht falscher als zuvor aus.
(Siehe
\family typewriter
ex09.mpg
\family default
für eine Simulation mit 290 Teilchen.) Energie-Erhaltung ist natürlich nicht
magisch hinzugekommen.
\end_layout
\begin_layout Standard
Bereits vor der Implementierung von Linked Cells konnte ich die Laufzeit
um ca.
9% senken, indem ich die Berechnung von Quadratwurzeln vermied, wenn danach
sowieso wieder quadriert (oder mit einer geraden Zahl potenziert) wurde.
\end_layout
\end_body
\end_document