[Dune] Vorschlag Gitterschnittstelle.
Robert Kloefkorn
robertk at mathematik.uni-freiburg.de
Mon Jan 27 14:21:00 CET 2003
Hi,
ich glaube, ich habe einen ganz vernünftigen Vorschlag für die
Gitterschnittstelle.
Ich habe das Konzept mal ein bisschen getestet an einem struktuierten
Gitter und am AlbertGitter, welches mittlerweile schon ein bisschen in
Dune integiert ist.
Dabei gibt es zwei Gitterzugriffsarten, nämlich per level und
hierarchisch. Im Prinzip stellen dies die Gitterschnittstellen dar,
welches vorher nur Grid war.
z.B.
template <class BASE>
class HierarchicAccess
{
class Iterator {
public:
typedef typename BASE::Iterator BASEit;
typedef typename BASE::obj obj;
....
}
Dabei stellt BASE den eigentlichen Access dar, also z.B.
template <class BASE, int CoDIM>
class AlbertGridHierarchicAccess : public
HierarchicAccess<AlbertGridHierarchicAccess<BASE,CoDIM> >
{
typedef typename BASE::Element<CoDIM> obj;
....
}
Die Verwendung sieht dann so aus:
in main:
AlbertGrid<DIM_OF_WORLD,DIM> algrid (file);
AlbertGridHierarchicAccess<
AlbertGrid<DIM_OF_WORLD,DIM>, DIM >
algridAccess (algrid);
// läuft über Elemente der DIM = 3
testAlgo( algridAccess );
template <class BASE>
void testAlgo( HierarchicAccess<BASE> &access )
{
typedef typename HierarchicAccess<BASE>::Iterator HIERit;
HIERit it = access.begin(0); // liefert einen AlbertGridIterator
}
AlbertGridHierarchicAccess liefert dann Iteratoren für Elemente der
Dimension CoDIM. Dieser spezielle Access bekommt im Constructor einen
Zeiger/Referenz auf das Gitter. Diese Arten von Access betreffen
allerdings nur Elemente, d.h. mittels dieser Klassen kann man über die
Elemente aller Dimension des Gitters laufen, mehr nicht.
Falls weitere Funktionalität gewünscht wird, so muss eine neue
Accessklasse geschrieben werden. Dieser Fall ist wohl eher selten, da
man eben bei einem Gitter über die Elemente laufen möchte.
Falls gewünscht, checke ich das Ganze mal ein.
R
--
Robert Klöfkorn <robertk at mathematik.uni-freiburg.de>
Mathematisches Institut Tel: +49 (0) 761 203 5642
Abt. für Angewandte Mathematik Fax: +49 (0) 761 203 5632
Universität Freiburg
Hermann-Herder-Str. 10
79104 Freiburg
http://www.mathematik.uni-freiburg.de/IAM/homepages/robertk
More information about the Dune
mailing list