From 03304a1942f275f857796423349d20e216d13c0f Mon Sep 17 00:00:00 2001 From: David Wells Date: Wed, 20 Jan 2016 23:42:46 -0500 Subject: [PATCH] Merge GlossMeshAsAContainer and ConceptMeshType. This moves the discussion completely into concepts.h. --- doc/doxygen/headers/concepts.h | 62 +++++++++++++++++++++++---- doc/doxygen/headers/glossary.h | 28 ------------ doc/news/changes.h | 2 +- include/deal.II/distributed/tria.h | 5 +-- include/deal.II/dofs/dof_handler.h | 5 ++- include/deal.II/grid/grid_generator.h | 19 ++++---- include/deal.II/grid/grid_tools.h | 30 ++++++------- include/deal.II/grid/intergrid_map.h | 2 +- include/deal.II/grid/tria.h | 9 ++-- include/deal.II/hp/dof_handler.h | 4 +- 10 files changed, 90 insertions(+), 76 deletions(-) diff --git a/doc/doxygen/headers/concepts.h b/doc/doxygen/headers/concepts.h index 86f13ba994..4488cec3df 100644 --- a/doc/doxygen/headers/concepts.h +++ b/doc/doxygen/headers/concepts.h @@ -108,13 +108,36 @@ *
@anchor ConceptMeshType MeshType
* *
- * There are several algorithms (e.g., - * GridTools::find_active_cell_around_point) in deal.II that can operate on - * either a Triangulation or a DoFHandler, as both classes may be considered - * to be collections of cells: see the @ref GlossMeshAsAContainer - * "glossary entry" for a further discussion of this idea. %Functions that may - * be called with either class indicate this by accepting a template parameter - * like + * Meshes can be thought of as arrays of vertices and connectivities, but a + * more fruitful view is to consider them as collections of cells. In + * C++, collections are often called containers (typical containers are + * std::vector, std::list, etc.) and they are characterized by the ability to + * iterate over the elements of the collection. The MeshType concept + * refers to any container which defines appropriate methods (such as + * DoFHandler::begin_active()) and typedefs (such as + * DoFHandler::active_cell_iterator) for managing collections of cells. + * + * Triangulation&nnbsp;s, DoFHandler&nnbsp;s, and hp::DoFHandler&nnbsp;s may + * all be considered as containers of cells. In fact, the most important parts + * of the public interface of these classes consists simply of the ability to + * get iterators to their elements. Since these parts of the interface are + * generic, i.e., the functions have the same name in all classes, it is + * possible to write operations that do not actually care whether they work on + * a triangulation or a DoF handler object. Examples abound, for example, in + * the GridTools namespace, underlining the power of the abstraction that + * meshes and DoF handlers can all be considered simply as collections + * (containers) of cells. + * + * On the other hand, meshes are non-standard containers unlike std::vector or + * std::list in that they can be sliced several ways. For example, one can + * iterate over the subset of active cells or over all cells; likewise, cells + * are organized into levels and one can get iterator ranges for only the + * cells on one level. Generally, however, all classes that implement the + * containers-of-cells concept use the same function names to provide the same + * functionality. + * + * %Functions that may be called with either class indicate this by accepting + * a template parameter like * @code * template