deal.II version GIT relicensing-2167-g9622207b8f 2024-11-21 12:40:00+00:00
\(\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
Public Member Functions | Public Attributes | List of all members
TrilinosWrappers::PreconditionBlockJacobi::AdditionalData Struct Reference

#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 n_sweeps=1)
 

Public Attributes

unsigned int block_size
 
std::string block_creation_type
 
double omega
 
double min_diagonal
 
unsigned int n_sweeps
 

Detailed Description

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.

Definition at line 525 of file trilinos_precondition.h.

Constructor & Destructor Documentation

◆ AdditionalData()

TrilinosWrappers::PreconditionBlockJacobi::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  n_sweeps = 1 
)

Constructor. By default, use a block size of 1, use linear subdivision of the rows, set the damping parameter to one, and do not modify the diagonal.

Definition at line 235 of file trilinos_precondition.cc.

Member Data Documentation

◆ block_size

unsigned int TrilinosWrappers::PreconditionBlockJacobi::AdditionalData::block_size

This specifies the size of blocks.

Definition at line 541 of file trilinos_precondition.h.

◆ block_creation_type

std::string TrilinosWrappers::PreconditionBlockJacobi::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 550 of file trilinos_precondition.h.

◆ omega

double TrilinosWrappers::PreconditionBlockJacobi::AdditionalData::omega

This specifies the (over-) relaxation parameter in the Jacobi preconditioner.

Definition at line 556 of file trilinos_precondition.h.

◆ min_diagonal

double TrilinosWrappers::PreconditionBlockJacobi::AdditionalData::min_diagonal

This specifies the minimum value the diagonal elements should have. This might be necessary when the block Jacobi 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 565 of file trilinos_precondition.h.

◆ n_sweeps

unsigned int TrilinosWrappers::PreconditionBlockJacobi::AdditionalData::n_sweeps

Sets how many times the given operation should be applied during the vmult() operation.

Definition at line 571 of file trilinos_precondition.h.


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