Praktikum:
Wissenschaftliches Rechnen
WS 2007/2008
Dozent:
Prof. Dr. Mario Ohlberger, Sprechstunde Di 11:00-12:00
Dr. Bernard Haasdonk, Sprechstunde Di 16:00-17:00
Praktikum
Zeit,Ort:
Do. 14:00 bis 16:00, wöchentlich
Raum 124 (SR A), Einsteinstraße 92 (gegenüber von SR C).
Inhalt:
Das Praktikum hat als Ziel, numerische Verfahren zum Lösen verschiedener Klassen von partiellen Differentialgleichungen zu realisieren. Diese reichen von elliptischen stationären Problemen bis zu hyperbolischen zeitabhängigen Gleichungen. Die Programmiersprache C++ bietet moderne Programmierkonzepte wie Objektoriertiertheit und Template-Meta-Programmierung, welche effiziente Code und Code-Wiederverwertung ermöglichen.
Daher bildet diese Sprache mit der DUNE-Bibliothek (www.dune-project.org) die Grundlage der Veranstaltung.
Es erfolgt zunächst eine kurze Einführung in diese Grundkonzepte der C++-Programmierung und der Entwicklungsumgebung (Editor, Compiler, Debugger, Profiler). In einem ersten Block findet eine Einarbeitung in die Gitterschnittstelle der DUNE-Bibliothek statt. Diese Bibliothek bildet abstrakte mathematische Objekte in C++-Klassen ab, und ermöglicht die Erstellung von Programmcode, der mit austauschbaren Gitterimplementationen arbeitet.
Elementare Gitter-Operationen wie Gittergenerierung, Gitterverfeinerung und Visualisierung sind zu behandelnde Punkte.
Da numerische Gitter die maßgebliche Komponente für eine Ortsdiskretisierung darstellen, wird in einem zweiten Block das Arbeiten mit den Implementationen entsprechender diskreter Funktionenräume und diskreten Funktionen behandelt. Das Konzept allgemeiner Funktionenräume führt zu diskreten Operatoren, die wesentliche Komponenten zum Lösen von partiellen Differentialgleichungen sind. In jeweils einem Block werden diese Operatoren einerseits zum Lösen eines elliptischen Problems mittels der Methode der Finiten Elemente und zur Simulation eines zeitabhängigen Problems mit Finite Volumen Verfahren eingesetzt.
Die Teilnehmer werden selbständig diese thematischen Aufgabenblöcke erarbeiten, die in entsprechenden Zeitabständen ausgegeben werden. Neben eigenständigem Programmieren mit individueller Zeitplanung ist der wöchentliche Veranstaltungstermin vorgesehen für die Besprechung von Ergebnissen, Vorstellung von Konzepten und betreutem Programmieren.
Aufgaben:
Blatt 1 vom 18.10.2007 und 25.10.2007,
Programmcode ugly_pi.cc.
Blatt 2 vom 8.11.2007, 15.11.2007
und 22.11.2007,
Programmcode
reference_elements.cc,
finite_volume.cc,
Makefile
Blatt 3 vom 29.11.2007,
Programmcode
integrator.cc,
tupletest.cc,
tupleutils.hh.
Programmbeispiele: factorial.cc,
barton-nackman.cc.
Blatt 4 vom 6.12.2007 und 13.12.2007,
Programmcode
gettingstarted.cc,
macrogrids.tar .
Blatt 5 vom 20.12.2007 bis 7.2.2008.
Literatur zu Dune:
1. P. Bastian, M. Blatt, A. Dedner, C. Engwer, R. Klöfkorn, M. Ohlberger, O. Sander: The Distributed and Unified Numerics Environment (DUNE) Grid Interface HOWTO.
http://www.dune-project.org/doc/grid-howto/grid-howto.pdf
2. A. Burri, A. Dedner, D. Diehl, R. Klöfkorn, M. Ohlberger: A general object oriented framework for discretizing nonlinear evolution equations. Proceedings of The 1st Kazakh-German Advanced Research Workshop on Computational Science and High Performance Computing, Almaty, Kazakhstan, September 25 - October 1, 2005.
3. A. Burri, A. Dedner,R. Klöfkorn, M. Ohlberger: An efficient implementation of an adaptive and parallel grid in DUNE. Proceedings of The 2nd Russian-German Advanced Research Workshop on Computational Science and High Performance Computing, Stuttgart, March 14 - 16, 2005.
4. P. Bastian, M. Droske, C. Engwer, R. Klöfkorn, T. Neubauer, M. Ohlberger, M. Rumpf: Towards a Unified Framework for Scientific Computing. Proceedings of the 15th International Conference on Domain Decomposition Methods, Berlin, July 21-25, 2003.
Anleitungen, etc.:
1. C++ Skript: P. Bastian: Informatik I. Vorlesungsskript, Universität Heidelberg, 2001.
http://hal.iwr.uni-heidelberg.de/~peter/Papers/inf1.pdf
2. Kurzanleitung Programmierwerkzeuge: LMB, Institut für Informatik, Universität Freiburg, 2001. doku.pdf
3. Referenzkarte Unix
4. Referenzkarte Emacs
5. Referenzkarte GDB
6. C++ Effizienz: T. Veldhuizen: Techniques for Scientific C++, Indiana University Computer Science Technical Report 542, 2000
http://kanushu.uwaterloo.ca/~tveldhui/papers/techniques/techniques.ps
Voraussetzungen:
Grundlegende Programmierkenntnisse in C/C++, Kenntnisse in Numerik für
partielle Differentialgleichungen.
Anmeldung:
In der ersten Sitzung am 18.10.2007
Wissenschaftliches Rechnen
WS 2007/2008
Dozent: | Prof. Dr. Mario Ohlberger, Sprechstunde Di 11:00-12:00 |
Dr. Bernard Haasdonk, Sprechstunde Di 16:00-17:00
| |
Praktikum | |
Zeit,Ort: | Do. 14:00 bis 16:00, wöchentlich |
Raum 124 (SR A), Einsteinstraße 92 (gegenüber von SR C). | |
Inhalt: | Das Praktikum hat als Ziel, numerische Verfahren zum Lösen verschiedener Klassen von partiellen Differentialgleichungen zu realisieren. Diese reichen von elliptischen stationären Problemen bis zu hyperbolischen zeitabhängigen Gleichungen. Die Programmiersprache C++ bietet moderne Programmierkonzepte wie Objektoriertiertheit und Template-Meta-Programmierung, welche effiziente Code und Code-Wiederverwertung ermöglichen. Daher bildet diese Sprache mit der DUNE-Bibliothek (www.dune-project.org) die Grundlage der Veranstaltung. Es erfolgt zunächst eine kurze Einführung in diese Grundkonzepte der C++-Programmierung und der Entwicklungsumgebung (Editor, Compiler, Debugger, Profiler). In einem ersten Block findet eine Einarbeitung in die Gitterschnittstelle der DUNE-Bibliothek statt. Diese Bibliothek bildet abstrakte mathematische Objekte in C++-Klassen ab, und ermöglicht die Erstellung von Programmcode, der mit austauschbaren Gitterimplementationen arbeitet. Elementare Gitter-Operationen wie Gittergenerierung, Gitterverfeinerung und Visualisierung sind zu behandelnde Punkte. Da numerische Gitter die maßgebliche Komponente für eine Ortsdiskretisierung darstellen, wird in einem zweiten Block das Arbeiten mit den Implementationen entsprechender diskreter Funktionenräume und diskreten Funktionen behandelt. Das Konzept allgemeiner Funktionenräume führt zu diskreten Operatoren, die wesentliche Komponenten zum Lösen von partiellen Differentialgleichungen sind. In jeweils einem Block werden diese Operatoren einerseits zum Lösen eines elliptischen Problems mittels der Methode der Finiten Elemente und zur Simulation eines zeitabhängigen Problems mit Finite Volumen Verfahren eingesetzt. Die Teilnehmer werden selbständig diese thematischen Aufgabenblöcke erarbeiten, die in entsprechenden Zeitabständen ausgegeben werden. Neben eigenständigem Programmieren mit individueller Zeitplanung ist der wöchentliche Veranstaltungstermin vorgesehen für die Besprechung von Ergebnissen, Vorstellung von Konzepten und betreutem Programmieren. |
Aufgaben: |
Blatt 1 vom 18.10.2007 und 25.10.2007,
Programmcode ugly_pi.cc.
Blatt 2 vom 8.11.2007, 15.11.2007 und 22.11.2007, Programmcode reference_elements.cc, finite_volume.cc, Makefile Blatt 3 vom 29.11.2007, Programmcode integrator.cc, tupletest.cc, tupleutils.hh. Programmbeispiele: factorial.cc, barton-nackman.cc. Blatt 4 vom 6.12.2007 und 13.12.2007, Programmcode gettingstarted.cc, macrogrids.tar . Blatt 5 vom 20.12.2007 bis 7.2.2008. |
Literatur zu Dune: |
1. P. Bastian, M. Blatt, A. Dedner, C. Engwer, R. Klöfkorn, M. Ohlberger, O. Sander: The Distributed and Unified Numerics Environment (DUNE) Grid Interface HOWTO.
http://www.dune-project.org/doc/grid-howto/grid-howto.pdf
2. A. Burri, A. Dedner, D. Diehl, R. Klöfkorn, M. Ohlberger: A general object oriented framework for discretizing nonlinear evolution equations. Proceedings of The 1st Kazakh-German Advanced Research Workshop on Computational Science and High Performance Computing, Almaty, Kazakhstan, September 25 - October 1, 2005. 3. A. Burri, A. Dedner,R. Klöfkorn, M. Ohlberger: An efficient implementation of an adaptive and parallel grid in DUNE. Proceedings of The 2nd Russian-German Advanced Research Workshop on Computational Science and High Performance Computing, Stuttgart, March 14 - 16, 2005. 4. P. Bastian, M. Droske, C. Engwer, R. Klöfkorn, T. Neubauer, M. Ohlberger, M. Rumpf: Towards a Unified Framework for Scientific Computing. Proceedings of the 15th International Conference on Domain Decomposition Methods, Berlin, July 21-25, 2003. |
Anleitungen, etc.: |
1. C++ Skript: P. Bastian: Informatik I. Vorlesungsskript, Universität Heidelberg, 2001.
http://hal.iwr.uni-heidelberg.de/~peter/Papers/inf1.pdf 2. Kurzanleitung Programmierwerkzeuge: LMB, Institut für Informatik, Universität Freiburg, 2001. doku.pdf 3. Referenzkarte Unix 4. Referenzkarte Emacs 5. Referenzkarte GDB 6. C++ Effizienz: T. Veldhuizen: Techniques for Scientific C++, Indiana University Computer Science Technical Report 542, 2000 http://kanushu.uwaterloo.ca/~tveldhui/papers/techniques/techniques.ps |
Voraussetzungen: |
Grundlegende Programmierkenntnisse in C/C++, Kenntnisse in Numerik für
partielle Differentialgleichungen.
|
Anmeldung: |
In der ersten Sitzung am 18.10.2007
|