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