29 #ifndef ANASAZI_BASIC_EIGENPROBLEM_H 30 #define ANASAZI_BASIC_EIGENPROBLEM_H 47 template<
class ScalarType,
class MV,
class OP>
59 BasicEigenproblem(
const Teuchos::RCP<const OP>& Op,
const Teuchos::RCP<MV>& InitVec );
62 BasicEigenproblem(
const Teuchos::RCP<const OP>& Op,
const Teuchos::RCP<const OP>& B,
const Teuchos::RCP<MV>& InitVec );
153 Teuchos::RCP<const OP>
getA()
const {
return(
_AOp ); };
156 Teuchos::RCP<const OP>
getM()
const {
return(
_MOp ); };
208 Teuchos::RCP<const OP>
_Op;
244 template <
class ScalarType,
class MV,
class OP>
254 template <
class ScalarType,
class MV,
class OP>
266 template <
class ScalarType,
class MV,
class OP>
268 const Teuchos::RCP<MV>& InitVec ) :
280 template <
class ScalarType,
class MV,
class OP>
298 template <
class ScalarType,
class MV,
class OP>
305 if ( !
_AOp.get() && !
_Op.get() ) {
return false; }
308 if ( !
_InitVec.get() ) {
return false; }
311 if (
_nev == 0) {
return false; }
328 template <
class ScalarType,
class MV,
class OP>
333 TEUCHOS_TEST_FOR_EXCEPTION(!
isHermitian(), std::invalid_argument,
334 "BasicEigenproblem::computeCurrResVec: This method is not currently " 335 "implemented for non-Hermitian problems. Sorry for any inconvenience.");
340 return Teuchos::null;
343 RCP<MV> X = sol.
Evecs;
344 std::vector<ScalarType> Lambda(sol.
numVecs);
345 for(
int i = 0; i < sol.
numVecs; i++)
346 Lambda[i] = sol.
Evals[i].realpart;
350 if(
_AOp != Teuchos::null)
357 if(
_MOp != Teuchos::null)
Teuchos::RCP< const MV > getAuxVecs() const
Get a pointer to the auxiliary vector.
Teuchos::RCP< const OP > getOperator() const
Get a pointer to the operator for which eigenvalues will be computed.
bool setProblem()
Specify that this eigenproblem is fully defined.
std::vector< Value< ScalarType > > Evals
The computed eigenvalues.
MultiVecTraits< ScalarType, MV > MVT
Type-definition for the MultiVecTraits class corresponding to the MV type.
int getNEV() const
Get the number of eigenvalues (NEV) that are required by this eigenproblem.
void setInitVec(const Teuchos::RCP< MV > &InitVec)
Set the initial guess.
bool isHermitian() const
Get the symmetry information for this eigenproblem.
This class defines the interface required by an eigensolver and status test class to compute solution...
Declaration of basic traits for the multivector type.
OperatorTraits< ScalarType, MV, OP > OPT
Type-definition for the OperatorTraits class corresponding to the OP type.
Virtual base class which defines basic traits for the operator type.
Teuchos::RCP< MV > Evecs
The computed eigenvectors.
Teuchos::RCP< const MV > _AuxVecs
Reference-counted pointer for the auxiliary vector of the eigenproblem .
static void Apply(const OP &Op, const MV &x, MV &y)
Application method which performs operation y = Op*x. An OperatorError exception is thrown if there i...
bool _isSym
Symmetry of the eigenvalue problem.
int _nev
Number of eigenvalues requested.
Teuchos::RCP< MV > _InitVec
Reference-counted pointer for the initial vector of the eigenproblem .
Teuchos::RCP< const OP > _Op
Reference-counted pointer for the operator of the eigenproblem .
Namespace Anasazi contains the classes, structs, enums and utilities used by the Anasazi package...
void setAuxVecs(const Teuchos::RCP< const MV > &AuxVecs)
Set auxiliary vectors.
int numVecs
The number of computed eigenpairs.
Teuchos::RCP< const MV > computeCurrResVec() const
Returns the residual vector corresponding to the computed solution.
Abstract base class which defines the interface required by an eigensolver and status test class to c...
Teuchos::RCP< const MV > getInitVec() const
Get a pointer to the initial vector.
Teuchos::RCP< const OP > getM() const
Get a pointer to the operator M of the eigenproblem .
Traits class which defines basic operations on multivectors.
static Teuchos::RCP< MV > CloneCopy(const MV &mv)
Creates a new MV and copies contents of mv into the new vector (deep copy).
Virtual base class which defines basic traits for the operator type.
static void MvScale(MV &mv, const ScalarType alpha)
Scale each element of the vectors in mv with alpha.
void setSolution(const Eigensolution< ScalarType, MV > &sol)
Set the solution to the eigenproblem.
bool isProblemSet() const
If the problem has been set, this method will return true.
virtual ~BasicEigenproblem()
Destructor.
Teuchos::RCP< const OP > _MOp
Reference-counted pointer for M of the eigenproblem .
Struct for storing an eigenproblem solution.
bool _isSet
Sanity Check Flag.
Teuchos::RCP< const OP > getA() const
Get a pointer to the operator A of the eigenproblem .
static void MvAddMv(const ScalarType alpha, const MV &A, const ScalarType beta, const MV &B, MV &mv)
Replace mv with .
void setPrec(const Teuchos::RCP< const OP > &Prec)
Set the preconditioner for this eigenvalue problem .
const Eigensolution< ScalarType, MV > & getSolution() const
Get the solution to the eigenproblem.
void setHermitian(bool isSym)
Specify the symmetry of this eigenproblem.
This provides a basic implementation for defining standard or generalized eigenvalue problems...
Teuchos::RCP< const OP > _Prec
Reference-counted pointer for the preconditioner of the eigenproblem .
void setM(const Teuchos::RCP< const OP > &M)
Set the operator M of the eigenvalue problem .
BasicEigenproblem()
Empty constructor - allows Anasazi::BasicEigenproblem to be described at a later time through "Set Me...
void setA(const Teuchos::RCP< const OP > &A)
Set the operator A of the eigenvalue problem .
Teuchos::RCP< const OP > _AOp
Reference-counted pointer for A of the eigenproblem .
Teuchos::RCP< const OP > getPrec() const
Get a pointer to the preconditioner of the eigenproblem .
void setNEV(int nev)
Specify the number of eigenvalues (NEV) that are requested.
Eigensolution< ScalarType, MV > _sol
Solution to problem.
void setOperator(const Teuchos::RCP< const OP > &Op)
Set the operator for which eigenvalues will be computed.
static Teuchos::RCP< MV > Clone(const MV &mv, const int numvecs)
Creates a new empty MV containing numvecs columns.