NOX
Development
|
Abstract interface class for Anasazi operator strategies. More...
#include <LOCA_AnasaziOperator_AbstractStrategy.H>
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. | |
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:
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.