KASKADE 7 development version
|
Provides static information about the submatrix blocks of the stiffness block matrix. More...
#include <variationalfunctional.hh>
Provides static information about the submatrix blocks of the stiffness block matrix.
This block info concept defines the interface that is accessed by the assembler. This is not a base class, only a documentation!
The class provides static information about the row-col block of the second derivative.
Definition at line 342 of file variationalfunctional.hh.
Static Public Attributes | |
static bool const | present |
Specifies the presence of a submatrix block. More... | |
static bool const | symmetric |
Specifies whether the subblock is symmetric. More... | |
static const bool | makePositive |
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 bool const | lumped |
Specifies whether only the diagonal of the subblock shall be assembled. Is true if only the diagonal of the second derivative shall be assembled. This is usually false, but can be set to true e.g. for hierarchical error estimation. More... | |
static int const | derivatives |
Determines the highest derivatives that need to be available for evaluation of this block. More... | |
|
static |
Determines the highest derivatives that need to be available for evaluation of this block.
The default is one, but it may be set to 0 or 2.
Definition at line 410 of file variationalfunctional.hh.
|
static |
Specifies whether only the diagonal of the subblock shall be assembled. Is true if only the diagonal of the second derivative shall be assembled. This is usually false, but can be set to true e.g. for hierarchical error estimation.
Definition at line 403 of file variationalfunctional.hh.
|
static |
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.
If this is true, the variational functional must have a member function
that defines the relative limit \( \alpha \) to which "positivity" is enforced: All eigenvalues \( \lambda \) are shifted (if necessary) to satisfy \( \lambda \ge \alpha \max(|\lambda_{\max}|,|\lambda_{\min}|) \). The default implementation in the base class FunctionalBase uses \( \alpha = -10\epsilon \), with machine precision \( \epsilon \).
While this destroys accuracy in the Taylor approximation, it can be very convenient in algorithms for nonconvex minimization.
Definition at line 395 of file variationalfunctional.hh.
|
static |
Specifies the presence of a submatrix block.
Is true if that block is statically present, i.e. if variable \( u_{\mathrm{row}} \) and \( u_{\mathrm{col}}\) are nonlinearly coupled.
For second derivatives (problem type is VariationalFunctional), which are assumed to be always symmetric, only the lower triangular blocks need be present.
Announcing blocks as not present allows the assembler to save both memory and cput time as such blocks are completely ignored.
Definition at line 357 of file variationalfunctional.hh.
|
static |
Specifies whether the subblock is symmetric.
Should be true if the block is conceptually symmetric, i.e. if EvaluationCache::d2 with row/col and arg1/arg2 exchanged returns the same value. Note that this does not imply that the Galerkin representation is symmetric, since using different ansatz/test spaces are possible.
Announcing a block to be symmetric allows the assembler to save both memory and cpu time by accessing only the lower half of the matrix block.
Note that if the problem type is VariationalFunctional, all diagonal blocks (row==col) are implicitly assumed to be symmetric.
Definition at line 374 of file variationalfunctional.hh.