KASKADE 7 development version
Static Public Attributes | List of all members
Kaskade::FunctionalBase< Type >::D2< row, col > Struct Template Reference

Static a priori default information about the matrix blocks. More...

#include <functional_aux.hh>

Detailed Description

template<ProblemType Type>
template<int row, int col>
struct Kaskade::FunctionalBase< Type >::D2< row, col >

Static a priori default information about the matrix blocks.

These flags declare structural properties of the individual blocks arising in the matrix of this problem and can be exploited by the assembler implementation for improved efficiency.

Definition at line 103 of file functional_aux.hh.

Static Public Attributes

static constexpr bool present = type==WeakFormulation || row>=col
 Whether the block is to be assembled and stored or not. The default value is the conservative one (but maybe inefficient) that all blocks are structurally nonzero. Note that for variational problems (which are necessarily symmetric), only the lower triangular part is accessed and hence in this case the default omits the superdiagonal blocks. More...
 
static constexpr bool symmetric = type==VariationalFunctional && row==col
 Whether the block is structurally symmetric (or hermitian). The default is true for diagonal blocks of variational problems (which are necessarily symmetric), and the conservative non-symmetric otherwise. Note that actually symmetric blocks are correctly stored if this flag is false, but the storage may be less efficient. The assembler implementation may choose whichever storage it likes, this flag is merely a hint that symmetry-exploiting optimizations are safe. More...
 
static constexpr bool makePositive = false
 If this flag is true (and symmetric==true), the assembler will enforce positive semidefiniteness of all local matrices by projecting them onto the cone of psd matrices. More...
 
static constexpr bool lumped = false
 If this flag is true, only the diagonal of this block will be assembled and stored. This is mainly useful for hierarchical error estimators. Note that setting this flag true for mass matrices does not give a traditional lumped mass matrix (as the integration weights are different). More...
 
static constexpr bool constant = false
 
static constexpr int derivatives = 1
 The maximum ansatz and test function derivative occuring in this block. More...
 

Member Data Documentation

◆ constant

template<ProblemType Type>
template<int row, int col>
constexpr bool Kaskade::FunctionalBase< Type >::D2< row, col >::constant = false
staticconstexpr

Definition at line 141 of file functional_aux.hh.

◆ derivatives

template<ProblemType Type>
template<int row, int col>
constexpr int Kaskade::FunctionalBase< Type >::D2< row, col >::derivatives = 1
staticconstexpr

The maximum ansatz and test function derivative occuring in this block.

A default value of 1 is provided in the base class, which is appropriate for second order PDEs.

Definition at line 148 of file functional_aux.hh.

◆ lumped

template<ProblemType Type>
template<int row, int col>
constexpr bool Kaskade::FunctionalBase< Type >::D2< row, col >::lumped = false
staticconstexpr

If this flag is true, only the diagonal of this block will be assembled and stored. This is mainly useful for hierarchical error estimators. Note that setting this flag true for mass matrices does not give a traditional lumped mass matrix (as the integration weights are different).

Definition at line 139 of file functional_aux.hh.

◆ makePositive

template<ProblemType Type>
template<int row, int col>
constexpr bool Kaskade::FunctionalBase< Type >::D2< row, col >::makePositive = false
staticconstexpr

If this flag is true (and symmetric==true), the assembler will enforce positive semidefiniteness of all local matrices by projecting them onto the cone of psd matrices.

While this destroys accuracy in the Taylor approximation, it can be very convenient in algorithms for nonconvex minimization.

Definition at line 131 of file functional_aux.hh.

◆ present

template<ProblemType Type>
template<int row, int col>
constexpr bool Kaskade::FunctionalBase< Type >::D2< row, col >::present = type==WeakFormulation || row>=col
staticconstexpr

Whether the block is to be assembled and stored or not. The default value is the conservative one (but maybe inefficient) that all blocks are structurally nonzero. Note that for variational problems (which are necessarily symmetric), only the lower triangular part is accessed and hence in this case the default omits the superdiagonal blocks.

If present is false, the functional's d2 method will never be called for this block.

Definition at line 113 of file functional_aux.hh.

◆ symmetric

template<ProblemType Type>
template<int row, int col>
constexpr bool Kaskade::FunctionalBase< Type >::D2< row, col >::symmetric = type==VariationalFunctional && row==col
staticconstexpr

Whether the block is structurally symmetric (or hermitian). The default is true for diagonal blocks of variational problems (which are necessarily symmetric), and the conservative non-symmetric otherwise. Note that actually symmetric blocks are correctly stored if this flag is false, but the storage may be less efficient. The assembler implementation may choose whichever storage it likes, this flag is merely a hint that symmetry-exploiting optimizations are safe.

Definition at line 121 of file functional_aux.hh.


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