KASKADE 7 development version
Public Member Functions | List of all members
CombinerConcept Class Reference

Algebraic combiner of global degrees of freedom to shape function coefficients. More...

#include <concepts.hh>

Detailed Description

Algebraic combiner of global degrees of freedom to shape function coefficients.

Combiners \( K \in \R^{n\times m} \), \( m\le n\), map the global degrees of freedom to linear combinations of shape functions, which represent the FE ansatz function on the given cell. To be precise, the \( m \) global ansatz function \( \varphi \) with a nonvanishing restriction \( \varphi|_T \) to the cell \( T \) are given as

\[ (\varphi|_T)_i = \sum_{j=1}^n (\psi\phi_j)K_{ji} \]

in terms of the \( n \) local shape functions \( \phi_j \) and the Converter \( \psi \).

This implies that if \( a\in\R^m \) is a finite element coefficient vector (localized to the dofs relevant for cell \( T \)), i.e. \( u = \sum_{i=1}^m a_i \varphi_i \), then \( Ka \in \R^n \) is the corresponding coefficient vector for representing \( u \) in terms of global shape functions, i.e. \( u = \sum_{j=1}^n (Ka)_j (\psi \phi_j) = a^T K^T \Psi \Phi\).

Similarly, if \( A \in \R^{k \times n} \) contains the values \( A_{lj} = \psi\phi_j(\xi_l) \) of global shape functions \( \psi\phi_j \) at \( k \) evaluation points \( \xi_l \), then \( (AK)_{li} = (\varphi|_T)_i (x_l) \) contains the values of the ansatz functions at the corresponding points \( x_l \).

Often this is trivial (just the identity), but may be diagonal containing 1 and -1 entries if global orientation has to be taken into account (e.g. edge elements), but may be a sparse or dense non-square matrix as well (trace spaces, or hp methods, hanging nodes).

For performance reasons, \( K \) is not simply represented as a matrix, but as an object with special interface.

Here we assume that Real is the scalar type in use.

Combiners have to be assignable and copy constructible.

Definition at line 270 of file concepts.hh.

Public Member Functions

template<int n, int m>
void rightTransform (DynamicMatrix< Dune::FieldMatrix< Real, n, m > > &A) const
 In-place computation of \( A \leftarrow A K \). More...
 
template<int n, int m>
void rightTransform (std::vector< VariationalArg< Real, n, m > > &v) const
 In-place computation of row vectors \( v \leftarrow v K \). More...
 
template<int n, int m>
void leftPseudoInverse (DynamicMatrix< Dune::FieldMatrix< Real, n, m > > &A) const
 In-place computation of \( A \leftarrow K^+ A \). Given a set of shape function coefficients, this computes the best fit of global ansatz function coefficients. More...
 
 operator Dune::BCRSMatrix< Dune::FieldMatrix< Real, 1, 1 > > () const
 Implicit conversion to a sparse matrix. More...
 

Member Function Documentation

◆ leftPseudoInverse()

template<int n, int m>
void CombinerConcept::leftPseudoInverse ( DynamicMatrix< Dune::FieldMatrix< Real, n, m > > &  A) const

In-place computation of \( A \leftarrow K^+ A \). Given a set of shape function coefficients, this computes the best fit of global ansatz function coefficients.

◆ operator Dune::BCRSMatrix< Dune::FieldMatrix< Real, 1, 1 > >()

CombinerConcept::operator Dune::BCRSMatrix< Dune::FieldMatrix< Real, 1, 1 > > ( ) const

Implicit conversion to a sparse matrix.

◆ rightTransform() [1/2]

template<int n, int m>
void CombinerConcept::rightTransform ( DynamicMatrix< Dune::FieldMatrix< Real, n, m > > &  A) const

In-place computation of \( A \leftarrow A K \).

Let \( A\in \R^{k\times n}\) with entries \( A_{lj} = \psi\phi_j(\xi_l)\) being the global shape function values at \( k \) points \( \xi_l \). On return, \( A \in \R^{k\times m} \) contains the corresponding global shape function values, i.e. \( A_{li} = (\varphi|_T)_i(x_l) \).

Similarly, if \( A \) contains shape function values, on return it contains corresponding ansatz function values.

The matrix \( A \) is resized if needed.

◆ rightTransform() [2/2]

template<int n, int m>
void CombinerConcept::rightTransform ( std::vector< VariationalArg< Real, n, m > > &  v) const

In-place computation of row vectors \( v \leftarrow v K \).

This computes ansatz function values from global shape function values as in the matrix case, but just for a single coefficient vector.


The documentation for this class was generated from the following file: