
Public Member Functions | |
| void | initialize (const MATRIX &A, const std::vector< unsigned int > &permutation, const std::vector< unsigned int > &inverse_permutation, typename PreconditionRelaxation< MATRIX >::AdditionalData parameters=typename PreconditionRelaxation< MATRIX >::AdditionalData()) |
| template<class VECTOR> | |
| void | vmult (VECTOR &, const VECTOR &) const |
| template<class VECTOR> | |
| void | Tvmult (VECTOR &, const VECTOR &) const |
Private Attributes | |
| const std::vector< unsigned int > * | permutation |
| const std::vector< unsigned int > * | inverse_permutation |
MATRIX class used is required to have functions PSOR(VECTOR&, const VECTOR&, double) and TPSOR(VECTOR&, const VECTOR&, double).
// Declare related objects SparseMatrix<double> A; Vector<double> x; Vector<double> b; SolverCG<> solver(...); //...initialize and build A std::vector<unsigned int> permutation(x.size()); std::vector<unsigned int> inverse_permutation(x.size()); //...fill permutation and its inverse with reasonable values // Define and initialize preconditioner PreconditionPSOR<SparseMatrix<double> > precondition; precondition.initialize (A, permutation, inverse_permutation, .6); solver.solve (A, x, b, precondition);
| void PreconditionPSOR< MATRIX >::initialize | ( | const MATRIX & | A, | |
| const std::vector< unsigned int > & | permutation, | |||
| const std::vector< unsigned int > & | inverse_permutation, | |||
| typename PreconditionRelaxation< MATRIX >::AdditionalData | parameters = typename PreconditionRelaxation<MATRIX>::AdditionalData() | |||
| ) | [inline] |
Initialize matrix and relaxation parameter. The matrix is just stored in the preconditioner object.
The permutation vector is stored as a pointer. Therefore, it has to be assured that the lifetime of the vector exceeds the lifetime of the preconditioner.
The relaxation parameter should be larger than zero and smaller than 2 for numerical reasons. It defaults to 1.
References PreconditionRelaxation< MATRIX >::initialize(), PreconditionPSOR< MATRIX >::inverse_permutation, and PreconditionPSOR< MATRIX >::permutation.
| void PreconditionPSOR< MATRIX >::vmult | ( | VECTOR & | dst, | |
| const VECTOR & | src | |||
| ) | const [inline] |
Apply preconditioner.
References PreconditionRelaxation< MATRIX >::A, Assert, PreconditionPSOR< MATRIX >::inverse_permutation, PreconditionPSOR< MATRIX >::permutation, and PreconditionRelaxation< MATRIX >::relaxation.
| void PreconditionPSOR< MATRIX >::Tvmult | ( | VECTOR & | dst, | |
| const VECTOR & | src | |||
| ) | const [inline] |
Apply transpose preconditioner.
References PreconditionRelaxation< MATRIX >::A, Assert, PreconditionPSOR< MATRIX >::inverse_permutation, PreconditionPSOR< MATRIX >::permutation, and PreconditionRelaxation< MATRIX >::relaxation.
const std::vector<unsigned int>* PreconditionPSOR< MATRIX >::permutation [private] |
Storage for the permutation vector.
Referenced by PreconditionPSOR< MATRIX >::initialize(), PreconditionPSOR< MATRIX >::Tvmult(), and PreconditionPSOR< MATRIX >::vmult().
const std::vector<unsigned int>* PreconditionPSOR< MATRIX >::inverse_permutation [private] |
Storage for the inverse permutation vector.
Referenced by PreconditionPSOR< MATRIX >::initialize(), PreconditionPSOR< MATRIX >::Tvmult(), and PreconditionPSOR< MATRIX >::vmult().
documentation generated on Fri Nov 21 07:13:23 2008 by
doxygen
1.5.6