Programmierpraktikum NPDGL I
|
Schreiben Sie die Klasse Model um, so dass die verwendeten Funktionen Objekte sind, die das Interface Function erfüllen:
function_library.hh
. Beachten Sie die Hinweise zu Header Dateien
Implementieren Sie die Klasse DiscreteSpaceOperator in der Datei finite_difference.hh:
interfaces.hh
ein Interface für einen numerischen Fluss hinzu.
Schreiben Sie einen Modultest für die Klasse DiscreteSpaceOperator:
test_spaceoperator.cc
kompilieren und testen zu können.error.hh
. und machen Sie sich dazu mit dem Konzept des EOC-Tests vertraut. Verändern Sie den Test so, dass er die Konvergenzordnung der numerischen Ableitung überprüft.
Implementieren sie ein Euler Verfahren mit einem geeigneten Test:
\[ \partial_t u_h(x,t) - {\cal L}_h[u_h(x,t)] = 0, \]
erfüllt. Verwenden Sie zum Testen einen konstanten Operator \( { \cal L }_h: V_h \to V_h, v_h \mapsto t \text{Id} \). Vergleichen sie das berechnete Ergebnis mit der exakten Lösung \( u_h(x,t) = \frac{1}{2}t^2 \text{Id}\). Eine Hilfestellung zur Implementierung ist die Datei "test_euler.cc", die Sie ebenfalls von der Webseite herunterladen können.