template<class M, class X, class Y, int blockLevel = 2>
class Dumux::BlockDiagAMGPreconditioner< M, X, Y, blockLevel >
A simple ilu0 block diagonal preconditioner.
template<class M , class X , class Y , int blockLevel = 2>
template<class LOP , class Criterion , class SmootherArgs >
Constructor.
Constructor gets all parameters to operate the prec.
- Parameters
-
lop | The linear operator |
c | The criterion |
sa | The smoother arguments |
template<class M , class X , class Y , int blockLevel = 2>
Apply one step of the preconditioner to the system A(v)=d.
On entry v=0 and d=b-A(x) (although this might not be computed in that way. On exit v contains the update, i.e one step computes \( v = M^{-1} d \) where \( M \) is the approximate inverse of the operator \( A \) characterizing the preconditioner.
- Parameters
-
v | The update to be computed |
d | The current defect. |
template<class M , class X , class Y , int blockLevel = 2>
Prepare the preconditioner.
A solver solves a linear operator equation A(v)=d by applying one or several steps of the preconditioner. The method pre() is called before the first apply operation. d and v are right hand side and solution vector of the linear system respectively. It may. e.g., scale the system, allocate memory or compute a (I)LU decomposition. Note: The ILU decomposition could also be computed in the constructor or with a separate method of the derived method if several linear systems with the same matrix are to be solved.
- Parameters
-
v | The left hand side of the equation. |
d | The right hand side of the equation. |