29.06.2015 Aufrufe

Numerische Simulation der Bildung fluider Strukturen auf ...

Numerische Simulation der Bildung fluider Strukturen auf ...

Numerische Simulation der Bildung fluider Strukturen auf ...

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.

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!