[Dune] Kleine Änderungen an der Schnittstelle

Oliver Sander sander at mi.fu-berlin.de
Mon Feb 6 11:12:06 CET 2006


Hallo Leute!
Ich wollte nochmal zwei kleine Änderungen an der Schnittstelle
vorschlagen, und hören, was Ihr dazu sagt:

a) Ich finde es wäre besser, wenn geomTypes ein std::set statt
einem std::vector zurückgibt.  Denn die Reihenfolge der GeometryTypes
im zurückgegebenen Container ist sowieso undefiniert, also machen
Zugriffe über den operator[] wenig Sinn.  Andererseits ist eine
Abfrage find(GeometryType) recht nützlich.

b) Die Frage ob Indizes für Entitäten fortlaufend und von Null
beginnend für alle Entitäten einer Kodimension sind (Variante B), oder für
alle Entitäten eines GeometryTypes einer Codimension (Variante A).
Implementiert ist im Moment Variante A.  Es ist ja auch schon
recht viel darüber diskutiert worden: beide Varianten sind
äquivalent, man kann sie jeweils ineinander umrechnen.
ABER: Sofern ich nichts übersehen habe, ist es deutlich aufwendiger,
Variante A nach B umzurechnen als umgekehrt.  Denn: angenommen
man hat einen B-Index.  Dann kann man einen A-Index ausrechnen
indem man ein großes Array anlegt, und dort die A-Indizes reinschreibt.
Die Umrechnung erfolgt dann mit
     A-Index = umrechnungsarray[B-index];

Umgekehrt braucht man aber ein Array für jeden vorhandenen
GeometryType.  Und bei jeder Umrechnung muß man erst in einer
map nachschauen, welches Array jetzt verwendet werden soll:

     std::map<GeometryType,std::vector<int> > umrechnungsmap;
     const std::vector<int>& umrechnungsarray = umrechnungsmap.find(entity->type()).second;
     B-Index = umrechnungsarray[A-Index];

Ich befürchte, daß man dadurch merkliche Geschwindigkeitseinbußen
bekommt, wenn man z.B. Elementdaten auf gemischten Gittern hat.
Deshalb schlage ich vor, doch auf Variante B umzusteigen.  Der
Implementierungsaufwand wäre recht gering, da ja bisher nur
UGGrid überhaupt gemischte Gitter anbietet.

Viele Grüße,
Oliver

************************************************************************
* Oliver Sander                ** email: sander at math.fu-berlin.de      *
* Freie Universität Berlin     ** phone: + 49 (30) 838 75217           *
* Institut für Mathematik II   ** URL  : page.mi.fu-berlin.de/~sander  *
* Arnimallee 2-6               ** -------------------------------------*
* 14195 Berlin, Germany        ** Member of MATHEON (www.matheon.de)   *
************************************************************************


More information about the Dune mailing list