dune-istl  2.2.0
Classes | Enumerations | Functions
Block Recursive Iterative Kernels
Sparse Matrix and Vector classes

Classes

struct  Dune::BL< l >
 compile-time parameter for block recursion depth More...
struct  Dune::algmeta_btsolve< I, diag, relax >
struct  Dune::algmeta_btsolve< 0, withdiag, withrelax >
struct  Dune::algmeta_btsolve< 0, withdiag, norelax >
struct  Dune::algmeta_btsolve< 0, nodiag, withrelax >
struct  Dune::algmeta_btsolve< 0, nodiag, norelax >
struct  Dune::algmeta_bdsolve< I, relax >
struct  Dune::algmeta_bdsolve< 0, withrelax >
struct  Dune::algmeta_bdsolve< 0, norelax >
struct  Dune::algmeta_itsteps< I >
struct  Dune::algmeta_itsteps< 0 >
class  Dune::MatrixBlockError

Enumerations

enum  Dune::WithDiagType { Dune::withdiag = 1, Dune::nodiag = 0 }
enum  Dune::WithRelaxType { Dune::withrelax = 1, Dune::norelax = 0 }

Functions

template<class M , class X , class Y >
void Dune::bltsolve (const M &A, X &v, const Y &d)
 block lower triangular solve
template<class M , class X , class Y , class K >
void Dune::bltsolve (const M &A, X &v, const Y &d, const K &w)
 relaxed block lower triangular solve
template<class M , class X , class Y >
void Dune::ubltsolve (const M &A, X &v, const Y &d)
 unit block lower triangular solve
template<class M , class X , class Y , class K >
void Dune::ubltsolve (const M &A, X &v, const Y &d, const K &w)
 relaxed unit block lower triangular solve
template<class M , class X , class Y >
void Dune::butsolve (const M &A, X &v, const Y &d)
 block upper triangular solve
template<class M , class X , class Y , class K >
void Dune::butsolve (const M &A, X &v, const Y &d, const K &w)
 relaxed block upper triangular solve
template<class M , class X , class Y >
void Dune::ubutsolve (const M &A, X &v, const Y &d)
 unit block upper triangular solve
template<class M , class X , class Y , class K >
void Dune::ubutsolve (const M &A, X &v, const Y &d, const K &w)
 relaxed unit block upper triangular solve
template<class M , class X , class Y , int l>
void Dune::bltsolve (const M &A, X &v, const Y &d, BL< l > bl)
 block lower triangular solve
template<class M , class X , class Y , class K , int l>
void Dune::bltsolve (const M &A, X &v, const Y &d, const K &w, BL< l > bl)
 relaxed block lower triangular solve
template<class M , class X , class Y , int l>
void Dune::ubltsolve (const M &A, X &v, const Y &d, BL< l > bl)
 unit block lower triangular solve
template<class M , class X , class Y , class K , int l>
void Dune::ubltsolve (const M &A, X &v, const Y &d, const K &w, BL< l > bl)
 relaxed unit block lower triangular solve
template<class M , class X , class Y , int l>
void Dune::butsolve (const M &A, X &v, const Y &d, BL< l > bl)
 block upper triangular solve
template<class M , class X , class Y , class K , int l>
void Dune::butsolve (const M &A, X &v, const Y &d, const K &w, BL< l > bl)
 relaxed block upper triangular solve
template<class M , class X , class Y , int l>
void Dune::ubutsolve (const M &A, X &v, const Y &d, BL< l > bl)
 unit block upper triangular solve
template<class M , class X , class Y , class K , int l>
void Dune::ubutsolve (const M &A, X &v, const Y &d, const K &w, BL< l > bl)
 relaxed unit block upper triangular solve
template<class M , class X , class Y >
void Dune::bdsolve (const M &A, X &v, const Y &d)
 block diagonal solve, no relaxation
template<class M , class X , class Y , class K >
void Dune::bdsolve (const M &A, X &v, const Y &d, const K &w)
 block diagonal solve, with relaxation
template<class M , class X , class Y , int l>
void Dune::bdsolve (const M &A, X &v, const Y &d, BL< l > bl)
 block diagonal solve, no relaxation
template<class M , class X , class Y , class K , int l>
void Dune::bdsolve (const M &A, X &v, const Y &d, const K &w, BL< l > bl)
 block diagonal solve, with relaxation
template<class M , class X , class Y , class K >
void Dune::dbgs (const M &A, X &x, const Y &b, const K &w)
 GS step.
template<class M , class X , class Y , class K , int l>
void Dune::dbgs (const M &A, X &x, const Y &b, const K &w, BL< l > bl)
 GS step.
template<class M , class X , class Y , class K >
void Dune::bsorf (const M &A, X &x, const Y &b, const K &w)
 SOR step.
template<class M , class X , class Y , class K , int l>
void Dune::bsorf (const M &A, X &x, const Y &b, const K &w, BL< l > bl)
 SOR step.
template<class M , class X , class Y , class K >
void Dune::bsorb (const M &A, X &x, const Y &b, const K &w)
 SSOR step.
template<class M , class X , class Y , class K , int l>
void Dune::bsorb (const M &A, X &x, const Y &b, const K &w, BL< l > bl)
 SSOR step.
template<class M , class X , class Y , class K >
void Dune::dbjac (const M &A, X &x, const Y &b, const K &w)
 Jacobi step.
template<class M , class X , class Y , class K , int l>
void Dune::dbjac (const M &A, X &x, const Y &b, const K &w, BL< l > bl)
 Jacobi step.
template<class M >
void Dune::bilu0_decomposition (M &A)
 compute ILU decomposition of A. A is overwritten by its decomposition
template<class M , class X , class Y >
void Dune::bilu_backsolve (const M &A, X &v, const Y &d)
 LU backsolve with stored inverse.
template<class M >
M::field_type & Dune::firstmatrixelement (M &A)
template<class K , int n, int m>
K & Dune::firstmatrixelement (FieldMatrix< K, n, m > &A)
template<class K >
K & Dune::firstmatrixelement (FieldMatrix< K, 1, 1 > &A)
template<class M >
void Dune::bilu_decomposition (const M &A, int n, M &ILU)

Detailed Description

Generic iterative kernels for the solvers which work on the block recursive structure of the matrices and vectors.


Enumeration Type Documentation

Enumerator:
withdiag 
nodiag 
Enumerator:
withrelax 
norelax 

Function Documentation

template<class M , class X , class Y >
void Dune::bdsolve ( const M &  A,
X &  v,
const Y &  d 
)

block diagonal solve, no relaxation

References Dune::algmeta_bdsolve< I, relax >::bdsolve().

template<class M , class X , class Y , class K >
void Dune::bdsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w 
)

block diagonal solve, with relaxation

References Dune::algmeta_bdsolve< I, relax >::bdsolve().

template<class M , class X , class Y , int l>
void Dune::bdsolve ( const M &  A,
X &  v,
const Y &  d,
BL< l >  bl 
)

block diagonal solve, no relaxation

References Dune::algmeta_bdsolve< I, relax >::bdsolve().

template<class M , class X , class Y , class K , int l>
void Dune::bdsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w,
BL< l >  bl 
)

block diagonal solve, with relaxation

References Dune::algmeta_bdsolve< I, relax >::bdsolve().

template<class M >
void Dune::bilu0_decomposition ( M &  A)

compute ILU decomposition of A. A is overwritten by its decomposition

References Dune::MatrixBlockError::r.

Referenced by Dune::bilu_decomposition(), Dune::SeqILU0< M, X, Y, l >::SeqILU0(), Dune::ILU0SubdomainSolver< M, X, Y >::setSubMatrix(), and test_Iter().

template<class M , class X , class Y >
void Dune::bilu_backsolve ( const M &  A,
X &  v,
const Y &  d 
)
template<class M >
void Dune::bilu_decomposition ( const M &  A,
int  n,
M &  ILU 
)

ILU decomposition of order n Computes ILU decomposition of order n. The matrix ILU should be an empty matrix in row_wise creation mode. This allows the user to either specify the number of nonzero elements or to determine it automatically at run-time.

References Dune::bilu0_decomposition(), and Dune::firstmatrixelement().

Referenced by Dune::SeqILUn< M, X, Y, l >::SeqILUn(), and Dune::ILUNSubdomainSolver< M, X, Y >::setSubMatrix().

template<class M , class X , class Y >
void Dune::bltsolve ( const M &  A,
X &  v,
const Y &  d 
)

block lower triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::bltsolve().

template<class M , class X , class Y , class K >
void Dune::bltsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w 
)

relaxed block lower triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::bltsolve().

template<class M , class X , class Y , int l>
void Dune::bltsolve ( const M &  A,
X &  v,
const Y &  d,
BL< l >  bl 
)

block lower triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::bltsolve().

template<class M , class X , class Y , class K , int l>
void Dune::bltsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w,
BL< l >  bl 
)

relaxed block lower triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::bltsolve().

template<class M , class X , class Y , class K >
void Dune::bsorb ( const M &  A,
X &  x,
const Y &  b,
const K &  w 
)
template<class M , class X , class Y , class K , int l>
void Dune::bsorb ( const M &  A,
X &  x,
const Y &  b,
const K &  w,
BL< l >  bl 
)

SSOR step.

References Dune::algmeta_itsteps< I >::bsorb().

template<class M , class X , class Y , class K >
void Dune::bsorf ( const M &  A,
X &  x,
const Y &  b,
const K &  w 
)
template<class M , class X , class Y , class K , int l>
void Dune::bsorf ( const M &  A,
X &  x,
const Y &  b,
const K &  w,
BL< l >  bl 
)

SOR step.

References Dune::algmeta_itsteps< I >::bsorf().

template<class M , class X , class Y >
void Dune::butsolve ( const M &  A,
X &  v,
const Y &  d 
)

block upper triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::butsolve().

template<class M , class X , class Y , class K >
void Dune::butsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w 
)

relaxed block upper triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::butsolve().

template<class M , class X , class Y , int l>
void Dune::butsolve ( const M &  A,
X &  v,
const Y &  d,
BL< l >  bl 
)

block upper triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::butsolve().

template<class M , class X , class Y , class K , int l>
void Dune::butsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w,
BL< l >  bl 
)

relaxed block upper triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::butsolve().

template<class M , class X , class Y , class K >
void Dune::dbgs ( const M &  A,
X &  x,
const Y &  b,
const K &  w 
)
template<class M , class X , class Y , class K , int l>
void Dune::dbgs ( const M &  A,
X &  x,
const Y &  b,
const K &  w,
BL< l >  bl 
)

GS step.

References Dune::algmeta_itsteps< I >::dbgs().

template<class M , class X , class Y , class K >
void Dune::dbjac ( const M &  A,
X &  x,
const Y &  b,
const K &  w 
)
template<class M , class X , class Y , class K , int l>
void Dune::dbjac ( const M &  A,
X &  x,
const Y &  b,
const K &  w,
BL< l >  bl 
)

Jacobi step.

References Dune::algmeta_itsteps< I >::dbjac().

template<class M >
M::field_type& Dune::firstmatrixelement ( M &  A)
template<class K , int n, int m>
K& Dune::firstmatrixelement ( FieldMatrix< K, n, m > &  A)
template<class K >
K& Dune::firstmatrixelement ( FieldMatrix< K, 1, 1 > &  A)
template<class M , class X , class Y >
void Dune::ubltsolve ( const M &  A,
X &  v,
const Y &  d 
)

unit block lower triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::bltsolve().

template<class M , class X , class Y , class K >
void Dune::ubltsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w 
)

relaxed unit block lower triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::bltsolve().

template<class M , class X , class Y , int l>
void Dune::ubltsolve ( const M &  A,
X &  v,
const Y &  d,
BL< l >  bl 
)

unit block lower triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::bltsolve().

template<class M , class X , class Y , class K , int l>
void Dune::ubltsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w,
BL< l >  bl 
)

relaxed unit block lower triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::bltsolve().

template<class M , class X , class Y >
void Dune::ubutsolve ( const M &  A,
X &  v,
const Y &  d 
)

unit block upper triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::butsolve().

template<class M , class X , class Y , class K >
void Dune::ubutsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w 
)

relaxed unit block upper triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::butsolve().

template<class M , class X , class Y , int l>
void Dune::ubutsolve ( const M &  A,
X &  v,
const Y &  d,
BL< l >  bl 
)

unit block upper triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::butsolve().

template<class M , class X , class Y , class K , int l>
void Dune::ubutsolve ( const M &  A,
X &  v,
const Y &  d,
const K &  w,
BL< l >  bl 
)

relaxed unit block upper triangular solve

References Dune::algmeta_btsolve< I, diag, relax >::butsolve().