dune-istl
2.2.0
|
Two grid operator for AMG with Krylov cycle. More...
#include <dune/istl/paamg/kamg.hh>
Public Types | |
enum | { category = AMG::category } |
typedef AMG::Domain | domain_type |
The domain type of the preconditioner. | |
typedef AMG::Range | range_type |
The range type of the preconditioner. | |
typedef AMG::Domain::field_type | field_type |
The field type of the preconditioner. | |
Public Member Functions | |
KAmgTwoGrid (AMG &amg, InverseOperator< Domain, Range > *coarseSolver) | |
Constructor. | |
void | pre (typename AMG::Domain &x, typename AMG::Range &b) |
void | post (typename AMG::Domain &x) |
void | apply (typename AMG::Domain &v, const typename AMG::Range &d) |
InverseOperator< Domain, Range > * | coarseSolver () |
Get a pointer to the coarse grid solver. | |
~KAmgTwoGrid () | |
Destructor. | |
virtual void | pre (AMG::Domain &x, AMG::Range &b)=0 |
Prepare the preconditioner. | |
virtual void | apply (AMG::Domain &v, const AMG::Range &d)=0 |
Apply one step of the preconditioner to the system A(v)=d. | |
virtual void | post (AMG::Domain &x)=0 |
Clean up. |
Two grid operator for AMG with Krylov cycle.
typedef AMG::Domain Dune::Preconditioner< AMG::Domain , AMG::Range >::domain_type [inherited] |
The domain type of the preconditioner.
typedef AMG::Domain ::field_type Dune::Preconditioner< AMG::Domain , AMG::Range >::field_type [inherited] |
The field type of the preconditioner.
typedef AMG::Range Dune::Preconditioner< AMG::Domain , AMG::Range >::range_type [inherited] |
The range type of the preconditioner.
Dune::Amg::KAmgTwoGrid< AMG >::KAmgTwoGrid | ( | AMG & | amg, |
InverseOperator< Domain, Range > * | coarseSolver | ||
) | [inline] |
Constructor.
amg | The underlying amg. It is used as the storage for the hierarchic data structures. |
coarseSolver | The solver used for the coarse grid correction. |
Dune::Amg::KAmgTwoGrid< AMG >::~KAmgTwoGrid | ( | ) | [inline] |
Destructor.
void Dune::Amg::KAmgTwoGrid< AMG >::apply | ( | typename AMG::Domain & | v, |
const typename AMG::Range & | d | ||
) | [inline] |
Prepare the preconditioner.
A solver solves a linear operator equation A(x)=b by applying one or several steps of the preconditioner. The method pre() is called before the first apply operation. b and x are right hand side and solution vector of the linear system respectively. It may. e.g., scale the system, allocate memory or compute a (I)LU decomposition. Note: The ILU decomposition could also be computed in the constructor or with a separate method of the derived method if several linear systems with the same matrix are to be solved.
x | The left hand side of the equation. |
b | The right hand side of the equation. |
virtual void Dune::Preconditioner< AMG::Domain , AMG::Range >::apply | ( | AMG::Domain & | v, |
const AMG::Range & | d | ||
) | [pure virtual, inherited] |
Apply one step of the preconditioner to the system A(v)=d.
On entry v=0 and d=b-A(x) (although this might not be computed in that way. On exit v contains the update, i.e one step computes where
is the approximate inverse of the operator
characterizing the preconditioner.
[out] | v | The update to be computed |
d | The current defect. |
InverseOperator<Domain,Range>* Dune::Amg::KAmgTwoGrid< AMG >::coarseSolver | ( | ) | [inline] |
Get a pointer to the coarse grid solver.
void Dune::Amg::KAmgTwoGrid< AMG >::post | ( | typename AMG::Domain & | x | ) | [inline] |
Clean up.
This method is called after the last apply call for the linear system to be solved. Memory may be deallocated safely here. x is the solution of the linear equation.
x | The right hand side of the equation. |
virtual void Dune::Preconditioner< AMG::Domain , AMG::Range >::post | ( | AMG::Domain & | x | ) | [pure virtual, inherited] |
Clean up.
This method is called after the last apply call for the linear system to be solved. Memory may be deallocated safely here. x is the solution of the linear equation.
x | The right hand side of the equation. |
void Dune::Amg::KAmgTwoGrid< AMG >::pre | ( | typename AMG::Domain & | x, |
typename AMG::Range & | b | ||
) | [inline] |
Prepare the preconditioner.
A solver solves a linear operator equation A(x)=b by applying one or several steps of the preconditioner. The method pre() is called before the first apply operation. b and x are right hand side and solution vector of the linear system respectively. It may. e.g., scale the system, allocate memory or compute a (I)LU decomposition. Note: The ILU decomposition could also be computed in the constructor or with a separate method of the derived method if several linear systems with the same matrix are to be solved.
x | The left hand side of the equation. |
b | The right hand side of the equation. |
virtual void Dune::Preconditioner< AMG::Domain , AMG::Range >::pre | ( | AMG::Domain & | x, |
AMG::Range & | b | ||
) | [pure virtual, inherited] |
Prepare the preconditioner.
A solver solves a linear operator equation A(x)=b by applying one or several steps of the preconditioner. The method pre() is called before the first apply operation. b and x are right hand side and solution vector of the linear system respectively. It may. e.g., scale the system, allocate memory or compute a (I)LU decomposition. Note: The ILU decomposition could also be computed in the constructor or with a separate method of the derived method if several linear systems with the same matrix are to be solved.
x | The left hand side of the equation. |
b | The right hand side of the equation. |