[Dune] dune-alugrid: why insertProcessBorder improves efficiency

Martin Nolte nolte at mathematik.uni-freiburg.de
Tue Oct 7 10:41:14 CEST 2014


Hi Aleksejs,

unfortunately, DUNE does not force you to insert all domain boundary segments. 
Hence, you cannot distinguish process borders from domain boundaries without 
actually matching them.

If you actually know all domain boundaries, you can use your simple algorithm 
to detect the process borders and insert them by hand (with the given method). 
That's what the method is provided for!

Internally, ALUGrid's grid factory will use exactly the same algorithm to find 
all boundaries of the local grid that have not been inserted by the user. To 
find out which of these are actually domain boundaries and which ones are 
process borders, these are then gathered on all processes. Each process then 
removes the _received_ set of boundaries from his map. What remains are 
actually domain boundaries. Yeah, it is a lot of work for a small interface 
deficiency ;-).

But: Are you really sure you need to know this?

Best,

Martin

On 10/07/2014 09:34 AM, Aleksejs Fomins wrote:
> Dear Dune,
>
> I was thinking of calculating the process borders to pass to alugrid
> constructor, and I do not understand why this operation requires global
> communication as stated in the dune-alugrid paper.
>
> I propose the algorithm (3D):
> 1) Make an std::set of faces (face = indices of all facial vertices
> sorted in ascending order)
> 2) Go over all elements on this process
> 3) For all faces of each element, put face in the set
> 4) If the set already contains this face, remove face from set instead
> of inserting it
> 5) Resulting set should contain only process borders and domain boundaries
> 6) Subtract domain boundaries that were inserted using
> insertBoundarySegment on this process.
>
> No global communication, get interprocessor boundaries with complexity
> O(N log N) where N is number of elements on the process.
>
>
> Can somebody please hint me to what I am missing?
>
> Best,
> Aleksejs
>
>
>
> _______________________________________________
> Dune mailing list
> Dune at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune
>

-- 
Dr. Martin Nolte <nolte at mathematik.uni-freiburg.de>

Universität Freiburg                                   phone: +49-761-203-5630
Abteilung für angewandte Mathematik                    fax:   +49-761-203-5632
Hermann-Herder-Straße 10
79104 Freiburg, Germany




More information about the Dune mailing list