AFEPack
|
An algebraic multigrid preconditioner. 更多...
#include <AMGSolver.h>
公有成员 | |
AMGPreconditioner () | |
iteration steps in every precondition multiplication | |
AMGPreconditioner (const Matrix &M, u_int is=5, u_int s=3) | |
~AMGPreconditioner () | |
void | reinit (const Matrix &M, u_int is=5) |
u_int & | iterateStep () |
const u_int & | iterateStep () const |
void | vmult (Vector< double > &x, const Vector< double > &b) const |
私有属性 | |
u_int | iterate_step |
An algebraic multigrid preconditioner.
With this class, we can use AMG solver as the proconditioner of deal.II As a class to be a preconditioner, the only requirement is to have a method as
void vmult(Vector<double>&, const Vector<double>&);
We here modified the solve procedure of the AMGSolver to iterate a given steps and give it the name "vmult".
This is an example to use this preconditioner
SparseMatrix<double> M; Vector<double> x; Vector<double> rhs; ... ... AMGPreconditioner amg(M); SolverControl solver_control (50, 1.0e-8); PrimitiveVectorMemory<> vector_memory; SolverBicgstab<> solver(solver_control, vector_memory); solver.solve(M, x, rhs, PreconditionUseMatrix<AMGPreconditioner, Vector<double> > (amg, &AMGPreconditioner::vmult));
AMGPreconditioner::AMGPreconditioner | ( | ) | [inline] |
iteration steps in every precondition multiplication
AMGPreconditioner::AMGPreconditioner | ( | const Matrix & | M, |
u_int | is = 5 , |
||
u_int | s = 3 |
||
) | [inline] |
AMGPreconditioner::~AMGPreconditioner | ( | ) | [inline] |
u_int& AMGPreconditioner::iterateStep | ( | ) | [inline] |
const u_int& AMGPreconditioner::iterateStep | ( | ) | const [inline] |
void AMGPreconditioner::reinit | ( | const Matrix & | M, |
u_int | is = 5 |
||
) | [inline] |
void AMGPreconditioner::vmult | ( | Vector< double > & | x, |
const Vector< double > & | b | ||
) | const [inline] |
u_int AMGPreconditioner::iterate_step [private] |