/// \defgroup PkgMesh3Ref 3D Mesh Generation Reference

/// \defgroup PkgMesh3Concepts Main Concepts
/// \ingroup PkgMesh3Ref
/// The main concepts of this package.

/// \defgroup PkgMesh3SecondaryConcepts Secondary Concepts
/// \ingroup PkgMesh3Ref
/// The concepts in this group are secondary concepts, related to the template parameters of some models of the main concept.

/// \defgroup PkgMesh3MeshClasses Mesh Classes
/// \ingroup PkgMesh3Ref
/// The classes in this group are the main classes involved in the mesh generation process.

/// \defgroup PkgMesh3Domains Domain Classes
/// \ingroup PkgMesh3Ref
/// The classes in this group are models of domain concepts and their associated classes.

/// \defgroup PkgMesh3Functions Mesh Generation Functions
/// \ingroup PkgMesh3Ref
/// The two main functions to generate a mesh are `make_mesh_3()` and `refine_mesh_3()`.
/// The other functions allow to optimize an existing mesh.

/// \defgroup PkgMesh3Parameters Parameter Functions
/// \ingroup PkgMesh3Ref

/// \defgroup PkgMesh3Enum Enumerations
/// \ingroup PkgMesh3Ref

/// \defgroup PkgMesh3IOFunctions Input/Output Functions
/// \ingroup PkgMesh3Ref
/// The free functions that can be used to read and write meshes.

/*!
\addtogroup PkgMesh3Ref
\todo check generated documentation
\cgalPkgDescriptionBegin{3D Mesh Generation,PkgMesh3}
\cgalPkgPicture{Mesh_3/fig/multilabel_mesher_small.jpg}
\cgalPkgSummaryBegin
\cgalPkgAuthors{Pierre Alliez, Clément Jamin, Laurent Rineau, Stéphane Tayeb, Jane Tournois, Mariette Yvinec}
\cgalPkgDesc{This package is devoted to the generation of isotropic simplicial meshes discretizing 3D domains. The domain to be meshed is a region of 3D space that has to be bounded. The region may be connected or composed of multiple components and/or subdivided in several subdomains. The domain is input as an oracle able to answer queries, of a few different types, on the domain. Boundary and subdivision surfaces are either smooth or piecewise smooth surfaces, formed with planar or curved surface patches. Surfaces may exhibit 1-dimensional features (e.g. crease edges) and 0-dimensional features (e.g. singular points as corners tips, cusps or darts), that have to be fairly approximated in the mesh. Optionally, the algorithms support multi-core shared-memory architectures to take advantage of available parallelism.}
\cgalPkgManuals{Chapter_3D_Mesh_Generation,PkgMesh3Ref}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{3.5}
\cgalPkgDependsOn{\ref PkgTriangulation3 and \ref thirdpartyEigen}
\cgalPkgBib{cgal:rty-m3}
\cgalPkgLicense{\ref licensesGPL  "GPL"}
\cgalPkgDemo{Polyhedron demo,polyhedron_3.zip}
\cgalPkgShortInfoEnd
\cgalPkgDescriptionEnd

\cgalClassifedRefPages

\cgalCRPSection{Concepts}

Here are the main concepts of this package:

- `MeshTriangulationTraits_3`
- `MeshComplex_3InTriangulation_3`
- `MeshComplexWithFeatures_3InTriangulation_3`
- `MeshDomain_3`
- `MeshDomainWithFeatures_3`
- `MeshCriteria_3`
- `MeshCriteriaWithFeatures_3`
- `MeshCellCriteria_3`
- `MeshFacetCriteria_3`
- `MeshEdgeCriteria_3`

The following concepts are secondary concepts,
related to the template parameters of some models of the main concepts:

- `BisectionGeometricTraits_3`
- `IntersectionGeometricTraits_3`
- `MeshCellBase_3`
- `MeshVertexBase_3`
- `MeshDomainField_3`
- `MeshPolyline_3`
- `TriangleAccessor_3`

\cgalCRPSection{Classes}

- `CGAL::Mesh_complex_3_in_triangulation_3<Tr,CornerIndex,CurveIndex>`
- `CGAL::Mesh_triangulation_3<MD,Gt,Concurrency_tag,Vertex_base,Cell_base>`
- `CGAL::Mesh_vertex_base_3<Gt,MD,Vb>`
- `CGAL::Compact_mesh_cell_base_3<Gt,MD,Tds>`
- `CGAL::Mesh_cell_base_3<Gt,MD,Cb>`
- `CGAL::Mesh_criteria_3<Tr>`
- `CGAL::Mesh_cell_criteria_3<Tr>`
- `CGAL::Mesh_facet_criteria_3<Tr>`
- `CGAL::Mesh_edge_criteria_3<Tr>`
- `CGAL::Mesh_constant_domain_field_3<Gt,%Index>`

The following classes are models of domain concepts
and their associated classes:

- `CGAL::Labeled_mesh_domain_3<LabelingFunction,BGT>`
- `CGAL::Polyhedral_mesh_domain_3<Polyhedron,IGT,TriangleAccessor>`
- `CGAL::Polyhedral_mesh_domain_with_features_3<IGT>`
- `CGAL::Polyhedral_complex_mesh_domain_3<IGT>`
- `CGAL::Mesh_domain_with_polyline_features_3<MeshDomain_3>`
- `CGAL::Mesh_polyhedron_3<IGT>`
- `CGAL::Triangle_accessor_3<CGAL::Polyhedron_3<K>,K>`
- `CGAL::Implicit_multi_domain_to_labeling_function_wrapper<ImplicitFunction>`
- `CGAL::Implicit_mesh_domain_3<Function,BGT>` (deprecated)
- `CGAL::Labeled_image_mesh_domain_3<Image,BGT>` (deprecated)
- `CGAL::Gray_image_mesh_domain_3<Image,BGT,Image_word_type>` (deprecated)

\cgalCRPSection{Function Templates}

- `CGAL::make_mesh_3()`
- `CGAL::refine_mesh_3()`
- `CGAL::exude_mesh_3()`
- `CGAL::perturb_mesh_3()`
- `CGAL::lloyd_optimize_mesh_3()`
- `CGAL::odt_optimize_mesh_3()`
- `CGAL::facets_in_complex_3_to_triangle_mesh()`

\cgalCRPSection{CGAL::parameters Functions}

- `CGAL::parameters::features()`
- `CGAL::parameters::no_features()`
- `CGAL::parameters::exude()`
- `CGAL::parameters::no_exude()`
- `CGAL::parameters::perturb()`
- `CGAL::parameters::no_perturb()`
- `CGAL::parameters::lloyd()`
- `CGAL::parameters::no_lloyd()`
- `CGAL::parameters::odt()`
- `CGAL::parameters::no_odt()`
- `CGAL::parameters::manifold()`
- `CGAL::parameters::manifold_with_boundary()`
- `CGAL::parameters::non_manifold()`

\cgalCRPSection{Enumerations}

- `CGAL::Mesh_optimization_return_code`
- `CGAL::Mesh_facet_topology`

\cgalCRPSection{Input/Output Functions}
- `CGAL::output_to_medit()`
- `CGAL::output_to_vtu()`
*/

