A preconditioner for performing inner iteration preconditioner solves. The template argument SOLVER specifies the inner iteration solver (which must be derived from IterativeLinearSolver) and the template argument PRECONDITIONER specifies the preconditioner for the inner iteration iterative solver. Note: For no preconditioning use the IdentityPreconditioner. More...
#include <general_purpose_preconditioners.h>
Public Member Functions | |
InnerIterationPreconditioner () | |
Constructor. More... | |
~InnerIterationPreconditioner () | |
void | clean_up_memory () |
Clean up memory (empty). Generic interface function. More... | |
void | setup () |
Preconditioner setup method. Setup the preconditioner for the inner iteration solver. More... | |
void | preconditioner_solve (const DoubleVector &r, DoubleVector &z) |
Preconditioner solve method. Performs the specified number of Krylov iterations preconditioned with the specified preconditioner. More... | |
double & | tolerance () |
Access to convergence tolerance of the inner iteration solver. More... | |
unsigned & | max_iter () |
Access to max. number of iterations of the inner iteration solver. More... | |
SOLVER * | solver_pt () |
PRECONDITIONER * | preconditioner_pt () |
![]() | |
Preconditioner () | |
Constructor. More... | |
Preconditioner (const Preconditioner &) | |
Broken copy constructor. More... | |
void | operator= (const Preconditioner &) |
Broken assignment operator. More... | |
virtual | ~Preconditioner () |
Destructor (empty) More... | |
void | setup (DoubleMatrixBase *matrix_pt) |
Setup the preconditioner: store the matrix pointer and the communicator pointer then call preconditioner specific setup() function. More... | |
void | setup (const Problem *problem_pt, DoubleMatrixBase *matrix_pt) |
Compatability layer for old preconditioners where problem pointers were needed. The problem pointer is only used to get a communicator pointer. More... | |
virtual DoubleMatrixBase * | matrix_pt () const |
Get function for matrix pointer. More... | |
virtual void | set_matrix_pt (DoubleMatrixBase *matrix_pt) |
Set the matrix pointer. More... | |
virtual const OomphCommunicator * | comm_pt () const |
Get function for comm pointer. More... | |
virtual void | set_comm_pt (const OomphCommunicator *const comm_pt) |
Set the communicator pointer. More... | |
double | setup_time () const |
Returns the time to setup the preconditioner. More... | |
virtual void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse) |
virtual void | turn_into_subsidiary_block_preconditioner (BlockPreconditioner< CRDoubleMatrix > *master_block_prec_pt, const Vector< unsigned > &doftype_in_master_preconditioner_coarse, const Vector< Vector< unsigned > > &doftype_coarsen_map_coarse) |
![]() | |
DistributableLinearAlgebraObject () | |
Default constructor - create a distribution. More... | |
DistributableLinearAlgebraObject (const DistributableLinearAlgebraObject &matrix) | |
Broken copy constructor. More... | |
void | operator= (const DistributableLinearAlgebraObject &) |
Broken assignment operator. More... | |
virtual | ~DistributableLinearAlgebraObject () |
Destructor. More... | |
LinearAlgebraDistribution * | distribution_pt () const |
access to the LinearAlgebraDistribution More... | |
unsigned | nrow () const |
access function to the number of global rows. More... | |
unsigned | nrow_local () const |
access function for the num of local rows on this processor. More... | |
unsigned | nrow_local (const unsigned &p) const |
access function for the num of local rows on this processor. More... | |
unsigned | first_row () const |
access function for the first row on this processor More... | |
unsigned | first_row (const unsigned &p) const |
access function for the first row on this processor More... | |
bool | distributed () const |
distribution is serial or distributed More... | |
bool | distribution_built () const |
void | build_distribution (const LinearAlgebraDistribution *const dist_pt) |
setup the distribution of this distributable linear algebra object More... | |
void | build_distribution (const LinearAlgebraDistribution &dist) |
setup the distribution of this distributable linear algebra object More... | |
Private Attributes | |
SOLVER * | Solver_pt |
pointer to the underlying solver More... | |
PRECONDITIONER * | Preconditioner_pt |
pointer to the underlying preconditioner More... | |
Additional Inherited Members | |
![]() | |
void | clear_distribution () |
clear the distribution of this distributable linear algebra object More... | |
A preconditioner for performing inner iteration preconditioner solves. The template argument SOLVER specifies the inner iteration solver (which must be derived from IterativeLinearSolver) and the template argument PRECONDITIONER specifies the preconditioner for the inner iteration iterative solver. Note: For no preconditioning use the IdentityPreconditioner.
Definition at line 399 of file general_purpose_preconditioners.h.
|
inline |
Constructor.
Definition at line 404 of file general_purpose_preconditioners.h.
|
inline |
Definition at line 439 of file general_purpose_preconditioners.h.
|
inlinevirtual |
Clean up memory (empty). Generic interface function.
Reimplemented from oomph::Preconditioner.
Definition at line 446 of file general_purpose_preconditioners.h.
|
inline |
Access to max. number of iterations of the inner iteration solver.
Definition at line 498 of file general_purpose_preconditioners.h.
|
inline |
Definition at line 504 of file general_purpose_preconditioners.h.
|
inlinevirtual |
Preconditioner solve method. Performs the specified number of Krylov iterations preconditioned with the specified preconditioner.
Implements oomph::Preconditioner.
Definition at line 489 of file general_purpose_preconditioners.h.
|
inlinevirtual |
Preconditioner setup method. Setup the preconditioner for the inner iteration solver.
Implements oomph::Preconditioner.
Definition at line 454 of file general_purpose_preconditioners.h.
References oomph::DistributableLinearAlgebraObject::build_distribution(), oomph::Preconditioner::comm_pt(), oomph::DistributableLinearAlgebraObject::distribution_pt(), oomph::Preconditioner::matrix_pt(), and oomph::DistributableLinearAlgebraObject::nrow().
|
inline |
Definition at line 501 of file general_purpose_preconditioners.h.
|
inline |
Access to convergence tolerance of the inner iteration solver.
Definition at line 495 of file general_purpose_preconditioners.h.
|
private |
pointer to the underlying preconditioner
Definition at line 512 of file general_purpose_preconditioners.h.
|
private |
pointer to the underlying solver
Definition at line 509 of file general_purpose_preconditioners.h.