Go to the documentation of this file.
20 #ifndef LIBMESH_ELEM_CUTTER_H
21 #define LIBMESH_ELEM_CUTTER_H
23 #include "libmesh/libmesh_config.h"
25 #if defined(LIBMESH_HAVE_TRIANGLE) && defined(LIBMESH_HAVE_TETGEN)
28 #include "libmesh/libmesh_common.h"
29 #include "libmesh/point.h"
44 class TriangleInterface;
45 class TetGenMeshInterface;
82 const std::vector<Real> & vertex_distance_func)
const;
90 const std::vector<Real> & vertex_distance_func)
const;
98 const std::vector<Real> & vertex_distance_func)
const;
110 const std::vector<Real> & vertex_distance_func);
135 const std::vector<Real> & vertex_distance_func);
141 const std::vector<Real> & vertex_distance_func);
147 const std::vector<Real> & vertex_distance_func);
153 const std::vector<Real> & vertex_distance_func);
178 #endif // LIBMESH_HAVE_TRIANGLE && LIBMESH_HAVE_TETGEN
179 #endif // LIBMESH_ELEM_CUTTER_H
std::unique_ptr< TetGenMeshInterface > _tetgen_inside
std::unique_ptr< TetGenMeshInterface > _tetgen_outside
void operator()(const Elem &elem_in, const std::vector< Real > &vertex_distance_func)
This function implements cutting an element by a signed distance function.
std::vector< Elem const * > _inside_elem
std::unique_ptr< ReplicatedMesh > _outside_mesh_2D
std::unique_ptr< TriangleInterface > _triangle_outside
The libMesh namespace provides an interface to certain functionality in the library.
void cut_3D(const Elem &elem, const std::vector< Real > &vertex_distance_func)
cutting algorithm in 3D.
std::unique_ptr< ReplicatedMesh > _inside_mesh_3D
void cut_1D(const Elem &elem, const std::vector< Real > &vertex_distance_func)
cutting algorithm in 1D.
std::vector< Elem const * > _outside_elem
std::unique_ptr< ReplicatedMesh > _outside_mesh_3D
Parallel::Communicator _comm_self
const std::vector< Elem const * > & inside_elements() const
std::unique_ptr< TriangleInterface > _triangle_inside
std::unique_ptr< ReplicatedMesh > _inside_mesh_2D
This class implements cutting a single element into a collection of subelements.
const std::vector< Elem const * > & outside_elements() const
std::vector< Point > _intersection_pts
This is the base class from which all geometric element types are derived.
void find_intersection_points(const Elem &elem, const std::vector< Real > &vertex_distance_func)
Finds the points where the cutting surface intersects the element edges.
bool is_cut(const Elem &elem, const std::vector< Real > &vertex_distance_func) const
void cut_2D(const Elem &elem, const std::vector< Real > &vertex_distance_func)
cutting algorithm in 2D.
bool is_outside(const Elem &elem, const std::vector< Real > &vertex_distance_func) const
bool is_inside(const Elem &elem, const std::vector< Real > &vertex_distance_func) const