deal.II version GIT relicensing-2167-g9622207b8f 2024-11-21 12:40:00+00:00
|
#include <deal.II/lac/trilinos_precondition.h>
Public Member Functions | |
AdditionalData (const unsigned int ilu_fill=0, const double ilu_atol=0., const double ilu_rtol=1., const unsigned int overlap=0) | |
Public Attributes | |
unsigned int | ilu_fill |
double | ilu_atol |
double | ilu_rtol |
unsigned int | overlap |
Standardized data struct to pipe additional parameters to the preconditioner:
ilu_fill:
This specifies the amount of additional fill-in elements besides the original sparse matrix structure. If \(k\) is fill
, the sparsity pattern of \(A^{k+1}\) is used for the storage of the result of the Gaussian elimination. This is known as ILU( \(k\)) in the literature. When fill
is large, the preconditioner comes closer to a (direct) sparse LU decomposition. Note, however, that this will drastically increase the memory requirement, especially when the preconditioner is used in 3d.
ilu_atol
and ilu_rtol:
These two parameters allow perturbation of the diagonal of the matrix, which sometimes can help to get better preconditioners especially in the case of bad conditioning. Before factorization, the diagonal entry \(a_{ii}\) is replaced by \(\alpha sign(a_{ii}) + \beta a_{ii}\), where \(\alpha\geq 0\) is the absolute threshold ilu_atol
and \(\beta\geq 1\) is the relative threshold ilu_rtol
. The default values ( \(\alpha = 0\), \(\beta = 1\)) therefore use the original, unmodified diagonal entry. Suggested values are in the order of \(10^{-5}\) to \(10^{-2}\) for ilu_atol
and 1.01 for ilu_rtol
.
overlap:
This determines how large the overlap of the local matrix portions on each processor in a parallel application should be. An overlap of 0 corresponds to a block diagonal decomposition on each processor, an overlap of 1 will additionally include a row j if there is a nonzero entry in column j in one of the own rows. Higher overlap numbers work accordingly in a recursive fashion. Increasing overlap
will increase communication and storage cost. According to the IFPACK documentation, an overlap of 1 is often effective and values of more than 3 are rarely needed.
Definition at line 985 of file trilinos_precondition.h.
TrilinosWrappers::PreconditionILU::AdditionalData::AdditionalData | ( | const unsigned int | ilu_fill = 0 , |
const double | ilu_atol = 0. , |
||
const double | ilu_rtol = 1. , |
||
const unsigned int | overlap = 0 |
||
) |
Constructor with default values for all parameters.
Definition at line 490 of file trilinos_precondition.cc.
unsigned int TrilinosWrappers::PreconditionILU::AdditionalData::ilu_fill |
Additional fill-in, see class documentation above.
Definition at line 998 of file trilinos_precondition.h.
double TrilinosWrappers::PreconditionILU::AdditionalData::ilu_atol |
The amount of perturbation to add to diagonal entries. See the class documentation above for details.
Definition at line 1004 of file trilinos_precondition.h.
double TrilinosWrappers::PreconditionILU::AdditionalData::ilu_rtol |
Scaling actor for diagonal entries. See the class documentation above for details.
Definition at line 1010 of file trilinos_precondition.h.
unsigned int TrilinosWrappers::PreconditionILU::AdditionalData::overlap |
Overlap between processors. See the class documentation for details.
Definition at line 1015 of file trilinos_precondition.h.