DUNE-FEM (2.10)
•All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
Public Types |
Public Member Functions |
Static Public Attributes |
Static Protected Member Functions |
List of all members
Dune::Fem::MatrixMapping< DomainFieldImp, RangeFieldImp, n, m1, m2 > Class Template Reference
JacobianRangeType class for matrix valued functions - derived from FieldMatrix. More...
#include <dune/fem/space/common/functionspace.hh>
Public Types | |
typedef DomainFieldImp | DomainFieldType |
Intrinsic type used for values in the domain field (usually a double) More... | |
typedef RangeFieldImp | RangeFieldType |
Intrinsic type used for values in the range field (usually a double) More... | |
typedef RangeMatrix< RangeFieldImp, m1, m2 > | RangeType |
Type of range vector (using type of range field) has a Dune::FieldVector type interface. More... | |
typedef FieldMatrix< RangeFieldImp, m1 *m2, n > | BaseType |
type of base class | |
typedef Traits::derived_type | derived_type |
type of derived matrix class | |
typedef Traits::value_type | value_type |
export the type representing the field | |
typedef Traits::value_type | field_type |
export the type representing the field | |
typedef Traits::value_type | block_type |
export the type representing the components | |
typedef DenseIterator< DenseMatrix, row_type, row_reference > | Iterator |
Iterator class for sequential access. | |
typedef Iterator | iterator |
typedef for stl compliant access | |
typedef Iterator | RowIterator |
rename the iterators for easier access | |
typedef std::remove_reference< row_reference >::type::Iterator | ColIterator |
rename the iterators for easier access | |
typedef DenseIterator< const DenseMatrix, const row_type, const_row_reference > | ConstIterator |
Iterator class for sequential access. | |
typedef ConstIterator | const_iterator |
typedef for stl compliant access | |
typedef ConstIterator | ConstRowIterator |
rename the iterators for easier access | |
typedef std::remove_reference< const_row_reference >::type::ConstIterator | ConstColIterator |
rename the iterators for easier access | |
Public Member Functions | |
MatrixMapping () | |
Default constructor. | |
MatrixMapping (const RangeFieldImp &k) | |
Constructor initializing the whole matrix with a scalar. | |
FieldVector< DomainFieldImp, n > & | operator[] (int i) |
returning reference to row More... | |
const FieldVector< DomainFieldImp, n > & | operator[] (int i) const |
returning reference to row More... | |
constexpr size_type | rows () const |
number of rows | |
constexpr size_type | cols () const |
number of columns | |
FieldMatrix< RangeFieldImp, COLS, ROWS > | transposed () const |
Return transposed of the matrix as FieldMatrix. | |
derived_type | operator- () const |
Matrix negation. | |
FieldMatrix< RangeFieldImp, l, cols > | leftmultiplyany (const FieldMatrix< RangeFieldImp, l, rows > &M) const |
Multiplies M from the left to this matrix, this matrix is not modified. | |
FieldMatrix & | rightmultiply (const FieldMatrix< RangeFieldImp, r, c > &M) |
Multiplies M from the right to this matrix. | |
FieldMatrix< RangeFieldImp, ROWS, COLS > & | rightmultiply (const DenseMatrix< M2 > &M) |
Multiplies M from the right to this matrix. | |
FieldMatrix< RangeFieldImp, rows, l > | rightmultiplyany (const FieldMatrix< RangeFieldImp, cols, l > &M) const |
Multiplies M from the right to this matrix, this matrix is not modified. | |
row_reference | operator[] (size_type i) |
random access | |
size_type | size () const |
size method (number of rows) | |
Iterator | begin () |
begin iterator | |
ConstIterator | begin () const |
begin iterator | |
Iterator | end () |
end iterator | |
ConstIterator | end () const |
end iterator | |
Iterator | beforeEnd () |
ConstIterator | beforeEnd () const |
Iterator | beforeBegin () |
ConstIterator | beforeBegin () const |
derived_type & | operator+= (const DenseMatrix< Other > &x) |
vector space addition | |
derived_type & | operator-= (const DenseMatrix< Other > &x) |
vector space subtraction | |
derived_type & | operator*= (const field_type &k) |
vector space multiplication with scalar | |
derived_type & | operator/= (const field_type &k) |
vector space division by scalar | |
derived_type & | axpy (const field_type &a, const DenseMatrix< Other > &x) |
vector space axpy operation (*this += a x) | |
bool | operator== (const DenseMatrix< Other > &x) const |
Binary matrix comparison. | |
bool | operator!= (const DenseMatrix< Other > &x) const |
Binary matrix incomparison. | |
void | mv (const X &x, Y &y) const |
y = A x | |
void | mtv (const X &x, Y &y) const |
y = A^T x | |
void | umv (const X &x, Y &y) const |
y += A x | |
void | umtv (const X &x, Y &y) const |
y += A^T x | |
void | umhv (const X &x, Y &y) const |
y += A^H x | |
void | mmv (const X &x, Y &y) const |
y -= A x | |
void | mmtv (const X &x, Y &y) const |
y -= A^T x | |
void | mmhv (const X &x, Y &y) const |
y -= A^H x | |
void | usmv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const |
y += alpha A x | |
void | usmtv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const |
y += alpha A^T x | |
void | usmhv (const typename FieldTraits< Y >::field_type &alpha, const X &x, Y &y) const |
y += alpha A^H x | |
FieldTraits< value_type >::real_type | frobenius_norm () const |
frobenius norm: sqrt(sum over squared values of entries) | |
FieldTraits< value_type >::real_type | frobenius_norm2 () const |
square of frobenius norm, need for block recursion | |
FieldTraits< vt >::real_type | infinity_norm () const |
infinity norm (row sum norm, how to generalize for blocks?) | |
FieldTraits< vt >::real_type | infinity_norm () const |
infinity norm (row sum norm, how to generalize for blocks?) | |
FieldTraits< vt >::real_type | infinity_norm_real () const |
simplified infinity norm (uses Manhattan norm for complex values) | |
FieldTraits< vt >::real_type | infinity_norm_real () const |
simplified infinity norm (uses Manhattan norm for complex values) | |
void | solve (V1 &x, const V2 &b, bool doPivoting=true) const |
Solve system A x = b. More... | |
void | invert (bool doPivoting=true) |
Compute inverse. More... | |
field_type | determinant (bool doPivoting=true) const |
calculates the determinant of this matrix | |
FieldMatrix< RangeFieldImp, ROWS, COLS > & | leftmultiply (const DenseMatrix< M2 > &M) |
Multiplies M from the left to this matrix. | |
constexpr size_type | N () const |
number of rows | |
constexpr size_type | M () const |
number of columns | |
bool | exists (size_type i, size_type j) const |
return true when (i,j) is in pattern | |
Static Protected Member Functions | |
static void | luDecomposition (DenseMatrix< FieldMatrix< RangeFieldImp, ROWS, COLS > > &A, Func func, Mask &nonsingularLanes, bool throwEarly, bool doPivoting) |
do an LU-Decomposition on matrix A More... | |
Detailed Description
template<typename DomainFieldImp, typename RangeFieldImp, int n, int m1, int m2>
class Dune::Fem::MatrixMapping< DomainFieldImp, RangeFieldImp, n, m1, m2 >
class Dune::Fem::MatrixMapping< DomainFieldImp, RangeFieldImp, n, m1, m2 >
JacobianRangeType class for matrix valued functions - derived from FieldMatrix.
Member Typedef Documentation
◆ DomainFieldType
template<typename DomainFieldImp , typename RangeFieldImp , int n, int m1, int m2>
typedef DomainFieldImp Dune::Fem::MatrixMapping< DomainFieldImp, RangeFieldImp, n, m1, m2 >::DomainFieldType |
Intrinsic type used for values in the domain field (usually a double)
◆ RangeFieldType
template<typename DomainFieldImp , typename RangeFieldImp , int n, int m1, int m2>
typedef RangeFieldImp Dune::Fem::MatrixMapping< DomainFieldImp, RangeFieldImp, n, m1, m2 >::RangeFieldType |
Intrinsic type used for values in the range field (usually a double)
◆ RangeType
template<typename DomainFieldImp , typename RangeFieldImp , int n, int m1, int m2>
typedef RangeMatrix<RangeFieldImp, m1,m2> Dune::Fem::MatrixMapping< DomainFieldImp, RangeFieldImp, n, m1, m2 >::RangeType |
Type of range vector (using type of range field) has a Dune::FieldVector type interface.
Member Function Documentation
◆ beforeBegin() [1/2]
|
inlineinherited |
- Returns
- an iterator that is positioned before the first entry of the vector.
◆ beforeBegin() [2/2]
|
inlineinherited |
- Returns
- an iterator that is positioned before the first entry of the vector.
◆ beforeEnd() [1/2]
|
inlineinherited |
- Returns
- an iterator that is positioned before the end iterator of the vector, i.e. at the last entry.
◆ beforeEnd() [2/2]
|
inlineinherited |
- Returns
- an iterator that is positioned before the end iterator of the vector. i.e. at the last element
◆ invert()
|
inherited |
Compute inverse.
- Exceptions
-
FMatrixError if the matrix is singular
◆ luDecomposition()
|
staticprotectedinherited |
do an LU-Decomposition on matrix A
- Parameters
-
A The matrix to decompose, and to store the result in. func Functor used for swapping lanes and to conduct the elimination. Depending on the functor, luDecomposition()
can be used for solving, for inverting, or to compute the determinant.nonsingularLanes SimdMask of lanes that are nonsingular. throwEarly Whether to throw an FMatrixError
immediately as soon as one lane is discovered to be singular. Iffalse
, do not throw, instead continue until finished or all lanes are singular, and exit via return in both cases.doPivoting Enable pivoting.
There are two modes of operation:
-
Terminate as soon as one lane is discovered to be singular. Early termination is done by throwing an
FMatrixError
. On entry,Simd::allTrue(nonsingularLanes)
andthrowEarly==true
should hold. After early termination, the contents ofA
should be considered bogus, andnonsingularLanes
has the lane(s) that triggered the early termination unset. There may be more singular lanes than the one reported innonsingularLanes
, which just haven't been discovered yet; so the value ofnonsingularLanes
is mostly useful for diagnostics. -
Terminate only when all lanes are discovered to be singular. Use this when you want to apply special postprocessing in singular lines (e.g. setting the determinant of singular lanes to 0 in
determinant()
). On entry,nonsingularLanes
may have any value andthrowEarly==false
should hold. The function will not throw an exception if some lanes are discovered to be singular, instead it will continue running until all lanes are singular or until finished, and terminate only via normal return. On exit,nonsingularLanes
contains the map of lanes that are valid inA
.
◆ operator[]() [1/2]
template<typename DomainFieldImp , typename RangeFieldImp , int n, int m1, int m2>
|
inline |
returning reference to row
- Parameters
-
i number of row
- Returns
- Reference to row
◆ operator[]() [2/2]
template<typename DomainFieldImp , typename RangeFieldImp , int n, int m1, int m2>
|
inline |
returning reference to row
- Parameters
-
i number of row
- Returns
- Reference to row
◆ solve()
|
inherited |
Solve system A x = b.
- Exceptions
-
FMatrixError if the matrix is singular
The documentation for this class was generated from the following file:
- dune/fem/space/common/functionspace.hh
