[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