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 Order
defines an enum for polynomial orders.
QSubCell _q_subcell
Subcell quadrature object.
This is the base class from which all geometric element types are derived.
QComposite(unsigned int dim, Order order=INVALID_ORDER)
Constructor.
QuadratureType
Defines an enum for currently available quadrature rules.
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...
The libMesh namespace provides an interface to certain functionality in the library.
virtual ~QComposite()=default
This class implements cutting a single element into a collection of subelements.
QComposite & operator=(const QComposite &)=delete
void init(triangulateio &t)
Initializes the fields of t to nullptr/0 as necessary.
This class implements generic composite quadrature rules.
std::unique_ptr< FEBase > _lagrange_fe
Lagrange FE to use for subcell mapping.
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...