[Dune] Modularisierung

Peter Bastian Peter.Bastian at iwr.uni-heidelberg.de
Fri Mar 24 17:08:39 CET 2006


Hallo Dune,

wir (Stefan, Olaf, Markus und ich) haben hier heute noch mal über eine 
Auftrennung in "Packages" (Gitter, ISTL, FR/HD-Numerik, ...) diskutiert 
und sind zu der Meinung gekommen, dass dies sehr notwendig ist. Hier 
möchte ich nochmal die Gründe zusammenfassen:

- Es dokumentiert klar welche Teile eine Einheit (Modul) darstellen und 
    welche Abhängigkeiten zwischen diesen Modulen bestehen (Z.B. 
HD-Numerik braucht Dune-Gitter, Dune-ISTL, ...)

- Dies erlaubt eine unabhängige Verwendung der Module. Beispiel: ISTL 
geht auch ohne Dune-Gitter, FR-Numerik geht ohne Dune-ISTL, ... Dies war 
ein großer Fehler bei UG, der bis heute nachwirkt. Wir müssen immer noch 
das ganze UG für Dune benutzen obwohl nur ein kleiner Teil daraus 
verwendet wird. Aber es ist einfach unmöglich die relevanten Teile 
rauszunehmen.

- Kleinere Module sind besser wartbar, Verantwortlichkeiten können 
besser zugeordnet werden (Beispiel: FR Numerik wird in FR gepflegt).

- Die Aufteilung in Module könnte folgendermaßen aussehen (bereits mit 
den möglichen Namen:

    dune-common : common + quadrature
    dune-grid   : grid + Teile von io
    dune-istl   : istl
    dune-fem    : operator + fem + Teile von io
    dune-disc   : disc + Teile von io

  Beim I/O ist etwas Arbeit zu leisten da hier teilweise auf
  die FR- oder HD- finite element funktionen aufgebaut wird. Möglichst
  viel sollte numerikunabhängig in das Gittermodul kommen (zumindest
  beim VTKWriter sollte das gehen, bei Grape kann ich das nicht
  beurteilen.

- Build system. Folgendes könnte ich mir vorstellen ist relativ einfach 
zu machen: Alle Module (also etwa die 5 oben genannten) sind in 
getrennten repositories und haben ein eigenes build-system. Dann legt 
man sich alle Module in ein Verzeichnis nebeneinander, dazu packt man 
dann noch die gewünschten ANwendungsmodule (dune-dd, dune-grid-howto, 
...). Jetzt gibt es dann ein Skript in dem man die ausgewählten Module 
einträgt und das dann alle Module konfiguriert, baut, installiert, was 
immer. Man könnte sich auch noch eine Art Paketmanagerfunktionalität 
vorstellen, die prüft ob alle erforderlichen Module in der richtigen 
Version vorhanden sind.

- Doku: Hier müsste man noch prüfen ob in Doxygen eine Verlinkung über 
Modulgrenzen hinweg möglich ist.

Könnten wir über diese Sache bitte nochmal diskutieren?

Eine Frage wäre z. B. vor 1.0 oder nachher. Klar ich bin eigentlich 
nicht dafür jetzt noch groß rumzuschrauben. Wenn dann aber direkt nach 
1.0, wo doch Robert eh das fem rausschneiden will.

Viele Grüße und ein schönes Wochenende.

-- Peter
------------------------------------------------------------------
Peter Bastian, IWR,Uni Heidelberg, INF 348,R 020, 69120 Heidelberg
email: Peter.Bastian at iwr.uni-heidelberg.de   Tel: +49 6221 54 4984
WWW: http://www.iwr.uni-heidelberg.de/~Peter.Bastian Fax: ... 8860





More information about the Dune mailing list