Skip to content

#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?