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 block_size=1, const std::string &block_creation_type="linear", const double omega=1, const double min_diagonal=0, const unsigned int overlap=0, const unsigned int n_sweeps=1) | |
Public Attributes | |
unsigned int | block_size |
std::string | block_creation_type |
double | omega |
double | min_diagonal |
unsigned int | overlap |
unsigned int | n_sweeps |
Standardized data struct to pipe additional flags to the preconditioner. The parameter block_size
sets the size of small blocks. It is recommended to choose this parameter not too large (a few hundreds at most) since this implementation uses a dense matrix for the block. The parameter block_creation_type
allows to pass the strategy for finding the blocks to Ifpack. The parameter omega
specifies the relaxation parameter in the SOR preconditioner. The parameter min_diagonal
can be used to make the application of the preconditioner also possible when some diagonal elements are zero. In a default application this would mean that we divide by zero, so by setting the parameter min_diagonal
to a small nonzero value the SOR will work on a matrix that is not too far away from the one we want to treat. Finally, overlap
governs the overlap of the partitions when the preconditioner runs in parallel, forming a so-called additive Schwarz preconditioner.
Definition at line 737 of file trilinos_precondition.h.
TrilinosWrappers::PreconditionBlockSOR::AdditionalData::AdditionalData | ( | const unsigned int | block_size = 1 , |
const std::string & | block_creation_type = "linear" , |
||
const double | omega = 1 , |
||
const double | min_diagonal = 0 , |
||
const unsigned int | overlap = 0 , |
||
const unsigned int | n_sweeps = 1 |
||
) |
Constructor. By default, use a block size of 1, use linear subdivision of the rows, set the damping parameter to one, we do not modify the diagonal, and there is no overlap (i.e. in parallel, we run a BlockJacobi preconditioner, where each block is inverted approximately by a block SOR).
Definition at line 371 of file trilinos_precondition.cc.
unsigned int TrilinosWrappers::PreconditionBlockSOR::AdditionalData::block_size |
This specifies the size of blocks.
Definition at line 756 of file trilinos_precondition.h.
std::string TrilinosWrappers::PreconditionBlockSOR::AdditionalData::block_creation_type |
Strategy for creation of blocks passed on to Ifpack block relaxation (variable 'partitioner: type') with this string as the given value. Available types in Ifpack include "linear" (i.e., divide the local range of the matrix in slices of the block size), "greedy" "metis". For a full list, see the documentation of Ifpack.
Definition at line 765 of file trilinos_precondition.h.
double TrilinosWrappers::PreconditionBlockSOR::AdditionalData::omega |
This specifies the (over-) relaxation parameter in the SOR preconditioner.
Definition at line 771 of file trilinos_precondition.h.
double TrilinosWrappers::PreconditionBlockSOR::AdditionalData::min_diagonal |
This specifies the minimum value the diagonal elements should have. This might be necessary when the SOR preconditioner is used on matrices with zero diagonal elements. In that case, a straight-forward application would not be possible since we divide by the diagonal element.
Definition at line 780 of file trilinos_precondition.h.
unsigned int TrilinosWrappers::PreconditionBlockSOR::AdditionalData::overlap |
This determines how large the overlap of the local matrix portions on each processor in a parallel application should be.
Definition at line 786 of file trilinos_precondition.h.
unsigned int TrilinosWrappers::PreconditionBlockSOR::AdditionalData::n_sweeps |
Sets how many times the given operation should be applied during the vmult() operation.
Definition at line 792 of file trilinos_precondition.h.