[Dune] Parallele Schnittstelle

Robert Kloefkorn robertk at mathematik.uni-freiburg.de
Wed Aug 11 10:04:40 CEST 2004


> ------------------------------------------------------------------------
> 
> Änderungen im Zuge der parallelen Schnittstelle
> ===============================================
> 
> PB, 11. August 2004
> 
> 
> 1) ElementType: Habe den einzelnen identifiern explizit Nummern
> zugewiesen. Wird in der neuen Klasse ReferenceTopology gebraucht.
> 
> 2) neuen GridIdentifier für yaspgrid dazugefügt
> 
> 3) Neuer Aufzählungstyp  InterfaceType zur Steuerung der Kommunikation
> 
> 4) Aufzählungstyp IteratorType heisst jetzt PartitionIteratorType 
> und hat auch neuen Inhalt. HATTE DEN SCHON JEMAND VERWENDET?

Ja ich. Kann man aber noch umbauen.
> 
> 5) Neuer Aufzählungstyp CommunicationDirection zur Steuerung der Kommunikation
> 
> 6) Aufzählungstyp PartitionType habe ich leicht verändert, da ich das
>    Überlappungsmodell leicht angepasst. Das werde ich dann im paper
>    beschreiben...
> 
> 7)  Neue Klasse GridError zum werfen von exceptions. Das halte ich
>     inzwischen für absolut notwendig! Ist sehr ähnlich zu Thimo's
>     Vorschlag, allerdings hatte ich die nicht mehr gefunden. Im
>     wesentlichen kann man eine message, das file und die Zeilennummer
>     im Konstruktor angeben. Die Verwendung sieht dann so aus:
> 
> 	Wo der Fehler auftritt:
> 
> 	  throw GridError("tried to call father on level 0",__FILE__,__LINE__);
> 
> 	das catch:
> 
> 	  try { ... }
>       catch (Dune::GridError& error)
> 	  {
> 	    std::cout << error << std::endl;
> 	  }

Klingt sehr gut.

Das sollte eigentlich Christoph hier machen, aber ist wohl irgendwie 
untergegangen.

> 8) Ich habe eine Klasse für die Referenzelemente angefangen:
> template<int dim, class ct>
> class ReferenceTopology {
> public:
>   //! default constructor will build up all the internal data
>   ReferenceTopology ();
> 
>   //! return local coordinates of center in reference element
>   Vec<dim,ct>& center_codim0_local (int elemtype);
> 
>   //! return local coordinates of center of ith codim 1 subentity
>   Vec<dim-1,ct>& center_codim1_local (int elemtype, int i);
> };
> 
> Hat bis jetzt nur Methoden um Mittelpunkt des Referenzelementes und
> Mittelpunkte der Seiten des Referenzelementes abzufragen. Prismen und
> Pyramiden sind zudem nicht implementiert. Damit kann man jetzt aber
> wenigstens schon mal das FV Verfahren elementunabhängig
> hinschreiben. Der Rest muss halt noch gemacht werden ....
> 
> 9) Nun die wohl weitreichendste Veränderung: Der LevelIterator hat nun
 >
>    VIER statt DREI template Parameter:
>    template<int,int,int,PartitionIteratorType> class LevelIteratorImp;
> 
.....
> 
> 	DAS HAT ERST MAL AUSWIRKUNGEN AUF ALLE ANWENDUNGEN !!
> 
> 	Man ist gezwungen überall nachzudenken wie eine Schleife über das
> 	Gitter parallelisiert wird. Soll der Code nur sequentiell laufen
> 	so übergibt man einfach "All_Partition" als Parameter.
> 
> 	FÜR CODES DIE WEITER NUR ERST MAL SEQUENTIELL LAUFEN SOLLEN
>     gibt es eine version mit nur einem template parameter:

Das finde ich sehr gut, weil default template Parameter leicht zu Fehler 
führen können, wie ich neulich mal bemerkt habe, ;).

> 	//! version without second template parameter to run sequential code
> 	template<int codim>
> 	LevelIteratorImp<codim,dim,dimworld,All_Partition> lbegin (int level);
> 
> 	//! version without second template parameter to run sequential code
> 	template<int codim>
> 	LevelIteratorImp<codim,dim,dimworld,All_Partition> lend (int level);
> 
> 12) Auf der Entity (jeder codim) gibt es folgende neue Funktion:
> 
> 	//! return partition type attribute 
> 	PartitionType partition_type ();
> 
>     um abzufragen in welchem Bereich die entity sitzt. Wird dann mit
>     dem Überlappungsmodell erklärt.

Ich hatte noch eine Methode owner verwendet, um abzufragen, welcher 
Prozessor
Master einer Entity ist. Aber  wahrscheinlich brauchen wir das nicht.

Also, wäre sehr gut wenn Du heute noch eincheckst, damit ich dann gleich 
loslegen kann. Ich brauche das Zeug für die Hyp im September, :).

Grüssle und schönen Urlaub

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