NOX  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | List of all members
LOCA::AnasaziOperator::AbstractStrategy Class Referenceabstract

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

#include <LOCA_AnasaziOperator_AbstractStrategy.H>

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

Public Member Functions

 AbstractStrategy ()
 Constructor.
 
virtual ~AbstractStrategy ()
 Destructor.
 
virtual const std::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 &)
 Give strategy an opportunit to massage the random seed vector.
 
virtual void beginPostProcessing ()
 Hook to precompute info for subsequent repeated calls to tranformEigenvalue and rayleighQuotient.
 
virtual void transformEigenvalue (double &ev_r, double &ev_i) const =0
 Transform eigenvalue in place.
 
virtual
NOX::Abstract::Group::ReturnType 
rayleighQuotient (NOX::Abstract::Vector &evec_r, 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,
...
};

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: