DUNE PDELab (git)

dilu.hh File Reference

The diagonal incomplete LU factorization kernels. More...

#include <cmath>
#include <complex>
#include <map>
#include <vector>
#include <dune/common/fmatrix.hh>
#include <dune/common/scalarvectorview.hh>
#include <dune/common/scalarmatrixview.hh>
#include "istlexception.hh"

Go to the source code of this file.

Namespaces

namespace  Dune
 Dune namespace.
 

Functions

template<class M >
void Dune::DILU::blockDILUDecomposition (M &A, std::vector< typename M::block_type > &Dinv_)
 
template<class M , class X , class Y >
void Dune::DILU::blockDILUBacksolve (const M &A, const std::vector< typename M::block_type > Dinv_, X &v, const Y &d)
 

Detailed Description

The diagonal incomplete LU factorization kernels.

Function Documentation

◆ blockDILUBacksolve()

template<class M , class X , class Y >
void Dune::DILU::blockDILUBacksolve ( const M &  A,
const std::vector< typename M::block_type >  Dinv_,
X &  v,
const Y &  d 
)

DILU backsolve

M = (D + L_A) D^-1 (D + U_A) (a LU decomposition of M) where L_A and U_A are the strictly lower and upper parts of A.

Working with residual d = b - Ax and update v = x_{n+1} - x_n solving the product M^-1(d) using upper and lower triangular solve:

v = M^{-1} d = (D + U_A)^{-1} D (D + L_A)^{-1} d

define y = (D + L_A)^{-1} d

lower triangular solve: (D + L_A) y = d upper triangular solve: (D + U_A) v = D y

References Dune::DILU::blockDILUBacksolve().

Referenced by Dune::DILU::blockDILUBacksolve().

◆ blockDILUDecomposition()

template<class M >
void Dune::DILU::blockDILUDecomposition ( M &  A,
std::vector< typename M::block_type > &  Dinv_ 
)

compute DILU decomposition of A

The preconditioner matrix M has the property

diag(A) = diag(M) = diag((D + L_A) D^{-1} (D + U_A)) = diag(D + L_A D^{-1} U_A)

such that the diagonal matrix D can be constructed:

D_11 = A_11 D_22 = A22 - L_A_{21} D_{11}^{-1} U_A_{12} and etc

we store the inverse of D to be used when applying the preconditioner.

For more details, see: R. Barrett et al., "Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods", 1994. Available from: https://www.netlib.org/templates/templates.pdf

References Dune::DILU::blockDILUDecomposition().

Referenced by Dune::DILU::blockDILUDecomposition().

Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 12, 23:30, 2024)