The function refine_mesh_3 is a 3D mesh generator. It produces simplicial meshes which discretize 3D domains.
The mesh generation algorithm is a Delaunay refinement process followed by an optimization phase. The criteria driving the Delaunay refinement process may be tuned to achieve the user needs with respect to the size of mesh elements, the accuracy of boundaries approximation, etc.
The optimization phase is a succession of optimization processes, including possibly a Lloyd smoothing, an odt-smoothing, a perturber and an exuder. Each optimization process can be activated or not, according to the user requirements and available time. By default, only the perturber and the exuder are activated. Note that the benefits of the exuder will be lost if the mesh is further refined afterwards.
| ||||
|
|
C3T3 c3t3 = CGAL::make_mesh_3<C3T3>(domain,criteria);
CGAL::refine_mesh_3(c3t3, domain, new_criteria);
Please note that we guarantee the result if and only if the domain does not change from one refinement to the next one.
Parameter C3T3 is required to be a model of the concept MeshComplex_3InTriangulation_3. The argument c3t3 is passed by reference as this object is modified by the refinement process. As the refinement process only adds points to the triangulation, all vertices of the triangulation of c3t3 remain in the mesh during the refinement process. Object c3t3 can be used to insert specific points in the domain to ensure that they will be contained in the final triangulation.
The type C3T3 is in particular required to provide a nested type C3T3::Triangulation for the 3D triangulation embedding the mesh. The vertex and cell base classes of the triangulation C3T3::Triangulation are required to be models of the concepts MeshVertexBase_3 and MeshCellBase_3 respectively.
Template parameter MeshDomain is required to be a model of the concept MeshDomain_3. The argument domain of type MeshDomain is the link through which the domain to be discretized is known by the mesh generation algorithm.
The argument of type MeshCriteria passed to the mesh generator specifies the size and shape requirements for the mesh tetrahedra and for the triangles in the boundary mesh facets. These criteria form the rules which drive the refinement process. All mesh elements satisfy those criteria at the end of the refinement process. This may not be true anymore after the sliver removal phase although this last phase is devised to only improve the mesh quality. The template parameter MeshCriteria has to be a model of the concept MeshCriteria_3.
The four additional parameters are optimization parameters. They control which optimization processes are performed and allow the user to tune the parameters of the optimization processes. We do not describe the types of optimization parameters as they are internal types. The package defines two global functions for each optimization parameter to generate appropriate value of this parameter.
The optimization parameters can be passed in random order. If one parameter is not passed, its default value is used. The default values are no_lloyd(), no_odt(), perturb() and exude().
make_mesh_3
exude_mesh_3
perturb_mesh_3
lloyd_optimize_mesh_3
odt_optimize_mesh_3
parameters::exude
parameters::no_exude
parameters::perturb
parameters::no_perturb
parameters::lloyd
parameters::no_lloyd
parameters::odt
parameters::no_odt