Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar > Class Template Reference

Factory interface for creating precondtioner objects from LinearOpBase objects. More...

#include <Thyra_PreconditionerFactoryBase.hpp>

Inheritance diagram for Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar >:

Inheritance graph
[legend]
List of all members.

Pure virtual public functions that must be overridden in subclasses

virtual bool isCompatible (const LinearOpSourceBase< RangeScalar, DomainScalar > &fwdOpSrc) const =0
 Check that a LinearOpBase object is compatible with *this factory object.
virtual Teuchos::RCP< PreconditionerBase<
DomainScalar, RangeScalar > > 
createPrec () const =0
 Create an (uninitialized) LinearOpBase object to be initalized as the preconditioner later in this->initializePrecOp().
virtual void initializePrec (const Teuchos::RCP< const LinearOpSourceBase< RangeScalar, DomainScalar > > &fwdOpSrc, PreconditionerBase< DomainScalar, RangeScalar > *precOp, const ESupportSolveUse supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED) const =0
 Initialize a pre-created LinearOpBase preconditioner object given a "compatible" LinearOpBase object.
virtual void uninitializePrec (PreconditionerBase< DomainScalar, RangeScalar > *prec, Teuchos::RCP< const LinearOpSourceBase< RangeScalar, DomainScalar > > *fwdOpSrc=NULL, ESupportSolveUse *supportSolveUse=NULL) const =0
 Uninitialize a LinearOpBase preconditioner object and return its remembered forward linear operator.

Virtual public functions with default implementations

virtual bool applySupportsConj (EConj conj) const
 Return if precOp->apply() supports the argument conj.
virtual bool applyTransposeSupportsConj (EConj conj) const
 Return if precOp->solveTranspose() supports the argument conj.

Detailed Description

template<class RangeScalar, class DomainScalar = RangeScalar>
class Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar >

Factory interface for creating precondtioner objects from LinearOpBase objects.

ToDo: Finish documentation!

Definition at line 47 of file Thyra_PreconditionerFactoryBase.hpp.


Member Function Documentation

template<class RangeScalar, class DomainScalar = RangeScalar>
virtual bool Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar >::isCompatible ( const LinearOpSourceBase< RangeScalar, DomainScalar > &  fwdOpSrc  )  const [pure virtual]

Check that a LinearOpBase object is compatible with *this factory object.

template<class RangeScalar, class DomainScalar = RangeScalar>
virtual Teuchos::RCP<PreconditionerBase<DomainScalar,RangeScalar> > Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar >::createPrec (  )  const [pure virtual]

Create an (uninitialized) LinearOpBase object to be initalized as the preconditioner later in this->initializePrecOp().

Note that on output return->domain().get()==NULL may be true which means that the operator is not fully initialized. In fact, the output operator object is not guaranteed to be fully initialized until after it is passed through this->initializePrecOp().

template<class RangeScalar, class DomainScalar = RangeScalar>
virtual void Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar >::initializePrec ( const Teuchos::RCP< const LinearOpSourceBase< RangeScalar, DomainScalar > > &  fwdOpSrc,
PreconditionerBase< DomainScalar, RangeScalar > *  precOp,
const ESupportSolveUse  supportSolveUse = SUPPORT_SOLVE_UNSPECIFIED 
) const [pure virtual]

Initialize a pre-created LinearOpBase preconditioner object given a "compatible" LinearOpBase object.

Parameters:
fwdOpSrc [in] The forward linear operator that will be used to create the output LinearOpBase preconditioner object. Note that this object is remembered by the *Op object on output.
prec [in/out] The output PreconditionerBase preconditioner object. This object must have be created first by this->createPrec(). The object may have also already been passed through this function several times. Note that subclasses should always first strip off the transpose and scaling by calling unwrap() before attempting to dynamic cast the object.
supportSolveUse [in] Determines if apply() and/or applyTranspose() will be called on the initialized preconditioner operators. This allows *this factory object determine how to best initialize the *prec object. Default supportSolveUse=SUPPORT_SOLVE_UNSPECIFIED
Preconditions:

Postconditions:

template<class RangeScalar, class DomainScalar = RangeScalar>
virtual void Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar >::uninitializePrec ( PreconditionerBase< DomainScalar, RangeScalar > *  prec,
Teuchos::RCP< const LinearOpSourceBase< RangeScalar, DomainScalar > > *  fwdOpSrc = NULL,
ESupportSolveUse supportSolveUse = NULL 
) const [pure virtual]

Uninitialize a LinearOpBase preconditioner object and return its remembered forward linear operator.

Parameters:
prec [in/out] On input, *precOp is an initialized or uninitialized object and on output is uninitialized. Note that "uninitialized" does not mean that precOp is completely stateless. It may still remember some aspect of the matrix fwdOpSrc that will allow for a more efficient initialization next time through this->initializePrecOp().
fwdOpSrc [in/out] If fwdOpSrc!=NULL on input, then on output this is set to same forward operator passed into <tt>this->initializePrecOp().
ESupportSolveUse [in/out] If precOpType!=NULL on input, then on output this is set to same option value passed to this->initializePrecOp().
Preconditions:

Postconditions:

This function should be called before the forward operator passed in to this->initializePrecOp() is modified. Otherwise, *this could be left in an inconsistent state. However, this is not required.

template<class RangeScalar, class DomainScalar>
bool Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar >::applySupportsConj ( EConj  conj  )  const [virtual]

Return if precOp->apply() supports the argument conj.

The default implementation returns true for real valued scalar types or when conj==NONCONJ_ELE for complex valued types.

Definition at line 198 of file Thyra_PreconditionerFactoryBase.hpp.

template<class RangeScalar, class DomainScalar>
bool Thyra::PreconditionerFactoryBase< RangeScalar, DomainScalar >::applyTransposeSupportsConj ( EConj  conj  )  const [virtual]

Return if precOp->solveTranspose() supports the argument conj.

The default implementation returns false.

Definition at line 204 of file Thyra_PreconditionerFactoryBase.hpp.


The documentation for this class was generated from the following file:
Generated on Wed May 12 21:42:15 2010 for Thyra ANA Operator Solve Interfaces by  doxygen 1.4.7