Numerische Simulation der Bildung fluider Strukturen auf ...
Numerische Simulation der Bildung fluider Strukturen auf ...
Numerische Simulation der Bildung fluider Strukturen auf ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
A.3.<br />
LÖSEN DER DÜNNE-FILME-GLEICHUNG<br />
werden die Vorfaktoren <strong>der</strong> ϕ 0 i berechnet. Dann wird, wie<strong>der</strong>um unter Ausnutzung <strong>der</strong> Tatsache,<br />
dass sich die Basisfunktionen des gröberen Gitters durch eine Linearkombination von<br />
Basisfunktionen des feineren Gitters ausdrücken lassen, die Summe ∑ i∈I0<br />
∗ aus (A.30) eliminiert,<br />
indem die Vorfaktoren <strong>der</strong> ϕ 1 i entsprechend angepasst werden. Dies wird fortgesetzt,<br />
bis nur noch die Summe über I L übrig bleibt. Die Vorfaktoren <strong>der</strong> ϕ L i bilden die gesuchte<br />
Darstellung. Für den Spektralradius λ l wird dabei die Näherung<br />
λ l = 1 τ + 1 h 4 . (A.32)<br />
l<br />
benutzt.<br />
Um eine solche multiply-Funktion durchführen zu können, muss die Klasse BPX wissen,<br />
welche Knotenpunkte zu den Gittern Th l gehören. Außerdem muss BPX wissen, aus welchen<br />
Basisfunktionen des feinsten Gitters sich eine Basisfunktion des gröberen Gitters zusammensetzen<br />
lässt, also über Nachbarschaftsinformationen verfügen. Zusätzlich benötigt<br />
∑<br />
man genügend Speicherplatz, um alle Werte (X, ϕ l i ) abspeichern zu können, also genau<br />
maxDepth<br />
l=0<br />
|Il ∗ | Einträge. Dies alles muss bereits vor dem Aufruf von multiply bereitgestellt<br />
werden, eine Aufgabe, die vom Konstruktor übernommen wird.<br />
Die Definition <strong>der</strong> Klasse BPX lautet:<br />
class BPX : public matrixBase{<br />
protected:<br />
Mesh* mesh;<br />
Problem* pb;<br />
double tau;<br />
vector* mh;<br />
BPXEntry** nodeListRef;<br />
BPXEntry** nodeListOnLevel;<br />
public:<br />
BPX(Mesh* mesh,Problem* pb,double tau,vector* mh);<br />
~BPX();<br />
vector& multiply(vector& x, vector& lsg, std::list &nl);<br />
// [...]<br />
};<br />
Der Konstruktor erhält Zeiger <strong>auf</strong> das zu verwendende Gitter, <strong>auf</strong> die Klasse Problem, von<br />
<strong>der</strong> aus solve() den Konstruktor <strong>auf</strong>ruft, die Zeitschrittweite τ (nötig zum Berechnen <strong>der</strong><br />
Eigenwerte), und <strong>auf</strong> die verdichtete-Massen-Matrix M h übergeben. Außerdem baut <strong>der</strong><br />
Konstruktor die folgende Datenstruktur <strong>auf</strong>:<br />
115