Reference documentation for deal.II version Git 2527942 2014-10-23 09:53:15 -0400
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Classes | Public Types | Public Member Functions | Private Types | Private Member Functions | Friends | List of all members
PreconditionBlockJacobi< MATRIX, inverse_type > Class Template Reference

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

Inheritance diagram for PreconditionBlockJacobi< MATRIX, inverse_type >:
[legend]

Classes

class  const_iterator
 

Public Types

typedef types::global_dof_index size_type
 

Public Member Functions

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 vmult_add (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
 
const_iterator begin () const
 
const_iterator end () const
 
const_iterator begin (const size_type r) const
 
const_iterator end (const size_type r) const
 
- Public Member Functions inherited from Subscriptor
 Subscriptor ()
 
 Subscriptor (const Subscriptor &)
 
virtual ~Subscriptor ()
 
Subscriptoroperator= (const Subscriptor &)
 
void subscribe (const char *identifier=0) const
 
void unsubscribe (const char *identifier=0) const
 
unsigned int n_subscriptions () const
 
void list_subscribers () const
 
 DeclException3 (ExcInUse, int, char *, std::string &,<< "Object of class "<< arg2<< " is still used by "<< arg1<< " other objects.\n"<< "(Additional information: "<< arg3<< ")\n"<< "Note the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "more information on what this error means.")
 
 DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier \""<< arg2<< "\" did subscribe to this object of class "<< arg1)
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 

Private Types

typedef MATRIX::value_type number
 
- Private Types inherited from PreconditionBlock< MATRIX, inverse_type >
typedef types::global_dof_index size_type
 

Private Member Functions

template<typename number2 >
void do_vmult (Vector< number2 > &, const Vector< number2 > &, bool adding) const
 
- Private Member Functions inherited from PreconditionBlock< MATRIX, inverse_type >
 PreconditionBlock (bool store_diagonals=false)
 
 ~PreconditionBlock ()
 
void initialize (const MATRIX &A, const AdditionalData parameters)
 
void clear ()
 
bool empty () const
 
value_type el (size_type i, size_type j) const
 
void invert_diagblocks ()
 
template<typename number2 >
void forward_step (Vector< number2 > &dst, const Vector< number2 > &prev, const Vector< number2 > &src, const bool transpose_diagonal) const
 
template<typename number2 >
void backward_step (Vector< number2 > &dst, const Vector< number2 > &prev, const Vector< number2 > &src, const bool transpose_diagonal) const
 
size_type block_size () const
 
unsigned int n_blocks () const DEAL_II_DEPRECATED
 
std::size_t memory_consumption () const
 
 DeclException2 (ExcWrongBlockSize, int, int,<< "The blocksize "<< arg1<< " and the size of the matrix "<< arg2<< " do not match.")
 
 DeclException0 (ExcInverseMatricesAlreadyExist)
 
void initialize (const MATRIX &A, const std::vector< size_type > &permutation, const std::vector< size_type > &inverse_permutation, const AdditionalData parameters)
 
void set_permutation (const std::vector< size_type > &permutation, const std::vector< size_type > &inverse_permutation)
 
void invert_permuted_diagblocks (const std::vector< size_type > &permutation, const std::vector< size_type > &inverse_permutation)
 

Friends

class Accessor
 
class const_iterator
 

Additional Inherited Members

- Private Attributes inherited from PreconditionBlock< MATRIX, inverse_type >
size_type blocksize
 
SmartPointer< const MATRIX,
PreconditionBlock< MATRIX,
inverse_type > > 
A
 
double relaxation
 
std::vector< size_typepermutation
 
std::vector< size_typeinverse_permutation
 

Detailed Description

template<class MATRIX, typename inverse_type>
class PreconditionBlockJacobi< MATRIX, inverse_type >

Block Jacobi preconditioning. See PreconditionBlock for requirements on the matrix.

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, 2003

Definition at line 31 of file precondition_block.h.

Member Typedef Documentation

template<class MATRIX, typename inverse_type>
typedef MATRIX::value_type PreconditionBlockJacobi< MATRIX, inverse_type >::number
private

Define number type of matrix.

Definition at line 483 of file precondition_block.h.

template<class MATRIX, typename inverse_type>
typedef types::global_dof_index PreconditionBlockJacobi< MATRIX, inverse_type >::size_type

Declare type for container size.

Definition at line 489 of file precondition_block.h.

Member Function Documentation

template<class MATRIX, typename inverse_type>
template<typename number2 >
void PreconditionBlockJacobi< MATRIX, inverse_type >::vmult ( Vector< number2 > &  ,
const Vector< number2 > &   
) const

Execute block Jacobi preconditioning.

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

template<class MATRIX, typename inverse_type>
template<typename number2 >
void PreconditionBlockJacobi< MATRIX, inverse_type >::Tvmult ( Vector< number2 > &  ,
const Vector< number2 > &   
) const

Same as vmult, since Jacobi is symmetric.

template<class MATRIX, typename inverse_type>
template<typename number2 >
void PreconditionBlockJacobi< MATRIX, inverse_type >::vmult_add ( Vector< number2 > &  ,
const Vector< number2 > &   
) const

Execute block Jacobi preconditioning, adding to dst.

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

template<class MATRIX, typename inverse_type>
template<typename number2 >
void PreconditionBlockJacobi< MATRIX, inverse_type >::Tvmult_add ( Vector< number2 > &  ,
const Vector< number2 > &   
) const

Same as vmult_add, since Jacobi is symmetric.

template<class MATRIX, typename inverse_type>
template<typename number2 >
void PreconditionBlockJacobi< MATRIX, inverse_type >::step ( Vector< number2 > &  dst,
const Vector< number2 > &  rhs 
) const

Perform one step of the Jacobi iteration.

template<class MATRIX, typename inverse_type>
template<typename number2 >
void PreconditionBlockJacobi< MATRIX, inverse_type >::Tstep ( Vector< number2 > &  dst,
const Vector< number2 > &  rhs 
) const

Perform one step of the Jacobi iteration.

template<class MATRIX, typename inverse_type>
const_iterator PreconditionBlockJacobi< MATRIX, inverse_type >::begin ( ) const

STL-like iterator with the first entry.

template<class MATRIX, typename inverse_type>
const_iterator PreconditionBlockJacobi< MATRIX, inverse_type >::end ( ) const

Final iterator.

template<class MATRIX, typename inverse_type>
const_iterator PreconditionBlockJacobi< MATRIX, inverse_type >::begin ( const size_type  r) const

STL-like iterator with the first entry of row r.

template<class MATRIX, typename inverse_type>
const_iterator PreconditionBlockJacobi< MATRIX, inverse_type >::end ( const size_type  r) const

Final iterator of row r.

template<class MATRIX, typename inverse_type>
template<typename number2 >
void PreconditionBlockJacobi< MATRIX, inverse_type >::do_vmult ( Vector< number2 > &  ,
const Vector< number2 > &  ,
bool  adding 
) const
private

Actual implementation of the preconditioner.

Depending on adding, the result of preconditioning is added to the destination vector.


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