Diffpack Documentation

(Functionality not available, requires installation of an additional Diffpack Toolbox)


Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

MLSolver Class Reference

base class for solvers for Domain Decompostion solvers. More...

#include <MLSolver.h>

Inheritance diagram for MLSolver::

HandleId Multigrid SchwarzDD AddMultigrid NestedMultigrid NonlinearMultigrid AddSchwarzDD SymSchwarzDD NestedFASMultigrid NonlinearDampedMultigrid CoarseAddCoarseSchwarzDD FASMultigrid NestedFASDampedMultigrid FASDampedMultigrid List of all members.

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

MLSolverUDCudc
bool inited
Handle(MLSolver_prmparams
VecSimplest(Handle(LinEqVector)) linear_subproblem_sol
VecSimplest(Handle(LinEqVector)) linear_subproblem_rhs
VecSimplest(bool) ok_subproblem_rhs

Detailed Description

base class for solvers for Domain Decompostion solvers.

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.


Constructor & Destructor Documentation

MLSolver::MLSolver ( const MLSolver_prm & pm )
 

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.

MLSolver::~MLSolver ( ) [virtual]
 

MLSolver::MLSolver ( ) [protected]
 

See documentation of one of the overloaded constructor.


Member Function Documentation

void MLSolver::attachLinRhs ( const LinEqVector & rhs,
SpaceId space,
bool valid ) [virtual]
 

See documentation of one of the overloaded functions.

void MLSolver::attachLinRhs ( Vector(NUMT) & rhs,
SpaceId space,
bool valid ) [virtual]
 

See documentation of one of the overloaded functions.

void MLSolver::attachLinRhs ( LinEqVector & rhs,
SpaceId space,
bool valid ) [virtual]
 

attaches the right-hand-side vectors for each sub-domain.

void MLSolver::attachLinSol ( Vector(NUMT) & sol,
SpaceId space ) [virtual]
 

See documentation of one of the overloaded functions.

void MLSolver::attachLinSol ( LinEqVector & sol,
SpaceId space ) [virtual]
 

attaches the solution vectors for each sub-domain.

void MLSolver::attachUserCode ( MLSolverUDC & user_code ) [virtual]
 

attaches an "MLSolverUDC" object.

String MLSolver::description ( ) const [pure virtual]
 

Reimplemented in Multigrid, AddMultigrid, NestedMultigrid, NonlinearMultigrid, NestedFASMultigrid, FASMultigrid, NestedFASDampedMultigrid, FASDampedMultigrid, NonlinearDampedMultigrid, SchwarzDD, AddSchwarzDD, SymSchwarzDD, and CoarseAddCoarseSchwarzDD.

SpaceId MLSolver::getNoOfSpaces ( ) const [virtual]
 

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".

real MLSolver::getStorage ( ) const [pure virtual]
 

estimate storage. Estimates are compatible with estimates for linear solvers.

Reimplemented in Multigrid, NonlinearMultigrid, SchwarzDD, and AddSchwarzDD.

int MLSolver::getWork ( const PrecondWork work_tp ) const [pure virtual]
 

estimate work. Estimates are compatible with estimates for linear solvers.

Reimplemented in Multigrid, AddMultigrid, NestedMultigrid, NonlinearMultigrid, SchwarzDD, AddSchwarzDD, and SymSchwarzDD.

void MLSolver::init ( ) [virtual]
 

initializes the class.

Reimplemented in Multigrid, NestedMultigrid, NonlinearMultigrid, NestedFASDampedMultigrid, FASDampedMultigrid, NonlinearDampedMultigrid, SymSchwarzDD, and CoarseAddCoarseSchwarzDD.

void MLSolver::newLinRhs ( ) [virtual]
 

bool MLSolver::ok ( ) const [virtual]
 

checks whether the necessary vectors are present.

bool MLSolver::redim ( const MLSolver_prm & pm ) [protected]
 

bool MLSolver::solve ( StartVectorMode start ) [pure virtual]
 

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.


Member Data Documentation

bool MLSolver::inited [protected]
 

VecSimplest(Handle(LinEqVector)) MLSolver::linear_subproblem_rhs [protected]
 

VecSimplest(Handle(LinEqVector)) MLSolver::linear_subproblem_sol [protected]
 

VecSimplest(bool) MLSolver::ok_subproblem_rhs [protected]
 

Handle(MLSolver_prm) MLSolver::params [protected]
 

MLSolverUDC * MLSolver::udc [protected]
 


The documentation for this class was generated from the following file:
Copyright © 2003 inuTech GmbH. All rights reserved.