CGAL 5.4 - 3D Periodic Mesh Generation
3D Periodic Mesh Generation Reference
Mikhail Bogdanov, Aymeric Pellé, Mael Rouxel-Labbé, and Monique Teillaud
This package is devoted to the generation of isotropic simplicial meshes discretizing periodic 3D domains. The domain to be meshed is a region of the three-dimensional flat torus. The periodic mesh generator provides users with the same flexibility that is offered in the 3D Mesh Generation package.
Introduced in: CGAL 4.13
Depends on: 3D Periodic Triangulations, 3D Mesh Generation, and Eigen
BibTeX: cgal:btprl-p3m3-21b

Relation to the 3D Mesh Generation and 3D Periodic Triangulations Packages

A periodic mesh extends, by definition, infinitely in space. To avoid storing and manipulating duplicate points, well-chosen "dummy" points are inserted at the beginning of the meshing process, thus ensuring that the underlying periodic triangulation forms at all times a simplicial complex within a single copy of the periodic space $$\mathbb T_c^3$$ (see Sections The Flat Torus and Representation of the package 3D Periodic Triangulations). By identifying a single copy of the flat torus $$\mathbb T_c^3$$ (where c denotes the period) with a cube of side c in $$\mathbb R^3$$, the meshing process can be exclusively conducted within a cube of side c. The mesh within a single copy is created using CGAL's 3D Mesh Generation package, but because CGAL's 3D Mesh Generation package aims to mesh traditional (non-periodic) domains, an interface is necessary between CGAL's 3D Mesh Generation package and CGAL's 3D Periodic Triangulations. This package offers these interfaces.

## Concepts

This package relies entirely on the Main Concepts and the Secondary Concepts described in the 3D Mesh Generation package. The following concepts are essentially identical to the concepts MeshDomain_3 and MeshDomainWithFeatures_3 in the package 3D Mesh Generation :

• Periodic_3MeshDomain_3
• Periodic_3MeshDomainWithFeatures_3

## Classes

The following class provides the interface between CGAL's periodic triangulation and CGAL's three-dimensional mesh generator:

• CGAL::Periodic_3_mesh_triangulation_3<MD, K, Vertex_base, Cell_base>

The following class allows to construct a periodic implicit function from an implicit function that is not periodic:

• CGAL::Periodic_3_function_wrapper<Function,BGT>

The following class allows to split the canonical cube in two subdomains, separated by the zero-level of an implicit function:

• CGAL::Implicit_to_labeled_subdomains_function_wrapper<Function,BGT>

## Function Templates

The following functions handle the generation of a periodic mesh:

• CGAL::make_periodic_3_mesh_3()
• CGAL::refine_periodic_3_mesh_3()
• CGAL::exude_periodic_3_mesh_3()
• CGAL::perturb_periodic_3_mesh_3()
• CGAL::lloyd_optimize_periodic_3_mesh_3()
• CGAL::odt_optimize_periodic_3_mesh_3()

## Classes and Functions of Mesh_3

Many classes and functions used by this package are defined within the package 3D Mesh Generation, see Mesh Classes, Domain Classes, and Parameter Functions.

## Modules

Concepts
The concepts of this package.

Mesh Classes
The classes in this group are the main classes involved in the mesh generation process.

Domain Classes
The classes in this group are models of domain concepts and their associated classes.

Mesh Generation Functions
The two main functions to generate a periodic mesh are make_periodic_3_mesh_3() and refine_periodic_3_mesh_3().

Input/Output Functions
The free functions that can be used to read and write periodic meshes.