© Copyright by andidom.at
ODE++ ist eine C++ Klassenbibliothek zur Behandlung gewöhnlicher Differentialgleichungen. Dies beinhaltet die geeignete Darstellung allgemeiner DGL-Systeme genauso wie die Lösung konkreter DGL-Probleme, z.B. Anfangswertprobleme. Dabei kombiniert ODE++ eine einfach zu benutzende Schnittstelle mit einer größtmöglichen Flexibilität. Außerdem kann die Bibliothek sehr leicht erweitert werden.

Das Problem:
Heutzutage bestehen die meisten Implementierungen von Methoden zur Lösung von Problemen gewöhnlicher Differentialgleichungen aus einer einzigen für den Anwender verfügbaren Subroutine. Um ein konkretes Problem zu lösen, muß der Benutzer bis zu 20 und mehr Variablen für einen einzigen Aufruf der Subroutine angeben. Diese Variablen decken dabei verschiedene Bereiche ab:

  • das DGL-System,
  • die Problem-Parameter, z.B. der Anfangswert bei einem Anfangswertproblem,
  • die benötigte Genauigkeit,
  • optionale, Löser-interne, Größen.



Obwohl die aus einem solchen Programmierstil resultierenden Implementierungen sehr zuverlässig und effizient arbeiten, besitzen sie sowohl für den Anwender als auch für den Entwickler verschiedene Nachteile:

  • jeder Löser verfügt über eine eigene Aufrufsyntax. Dies bedeutet für den Benutzer, daß er sich, vor der Benutzung eines neuen Lösers, in die jeweilige Syntax einarbeiten muß. Ein Entwickler, der verschiedene Löser in ein größeres Softwareprojekt integrieren möchte, ist gezwungen, für jeden Löser einen spezifischen Aufruf zu implementieren;


[list]wegen fehlender Modularisierung ist eine Wiederverwendung existierender Routinen für neue Löser nur schwer möglich. Dies ist besonders störend, da viele Teile eines Lösers unabhängig von der zugrundeliegenden numerischen Methode sind.[list]


Die Lösung:
ODE++ überwindet diese Probleme. Die Objektorientierung von C++ gibt die Möglichkeit, folgende Ziele mit ODE++ zu erreichen:

  • eine konsistente Benutzerschnittstelle, die unabhängig von dem dargestellten Problem oder der zur Lösung verwendeten numerischen Methode ist;
  • eine Schnittstelle, die für den unerfahrenen Benutzer einfach zu handhaben ist, aber gleichzeitig dem erfahrenen Benutzer die Möglichkeit bietet, alle Parameter der Methode zu ändern;


[list]eine einfache Möglichkeit die Bibliothek um neue Darstellungsformen für DGL-Systeme oder neue Löser für DGL-Probleme zu erweitern.[list]

ODE++ besteht z.Z. aus 3 Klassen-Hierarchien: eine für die Darstellung von DGL-Systemen, eine zweite für die Parameter eines DGL-Problems und als letztes eine Klassenhierarchie zur Lösung von Anfangswertproblemen. Eine Erweiterung in Richtung Randwertprobleme ist geplant.

Da die C++ Standardbibliothek keine Vektor/Matrix Operationen zur Verfügung stellt, mußte eine geeignete, frei verfügbare, Klassenbibliothek, gefunden werden. Schließlich wählten wir MatClass , da sie das meiste der benötigten Funktionalität bereitstellt und gut dokumentiert ist. Trotzdem waren einige Änderungen notwendig. Die größte Verbesserung war die Ergänzung von C++-Exceptions. Wir nennen unsere überarbeitete Version XMatClass, sie ist unabhängig von ODE++ verfügbar.

ODE++ wurde mit Borland C++ auf einem PC entwickelt. Obwohl wir nicht die Möglichkeit hatten, ODE++ mit verschiedenen Compilern auf unterschiedlichen Rechnerplattformen zu testen, sollte der Gebrauch von ODE++ in anderen Umgebungen keine signifikanten Probleme verursachen, da keine Borland-spezifischen Spracherweiterungen verwendet wurden.

Momentan sind folgende DGL-Systeme und Anfangswertproblemlöser realisiert:

  • explizite DGL-Systeme, linear-implizite DGL-Systeme mit konstanter Massematrix und allgemeine linear-implizite DGL-Systeme;

[list]Parameter für Anfangswertprobleme und für Randwertprobleme;[list]

  • explizite Runge-Kutta-Verfahren der Ordnung 5, 6 und 8, sowie lineare Mehrschrittverfahren variabler Ordnung vom Typ Adams-Moulton (Ordnung 1-12) und vom Typ BDF (Ordnung 1-5).


Die Implementierung von diagonal-impliziten und voll-impliziten Runge-Kutta-Verfahren ist geplant.

Die Konzepte von ODE++ sind vollständig in dem "Technical Report" beschrieben. Die "Technical Reference" stellt eine umfassende Auflistung des Inhalts von ODE++ zur Verfügung.



Dieser Text wurde der Homepage entnommen
Friedrich-Schiller-Universität Jena
Instittut für Angewandte Mathematik

Wir benutzen Cookies
Um meine Webseite für Sie optimal zu gestalten, fortlaufend verbessern zu können und die Bereitstellung unserer Dienste zu erleichtern, verwenden wir Cookies. Durch die weitere Nutzung der Webseite erklären Sie sich damit einverstanden, dass wir Cookies verwenden und stimmen der Verwendung von Cookies zu. Eine Ablehnung der Cookies kann die Funktionalität der Website so weit beeinträchtigen, dass eine brauchbare Verwendung der Webseite ausgeschlossen ist.