Go to the documentation of this file.
20 #ifndef LIBMESH_QUADRATURE_COMPOSITE_H
21 #define LIBMESH_QUADRATURE_COMPOSITE_H
23 #include "libmesh/libmesh_config.h"
25 #if defined(LIBMESH_HAVE_TRIANGLE) && defined(LIBMESH_HAVE_TETGEN)
28 #include "libmesh/quadrature.h"
29 #include "libmesh/elem_cutter.h"
30 #include "libmesh/fe_base.h"
50 template <
class QSubCell>
59 using QSubCell::_points;
60 using QSubCell::_weights;
93 virtual void init (
const Elem & elem,
94 const std::vector<Real> & vertex_distance_func,
95 unsigned int p_level=0)
override;
123 #endif // LIBMESH_HAVE_TRIANGLE && LIBMESH_HAVE_TETGEN
124 #endif // LIBMESH_QUADRATURE_COMPOSITE_H
virtual void init(const Elem &elem, const std::vector< Real > &vertex_distance_func, unsigned int p_level=0) override
Overrides the base class init() function, and uses the ElemCutter to subdivide the element into "insi...
void add_subelem_values(const std::vector< Elem const * > &subelem)
Helper function called from init() to collect all the points and weights of the subelement quadrature...
QSubCell _q_subcell
Subcell quadrature object.
The libMesh namespace provides an interface to certain functionality in the library.
QuadratureType
Defines an enum for currently available quadrature rules.
std::unique_ptr< FEBase > _lagrange_fe
Lagrange FE to use for subcell mapping.
void init(triangulateio &t)
Initializes the fields of t to nullptr/0 as necessary.
virtual QuadratureType type() const override
virtual ~QComposite()=default
QComposite(unsigned int dim, Order order=INVALID_ORDER)
Constructor.
This class implements cutting a single element into a collection of subelements.
This class implements generic composite quadrature rules.
QComposite & operator=(const QComposite &)=delete
This is the base class from which all geometric element types are derived.
ElemCutter _elem_cutter
ElemCutter object.