[Dune] ghost or process boundary?
jorrit at jorrit.de
Tue Feb 3 16:38:10 CET 2015
Am Wed, 28. Jan 2015, 11:49:32 +0100 schrieb Aleksejs Fomins:
> Dear Dune,
> I have a little question about what is considered a Ghost entity and
> what is a Process boundary entity. I have read dune-grid-howto
> Please look at the picture. In blue, I have denoted a ghost element of
> process 1. As I have understood from dune-grid-howto, the entities on
> the face shared by the ghost element and the rest of process 1 are
> considered Process boundaries only, and not ghost entities.
> Now, what about the vertex on the other side, which is also shared by
> both the ghost element and the process boundary of process 1. Is that
> one also only a process boundary and not a ghost vertex?
> The main reason I ask is because of the communication. Each entity may
> communicate to all copies of that same entity on all processes. Is it
> then safe to assume that any entity on this process will never
> communicate to itself, even though it can (from some point of view) be
> present several times on the same process?
There are some nitty details here, and different grids may handle this
Basically, the classification of your entities into
interior/border/overlap/front/ghost happens according to how the entities are
connected *topologically* considering one rank only, and this is reflected by
the index set. If two entities are the same geometrically, regardless of the
rank they are on, the get the same global ID.
The tricky part here is that a grid may (but does not have to) decide that it
is better to duplicate an entity (such as the vertex in your example). Then,
depending on how you access that vertex, it will have different partition
types and different indices. For instance, in your example, if you access the
vertex from the ghost element it will be a ghost vertex, but if you access it
from one of the interior elements in the upper section it will be a border
vertex. If you iterate over the vertices of the mesh you would probably
encounter the border instance of the vertex, and you may or may not encounter
the ghost instance of the vertex too. The two instances of the vertex will
have different indicies, but the same global IDs (I don't know how the local
id would behave though). And in fact, there may be more than one ghost
instance of the vertex, but there will only ever be at most one border
instance of the vertex in a given rank.
One grid that has such duplicate ghost entities is ALUGrid. ALUGrid
constructs its ghost elements on each rank on any conceptual inter-rank
intersection, which means there may be more than one ghost element on a given
rank for an interior element on another rank, see the example below. Now I
have only ever tried this with ALUGrid's ghost elements, not with any ghost
vertices, but I would expect that in a situation where alugrid creates two
overlapping ghost elements you get pretty much the situation that you
rank 0 rank 1
| I | I | G | | G | I | G = ghost element
| 0 | 1 | 3 | | 3\4 | 0 | I = interior element
| I | G | | G | I | I | # = index of element within rank
| 2 | 4\5 | | 5 | 1 | 2 |
rank 0 (detail)
| | | I |
+-----+-----+ < here (4) | 1 |
| I | G | --+-----+--
| 2 | 4 | | G |
+-----+-----+ | 5 |
here (5) > +-----+
I'm going to stop here since I'm already guessing. But this should provide a
framework for the followup questions that you are inevitably going to have ;)
Jorrit (Jö) Fahlke, Institute for Computational und Applied Mathematics,
University of Münster, Orleans-Ring 10, D-48149 Münster
Tel: +49 251 83 35146 Fax: +49 251 83 32729
If you receive something that says "Send this to everyone you know,"
pretend you don't know me.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 828 bytes
Desc: Digital signature
More information about the Dune