The problem is how to store the extra coordinates in the Mesh, not how
to communicate it to UFC. I guess it would be fine to send in 6
coordinates to the UFC functions, but we can only store 3 vertices per
cell in the Mesh class.
--
Anders
On Wed, Aug 20, 2008 at 02:40:56PM -0400, Shawn Walker wrote:
> ok. so is what I suggest satisfactory? Just have a separate variable to
> store the extra vertices? And that extra variable would only be used for
> the local polynomial map. Is this fine?
>
> - Shawn
>
> On Wed, 20 Aug 2008, Anders Logg wrote:
>
> > There are many more places in DOLFIN where we may iterate over the
> > vertices in a triangle, not just when we send data to the generated
> > UFC code. The topology must remain unchanged (it should still be
> > triangles) but the geometry may be modified for higher order mappings.
> >
> >
> >
> > On Wed, Aug 20, 2008 at 02:32:34PM -0400, Shawn Walker wrote:
> > > I understand what you are saying, but the ordering of the vertices is
> > > such that the first three vertices (0,1,2) are exactly the same as
> > > they
> > > were before. This would be done no matter what order polynomial map
> > > you
> > > used. So, it seems to me it should be fine.
> > >
> > > However, to be sure, I can modify the ufc stuff such that the
> > > coordinates
> > > variable only reads in the first three vertices. So this would be
> > > EXACTLY as it was before. I would then create a new ufc::cell
> > > variable
> > > called `map_coordinates' (if you have a better name, please suggest)
> > > and
> > > this would read in the 6 vertices. And in Tabulate_Tensor, if higher
> > > order is desired, then the `map_coordinates' will be used to compute
> > > the
> > > FEM matrix.
> > >
> > > This seems safe, though a little redundant. Of course, one must be
> > > careful when creating the higher order mesh .xml file and ensure that
> > > the
> > > first three vertices correspond to the usual triangle vertices.
> > >
> > > I also want to make sure that the extra `map_coordinates' is available
> > > to
> > > be modified with a loop in dolfin. This would be necessary for an ALE
> > > method when the mesh is deforming.
> > >
> > > - Shawn
> > >
> > > On Wed, 20 Aug 2008, Anders Logg wrote:
> > >
> > > > On Wed, Aug 20, 2008 at 07:15:06PM +0100, Garth N. Wells wrote:
> > > > >
> > > > >
> > > > > Anders Logg wrote:
> > > > > > I'm not sure this will work. If you attach 6 vertices to a
> > > > > > triangle by
> > > > > >
> > > > > > <triangle index="0" affine="false" v0="0" v1="1" v2="2" v3="4"
> > > > > > v4="5" v5="6"/>
> > > > > >
> > > > > > then all sorts of things will break (I imagine). A triangle
> > > > > > always has
> > > > > > three vertices.
> > > > > >
> > > > >
> > > > > I noticed this too. It would make some things troublesome.
> > > > >
> > > > > > The geometry of the triangles is separate.
> > > > > >
> > > > > > Maybe we could just add extra data which could be "control
> > > > > > points" for
> > > > > > the cell facets? For P2 it would be the edge/face midpoints.
> > > > > >
> > > > >
> > > > > I like the idea of defining facet data which would contain the
> > > > > necessary
> > > > > info.
> > > >
> > > > A problem with defining facet data is that the facet numbering is
> > > > not
> > > > known a priori. It depends on the algorithm used by DOLFIN to
> > > > compute
> > > > the facets from the cells. So we can't store for example a mesh
> > > > function over the facets since the facet numbering may change.
> > > >
> > > > When we read input from VMTK, we need to read facet data (boundary
> > > > markers) and these are stored relative to the cell to which the
> > > > facet
> > > > belongs and the local number of the facet relative to the cell
> > > > (which
> > > > is unique).
> > > >
> > > > There is an example in data/meshes/aneurysm.xml.gz.
> > > >
> > > >
> >