Dune Core Modules (unstable)

A Matrix class to support different block types. More...

#include <dune/istl/multitypeblockmatrix.hh>

Public Types

typedef MultiTypeBlockMatrix< FirstRow, Args... > type
 
using size_type = std::size_t
 Type used for sizes.
 
using field_type = Std::detected_t< std::common_type_t, typename FieldTraits< FirstRow >::field_type, typename FieldTraits< Args >::field_type... >
 The type used for scalars. More...
 
using real_type = Std::detected_t< std::common_type_t, typename FieldTraits< FirstRow >::real_type, typename FieldTraits< Args >::real_type... >
 The type used for real values. More...
 

Public Member Functions

template<size_type index>
auto operator[] (const std::integral_constant< size_type, index > indexVariable) -> decltype(std::get< index >(*this))
 Random-access operator. More...
 
template<size_type index>
auto operator[] (const std::integral_constant< size_type, index > indexVariable) const -> decltype(std::get< index >(*this))
 Const random-access operator. More...
 
template<typename T >
void operator= (const T &newval)
 
MultiTypeBlockMatrixoperator*= (const field_type &k)
 vector space multiplication with scalar
 
MultiTypeBlockMatrixoperator/= (const field_type &k)
 vector space division by scalar
 
MultiTypeBlockMatrixoperator+= (const MultiTypeBlockMatrix &b)
 Add the entries of another matrix to this one. More...
 
MultiTypeBlockMatrixoperator-= (const MultiTypeBlockMatrix &b)
 Subtract the entries of another matrix from this one. More...
 
template<typename X , typename Y >
void mv (const X &x, Y &y) const
 y = A x
 
template<typename X , typename Y >
void umv (const X &x, Y &y) const
 y += A x
 
template<typename X , typename Y >
void mmv (const X &x, Y &y) const
 y -= A x
 
template<typename AlphaType , typename X , typename Y >
void usmv (const AlphaType &alpha, const X &x, Y &y) const
 y += alpha A x
 
template<typename X , typename Y >
void mtv (const X &x, Y &y) const
 y = A^T x
 
template<typename X , typename Y >
void umtv (const X &x, Y &y) const
 y += A^T x
 
template<typename X , typename Y >
void mmtv (const X &x, Y &y) const
 y -= A^T x
 
template<typename X , typename Y >
void usmtv (const field_type &alpha, const X &x, Y &y) const
 y += alpha A^T x
 
template<typename X , typename Y >
void umhv (const X &x, Y &y) const
 y += A^H x
 
template<typename X , typename Y >
void mmhv (const X &x, Y &y) const
 y -= A^H x
 
template<typename X , typename Y >
void usmhv (const field_type &alpha, const X &x, Y &y) const
 y += alpha A^H x
 
real_type frobenius_norm2 () const
 square of frobenius norm, need for block recursion
 
real_type frobenius_norm () const
 frobenius norm: sqrt(sum over squared values of entries)
 
real_type infinity_norm () const
 Bastardized version of the infinity-norm / row-sum norm.
 
real_type infinity_norm_real () const
 Bastardized version of the infinity-norm / row-sum norm.
 

Static Public Member Functions

static constexpr size_type N ()
 Return the number of matrix rows.
 
static constexpr size_type M ()
 Return the number of matrix columns.
 

Detailed Description

template<typename FirstRow, typename... Args>
class Dune::MultiTypeBlockMatrix< FirstRow, Args >

A Matrix class to support different block types.

This matrix class combines MultiTypeBlockVector elements as rows.


The documentation for this class was generated from the following files:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 21, 23:30, 2024)