[Dune] How to iterate over Process Boundary edges
Martin Nolte
nolte at mathematik.uni-freiburg.de
Fri Apr 10 16:25:57 CEST 2015
Hi Aleksejs,
the partition types apply _only_ to the parallel interface. In a serial grid,
all entities are considered interior (including those on the domain boundary).
In parallel, the elements are distributed onto multiple processes. Each
element is interior on exactly one process. Entities of higher codimension are
interior if and only if they all elements "containing" them are interior.
Likewise they are overlap or ghost if and only if all elements "containing"
them are overlap or ghost respectively. Otherwise they are border or front,
depending on whether they are "contained" in an interior element.
I apologize for the sloppy term "contained", but at this point my personal
view disagrees with the dune-grid paper. In the paper, "contained" means
corresponds to the subset relation of the geometric realization. From my point
of view, it should be the topologigal subentity relation. There is a tiny
difference between them and I am not sure all grid implementations conform the
the paper, here.
Anyway: You simply want the border entities!
Best,
Martin
PS: Maybe I should just have posted the link to the dune-grid paper ;-). But
one really has to read that carefully...
On 04/10/2015 01:28 PM, Aleksejs Fomins wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Dear Christian,
>
> My primary target is the curvilinear VTK writer that I wrote. When inserting entities into the writer, I like to mark them with one of the following types
>
> 1) Interior - The entities that belong only to this process, excluding the ones on the boundary
> 2) DomainBoundary - The entities that belong only to this process, and are on the boundary of the global computational domain
> 3) Ghost - The entities that are not normally present on this process, but are subentities of elements neighboring the elements on this process.
> 4) ProcessBoundary - The entities obtained by intersection of Interior and Ghost elements, that is, faces, edges and vertices, which are present on two or more processes regardless of whether the ghost elements are even defined.
>
> In Dune, as I understand now, there is only the Partition type Border, which in my understanding is Border = DomainBoundary + ProcessBoundary. I find it very useful for visualization being able to switch off DomainBoundaries but keep ProcessBoundaries in VTK.
>
>
> I already have an iterator which performs this operation internally inside the grid, but it requires using an extension of standard grid API. I wanted to perform this operation with just using the existing GridAPI functionality.
>
> If my Dune-definition of the word ProcessorBoundary is different from the one above, could you hint me to what it means in the Dune context.
>
> Regards,
> Aleksejs
>
>
> On 10/04/15 13:10, Christian Engwer wrote:
>> Dear Aleksejs,
>>
>> OK, this now clearifies a lot :-)
>>
>>> According to the picture in dune-grid-howto, the faces and edges shared by Interior and Ghost at the same time are considered Border.
>>>
>>> So in Dune-terminology, I would like to iterate over all edges on
>>> partition Border, and select only those that are found on multiple
>>> processors (ProcessorBoundary), excluding the ones that are found
>>> only on one process (DomainBoundary).
>>
>> This is something totally different from iterating over the processor
>> boundary.
>>
>> As Martin suggested, the easiest way to is us the grid functionality
>> and us a communicate. During scatter you can tag your entities, store
>> the other processor ids, or what ever you think is appropriate.
>>
>> Perhaps it would be helpful to understand what you are trying to
>> achieve in the end, because I don't think that your primary intent is
>> to iterator over those edges?!
>>
>> Ciao
>> Christian
>>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.12 (GNU/Linux)
>
> iQIcBAEBAgAGBQJVJ7PmAAoJEDkNM7UOEwMZNfUP/R6q4WSSbm2XLAs8OvHGJgL1
> FspJyxc3VKRZBaTb9KY85pwfUAj3JDf3YX3SaJdAGzThEr97ciQGQG2dhQ7StrrT
> jaxQ+bpAe7va008YJvGUhVaFVf0udipq/BzAIQtqTqkLMqQpDcb9VPyZlv2/CXqC
> f4RqrS9RbbxdZOJBJjFoRv8y5kBSuSRj3F6bJYBO8ea2LepGSoqbvaHH97EKLlYn
> eOC5e7VinZbd+a+RDTyCTb8yspJ2viw8yyZraiFz+K3fLTXKnzFUPHiko9cUcMaH
> UWXOIRhNam9AQYBzgtmyu6hxhvYvNBZSd5NmZFykbiu9fUVpgroDGQvnZNVZ/F+z
> ZR4xUoYdJ/BdmWthyE930OzCtcx6PLYOWgjhE7zcuzBlERhT46hl5eD76Zl3aHRH
> MzC0nteCvI6ln5sxsAjQZ9yeMe+SnvDK+F6orkPbgcrIe2Tl7xKnzzXbwV5w69/Z
> 31cImhTfuZyeK92L3TjHTf1LeDFh7DIGv/Ot8oUxq0b2zZrchrCoDlFF46Z6l5uP
> XaaUvE05xm3xjOLqwW39eWw4vziD/OAVP98dO3SuS7YVCTgSkP9YXtg8Hq0QkRkB
> OHDc1FseGy2fOoZnwaKoTwPoy6Xy/DKMn0Olk/Q8rdFu1+71YD0LyKL2P68hgHFB
> 9dIy7OSeBagq7OhpLs5u
> =KQ6k
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> 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