LOCA::AnasaziOperator::AbstractStrategy Class Reference

Abstract interface class for Anasazi operator strategies. More...

#include <LOCA_AnasaziOperator_AbstractStrategy.H>

Inheritance diagram for LOCA::AnasaziOperator::AbstractStrategy:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 AbstractStrategy ()
 Constructor.
virtual ~AbstractStrategy ()
 Destructor.
virtual const string & label () const =0
 Return name of this operator.
virtual void apply (const NOX::Abstract::MultiVector &input, NOX::Abstract::MultiVector &output) const =0
 Apply the operator to input with the result in output.
virtual void preProcessSeedVector (NOX::Abstract::MultiVector &ivec)
 Give strategy an opportunit to massage the random seed vector.
virtual void transformEigenvalue (double &ev_r, double &ev_i) const =0
 Transform eigenvalue in place.
virtual
NOX::Abstract::Group::ReturnType 
rayleighQuotient (const NOX::Abstract::Vector &evec_r, const NOX::Abstract::Vector &evec_i, double &rq_r, double &rq_i) const =0
 Compute Rayleigh quotient.

Detailed Description

Abstract interface class for Anasazi operator strategies.

AbstractStrategy defines an abstract interface for anasazi operators. It is used by LOCA::Eigensolver::AnasaziStrategy to compute different kinds of eigenvalues of the steady-state solution after each continuation step.

The interface currently defines several pure virtual methods, apply(), to apply the operator, transformEigenvalues() to transform the computed eigenvalues back to eigenvalues of untransformed state, rayleighQuotient to compute the rayleighQuotient for the operator, and label() to return the name of the operator. Derived classes should implement these method for a particular operator. Constructors for derived classes should be of the form:

 class Derived : public AbstractStrategy {
 public:
   Derived(
   const Teuchos::RCP<LOCA::GlobalData>& global_data,
   const Teuchos::RCP<LOCA::Parameter::SublistParser>& topParams,
   const Teuchos::RCP<Teuchos::ParameterList>& eigenParams,
   const Teuchos::RCP<Teuchos::ParameterList>& solverParams,
   const Teuchos::RCP<NOX::Abstract::Group>& grp);
   ...
 };

where global_data is the LOCA global data object, topParams is the parsed top-level parameter list, eigenParams is a parameter list of eigensolver parameters, solverParams is a parameter list of linear solver parameters, and grp is the group representing the Jacobian and mass matrices.

This class and its children follow the Strategy pattern as defined in Erich Gamma, et al. "Design Patterns: Elements of Reusable Object-Oriented Software." Addison Wesley, Boston, MA, 1995.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends
Generated on Wed Apr 13 09:59:41 2011 for NOX by  doxygen 1.6.3