[Dune] inconsistency with intersection methods
Andreas Dedner
dedner at mathematik.uni-freiburg.de
Tue Jun 27 16:12:09 CEST 2006
Hallo,
ich wuerd gern nochmal zurueckrudern, da, (wenn ich die
methoden richtig verstehe!), die Zeile
is.intersectionSelfLocal.global(xi) ==
is.intersectionNeighborLocal.global(xi) == is.intersectionGlobal.global(xi)
keinen Sinn macht.
Das letzte bildet vom Referenzelement der Intersection in
Weltkoordinaten. Die ersten beiden in die Referenzelemente
von self und neighbor. Das erste == kann aber i.a. auch nicht
stimmen, da x = is.intersectionSelfLocal.global(xi)
auf der face mit Nummer numberInSelf liegen soll und
y = is.intersectionSelfLocal.global(xi) auf der mit Nummer
numberInNeighbor. Und wenn self/neighbor Unterschiedliche
Referenzelemente haben...
Die Frage mit der richtigen Orientierung ist
schwierig zu loesen. Der Ansatz mit dem twist funktioniert wie folgt
(fuer konforme Gitter erstmal):
1) self und neighbor Referenzelemente muessen beide eine Flaeche
vom gleichen Typ haben - etwa eine Dreiecksflaeche mit Punkten
(in den Referenzelementen) (s0,s1,s2) bzw. (n0.n1,n2) im
Referenzelement von self/neighbor. Die Intersection hat auch eine
Dreiecksreferenzflaeche (i0,i1,i2).
2) Der twist gibt an, wie
die Abbildungen ts : (i0,i1,i2) -> (s0,s1,s2) bzw.
tn : (i0,i1,i2) -> (n0,n1,n2) aussehen
Kodiert wird das mit einem Integer, welcher sowohl den Index des
Punktes ts(i0) bzw. tn(i0) angibt, wie auch die Orientierung d.h.
ts(i1) = ts(i0)+1 oder ts(i0)-1
Mit dieser Info kann ich das Caching machen - im Prinzip kann ich fuer
jeden moeglichen Wert von twist die Quadraturwerte Cachen...
Gruss Andreas
Peter Bastian wrote:
> Dear Sreejith,
>
> I think you are correct that there is an inconsistency in the
> implementation. What is necessary is the following condition:
>
> Let is be an IntersectionIterator with is.neighbor()==true and xi a
> point in the local coordinate system of the intersection then
>
> is.intersectionSelfLocal.global(xi) ==
> is.intersectionNeighborLocal.global(xi) == is.intersectionGlobal.global(xi)
>
> This condition has also been added by Mario in the theory part of the
> Dune paper.
>
> Question: Do we all agree on this (I do!).
>
> Best,
>
> Peter
>
>
> Sreejith Pulloor Kuttanikkad wrote:
>
>> Duneler,
>>
>>
>> I am still not very clear on the point that when evaluating the global
>> coordinate of an intersection point from either side how one can get
>> different global value for same point ( i think the orientation
>> matters here.. that means one should be aware of how the orintation is
>> defined locally.. )
>> I would assume that when finding a global coordinate of an
>> intersection point from both sides of the intersection one should get
>> the same value irrespective of orientation.
>> However when i use UG and Alberta grid i do not get the same
>> value whereas with Sgrid and Yaspgrid I get same value. I feel like
>> there is some inconsistency in the implementation of intersection
>> methods in
>> different grids. (i dont know if i understood something wrongly)
>>
>> thanks,
>> Sreejith
>>
>
More information about the Dune
mailing list