#975 outerNormal for outside entity
Metadata
Property | Value |
---|---|
Reported by | Andreas Dedner (A.S.Dedner@warwick.ac.uk) |
Reported at | Nov 8, 2011 22:43 |
Type | Feature Request |
Version | 2.0 |
Operating System | Unspecified / All |
Last edited by | Christian Engwer (christi@conan.iwr.uni-heidelberg.de) |
Last edited at | Jul 10, 2012 18:45 |
Description
For surface grids one in general does not have matching outerNormals, e.g., N_{T'} != -N_T where T and T' are neighboring elements.
On an intersection one now needs to find the corresponding intersection on outside to obtain n_{T'} through iteration over all intersection and some matching. That is quite difficult and expensive especially if the normals are not constant.
Suggestions (with increasing complexity for everyone):
A: add outerNormalInOutside(x) to intersection
B: implement some sort of reverseIntersection method on the Intersection class which provides the matching intersection from the outside entity.
C: Have method to obtain normal on the entity: outerNormal(i,x) (x in codim=1 or codim<0> coordinates). One could then use something like: inter.outside()->outerNormal(inter.numberInOutside, inter.geometryInOutisde.global(x))
D: have the intersection provide an insideIntersection() and outsideIntersection() method returning a class with methods like geometry() (the same as geometryInInside/Outside) and so on. Code like (*iter).geometryInInsde(x) would then have to be changed to (*iter).insideIntersection().geometry(x). The Intersection class would then have the bool methods (neighbor/boundary...) and the geometry method while all other methods would be moved to the class returned by insideIntersection() and outsideIntersection()
Because I think D would be too intrusive and not worth it, I favor A or B.
But perhaps somebody has a better suggestion?