[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