next up previous contents
Nächste Seite: Beispiel für ein einfaches Aufwärts: Zusammenfassung und Ausblick Vorherige Seite: Numerische Lösung von Delaydifferentialgleichungen   Inhalt


Implementierung eines Delaydifferentialgleichungenlösers

Bei der Lösung der im Rahmen dieser Arbeit betrachteten Delaydifferentialgleichungen wurden zwei Vorgehensweisen gewählt. Beide Verfahren stießen während der vorgenommenen Rechnungen an ihre Grenzen, dennoch ließen sich befriedigende Ergebnisse erstellen.

Der erste Löser war ein C-Programm, das auf kleinen Teilintervallen eines durch das Delay gegebenen $\tau $-Intervalls die Routine odeint wahlweise mit bsstep, das eine Bulirsch-Stoer Methode implementiert, oder mit rkqs (alle aus [31]) für ein Runge-Kutta Verfahren aufrief. Diese Routinen wurden teilweise noch modifiziert, um sie an die Erfordernisse einer Delaydifferentialgleichung anzupassen. Die Interpolation übernahm dabei das aufrufende Programm selber mittels polint (ebenfalls aus [31]) mit 6 Stützstellen, also 5. Ordnung. Diese Methode eignete sich sehr gut zum Lösen der Bewegungsgleichungen für einzelne und für delay-gekoppelte Kavitationsblasen in bestimmten Parameterbereichen. Auch die in Anhang B betrachteten Gleichungen wurden mit diesem Programm gelöst. Dennoch erwies es sich als zu instabil. Eine mögliche Ursache wären die oben erwähnten Unstetigkeiten, die bei dem verwendeten Blasenmodell nicht unbeachtet bleiben dürfen, da es sich um eine neutrale Gleichung handelt, hier aber nicht gesondert behandelt wurden.

Eine Routine, die genau dieses leistet ist die Fortran-Routine DKLAG6 von S. Thompson, die ein auf Delaydifferentialgleichungen erweitertes Runge-Kutta-Verfahren 6. Ordnung implementiert, unter [33] erhältlich ist, und in [35] und in [34] tiefgehender beschrieben wird. Sie implementiert außerdem eine explizite Behandlung der kritischen Stellen, an denen Unstetigkeiten auftreten können und liefert zusammen mit dem stark optimierenden Fortran Compiler ein Programm, das letztendlich stabiler und schneller läuft, als das in C geschriebene. Somit wurden nach der Anpassung von DKLAG6 an das gegebene Problem die meisten der Ergebnisse in Kapitel 4 damit erzielt. Nur am Rande sei hier für den interessierten Leser erwähnt, dass DKLAG6 auch für variables und verschwindendes Delay geeignet und auf einer Vielzahl von Plattformen compilierbar ist.


next up previous contents
Nächste Seite: Beispiel für ein einfaches Aufwärts: Zusammenfassung und Ausblick Vorherige Seite: Numerische Lösung von Delaydifferentialgleichungen   Inhalt
Stefan Kamphausen 2003-07-17