Reference documentation for deal.II version 9.6.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
TrilinosWrappers::PreconditionILU::AdditionalData Struct Reference

#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
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ AdditionalData()

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.

Member Data Documentation

◆ ilu_fill

unsigned int TrilinosWrappers::PreconditionILU::AdditionalData::ilu_fill

Additional fill-in, see class documentation above.

Definition at line 998 of file trilinos_precondition.h.

◆ ilu_atol

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.

◆ ilu_rtol

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.

◆ overlap

unsigned int TrilinosWrappers::PreconditionILU::AdditionalData::overlap

Overlap between processors. See the class documentation for details.

Definition at line 1015 of file trilinos_precondition.h.


The documentation for this struct was generated from the following files: