19#ifndef LIBMESH_MESH_TET_INTERFACE_H
20#define LIBMESH_MESH_TET_INTERFACE_H
22#include "libmesh/libmesh_config.h"
25#include "libmesh/bounding_box.h"
26#include "libmesh/enum_elem_type.h"
27#include "libmesh/point.h"
39class UnstructuredMesh;
88 void attach_hole_list(std::unique_ptr<std::vector<std::unique_ptr<UnstructuredMesh>>> holes);
206 std::unique_ptr<std::vector<std::unique_ptr<UnstructuredMesh>>>
_holes;
Defines a Cartesian bounding box by the two corner extremum.
Class MeshTetInterface provides an abstract interface for tetrahedralization of meshes by subclasses.
void process_hull_integrity_result(const std::set< SurfaceIntegrity > &result) const
This function prints an informative message and throws an exception based on the output of the check_...
ElemType _elem_type
The exact type of tetrahedra we intend to construct.
UnstructuredMesh & _mesh
Local reference to the mesh we are working with.
std::unique_ptr< std::vector< std::unique_ptr< UnstructuredMesh > > > _holes
A pointer to a vector of meshes each defining a hole.
Real _desired_volume
The desired volume for the elements in the resulting mesh.
unsigned int _verbosity
verbosity setting
void delete_2D_hull_elements()
Delete original convex hull elements from the Mesh after performing a Delaunay tetrahedralization.
ElemType & elem_type()
Sets and/or gets the desired element type.
virtual void triangulate()=0
This is the main public interface for this function.
bool & smooth_after_generating()
Sets/gets flag which tells whether to do two steps of Laplace mesh smoothing after generating the gri...
Real & desired_volume()
Sets and/or gets the desired tetrahedron volume.
void attach_hole_list(std::unique_ptr< std::vector< std::unique_ptr< UnstructuredMesh > > > holes)
Attaches a vector of Mesh pointers defining holes which will be meshed around.
std::set< SurfaceIntegrity > check_hull_integrity() const
This function checks the integrity of the current set of elements in the Mesh to see if they comprise...
std::set< SurfaceIntegrity > improve_hull_integrity()
This function checks the integrity of the current set of elements in the Mesh, and corrects what it c...
void increase_tet_order()
Converts all linear tet elements to the type requested by _elem_type, if that type differs from TET4.
bool _smooth_after_generating
Flag which tells whether we should smooth the mesh after it is generated.
virtual ~MeshTetInterface()
Default destructor in base class.
SurfaceIntegrity
Enumeration of possible surface mesh integrity issues.
static BoundingBox volume_to_surface_mesh(UnstructuredMesh &mesh)
Remove volume elements from the given mesh, after converting their outer boundary faces to surface el...
void set_verbosity(unsigned int v)
Sets a verbosity level, defaulting to 0 (print nothing), to be set as high as 100 (print everything).
The UnstructuredMesh class is derived from the MeshBase class.
The libMesh namespace provides an interface to certain functionality in the library.
ElemType
Defines an enum for geometric element types.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real