Skip to content

Draft: Ownership of entities using forward communication

Simon Praetorius requested to merge feature/entity-ownership into master


Determine a unique processor rank for each entity in a gridView. The default implementation communicates a rank over the InterfaceBorder_All interface and determines the owner by either the entity partition type (e.g. interior entities are always owned by the process where it is interior) or some minimum-rank rule. Each grid could specialize this class if a unique ownership can be specified easier, e.g., without communication.

Note: this utility is extracted from the class GlobalIndexSet


Two implementations are provided. The first one stores for each (requested) entity the owner rank. The second own only stores whether this entity is owned by the current process or not. The communication costs are similar, but the storage is different. In the first case you can extract a bit more information. The question is whether this information is needed anywhere.

The GlobalIndexSet is modified to use one of the new implementations. It requires only a rank assignment for entities of a specific codimension. This feature is also included in the EntityOwner* implementation and could be extended towards accepting a MCMGLayout instead, since this is used internally. The problem is, that th layout interface is not compatible with the CommDataHandleIF::contains method.

Edited by Simon Praetorius

Merge request reports