#include <MLSolver.h>
Inheritance diagram for MLSolver::

Public Methods | |
| MLSolver (const MLSolver_prm &pm) | |
| virtual | ~MLSolver () |
| virtual bool | ok () const |
| virtual void | attachUserCode (MLSolverUDC &user_code) |
| virtual void | attachLinSol (LinEqVector &sol, SpaceId space) |
| virtual void | attachLinSol (Vector(NUMT) &sol, SpaceId space) |
| virtual void | attachLinRhs (LinEqVector &rhs, SpaceId space, bool valid) |
| virtual void | attachLinRhs (Vector(NUMT) &rhs, SpaceId space, bool valid) |
| virtual void | attachLinRhs (const LinEqVector &rhs, SpaceId space, bool valid) |
| virtual void | newLinRhs () |
| virtual bool | solve (StartVectorMode start)=0 |
| virtual void | init () |
| virtual SpaceId | getNoOfSpaces () const |
| virtual String | description () const=0 |
| virtual int | getWork (const PrecondWork work_tp) const=0 |
| virtual real | getStorage () const=0 |
Protected Methods | |
| bool | redim (const MLSolver_prm &pm) |
| MLSolver () | |
Protected Attributes | |
| MLSolverUDC* | udc |
| bool | inited |
| Handle(MLSolver_prm) | params |
| VecSimplest(Handle(LinEqVector)) | linear_subproblem_sol |
| VecSimplest(Handle(LinEqVector)) | linear_subproblem_rhs |
| VecSimplest(bool) | ok_subproblem_rhs |
NAME: MLSolver - base class for solvers for Domain Decompostion solvers
DESCRIPTION:
The "MLSolver" hierarchy is a collection of C++ classes for domain decomposition and multigrid methods. This classes are used for initialization of "MLIter" for solving linear equations and for initialization of "PrecML" for preconditioning. The classes can also be used to construct nonlinear solvers. The "MLSolver" object usually will be initialized by the user, but used only by the classes "MLIter" and "PrecML".
The main purpose of the class is to attach an instance of it to a "MLIter" or a "PrecML" object.
|
|
The classes are constructed using the parameter class "MLSolver_prm". The empty constructor is invalid. It is essential to attach a "MLSolverUDC" object which implements the necessary sub-domain solver and domain transfer operations. |
|
|
|
|
|
See documentation of one of the overloaded constructor. |
|
|
See documentation of one of the overloaded functions. |
|
|
See documentation of one of the overloaded functions. |
|
|
attaches the right-hand-side vectors for each sub-domain. |
|
|
See documentation of one of the overloaded functions. |
|
|
attaches the solution vectors for each sub-domain. |
|
|
attaches an "MLSolverUDC" object. |
|
|
|
number of different spaces and sub-spaces. For multigrid this is the number of grids. For domain decomposition methods this is the number of all sub-domains plus one for the global domain plus the number of coarse spaces involved (if there are some). The spaces are identified by numbers form 1 to "getNoOfSpaces". This Id is of type "SpaceId". |
|
|
estimate storage. Estimates are compatible with estimates for linear solvers. Reimplemented in Multigrid, NonlinearMultigrid, SchwarzDD, and AddSchwarzDD. |
|
|
estimate work. Estimates are compatible with estimates for linear solvers. Reimplemented in Multigrid, AddMultigrid, NestedMultigrid, NonlinearMultigrid, SchwarzDD, AddSchwarzDD, and SymSchwarzDD. |
|
|
initializes the class. Reimplemented in Multigrid, NestedMultigrid, NonlinearMultigrid, NestedFASDampedMultigrid, FASDampedMultigrid, NonlinearDampedMultigrid, SymSchwarzDD, and CoarseAddCoarseSchwarzDD. |
|
|
|
|
|
checks whether the necessary vectors are present. |
|
|
|
|
|
solves the system. The function implements the algorithm and will probably never be called by the user directly. Data vectors have to be attached during initialization. The actual algorithm determines exactly, which vectors are needed and checks, whether they have been attached. The start vector is given by a value "StartVectorMode". Reimplemented in Multigrid, AddMultigrid, NestedMultigrid, NonlinearMultigrid, NestedFASMultigrid, FASMultigrid, SchwarzDD, AddSchwarzDD, SymSchwarzDD, and CoarseAddCoarseSchwarzDD. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|