From: Roy Stogner <roystgnr@ic...> - 2005-01-20 21:58:10
I just realized that the behavior of nodes "changing identities"
depending on whether they're edge, face, corner, or interior has
another consequence: System::project_vector only handles mesh
coarsening correctly for Lagrange elements: setting a coarse edge DoF
to the value of a fine corner DoF probably won't work for anything
I'm not sure how to fix that. From a mathematical perspective, the
local L2 projection that we're using to go from coarse to fine meshes
is an exact projection whenever the function space restricted to the
fine child elements contains the entire function space from the coarse
parent element, but if we were to use a projection to go from fine to
coarse elements, the results couldn't be exact, and different elements
sharing the same DoF might have different ideas about what its new
value should be. We could just go with the projection result from
whatever the first element we come across says (and since we're
coarsening anyway, we have to expect to lose some accuracy), but it
seems like there should be a better way.
From a practical perspective there's a more immediate problem. I'm
not even sure how to form a projection matrix. When refining, you
have access to both child and parent elements; when coarsening,
though, aren't the child elements already deleted by the time you
project to the new mesh? Could we refine just one element at a time
(ignoring level mismatch constraints), use the new children
immediately for integration, then coarsen again?