Diffpack Documentation


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

LinEqSystemPrec Class Reference

preconditioned system of linear equations. More...

#include <LinEqSystem.h>

Inheritance diagram for LinEqSystemPrec::

LinEqSystemStd LinEqSystem HandleId LinEqSystemBlockPrec List of all members.

Public Methods

 LinEqSystemPrec (LinEqStorageMode storage_mode=EXTERNAL_STORAGE)
 LinEqSystemPrec (LinEqMatrix &A, LinEqVector &x, LinEqVector &b)
 LinEqSystemPrec (Matrix(NUMT) &A, Vector(NUMT) &x, Vector(NUMT) &b)
 ~LinEqSystemPrec ()
virtual void init ()
virtual void exit ()
virtual bool ok () const
void attach (LinEqMatrix &A, LinEqVector &x, LinEqVector &b)
void attach (LinEqMatrix &A)
void attach (LinEqVector &x, LinEqVector &b)
void attach (LinEqVector &x)
void attach (Matrix(NUMT) &A, Vector(NUMT) &x, Vector(NUMT) &b)
void attach (Matrix(NUMT) &A)
void attach (Vector(NUMT) &x, Vector(NUMT) &b)
void attach (Vector(NUMT) &x)
void attach (Precond_prm &precprm)
void attach (Precond_prm &precprm, PrecBasis &Apb)
void attach (Precond_prm &precprm, LinEqMatrix &ApbMat, bool Apb_is_A=true)
void attach (Precond_prm &precprm, Matrix(NUMT) &ApbMat, bool Apb_is_A=true)
void attach (Precond &prec)
void attach (Precond &prec, PrecBasis &Apb)
void attach (Precond &prec, LinEqMatrix &ApbMat, bool Apb_is_A=true)
void attach (Precond &prec, Matrix(NUMT) &ApbMat, bool Apb_is_A=true)
PrecondgetPrec (const bool left=true)
void getPrec (LinEqMatrix &precmat, String &precname, const bool left=true) const
virtual bool hasLeftPrec () const
virtual bool hasRightPrec () const
virtual void connect (Handle(LinEqCommBlk) &communication)
virtual void receive ()
virtual int getWork (const LinEqSysWork work_tp=TOTAL_WORK) const
virtual real getStorage (const LinEqSysStorage storage_tp=TOTAL_STORAGE) const
virtual void performance (LinEqStatBlk &performance_status)
virtual void residual (LinEqVector &v, Residual_type residual_tp=ORIGINAL_RES)
virtual void residuals (LinEqVector &r, LinEqVector &s)
virtual void residuals (LinEqVector &r, LinEqVector &s, LinEqVector &z)
virtual void matvec (const LinEqVector &c, LinEqVector &d, TransposeMode tpmode=NOT_TRANSPOSED, bool add_to_yb=false)
virtual void matvecLeftPrec (const LinEqVector &c, LinEqVector &d, TransposeMode tpmode=NOT_TRANSPOSED)
virtual void matvecRightPrec (const LinEqVector &c, LinEqVector &d, TransposeMode tpmode=NOT_TRANSPOSED)
virtual void matvecPrec (const LinEqVector &c, LinEqVector &d, TransposeMode tpmode=NOT_TRANSPOSED)
virtual void applyLeftPrec (const LinEqVector &c, LinEqVector &d, TransposeMode tpmode=NOT_TRANSPOSED)
virtual void applyRightPrec (const LinEqVector &c, LinEqVector &d, TransposeMode tpmode=NOT_TRANSPOSED)
virtual void applyPrec (const LinEqVector &c, LinEqVector &d, TransposeMode tpmode=NOT_TRANSPOSED)
virtual bool factorize (const FactStrategy &fstrategy)
virtual void forwBack ()
virtual void debugPrint (Os os, int amount_of_output=1) const
void attachCommAdm (const SubdCommAdm &adm_)

Protected Attributes

Handle(PrecondCleft
Handle(PrecondCright
bool attachedCleft
bool attachedCright
PrecBasis ApbLeft
PrecBasis ApbRight
int applyLeftCalls
int applyRightCalls
Handle(SubdCommAdmcomm_adm

Detailed Description

preconditioned system of linear equations.

NAME: LinEqSystemPrec - preconditioned system of linear equations

DESCRIPTION:

The class defines the interface to preconditoned liner system consisting of a coefficient matrix "A" and the two vectors "x" and "b" representing the solution and the right-hand side, as well as left ("Cleft") and/or right ("Cright") preconditoners. As a matter of fact, there are always two preconditioners attached. The use of none, left or right preconditioning is then implemented by attchment of the identity preconditioner (class "PrecNone").


Constructor & Destructor Documentation

LinEqSystemPrec::LinEqSystemPrec ( LinEqStorageMode storage_mode = EXTERNAL_STORAGE )
 

See class "LinEqSystemStd".

LinEqSystemPrec::LinEqSystemPrec ( LinEqMatrix & A,
LinEqVector & x,
LinEqVector & b )
 

See documentation of one of the overloaded constructor.

LinEqSystemPrec::LinEqSystemPrec ( Matrix(NUMT) & A,
Vector(NUMT) & x,
Vector(NUMT) & b )
 

See documentation of one of the overloaded constructor.

LinEqSystemPrec::~LinEqSystemPrec ( )
 


Member Function Documentation

void LinEqSystemPrec::applyLeftPrec ( const LinEqVector & c,
LinEqVector & d,
TransposeMode tpmode = NOT_TRANSPOSED ) [virtual]
 

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::applyPrec ( const LinEqVector & c,
LinEqVector & d,
TransposeMode tpmode = NOT_TRANSPOSED ) [virtual]
 

these functions calls the "apply" function of the corresponding preconditioner object(s).

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::applyRightPrec ( const LinEqVector & c,
LinEqVector & d,
TransposeMode tpmode = NOT_TRANSPOSED ) [virtual]
 

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Precond & prec,
Matrix(NUMT) & ApbMat,
bool Apb_is_A = true )
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Precond & prec,
LinEqMatrix & ApbMat,
bool Apb_is_A = true )
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Precond & prec,
PrecBasis & Apb )
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Precond & prec )
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Precond_prm & precprm,
Matrix(NUMT) & ApbMat,
bool Apb_is_A = true )
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Precond_prm & precprm,
LinEqMatrix & ApbMat,
bool Apb_is_A = true )
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Precond_prm & precprm,
PrecBasis & Apb )
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Precond_prm & precprm )
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Vector(NUMT) & x )
 

See documentation of one of the overloaded functions.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Vector(NUMT) & x,
Vector(NUMT) & b )
 

See documentation of one of the overloaded functions.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Matrix(NUMT) & A )
 

See documentation of one of the overloaded functions.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( Matrix(NUMT) & A,
Vector(NUMT) & x,
Vector(NUMT) & b )
 

See documentation of one of the overloaded functions.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( LinEqVector & x )
 

See documentation of one of the overloaded functions.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( LinEqVector & x,
LinEqVector & b )
 

See documentation of one of the overloaded functions.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( LinEqMatrix & A )
 

See documentation of one of the overloaded functions.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attach ( LinEqMatrix & A,
LinEqVector & x,
LinEqVector & b )
 

there are additional versions of "attach" for insertion of precondtioners. Each attachment is accompanied by a matrix or "PrecBasis" object used for initialization of the preconditioner (the preconditioner object is allocated and handled internally, but the preconditioning operator is constructed on basis of the matrix or "PrecBasis" input).

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::attachCommAdm ( const SubdCommAdm & adm_ )
 

void LinEqSystemPrec::connect ( Handle(LinEqCommBlk) & communication ) [virtual]
 

Reimplemented from LinEqSystem.

void LinEqSystemPrec::debugPrint ( Os os,
int amount_of_output = 1 ) const [virtual]
 

prints various information useful for debugging. If the flag "printMatVec" is "true", the contents of "A", "x" and "b" are printed.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::exit ( ) [virtual]
 

cleans up after use.

Reimplemented from LinEqSystemStd.

bool LinEqSystemPrec::factorize ( const FactStrategy & fstrategy ) [virtual]
 

neglects the presence of preconditioners.

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::forwBack ( ) [virtual]
 

neglects the presence of preconditioners.

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::getPrec ( LinEqMatrix & precmat,
String & precname,
const bool left = true ) const
 

See documentation of one of the overloaded functions.

Reimplemented in LinEqSystemBlockPrec.

Precond & LinEqSystemPrec::getPrec ( const bool left = true )
 

returns the left or right preconditoner object depending on the flag "left".

Reimplemented in LinEqSystemBlockPrec.

real LinEqSystemPrec::getStorage ( const LinEqSysStorage storage_tp = TOTAL_STORAGE ) const [virtual]
 

returns the storage cost for this system. The parameter of type "LinEqSysStorage" can be used to specify whether the total storage cost or a subset is returned.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

int LinEqSystemPrec::getWork ( const LinEqSysWork work_tp = TOTAL_WORK ) const [virtual]
 

returns an estimate of accumulated work used internally by this system. The parameter of type "LinEqSysWork" can be used to specify whether the total work cost or a subset is returned.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

bool LinEqSystemPrec::hasLeftPrec ( ) const [inline, virtual]
 

return "true" if there is a left preconditioner (other than the identity) attached, respectively.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

bool LinEqSystemPrec::hasRightPrec ( ) const [inline, virtual]
 

return "true" if there is a right preconditioner (other than the identity) attached, respectively.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::init ( ) [virtual]
 

initializes the system before use.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::matvec ( const LinEqVector & c,
LinEqVector & d,
TransposeMode tpmode = NOT_TRANSPOSED,
bool add_to_yb = false ) [virtual]
 

the matrix by vector products involving preconditoners are actually applied.

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::matvecLeftPrec ( const LinEqVector & c,
LinEqVector & d,
TransposeMode tpmode = NOT_TRANSPOSED ) [virtual]
 

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::matvecPrec ( const LinEqVector & c,
LinEqVector & d,
TransposeMode tpmode = NOT_TRANSPOSED ) [virtual]
 

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::matvecRightPrec ( const LinEqVector & c,
LinEqVector & d,
TransposeMode tpmode = NOT_TRANSPOSED ) [virtual]
 

Reimplemented from LinEqSystemStd.

bool LinEqSystemPrec::ok ( ) const [virtual]
 

checks that all entities are allocated and correcly set up.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::performance ( LinEqStatBlk & performance_status ) [virtual]
 

record performance data in the supplied "LinEqStatBlk" object. This information can then be presented by calling the member functions of the "LinEqStatBlk" object.

Reimplemented from LinEqSystemStd.

Reimplemented in LinEqSystemBlockPrec.

void LinEqSystemPrec::receive ( ) [virtual]
 

tells the system to fetch new data loaded in the connected "LinEqCommBlk". This function is seldom used directly by application programs.

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::residual ( LinEqVector & v,
Residual_type residual_tp = ORIGINAL_RES ) [virtual]
 

computes the residual based on the current value of the solution vector "x". The "Residual_type" parameter determines whether the original or the preconditioned residual is computed.

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::residuals ( LinEqVector & r,
LinEqVector & s,
LinEqVector & z ) [virtual]
 

Reimplemented from LinEqSystemStd.

void LinEqSystemPrec::residuals ( LinEqVector & r,
LinEqVector & s ) [virtual]
 

Reimplemented from LinEqSystemStd.


Member Data Documentation

PrecBasis LinEqSystemPrec::ApbLeft [protected]
 

PrecBasis LinEqSystemPrec::ApbRight [protected]
 

Handle(Precond) LinEqSystemPrec::Cleft [protected]
 

Handle(Precond) LinEqSystemPrec::Cright [protected]
 

int LinEqSystemPrec::applyLeftCalls [protected]
 

int LinEqSystemPrec::applyRightCalls [protected]
 

bool LinEqSystemPrec::attachedCleft [protected]
 

bool LinEqSystemPrec::attachedCright [protected]
 

Handle(SubdCommAdm) LinEqSystemPrec::comm_adm [protected]
 


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