dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #09338
Re: XML format for Higher Order meshes
On Sun, Aug 24, 2008 at 08:16:59PM -0400, Shawn Walker wrote:
>
> On Sun, 24 Aug 2008, Anders Logg wrote:
>
>> On Sun, Aug 24, 2008 at 03:55:49PM -0400, Shawn Walker wrote:
>>>
>>> On Sun, 24 Aug 2008, Anders Logg wrote:
>>>
>>>> The main problem here seems to be how to even represent a higher-order
>>>> mesh. Are there any existing conventions for this?
>>>
>>> Not that I know of, other than the 'obvious' way.
>>>
>>>> Doing it locally is fine. For each cell, we have a convention for how
>>>> we number vertices, edges and faces (it's in the UFC manual) but we
>>>> don't have a convention for how to number mesh entities globally.
>>>>
>>>> We could use the dof map (for Lagrange elements) that FFC computes
>>>> based on the numbering of mesh entities, but that computation is based
>>>> on a global numbering of edges and faces, and that numbering depends
>>>> on the algorithm for computing these entities (in TopologyComputation).
>>>>
>>>> So, the only solution I see is to store the coordinates cell-wise,
>>>> which would mean duplicating the data, both in the XML file and for
>>>> storing the coordinates in MeshGeometry.
>>>
>>> I think this would be ok. But it must still be possible to update the
>>> mesh geometry (i.e. update the coordinates of all the control points for
>>> the curved triangle geometries) in, say, a time-stepping loop. For
>>> example, you would need this for ALE moving mesh applications. This
>>> means you must update the individual cell geometries in a 'compatible'
>>> way. I haven't actually thought about this. Would this be do-able? If
>>> so, I have no problem with keeping the higher order mesh geometry
>>> completely local. So the question is: "Is it possible to access and
>>> change the local higher order mesh geometry such that the higher order
>>> mesh coordinates stay consistent?"
>>>
>>> - Shawn
>>
>> Yes, we just need to have a global list of coordinates, and then
>> mappings from all cells to the coordinate indices of those cells.
>>
>> Then one can move a coordinate once and it will affect all cells
>> sharing that coordinate.
>>
>> My suggestion would be to have one single list of coordinates like we
>> do now in MeshGeometry. The first N coordinates would be the vertex
>> coordinates (like now) and then the remaining coordinates (if any)
>> would be stored per cell, so that coordinate N is the coordinate for
>> the first edge midpoint of the first cell, coordinate N + 1 is the
>> coordinate for the second edge midpoint of the first cell etc.
>
> ok, just to be clear, you mean:
>
> Have a list of coordinates of length N+Q, where 0 through N-1 is for the
> coordinates used now, and the remaining N to N+Q-1 coordinates contains
> coords that lie on the faces/edges of the mesh. And N through N+Q-1 is
> ordered by cell index grouping.
>
> That seems fine. How would the .xml file look? Perhaps this:
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <dolfin xmlns:dolfin="http://www.fenics.org/dolfin/">
> <mesh celltype="triangle" dim="2" map_type="P2">
>
> <vertices size="4">
> <vertex index="0" x="0.0" y="0.0"/>
> <vertex index="1" x="1.0" y="0.0"/>
> <vertex index="2" x="0.0" y="1.0"/>
> <vertex index="3" x="-1.0" y="0.0"/>
> </vertices>
>
> <cells size="2">
> <triangle index="0" v0="0" v1="1" v2="2"/>
> <triangle index="1" v0="3" v1="0" v2="2"/>
> </cells>
>
> <higher_order_vertices size="5">
> <vertex index="4" x="0.5" y="0.05"/>
> <vertex index="5" x="0.6" y="0.6"/>
> <vertex index="6" x="0.0" y="0.5"/>
> <vertex index="7" x="-0.5" y="0.5"/>
> <vertex index="8" x="-0.5" y="0.0"/>
> </higher_order_vertices>
>
> <higher_order_cells size="2">
> <triangle index="0" affine="false" v0="4" v1="5" v2="6"/>
> <triangle index="1" affine="true" v0="8" v1="6" v2="7"/>
> </higher_order_cells>
>
> </mesh>
> </dolfin>
>
> Or should it be grouped by triangle face? This also should be
> extensible to say cubic edges, or even higher.
Yes, this looks good. But maybe the local indices for the higher-order
cells should not start at zero:
<higher_order_cells size="2">
<triangle index="0" affine="false" v3="4" v4="5" v5="6"/>
<triangle index="1" affine="true" v3="8" v4="6" v5="7"/>
</higher_order_cells>
?
--
Anders
>> The other option would be to store all coordinates for the first cell,
>> then the second etc, but I think it's advantageous to store all vertex
>> coordinates first since that is what we mostly use.
>
> That's fine.
>
> - Shawn
Attachment:
signature.asc
Description: Digital signature
Follow ups
References
-
Re: XML format for Higher Order meshes
From: Shawn Walker, 2008-08-20
-
Re: XML format for Higher Order meshes
From: Garth N. Wells, 2008-08-20
-
Re: XML format for Higher Order meshes
From: Shawn Walker, 2008-08-22
-
Re: XML format for Higher Order meshes
From: Kent-Andre Mardal, 2008-08-22
-
Re: XML format for Higher Order meshes
From: Anders Logg, 2008-08-22
-
Re: XML format for Higher Order meshes
From: Shawn Walker, 2008-08-22
-
Re: XML format for Higher Order meshes
From: Anders Logg, 2008-08-24
-
Re: XML format for Higher Order meshes
From: Shawn Walker, 2008-08-24
-
Re: XML format for Higher Order meshes
From: Anders Logg, 2008-08-24
-
Re: XML format for Higher Order meshes
From: Shawn Walker, 2008-08-25