[Dune] same ID for several interfaces!

Benjamin Faigle Benjamin.faigle at iws.uni-stuttgart.de
Wed Jun 8 15:17:47 CEST 2011


Hi Carsten, Dune,

ahh, now I finally got it.

Sorry for the noise, and thanks very much for the help,

Benjamin

On 06/08/2011 02:49 PM, Carsten Gräser wrote:
> Hi,
>
> Am 08.06.2011 14:28, schrieb Benjamin Faigle:
>> Hello,
>>
>> to clarify the concerns, I want to extend my small sketch:
>>
>> +---+-------+-------+
>> |   |       |       |
>> +---+   7   |   8   |
>> |   |       |       |
>> +---+---+---+-------+
>> |   | 39| 38|       |
>> +---+---+---+   15  |
>> |   | 36| 37|       |
>> +---+---+---+-------+
>> |   |       |       |
>> +---+   6   |   12  |
>> |   |       |       |
>> +---+-------+-------+
>>
>> I doublechecked the sketch, both with indices and via global positions through
>> is.geometry().center(). The wrong faces are not next to each other. But I indeed made a mistake in
>> my mail, same IDs are for 38-7 and !37!-6, however that should not really be a difference.
> it does make a difference. This might be exactly the (second)
> situation I mentioned:
>
> 38 and 37 have a common face (1-subentity) and the global id might be the one
> from this entity. The check with is.geometry().center() does not show this.
> As Oliver mentioned the problem is the following:
>
> Starting from 38 indexInOutside gives you the LOCAL index i of the
> subentity with respect to 7. If you use the subIndex method with
> the element inside, a.k. 38 but with the local index i with respect
> to 7 you get the id of a face of 38 that is in general NOT contained
> in the intersection. See the example:
>
> +----------+
> |    0     |
> |          |
> |3        1|   7
> |          |
> |    2     |
> +-----+----+
> |  0  |
> |3   1|  38
> |  2  |
> +-----+<<<<<
> |     |  36
> +-----+
>
> If you have the intersection of 38 and 7 starting from 38 you have
> indexInOutside=2 and indexInInside=0. Hence subId(inside, indexInOutside,1)
> gives you the id of the bottom face of 38 and NOT of the top face related
> to the intersection. If this happens on 38 and 36 you might get the common
> face of those two.
>
> While is.geometry().center() gives you the center of the intersection
> and not the unrelated face refered to by indexInOutside the following
> really uses the geometry of this face:
>
>    is.inside->subEntity<1>(is.indexInOutside()).geometry().center()
>
> Best,
> Carsten
>
>>
>> I also checked the is.indexInOutside(), which is 2 for IS 38->7 and is 3 for IS 37->6.
>>
>> I will try it with dune 2.1, but this will take some time...
>> Cheers,
>>
>> Benjamin
>>
>>
>> On 06/08/2011 02:02 PM, Carsten Gräser wrote:
>>> Hi Benjamin,
>>>
>>> Am 08.06.2011 13:53, schrieb Oliver Sander:
>>>> Hi Benjamin!
>>>> Thanks for reporting this.  So you claim that you have come across a
>>>> UGGrid configuration with non-unique edge indices?  That would indeed
>>>> be a bug.
>>>>
>>>> However, you know that the line
>>>>
>>>> grid.globalIdSet().subId(*is.inside(), is.indexInOutside(), 1);
>>>>
>>>> is not what you want: you would want is is.indexInInside().  That may
>>>> already explain your problem with the double id: if you are on 38 then
>>>> indexInOutside is one of 0,1,2,3,4.  However element 38 has only
>>>> four edges.  Hence if indexInOutside happens to be 4 you run into
>>>> undefined behaviour.
>>> this is not true. In your case both have four faces.
>>>
>>> If the situation is exactly as you depicted this is an error. Since
>>> 7,8,36,38 all have four faces but 36 and 38 do not share a common
>>> face this should not happen.
>>>
>>> If the situation is only similar to your drawing, the behaviour
>>> might be OK:
>>>
>>> * If 7 or 6 have more faces then 38 or 36, respectively, (triangles and quads)
>>>     you have undefined behaviour. That's the case Oliver had in mind.
>>> * If you exchange 38 and 39 this behaviour might be correct,
>>>     since 36 and 38 would share a face.
>>>
>>>> Here's my suggestion:
>>>> Try the same with Dune 2.1 and see if the problem persists.
>>>> If it does persist create a test case that triggers the problem
>>>> while using the grid API correctly.  If you have such a test
>>>> case please report back to me and I will try to fix it.
>>> In addition please check if one of the two points above apply.
>>>
>>> Thanks,
>>> Carsten
>>>
>>>>
>>>> Thanks in advance,
>>>> Oliver
>>>>
>>>>
>>
>> _______________________________________________
>> Dune mailing list
>> Dune at dune-project.org
>> http://lists.dune-project.org/mailman/listinfo/dune
>
>





More information about the Dune mailing list