← Back to team overview

dolfin team mailing list archive

Re: suggestion for modifying MeshGeometry

 


On Mon, 6 Apr 2009, Anders Logg wrote:

On Thu, Apr 02, 2009 at 11:12:20AM -0400, Shawn Walker wrote:
Hello all.

I have finally got some time to put in (at least the first stage) the
higher order mesh stuff for triangles
mapped with P2 lagrange elements. Just to remind you, the agreement that
we came up with was this:

1. The local mapping for each element is independent of whatever finite
elements you are using.  Thus, there
should be a completely different description of the mapping.

Sounds good.

2. This info will be stored in MeshGeometry with extra data structures.

Sounds good.

3. The info to store is (i) all the higher order vertex position data, and
(ii) the `DoFmap' for your
particular map.  Storing the extra vertex data is just like storing the
usual 3 triangle coordinates.

Are you thinking of using DofMap for this?

I was thinking of this, but not sure how to do it, i.e. read it into the DoFmap structure. For now I just have it as an array.

4. Eventually, for computing the local finite element matrices, there just
needs to be a short subroutine
that returns the higher order vertex data (for a specific cell) to be used
by, say, the code generated by
FFC.

Yes.

My question is about the dofmap.  It is certainly reasonable to store it
similarly to the vertex data.  But
there is a problem if the mesh is locally refined.  It seems like it will
be a pain to modify this data
structure.  Any suggestions for this?

When a mesh is locally refined, an entirely new mesh is created. The
mesh class stores all data in large arrays so all mesh data needs to
be copied to new data structures anyway.

ok. Are there any plans to have binary tree type meshes? This is the main reason some people use Alberta, plus it has multigrid.

Remember, we do NOT want to use a function space here.  This was already
discussed!

I know, but I keep forgetting why. :-)

One problem was that a Function Space needs a mesh first. But the higher order geometric mapping is defining the mesh, so kind of a chicken-and-egg problem. Another thing to keep in mind is that the mapping is completely independent of the finite element. For instance, you could mix Raviart-Thomas with P2 triangles.

We just removed all the precompiled elements which means one must
always instantiate the correct function spaces maunually (at least in
C++). The question here is how to create/number the extra nodes. The
form compilers already know how to generate code for this, and it
would be extra work to try to duplicate that code for the mapping of
higher order coordinates. Do you have a good plan for how to number
the coordinates?

Well, not particularly, other than the `standard' way. Any suggestions would be good.

I have tried emailing my patch twice, but I have not seen that it has come through. Has anyone seen it?

- Shawn


Follow ups

References