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  

SchwarzDD Class Reference

overlapping Schwarz iteration. More...

#include <SchwarzDD.h>

Inheritance diagram for SchwarzDD::

MLSolver HandleId AddSchwarzDD SymSchwarzDD CoarseAddCoarseSchwarzDD List of all members.

Public Methods

 SchwarzDD (const MLSolver_prm &pm)
 ~SchwarzDD ()
virtual bool solve (StartVectorMode start)
virtual String description () const
virtual int getWork (const PrecondWork work_tp) const
virtual real getStorage () const

Protected Methods

virtual SpaceId noOfOverlapSpaces () const

Detailed Description

overlapping Schwarz iteration.

NAME: SchwarzDD - overlapping Schwarz iteration

DESCRIPTION:

Implements the alternating (multiplicative) Schwarz iteration for multiple domains. It can be used as a preconditioner, an iterative solver or a nonlinear solver.

The different sub-domains here are the different overlapping domains. They have the numbers 1 to "getNoOfSpaces"-1. The domain number "getNoOfSpaces" is the global domain, on which one wants to solve the differential equations. It is the union of all sub-domains. The sub-domains have to overlap for reasons of convergence. The rate of convergence depends on the size of the overlap. A large overlap usually means a fast convergence. However this also means larger sub-domains and more expensive sub-domain solution.

The "Proj" operators will usually be used to implement the grid transfers for "transfer" of "MLSolverUDC". If the grids are aligned properly, the transfer is just a copy operation, copying some elements of one verctor to different locations in the destination vector (and setting all other components to zero).

The solvers for the different sub-domains 1 to "getNoOfSpaces"-1 may be exact or approximative. No solver is required for the global domain number "getNoOfSpaces". The original method uses exact sub-domain solvers.

Note: The sub-domain solvers have to implement a special treatment of the boundary conditions: All sub-domain boundaries, which are not part of the boundary of the global domain, called inner boundaries, are meant to have Dirichlet boundary conditions "EssBC". The value of the solution vector at the point is the value, which has to be prescribed as the Dirichlet value at that point. (=Do not change these values during solution). Hence the boundary conditions change for every call of "solveSubSystem".

For further reading see e.g. H. A. Schwarz, Vierteljahresschrift der naturforschenden Gesellschaft in $`Zu}rich`$, 15, 1870


Constructor & Destructor Documentation

SchwarzDD::SchwarzDD ( const MLSolver_prm & pm )
 

See class "MLSolver".

SchwarzDD::~SchwarzDD ( ) [inline]
 


Member Function Documentation

String SchwarzDD::description ( ) const [virtual]
 

Reimplemented from MLSolver.

Reimplemented in AddSchwarzDD, SymSchwarzDD, and CoarseAddCoarseSchwarzDD.

real SchwarzDD::getStorage ( ) const [virtual]
 

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

Reimplemented from MLSolver.

Reimplemented in AddSchwarzDD.

int SchwarzDD::getWork ( const PrecondWork work_tp ) const [virtual]
 

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

Reimplemented from MLSolver.

Reimplemented in AddSchwarzDD, and SymSchwarzDD.

SpaceId SchwarzDD::noOfOverlapSpaces ( ) const [protected, virtual]
 

Reimplemented in CoarseAddCoarseSchwarzDD.

bool SchwarzDD::solve ( StartVectorMode start ) [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 from MLSolver.

Reimplemented in AddSchwarzDD, SymSchwarzDD, and CoarseAddCoarseSchwarzDD.


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