Partial quadrature spaces

Creating a partial quadrature space

A partial quadrature space is defined by a finite element discretization, a location, i.e. a material or a boundary, and a function selecting the integration rule of each element:

auto qspace = construct<PartialQuadratureSpace>(
    fed, BoundaryIdentifier{.id = 2}, selector);

A partial quadrature space defined on a boundary is built on the boundary elements of the mesh of the finite element discretization.

Another constructor takes a finite element space as second argument, for instance a finite element space defined on a submesh. This finite element space must be managed by the finite element discretization.

Note

A partial quadrature space is handled by value: its copies share the same data and compare equal.

Retrieving information on a partial quadrature space

The PartialQuadratureSpaceInformation structure contains some relevant information about a partial quadrature space:

  • the identifier and a description of the underlying material or boundary, including its name, if defined,

  • the total number of elements,

  • the total number of integration points,

  • the number of quadrature points per geometric type.

This structure is created by:

  • getLocalInformation, which returns the information relative to the current process.

  • getInformation, which returns the information gathered from all processes.

The PartialQuadratureSpaceInformation structure can be printed to an output stream using the info function.

Note

There is also an overload of the info function that takes a partial quadrature space as argument, which builds internally a PartialQuadratureSpaceInformation, synchronizes it over all processes and prints the result.

Example of usage

auto& bi = problem.getBehaviourIntegrator(ctx, 1, 0) | or_die;
const auto& qspace = bi.getPartialQuadratureSpace();
const auto success = mfem_mgis::info(ctx, std::cout, qspace);