From: Roy Stogner <roystgnr@ic...>  20081118 18:06:21

On Tue, 18 Nov 2008, Norbert Stoop wrote: > Roy Stogner wrote: > >> Does this have to be stored as a vector? Or stored at all? >> Patch::add_point_neighbors() should do what you want on the fly. If >> it's worthwhile a caching version of that could be created. > > Hm, the patch needs a special numbering scheme, which should look like this > > N+4  N+1  N+2 > / \ / \ / \ > / \ / \ / \ > N+5  N  1  N+3 > \ / \ e / \ / > \ / \ / \ / > N1 0  2 > \ /\ / > \ /  \ / > 5 4 3 > > where e is the element we consider and N is the valence of vertex 0 > (which is irregular in this example). Ah  then I was completely misunderstanding what you had said before about irregular vertices; I had hanging nodes in mind. What do you do about nonconforming adaptivity? You can probably ignore more refined neighbors, but what about coarser neighbors? You couldn't get this scheme out of a Patch set very easily. But because you've got more of a special case problem (all triangles at the same level) you could get this kind of patch more efficiently: find the neighbor at a side, find which side of his you are, decrement modulo 3 to get the new side, and repeat until you get back to the original element. Do that for all three original sides. >> Could you describe this in more detail? Do you just need the FE >> object to be able to fill in xyz/dxyz/d2xyz properly, or is it more >> than that? > > What I need in particular, and probably all people solving stuff on a > manifold, is the local surface metric at the quadrature points. > To get this, one needs the C1 parametrization x(eta,xi). The derivatives > wrt xi and eta give two tangents, from which the normal can be > constructed. Together they basically define the metric. That sounds like what xyz and dxyz are. > The problem is, x(xi,eta) is given as a sum of > phi(i)*nodal_xyz_position(i) where i goes over all vertices of the above > patch. > > Now, either the finite element class exposes an interface to the > parametrization x(xi,eta) (and its derivatives) Already done at the quadrature points. > and the metric, This we'd probably want the user code to calculate from dxyz. > or the node patch is exposed and the user constructs what actually > is needed (since the phi's are already at hand). That may be what you fall back on, but if it could be put into the library cleanly that would be nice.  Roy 