19#ifndef LIBMESH_POLY2TRI_TRIANGULATOR_H
20#define LIBMESH_POLY2TRI_TRIANGULATOR_H
24#include "libmesh/libmesh_config.h"
26#ifdef LIBMESH_HAVE_POLY2TRI
29#include "libmesh/dof_object.h"
30#include "libmesh/triangulator_interface.h"
The BoundaryInfo class contains information relevant to boundary conditions including storing faces,...
static constexpr dof_id_type invalid_id
An invalid id to distinguish an uninitialized DofObject.
This is the base class from which all geometric element types are derived.
Base class for functors that can be evaluated at a point and (optionally) time.
A C++ interface between LibMesh and the poly2tri library, with custom code for Steiner point insertio...
bool _refine_bdy_allowed
Whether to allow boundary refinement.
virtual FunctionBase< Real > * get_desired_area_function() override
Get the function giving desired triangle area as a function of position, or nullptr if no such functi...
virtual void set_refine_boundary_allowed(bool refine_bdy_allowed) override
Set whether or not the triangulation is allowed to refine the mesh boundary when refining the interio...
virtual void set_desired_area_function(FunctionBase< Real > *desired) override
Set a function giving desired triangle area as a function of position.
bool is_refine_boundary_allowed(const BoundaryInfo &boundary_info, const Elem &elem, unsigned int side)
Is refining this element's boundary side allowed?
std::map< const Hole *, std::unique_ptr< ArbitraryHole > > replaced_holes
We might have to replace the user-provided holes with refined versions.
std::unique_ptr< FunctionBase< Real > > _desired_area_func
Location-dependent area requirements.
virtual void triangulate() override
Internally, this calls the poly2tri triangulation code in a loop, inserting our owner Steiner points ...
virtual ~Poly2TriTriangulator()
Empty destructor.
bool should_refine_elem(Elem &elem)
Returns true if the given element ought to be refined according to current criteria.
virtual bool refine_boundary_allowed() const override
Get whether or not the triangulation is allowed to refine the mesh boundary when refining the interio...
bool insert_refinement_points()
Add Steiner points as new mesh nodes, as necessary to refine an existing trangulation.
void triangulate_current_points()
Triangulate the current mesh and hole points.
dof_id_type _n_boundary_nodes
Keep track of how many mesh nodes are boundary nodes.
The UnstructuredMesh class is derived from the MeshBase class.
The libMesh namespace provides an interface to certain functionality in the library.