![]() |
Reference documentation for deal.II version 8.4.2
|
#include <deal.II/lac/relaxation_block.h>
Public Member Functions | |
| AdditionalData (const double relaxation=1., const bool invert_diagonal=true, const bool same_diagonal=false) | |
| std::size_t | memory_consumption () const |
Public Member Functions inherited from Subscriptor | |
| Subscriptor () | |
| Subscriptor (const Subscriptor &) | |
| virtual | ~Subscriptor () |
| Subscriptor & | operator= (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."<< "\"<< "(Additional information: "<< arg3<< ")\"<< "See the entry in the Frequently Asked Questions of "<< "deal.II (linked to from http://www.dealii.org/) for "<< "a lot more information on what this error means and "<< "how to fix programs in which it happens.") | |
| DeclException2 (ExcNoSubscriber, char *, char *,<< "No subscriber with identifier <"<< arg2<< "> subscribes to this object of class "<< arg1<< ". Consequently, it cannot be unsubscribed.") | |
| template<class Archive > | |
| void | serialize (Archive &ar, const unsigned int version) |
Public Attributes | |
| SparsityPattern | block_list |
| double | relaxation |
| bool | invert_diagonal |
| bool | same_diagonal |
| PreconditionBlockBase< inverse_type >::Inversion | inversion |
| double | threshold |
| std::vector< std::vector< unsigned int > > | order |
Parameters for block relaxation methods. In addition to typical control parameters like relaxation, this object also contains the block structure in block_list and an optional ordering of the blocks in order.
Definition at line 77 of file relaxation_block.h.
| RelaxationBlock< MatrixType, inverse_type >::AdditionalData::AdditionalData | ( | const double | relaxation = 1., |
| const bool | invert_diagonal = true, |
||
| const bool | same_diagonal = false |
||
| ) |
Constructor.
| std::size_t RelaxationBlock< MatrixType, inverse_type >::AdditionalData::memory_consumption | ( | ) | const |
Return the memory allocated in this object.
| SparsityPattern RelaxationBlock< MatrixType, inverse_type >::AdditionalData::block_list |
The mapping from indices to blocks. Each row of this pattern enumerates the indices constituting a diagonal block to be inverted.
Definition at line 91 of file relaxation_block.h.
| double RelaxationBlock< MatrixType, inverse_type >::AdditionalData::relaxation |
Relaxation parameter.
Definition at line 96 of file relaxation_block.h.
| bool RelaxationBlock< MatrixType, inverse_type >::AdditionalData::invert_diagonal |
Invert diagonal during initialization. Alternatively, diagonal blocks are inverted on the fly, whenever they are used. While inverting blocks in advance requires more memory, it usually saves a lot of computation. See same_diagonal on how you can avoid memory overhead.
Definition at line 104 of file relaxation_block.h.
| bool RelaxationBlock< MatrixType, inverse_type >::AdditionalData::same_diagonal |
Assume all diagonal blocks are equal to save memory. If this flag is true, then only the first diagonal block of the matrix is inverted and stored. It is then used for all other blocks.
Definition at line 114 of file relaxation_block.h.
| PreconditionBlockBase<inverse_type>::Inversion RelaxationBlock< MatrixType, inverse_type >::AdditionalData::inversion |
Choose the inversion method for the blocks.
Definition at line 118 of file relaxation_block.h.
| double RelaxationBlock< MatrixType, inverse_type >::AdditionalData::threshold |
If inversion is SVD, we can compute the Penrose-Moore inverse of the blocks. In order to do so, we can specify here the threshold below which a singular value will be considered zero and thus not inverted. This parameter is used in the call to LAPACKFullMatrix::compute_inverse_svd().
Definition at line 127 of file relaxation_block.h.
| std::vector<std::vector<unsigned int> > RelaxationBlock< MatrixType, inverse_type >::AdditionalData::order |
The order in which blocks should be traversed. This vector can initiate several modes of execution:
If the length of the vector is zero, then the relaxation method will be executed from first to last block.
If the length is one, then the inner vector must have the same size as the number of blocks. The relaxation method is applied in the order given in this vector.
If the outer vector has length greater one, then the relaxation method is applied several times, each time in the order given by the inner vector of the corresponding index. This mode can for instance be used for ADI methods and similar direction sweeps.
Definition at line 149 of file relaxation_block.h.
1.8.12