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< ReplicatedMesh > _inside_mesh_3D
std::unique_ptr< ReplicatedMesh > _inside_mesh_2D
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.
std::vector< Point > _intersection_pts
std::unique_ptr< TriangleInterface > _triangle_outside
void cut_1D(const Elem &elem, const std::vector< Real > &vertex_distance_func)
cutting algorithm in 1D.
void operator()(const Elem &elem_in, const std::vector< Real > &vertex_distance_func)
This function implements cutting an element by a signed distance function.
This is the base class from which all geometric element types are derived.
The libMesh namespace provides an interface to certain functionality in the library.
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.
This class implements cutting a single element into a collection of subelements.
std::vector< Elem const * > _inside_elem
std::unique_ptr< ReplicatedMesh > _outside_mesh_3D
std::unique_ptr< TriangleInterface > _triangle_inside
const std::vector< Elem const * > & outside_elements() const
void cut_3D(const Elem &elem, const std::vector< Real > &vertex_distance_func)
cutting algorithm in 3D.
std::unique_ptr< TetGenMeshInterface > _tetgen_inside
std::unique_ptr< TetGenMeshInterface > _tetgen_outside
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
std::vector< Elem const * > _outside_elem
const std::vector< Elem const * > & inside_elements() const
std::unique_ptr< ReplicatedMesh > _outside_mesh_2D
Parallel::Communicator _comm_self