Reference documentation for deal.II version Git e512aac53a 2019-11-15 17:29:53 -0500
\(\newcommand{\dealcoloneq}{\mathrel{\vcenter{:}}=}\)
Public Types | Public Member Functions | List of all members
PreconditionBlockSSOR< MatrixType, inverse_type > Class Template Reference

#include <deal.II/lac/precondition_block.h>

Inheritance diagram for PreconditionBlockSSOR< MatrixType, inverse_type >:
[legend]

Public Types

using size_type = types::global_dof_index
 
using number = typename MatrixType::value_type
 

Public Member Functions

 PreconditionBlockSSOR ()
 
template<typename number2 >
void vmult (Vector< number2 > &, const Vector< number2 > &) const
 
template<typename number2 >
void Tvmult (Vector< number2 > &, const Vector< number2 > &) const
 
template<typename number2 >
void step (Vector< number2 > &dst, const Vector< number2 > &rhs) const
 
template<typename number2 >
void Tstep (Vector< number2 > &dst, const Vector< number2 > &rhs) const
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
 Subscriptor (Subscriptor &&) noexcept
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
Subscriptoroperator= (Subscriptor &&) noexcept
 
void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const
 
unsigned int n_subscriptions () const
 
template<typename StreamType >
void list_subscribers (StreamType &stream) const
 
void list_subscribers () const
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Additional Inherited Members

- Static Public Member Functions inherited from Subscriptor
static ::ExceptionBaseExcInUse (int arg1, std::string arg2, std::string arg3)
 
static ::ExceptionBaseExcNoSubscriber (std::string arg1, std::string arg2)
 
- Private Types inherited from PreconditionBlockSOR< MatrixType, inverse_type >
using size_type = types::global_dof_index
 
using number = typename MatrixType::value_type
 
- Private Member Functions inherited from PreconditionBlockSOR< MatrixType, inverse_type >
 PreconditionBlockSOR ()
 
template<typename number2 >
void vmult (Vector< number2 > &, const Vector< number2 > &) const
 
template<typename number2 >
void vmult_add (Vector< number2 > &, const Vector< number2 > &) const
 
template<typename number2 >
void Tvmult (Vector< number2 > &, const Vector< number2 > &) const
 
template<typename number2 >
void Tvmult_add (Vector< number2 > &, const Vector< number2 > &) const
 
template<typename number2 >
void step (Vector< number2 > &dst, const Vector< number2 > &rhs) const
 
template<typename number2 >
void Tstep (Vector< number2 > &dst, const Vector< number2 > &rhs) const
 
 PreconditionBlockSOR (bool store)
 
template<typename number2 >
void forward (Vector< number2 > &, const Vector< number2 > &, const bool transpose_diagonal, const bool adding) const
 
template<typename number2 >
void backward (Vector< number2 > &, const Vector< number2 > &, const bool transpose_diagonal, const bool adding) const
 

Detailed Description

template<typename MatrixType, typename inverse_type = typename MatrixType::value_type>
class PreconditionBlockSSOR< MatrixType, inverse_type >

Block SSOR preconditioning. This class satisfies the relaxation concept.

The functions vmult and Tvmult execute a block-SSOR step, based on the implementation in PreconditionBlockSOR. This class requires storage of the diagonal blocks and their inverses.

See PreconditionBlock for requirements on the matrix. The blocks used in this class must be contiguous and non-overlapping. An overlapping Schwarz relaxation method can be found in RelaxationBlockSSOR; that class does not offer preconditioning, though.

Note
Instantiations for this template are provided for <float> and <double>; others can be generated in application programs (see the section on Template instantiations in the manual).
Author
Ralf Hartmann, Guido Kanschat, 1999, 2000

Definition at line 824 of file precondition_block.h.

Member Typedef Documentation

◆ size_type

template<typename MatrixType, typename inverse_type = typename MatrixType::value_type>
using PreconditionBlockSSOR< MatrixType, inverse_type >::size_type = types::global_dof_index

Declare type for container size.

Definition at line 832 of file precondition_block.h.

◆ number

template<typename MatrixType, typename inverse_type = typename MatrixType::value_type>
using PreconditionBlockSSOR< MatrixType, inverse_type >::number = typename MatrixType::value_type

Define number type of matrix.

Definition at line 837 of file precondition_block.h.

Constructor & Destructor Documentation

◆ PreconditionBlockSSOR()

template<typename MatrixType, typename inverse_type = typename MatrixType::value_type>
PreconditionBlockSSOR< MatrixType, inverse_type >::PreconditionBlockSSOR ( )

Constructor.

Member Function Documentation

◆ vmult()

template<typename MatrixType, typename inverse_type = typename MatrixType::value_type>
template<typename number2 >
template void PreconditionBlockSSOR< MatrixType, inverse_type >::vmult< double > ( Vector< number2 > &  ,
const Vector< number2 > &   
) const

Execute block SSOR preconditioning.

This function will automatically use the inverse matrices if they exist, if not then BlockSOR will waste much time inverting the diagonal block matrices in each preconditioning step.

◆ Tvmult()

template<typename MatrixType, typename inverse_type = typename MatrixType::value_type>
template<typename number2 >
template void PreconditionBlockSSOR< MatrixType, inverse_type >::Tvmult< double > ( Vector< number2 > &  ,
const Vector< number2 > &   
) const

Same as vmult()

◆ step()

template<typename MatrixType, typename inverse_type = typename MatrixType::value_type>
template<typename number2 >
void PreconditionBlockSSOR< MatrixType, inverse_type >::step ( Vector< number2 > &  dst,
const Vector< number2 > &  rhs 
) const

Perform one step of the SOR iteration.

◆ Tstep()

template<typename MatrixType, typename inverse_type = typename MatrixType::value_type>
template<typename number2 >
void PreconditionBlockSSOR< MatrixType, inverse_type >::Tstep ( Vector< number2 > &  dst,
const Vector< number2 > &  rhs 
) const

Perform one step of the transposed SOR iteration.


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