14#ifndef dealii_sparse_ilu_h
15#define dealii_sparse_ilu_h
56template <
typename number>
96 template <
typename somenumber>
107 template <
typename somenumber>
118 template <
typename somenumber>
140 <<
"The strengthening parameter " << arg1
141 <<
" is not greater or equal than zero!");
147 <<
"While computing the ILU decomposition, the algorithm "
148 "found a zero entry on the diagonal of row "
150 <<
". The algorithm can not recover from this because it "
151 "wants to divide by this diagonal entry."
153 "There are several reasons why this could be happening. "
154 "First, the matrix for which you try to compute a "
155 "decomposition might be singular. Second, the order in "
156 "which the algorithm considers might lead it to find "
157 "a zero diagonal entry even though different pivoting "
158 "strategies might not; the current implementation does "
159 "not do any pivoting (i.e., it works on rows/columns "
160 "in their natural order), and so you will trigger "
161 "this error if, for example, you have a zero in the "
162 "(0,0) entry of the matrix, even though this does "
163 "not imply that the matrix is singular."
165 "It is possible that you can avoid the error if "
166 "you re-order degrees of freedom (using "
167 "the functions in namespace DoFRenumbering). You may "
168 "also want to consider \"strengthening the diagonal\", "
169 "using the AdditionalData::strengthen_diagonal parameter "
170 "you can set in the optional constructor argument of "
void Tvmult(Vector< somenumber > &dst, const Vector< somenumber > &src) const
typename SparseLUDecomposition< number >::size_type size_type
void vmult(Vector< somenumber > &dst, const Vector< somenumber > &src) const
std::size_t memory_consumption() const override
typename SparseLUDecomposition< number >::AdditionalData AdditionalData
void initialize(const SparseMatrix< somenumber > &matrix, const AdditionalData ¶meters=AdditionalData())
typename SparseMatrix< number >::size_type size_type
#define DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_CLOSE
static ::ExceptionBase & ExcInvalidStrengthening(double arg1)
static ::ExceptionBase & ExcZeroPivot(size_type arg1)
#define DeclException1(Exception1, type1, outsequence)