Intrepid
Function space tools

## Overview

Intrepid::FunctionSpaceTools is a stateless class of expert methods for operations on finite element subspaces of , , and . In Intrepid these spaces are referred to as HGRAD, HCURL, HDIV and HVOL. There are four basic groups of methods:

• Transformation methods provide implementation of pullbacks for HGRAD, HCURL, HDIV and HVOL finite element functions. Thease are essentialy the "change of variables rules" needed to transform values of basis functions and their derivatives defined on a reference element to a physical element . See Section Pullbacks for details
• Measure computation methods implement the volume, surface and line measures required for computation of integrals in the physical frame by changing variables to reference frame. See Section Measure for details.
• Integration methods implement the algebraic operations to compute ubiquitous integrals of finite element functions: integrals arising in bilinear forms and linear functionals.
• Methods for algebraic and vector-algebraic operations on multi-dimensional arrays with finite element function values. These methods are used to prepare multidimensional arrays with data and finite element function values for the integration routines. They also include evaluation methods to compute finite element function values at some given points in physical frame; see Section Evaluation of finite element fields.

## Pullbacks

Notation in this section follows the standard definition of a finite element space by Ciarlet; see The Finite Element Method for Elliptic Problems, Classics in Applied Mathematics, SIAM, 2002. Given a reference cell with a basis , the basis of is defined as follows:

In this formula , where , are the field signs, and is the pullback ("change of variables") transformation. For scalar spaces such as HGRAD and HVOL the field signs are always equal to 1 and can be disregarded. For vector field spaces such as HCURL or HDIV, the field sign of a basis function can be +1 or -1, depending on the orientation of the physical edge or face, associated with the basis function.

The actual form of the pullback depends on which one of the four function spaces HGRAD, HCURL, HDIV and HVOL is being approximated and is computed as follows. Let denote the reference-to-physical map (see Section Reference-to-physical cell mapping); is its Jacobian (see Section Jacobian of the reference-to-physical cell mapping) and . Then,

Intrepid supports pullbacks only for cell topologies that have reference cells; see Reference cells.

## Measure

In Intrepid integrals of finite element functions over cells, 2-subcells (faces) and 1-subcells (edges) are computed by change of variables to reference frame and require three different kinds of measures.

1. The integral of a scalar function over a cell

requires the volume measure defined by the determinant of the Jacobian. This measure is computed by Intrepid::FunctionSpaceTools::computeCellMeasure
2. The integral of a scalar function over 2-subcell

requires the surface measure defined by the norm of the vector product of the surface tangents. This measure is computed by Intrepid::FunctionSpaceTools::computeFaceMeasure. In this formula R is the parametrization domain for the 2-subcell; see Section Parametrization of physical 1- and 2-subcells for details.
3. The integral of a scalar function over a 1-subcell

requires the arc measure defined by the norm of the arc tangent vector. This measure is computed by Intrepid::FunctionSpaceTools::computeEdgeMeasure. In this formula R is the parametrization domain for the 1-subcell; see Section Parametrization of physical 1- and 2-subcells for details.

## Evaluation of finite element fields

To make this example more specific, assume curl-conforming finite element spaces. Suppose that we have a physical cell with a basis . A finite element function on this cell is defined by a set of n coefficients :

From Section Pullbacks it follows that

where is the pre-image of x in the reference cell.

Consequently, evaluation of finite element functions at a given set of points comprises of the following four steps:

1. Application of the inverse map to obtain the pre-images of the evaluation points in the reference cell ; see Intrepid::CellTools::mapToReferenceFrame
2. Evaluation of the appropriate reference basis set at the pre-image set ; see Intrepid::Basis::getValues
3. Application of the appropriate transformation and field signs. In our example the finite element space is curl-conforming and the appropriate transformation is implemented in Intrepid::FunctionSpaceTools::HCURLtransformVALUE. Application of the signs to the transformed functions is done by Intrepid::FunctionSpaceTools::applyFieldSigns.
4. The final step is to compute the sum of the transformed and signed basis function values multiplied by the coefficients of the finite element function using Intrepid::FunctionSpaceTools::evaluate.

Evaluation of adimssible derivatives of finite element functions is completely analogous and follows the same four steps. Evaluation of scalar finite element functions is simpler because application of the signes can be skipped for these functions.

## Evaluation of finite element operators and functionals

Assume the same setting as in Section Evaluation of finite element fields. A finite element operator defined by the finite element basis on the physical cell is a matrix

where and are left and right operators acting on the basis functions. Typically, when the left and the right basis functions are from the same finite element basis (as in this example), the left and right operators are the same. If they are set to VALUE we get a mass matrix; if they are set to an admissible differential operator we get a stiffnesss matrix. Assume again that the basis is curl-conforming and the operators are set to VALUE. Using the basis definition from Section Pullbacks we have that

It follows that

where

is the raw cell operator matrix. The methods Intrepid::FunctionSpaceTools::applyLeftFieldSigns and Intrepid::FunctionSpaceTools::applyRightFieldSigns apply the left and right diagonal sign matrices to the raw cell operator.

A finite element operator defined by the finite element basis on the physical cell is a vector

Assuming again operator VALUE and using the same arguments as above, we see that

where

is the raw cell functional.