16#ifndef dealii_sparse_ilu_h
17#define dealii_sparse_ilu_h
58template <
typename number>
98 template <
typename somenumber>
109 template <
typename somenumber>
120 template <
typename somenumber>
142 <<
"The strengthening parameter " << arg1
143 <<
" is not greater or equal than zero!");
149 <<
"While computing the ILU decomposition, the algorithm "
150 "found a zero entry on the diagonal of row "
152 <<
". The algorithm can not recover from this because it "
153 "wants to divide by this diagonal entry."
155 "There are several reasons why this could be happening. "
156 "First, the matrix for which you try to compute a "
157 "decomposition might be singular. Second, the order in "
158 "which the algorithm considers might lead it to find "
159 "a zero diagonal entry even though different pivoting "
160 "strategies might not; the current implementation does "
161 "not do any pivoting (i.e., it works on rows/columns "
162 "in their natural order), and so you will trigger "
163 "this error if, for example, you have a zero in the "
164 "(0,0) entry of the matrix, even though this does "
165 "not imply that the matrix is singular."
167 "It is possible that you can avoid the error if "
168 "you re-order degrees of freedom (using "
169 "the functions in namespace DoFRenumbering). You may "
170 "also want to consider \"strengthening the diagonal\", "
171 "using the AdditionalData::strengthen_diagonal parameter "
172 "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)