Reference documentation for deal.II version Git 500a7ed831 20220117 20:04:17 0700

#include <deal.II/base/quadrature.h>
Public Types  
using  SubQuadrature = Quadrature< dim  1 > 
Public Member Functions  
Quadrature (const unsigned int n_quadrature_points=0)  
Quadrature (const SubQuadrature &, const Quadrature< 1 > &)  
Quadrature (const Quadrature< dim !=1 ? 1 :0 > &quadrature_1d)  
Quadrature (const Quadrature< dim > &q)  
Quadrature (Quadrature< dim > &&) noexcept=default  
Quadrature (const std::vector< Point< dim >> &points, const std::vector< double > &weights)  
Quadrature (const std::vector< Point< dim >> &points)  
Quadrature (const Point< dim > &point)  
virtual  ~Quadrature () override=default 
Quadrature &  operator= (const Quadrature< dim > &) 
Quadrature &  operator= (Quadrature< dim > &&)=default 
bool  operator== (const Quadrature< dim > &p) const 
void  initialize (const std::vector< Point< dim >> &points, const std::vector< double > &weights) 
unsigned int  size () const 
const Point< dim > &  point (const unsigned int i) const 
const std::vector< Point< dim > > &  get_points () const 
double  weight (const unsigned int i) const 
const std::vector< double > &  get_weights () const 
std::size_t  memory_consumption () const 
template<class Archive >  
void  serialize (Archive &ar, const unsigned int version) 
bool  is_tensor_product () const 
const std::array< Quadrature< 1 >, dim > &  get_tensor_basis () const 
template<>  
Quadrature (const unsigned int n_q)  
Subscriptor functionality  
Classes derived from Subscriptor provide a facility to subscribe to this object. This is mostly used by the SmartPointer class.  
void  subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const 
void  unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const 
unsigned int  n_subscriptions () const 
template<typename StreamType >  
void  list_subscribers (StreamType &stream) const 
void  list_subscribers () const 
Static Public Member Functions  
static ::ExceptionBase &  ExcInUse (int arg1, std::string arg2, std::string arg3) 
static ::ExceptionBase &  ExcNoSubscriber (std::string arg1, std::string arg2) 
Protected Attributes  
std::vector< Point< dim > >  quadrature_points 
std::vector< double >  weights 
bool  is_tensor_product_flag 
std::unique_ptr< std::array< Quadrature< 1 >, dim > >  tensor_basis 
Base class for quadrature formulae in arbitrary dimensions. This class stores quadrature points and weights in the coordinate system of a reference cell (see the ReferenceCell class) and as such serves to represent quadrature points and weights on the unit line segment \([0,1]\) in 1d, on the unit square or unit triangle in 2d, as well as the unit tetrahedron, cube, pyramid, and wedge reference cells in 3d.
There are a number of derived classes, denoting concrete integration formulae. Their names are prefixed by Q
. Refer to the list of derived classes for more details.
At least for quadrilaterals and hexahedra (or, more precisely, since we work on reference cells: for the unit square and the unit cube), quadrature formulas are typically tensor products of onedimensional formulas (see also the section on implementation detail below).
In order to allow for dimension independent programming, a quadrature formula of dimension zero exists. Since an integral over zero dimensions is the evaluation at a single point, any constructor of such a formula initializes to a single quadrature point with weight one. Access to the weight is possible, while access to the quadrature point is not permitted, since a Point of dimension zero contains no information. The main purpose of these formulae is their use in QProjector, which will create a useful formula of dimension one out of them.
For each quadrature formula we denote by m
, the maximal degree of polynomials integrated exactly on the reference cell the quadrature formula corresponds to. This number is given in the documentation of each formula. The order of the integration error is m+1
, that is, the error is the size of the cell to the m+1
by the BrambleHilbert Lemma. The number m
is to be found in the documentation of each concrete formula. For the optimal formulae QGauss we have \(m = 2N1\), where \(N\) is the constructor parameter to QGauss. The tensor product formulae are exact on tensor product polynomials of degree m
in each space direction, but they are still only of (m+1)
st order.
Most integration formulae in more than one space dimension are tensor products of quadrature formulae in one space dimension, or more generally the tensor product of a formula in (dim1)
dimensions and one in one dimension. There is a special constructor to generate a quadrature formula from two others. For example, the QGauss<dim> formulae include N^{dim} quadrature points in dim
dimensions, where \(N\) is the constructor parameter of QGauss.
Definition at line 86 of file quadrature.h.
using Quadrature< dim >::SubQuadrature = Quadrature<dim  1> 
Define an alias for a quadrature that acts on an object of one dimension less. For cells, this would then be a face quadrature.
Definition at line 93 of file quadrature.h.

explicit 
Constructor.
This constructor is marked as explicit to avoid involuntary accidents like in hp::QCollection<dim> q_collection(3)
where hp::QCollection<dim> q_collection(QGauss<dim>(3))
was meant.
Definition at line 40 of file quadrature.cc.
Quadrature< dim >::Quadrature  (  const SubQuadrature< dim > &  q1, 
const Quadrature< 1 > &  q2  
) 
Build this quadrature formula as the tensor product of a formula in a dimension one less than the present and a formula in one dimension. This constructor assumes (and tests) that constant functions are integrated exactly, i.e. the sum of the quadrature weights is one.
SubQuadrature<dim>::type
expands to Quadrature<dim1>
.
Definition at line 130 of file quadrature.cc.

explicit 
Build this quadrature formula as the dim
fold tensor product of a formula in one dimension.
Assuming that the points in the onedimensional rule are in ascending order, the points of the resulting rule are ordered lexicographically with x running fastest.
In order to avoid a conflict with the copy constructor in 1d, we let the argument be a 0d quadrature formula for dim==1, and a 1d quadrature formula for all other space dimensions.
This constructor does not require that constant functions are integrated exactly. Therefore, it is appropriate if the onedimensional formula is defined with respect to a weighting function.
If dim == 0, the resulting quadrature formula will be a single Point<0> having unit weight.
Definition at line 228 of file quadrature.cc.
Quadrature< dim >::Quadrature  (  const Quadrature< dim > &  q  ) 
Copy constructor.
Definition at line 266 of file quadrature.cc.

defaultnoexcept 
Move constructor. Construct a new quadrature object by transferring the internal data of another quadrature object.
Quadrature< dim >::Quadrature  (  const std::vector< Point< dim >> &  points, 
const std::vector< double > &  weights  
) 
Construct a quadrature formula from given vectors of quadrature points (which should really be in the unit cell) and the corresponding weights. You will want to have the weights sum up to one, but this is not checked.
Definition at line 61 of file quadrature.cc.
Quadrature< dim >::Quadrature  (  const std::vector< Point< dim >> &  points  ) 
Construct a dummy quadrature formula from a list of points, with weights set to infinity. The resulting object is therefore not meant to actually perform integrations, but rather to be used with FEValues objects in order to find the position of some points (the quadrature points in this object) on the transformed cell in real space.
Definition at line 74 of file quadrature.cc.
Quadrature< dim >::Quadrature  (  const Point< dim > &  point  ) 
Constructor for a onepoint quadrature. Sets the weight of this point to one.
Definition at line 86 of file quadrature.cc.

overridevirtualdefault 
Virtual destructor.
Quadrature< 0 >::Quadrature  (  const unsigned int  n_q  ) 
Definition at line 31 of file quadrature.cc.
Quadrature< dim > & Quadrature< dim >::operator=  (  const Quadrature< dim > &  q  ) 
Assignment operator. Copies contents of weights and quadrature_points as well as size.
Definition at line 281 of file quadrature.cc.

default 
Move assignment operator. Moves all data from another quadrature object to this object.
bool Quadrature< dim >::operator==  (  const Quadrature< dim > &  p  )  const 
Test for equality of two quadratures.
Definition at line 301 of file quadrature.cc.
void Quadrature< dim >::initialize  (  const std::vector< Point< dim >> &  points, 
const std::vector< double > &  weights  
) 
Set the quadrature points and weights to the values provided in the arguments.
Definition at line 50 of file quadrature.cc.
unsigned int Quadrature< dim >::size  (  )  const 
Number of quadrature points.
const Point<dim>& Quadrature< dim >::point  (  const unsigned int  i  )  const 
Return the i
th quadrature point.
const std::vector<Point<dim> >& Quadrature< dim >::get_points  (  )  const 
Return a reference to the whole array of quadrature points.
double Quadrature< dim >::weight  (  const unsigned int  i  )  const 
Return the weight of the i
th quadrature point.
const std::vector<double>& Quadrature< dim >::get_weights  (  )  const 
Return a reference to the whole array of weights.
std::size_t Quadrature< dim >::memory_consumption  (  )  const 
Determine an estimate for the memory consumption (in bytes) of this object.
Definition at line 310 of file quadrature.cc.
void Quadrature< dim >::serialize  (  Archive &  ar, 
const unsigned int  version  
) 
Write or read the data of this object to or from a stream for the purpose of serialization using the BOOST serialization library.
bool Quadrature< dim >::is_tensor_product  (  )  const 
This function returns true if the quadrature object is a tensor product of onedimensional formulas and the quadrature points are sorted lexicographically.
std::conditional< dim==1, std::array< Quadrature< 1 >, dim >, const std::array< Quadrature< 1 >, dim > & >::type Quadrature< dim >::get_tensor_basis  (  )  const 
In case the quadrature formula is a tensor product, this function returns the dim
onedimensional basis objects. Otherwise, calling this function is not allowed.
For dim
equal to one, we can not return the std::array as a const reference and have to return it by value. In this case, the array will always contain a single element (this
).
Definition at line 322 of file quadrature.cc.

inherited 
Subscribes a user of the object by storing the pointer validity
. The subscriber may be identified by text supplied as identifier
.
Definition at line 136 of file subscriptor.cc.

inherited 
Unsubscribes a user from the object.
identifier
and the validity
pointer must be the same as the one supplied to subscribe(). Definition at line 156 of file subscriptor.cc.

inlineinherited 
Return the present number of subscriptions to this object. This allows to use this class for reference counted lifetime determination where the last one to unsubscribe also deletes the object.
Definition at line 301 of file subscriptor.h.

inlineinherited 
List the subscribers to the input stream
.
Definition at line 318 of file subscriptor.h.

inherited 
List the subscribers to deallog
.
Definition at line 204 of file subscriptor.cc.

protected 
List of quadrature points. To be filled by the constructors of derived classes.
Definition at line 289 of file quadrature.h.

protected 
List of weights of the quadrature points. To be filled by the constructors of derived classes.
Definition at line 295 of file quadrature.h.

protected 
Indicates if this object represents quadrature formula that is a tensor product of onedimensional formulas. This flag is set if dim==1 or the constructors taking a Quadrature<1> (and possibly a Quadrature<dim1> object) is called. This implies that the quadrature points are sorted lexicographically.
Definition at line 304 of file quadrature.h.

protected 
Stores the onedimensional tensor basis objects in case this object can be represented by a tensor product.
Definition at line 310 of file quadrature.h.