10 #ifndef ANASAZI_TRACEMIN_SOLMGR_HPP
11 #define ANASAZI_TRACEMIN_SOLMGR_HPP
37 # include <Teuchos_FancyOStream.hpp>
45 namespace Experimental {
47 template<
class ScalarType,
class MV,
class OP>
114 bool exceededMaxIter() {
return (this->iter_ >= maxits_); };
121 {
TEUCHOS_TEST_FOR_EXCEPTION(
true, std::logic_error,
"Anasazi::TraceMinSolMgr::performRestart(): TraceMin does not perform restarts!"); };
138 template <
class MagnitudeType,
class MV,
class OP>
143 typedef std::complex<MagnitudeType> ScalarType;
149 MagnitudeType::this_class_is_missing_a_specialization();
155 template<
class ScalarType,
class MV,
class OP>
160 maxits_ = pl.
get(
"Maximum Iterations", 100);
161 TEUCHOS_TEST_FOR_EXCEPTION(maxits_ < 1, std::invalid_argument,
"Anasazi::TraceMinSolMgr::constructor(): \"Maximum Iterations\" must be strictly positive.");
165 this->blockSize_ = pl.
get(
"Block Size",2*this->problem_->getNEV());
167 "Anasazi::TraceMinSolMgr::constructor(): \"Block Size\" must be greater than or equal to the number of desired eigenpairs.");
169 this->useHarmonic_ = pl.
get(
"Use Harmonic Ritz Values",
false);
171 "Anasazi::TraceMinSolMgr::constructor(): Please disable the harmonic Ritz values. It doesn't make sense to use them with TraceMin, which does not use expanding subspaces. Perhaps you wanted TraceMin-Davidson?");
174 this->numBlocks_ = 1;
175 this->numRestartBlocks_ = 1;
178 std::invalid_argument,
179 "Anasazi::TraceMinSolMgr::constructor(): Potentially impossible orthogonality requests. Reduce basis size or locking size.");
182 "Anasazi::TraceMinDavidsonSolMgr: Not enough storage space for requested number of eigenpairs.");
188 template <
class ScalarType,
class MV,
class OP>
static ptrdiff_t GetGlobalLength(const MV &mv)
Return the number of rows in the given multivector mv.
This class implements a TraceMIN iteration, a preconditioned iteration for solving linear symmetric p...
This class defines the interface required by an eigensolver and status test class to compute solution...
T & get(const std::string &name, T def_value)
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Virtual base class which defines basic traits for the operator type.
Basic implementation of the Anasazi::SortManager class.
The Anasazi::TraceMinBaseSolMgr provides an abstract base class for the TraceMin series of solver man...
A status test for testing the norm of the eigenvectors residuals along with a set of auxiliary eigenv...
Anasazi's templated virtual class for providing routines for orthogonalization and orthonormalization...
TraceMinSolMgr(const Teuchos::RCP< Eigenproblem< ScalarType, MV, OP > > &problem, Teuchos::ParameterList &pl)
Basic constructor for TraceMinSolMgr.
Abstract class definition for Anasazi Output Managers.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Abstract base class which defines the interface required by an eigensolver and status test class to c...
A status test for testing the norm of the eigenvectors residuals.
Traits class which defines basic operations on multivectors.
Anasazi header file which uses auto-configuration information to include necessary C++ headers...
The Anasazi::TraceMinBaseSolMgr provides an abstract base class for the TraceMin series of solver man...
The Anasazi::TraceMinSolMgr provides a flexible solver manager over the TraceMin eigensolver.
Special StatusTest for printing status tests.
Status test for forming logical combinations of other status tests.
Types and exceptions used within Anasazi solvers and interfaces.
This is an abstract base class for the trace minimization eigensolvers.
Anasazi's templated pure virtual class for managing the sorting of approximate eigenvalues computed b...
Common interface of stopping criteria for Anasazi's solvers.
Implementation of the trace minimization eigensolver.
Class which provides internal utilities for the Anasazi solvers.