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"
50template <
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;
This class implements cutting a single element into a collection of subelements.
This is the base class from which all geometric element types are derived.
This class implements generic composite quadrature rules.
QSubCell _q_subcell
Subcell quadrature object.
QComposite(QComposite &&)=default
Copy/move ctor, copy/move assignment operator, and destructor are all explicitly defaulted for this s...
virtual ~QComposite()=default
ElemCutter _elem_cutter
ElemCutter object.
virtual QuadratureType type() const override
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...
QComposite & operator=(const QComposite &)=delete
std::unique_ptr< FEBase > _lagrange_fe
Lagrange FE to use for subcell mapping.
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...
QComposite(const QComposite &)=delete
This class contains a unique_ptr member, so it can't be default copy constructed or assigned.
The libMesh namespace provides an interface to certain functionality in the library.
QuadratureType
Defines an enum for currently available quadrature rules.