dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #02750
New mesh library
I just merged the new mesh library. All the basic functionality is in
place: automated computation of connectivity and entities, iteration
over mesh entities and (uniform) mesh refinement.
Still missing is computation of boundaries, adaptive mesh refinement
and the parallelism.
Here's a quick overview. For more details, see the online manual at
http://www.fenics.org/pub/documents/dolfin/dolfin-progr-reference/
Look for NewMesh and follow the links. (Should be generated in a few
hours, the cron job starts at 07.10 CET.) Note that some of the new
classes have a prefix "New" to avoid conflict with the current mesh.
Here's a list of the classes in the new mesh library:
MeshConnectivity.h
MeshEditor.h
MeshEntity.h
MeshEntityIterator.h
MeshGeometry.h
MeshTopology.h
NewMesh.h
NewMeshData.h
MeshFunction.h
NewVertex.h
NewEdge.h
NewFace.h
NewFacet.h
NewCell.h
MeshAlgorithms.h
CellType.h
Interval.h
NewTriangle.h
NewTetrahedron.h
UniformMeshRefinement.h
NewPoint.h
A mesh consists of mesh entities (vertices, edges etc). An entity is
just a pair (dim, index), where dim is the topological dimension of
the entity and index is the number of the entity within its
topological dimension. An entity can be connected to other entities.
All connectivity is computed automatically when needed.
The best way to use the mesh is through the iterator interface. Here's
a couple of examples:
NewMesh mesh;
for (MeshEntityIterator e(mesh, dim); !e.end(); ++e)
{
e->foo();
}
MeshEntity f;
for (MeshEntityIterator e(f, dim); !e.end(); ++e)
{
e->foo();
}
There are also named entities and entity iterators for convenience:
Vertex (dimension 0), Edge (dimension 1), Face (dimension 2), Facet
(codimension 1) and Cell (codimension 0).
The new implementation is very clean and simple and it should not
require much work to extend with the remaining missing functionality.
It's also pretty fast. I will post some benchmarks in a separate
email.
The plan is now to clean up the linear algebra and ODE solvers so we
can make a new release and then concentrate on porting everything to
the new mesh (which should be simple since the interface is very
similar).
Use the new mesh at your own risk. I have not done any extensive
tests. Any feedback appreciated.
/Anders
Follow ups