Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
<tt>integrate_option</tt>

expression integration options

Description

This class sends options to the integrate function, when building a form or a field.

Its allows one to choose the quadrature formula used during the numerical integration (Gauss, Gauss-Lobatto, etc) and the polynomial degree that is exactly integrated. This exactly integrated polynomial degree is called here the order of the quadrature formula. See also quadrature for examples of quadrature formula.

In addition to the customization of the quadrature formula, the present class provides some booleaan flags, e.g. computation of the inverse matrix.

Quadrature families

gauss

‍ The Gauss formula is the default.

gauss_lobatto

‍ The Gauss-Lobatto formula is useful in some cases, e.g. when using the method of characteristic. It is actually implemented for order <= 2.

gauss_radau

‍ The Gauss-Radau formula is another classical alternative.

middle_edge

‍ The nodes are located at the midle edge. This formula is useful in some special cases and its order is limited.

superconvergent

‍ Another special case, for testing superconvergence of the finite element method at some specific nodes.

equispaced

‍ When the solution has low regularity, e.g. is discontinuous across elements, this simple formula is also useful. In that case, the order parameter refers to the number of nodes used and not to the degree of polynomial exactly integated. For instance, order=1 refers to the trapezoidal formulae and for the general case, there are order+1 nodes per edges.

Boolean flags

invert

‍ This flag, when set, performs a local inversion on the matrix at the element level: This procedure is allowed only when the global matrix is block diagonal, e.g. for discontinuous or bubble approximations. This property is true when basis functions have a compact support inside exactly one element. Default is invert=false.

ignore_sys_coord

‍ This flag has effects only for axisymmetric coordinate systems. When set, it omits the r weight in the r dr dz measure during the numerical integration performed the integrate function. This feature is useful for computing the stream function in the axisymmetric case. Default is ignore_sys_coord=false.

lump

‍ This flag, when set, performs a mass lumping procedure on the matrix at the element level:

a(i,i) += sum(j!=i) a(i,j)

‍ The resulting matrix is diagonal. This feature is useful for computing a diagonal approximation of the mass matrix for the continuous P1 element. Default is lump=false.

Implementation

This documentation has been generated from file fem/geo_element/integrate_option.h

class integrate_option {
public:
// typedefs:
typedef size_t size_type;
typedef enum {
gauss = 0,
} family_type; // update also family_name[] in quatrature.cc
static const size_type unset_order = std::numeric_limits<size_type>::max();
// allocators:
integrate_option(
integrate_option (const std::string& name);
integrate_option (const integrate_option& iopt);
integrate_option& operator= (const integrate_option& iopt);
// accessors & modifiers:
std::string name() const;
size_t get_order() const;
std::string get_family_name() const;
void reset (const std::string& name);
void set_order (size_t r);
void set_family (family_type type);
void set_family (std::string name);
// data:
field::size_type size_type
Definition branch.cc:430
std::string name() const
void reset(const std::string &name)
void set_family(family_type type)
integrate_option & operator=(const integrate_option &iopt)
static const family_type default_family
std::string get_family_name() const
family_type get_family() const
static const size_type default_order
static const size_type unset_order
};