[Dune] How to iterate over Process Boundary edges

Aleksejs Fomins aleksejs.fomins at lspr.ch
Fri Apr 10 10:56:32 CEST 2015


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Dear Dune,

I know I have asked this question about a hundred times now, but I would really like to get a consistent answer on it, and so far I was always sent off to read the Intersection documentation which I can probably recite with closed eyes by now.

I want to iterate over all edges that are on the process boundary and do something with them. I have a certain diagnostics routine which does only that and nothing else.

Currently employed method:
1.1) Iterate over all elements
1.2) Iterate over all intersections
1.3) Check if the outside element of the intersection is a Ghost
1.4) If yes, extract all edges associated with the intersection as subentities of the face.
1.5) Do sth with extracted edges

The problem with this code, disregarding the fact that it is clumsy, is also that it is very inefficient.
Even though in my special case I am only interested in process boundary edges, this algorithm effectively iterates
* Once over all elements,
* twice over all faces (because all internal intersections are visited twice)
* and twice over all process boundary edges (because most PB edges are shared by two PB faces)

So this code is approx 5 times slower than this hypothetical straightforward code
2.1) Iterate over all edges (entities of codim 2)
2.2) Find out if this edge is on a process boundary in constant time
2.3) If yes, do sth with this edge

The question is if it is possible to do 2.2 and if yes then how?

Regards,
Aleksejs
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQIcBAEBAgAGBQJVJ5BAAAoJEDkNM7UOEwMZ4ckP/jOx/tsNewQ12+Hq/ZvTaBeN
D1Wj1pYuxgPEtVl/ZV7zxxez4RjRfwWdLgl0d35gWc/cw/KOf/7qClYqAn4aN1jk
F3XDkKVEk//dW64l2n3A1AQy+p6v+nB/bkfymeDy+07E9E9PaAOiPm2afxQCbeqy
bvvEoLe6UdXDap9etpX7vREH6/nL2FVcQ5QKJkbizpt20r9S/RqZ2Nii/qNlRU98
SYLteSRtwyvQfNgbORMMo9CQmjqbH1Oy29FvseS1x2usQiXaLlf+mScsxvH9yH+x
Rdy7MMLFM0ZOaLUQYFnIwgj8wX10OIzfmggbTwVREWDJKPDbKwB1ZPcoS2UVWrxg
eOFkkoH6T5m6SwDlTBEWN9OyNjLw3F86BrqTY2JpLMOiRL7GPhWdlAdlUkXt2vwE
bi0iLLvMfRxUp8zQMnMGsf+nKw7VzQpoF1+sP0yVnUQWhQTIftf0jELHIZymkbDC
XEqXJOR2Ags8Xd6oiCsXCd6I/qix7mrt8sgCCUPuwlIBgXQmCrwAgTCH6VS6QEEb
PNMkN1+ltlb1zrWYz/6yPVRh8yKuENPjP1LyfVutZ/eHIUe2as+qWBsU/aP6FAtm
6fAfS2plsl0ZeGskClGP6YiHMhb3L7oUjSAkHkairFCU3xMnUXGzxIYbsRz8uBLH
FRCw44I6Elf8+TJPvFiY
=IyX2
-----END PGP SIGNATURE-----




More information about the Dune mailing list