10#ifndef ANASAZI_TRACEMIN_SOLMGR_HPP 
   11#define ANASAZI_TRACEMIN_SOLMGR_HPP 
   33#include "Teuchos_BLAS.hpp" 
   34#include "Teuchos_LAPACK.hpp" 
   35#include "Teuchos_TimeMonitor.hpp" 
   37#  include <Teuchos_FancyOStream.hpp> 
   43template<
class ScalarType, 
class MV, 
class OP>
 
   82    typedef Teuchos::ScalarTraits<ScalarType> SCT;
 
   83    typedef typename Teuchos::ScalarTraits<ScalarType>::magnitudeType MagnitudeType;
 
   84    typedef Teuchos::ScalarTraits<MagnitudeType> MT;
 
  102                             Teuchos::ParameterList &pl );
 
  110  bool exceededMaxIter() { 
return (this->iter_ >= maxits_); };
 
  117  { TEUCHOS_TEST_FOR_EXCEPTION(
true, std::logic_error, 
"Anasazi::TraceMinSolMgr::performRestart(): TraceMin does not perform restarts!"); };
 
  120  Teuchos::RCP< TraceMinBase<ScalarType,MV,OP> > createSolver( 
 
  121            const Teuchos::RCP<
SortManager<
typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> > &sorter,
 
  124            Teuchos::ParameterList &plist
 
 
  134template <
class MagnitudeType, 
class MV, 
class OP>
 
  139    typedef std::complex<MagnitudeType> ScalarType;
 
  142            Teuchos::ParameterList &pl )
 
  145        MagnitudeType::this_class_is_missing_a_specialization();
 
  151template<
class ScalarType, 
class MV, 
class OP>
 
  156  maxits_ = pl.get(
"Maximum Iterations", 100);
 
  157  TEUCHOS_TEST_FOR_EXCEPTION(maxits_ < 1, std::invalid_argument, 
"Anasazi::TraceMinSolMgr::constructor(): \"Maximum Iterations\" must be strictly positive.");
 
  161  this->blockSize_ = pl.get(
"Block Size",2*this->problem_->getNEV());
 
  162  TEUCHOS_TEST_FOR_EXCEPTION(this->blockSize_ < this->problem_->getNEV(), std::invalid_argument,
 
  163         "Anasazi::TraceMinSolMgr::constructor(): \"Block Size\" must be greater than or equal to the number of desired eigenpairs.");
 
  165  this->useHarmonic_ = pl.get(
"Use Harmonic Ritz Values", 
false);
 
  166  TEUCHOS_TEST_FOR_EXCEPTION(this->useHarmonic_, std::invalid_argument,
 
  167         "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?");
 
  170  this->numBlocks_ = 1;
 
  171  this->numRestartBlocks_ = 1;
 
  173  TEUCHOS_TEST_FOR_EXCEPTION(
static_cast<ptrdiff_t
>(this->numBlocks_)*this->blockSize_ + this->maxLocked_ > MVT::GetGlobalLength(*this->problem_->getInitVec()),
 
  174         std::invalid_argument,
 
  175         "Anasazi::TraceMinSolMgr::constructor(): Potentially impossible orthogonality requests. Reduce basis size or locking size.");
 
  177  TEUCHOS_TEST_FOR_EXCEPTION(this->maxLocked_ + this->blockSize_ < this->problem_->getNEV(), std::invalid_argument,
 
  178         "Anasazi::TraceMinDavidsonSolMgr: Not enough storage space for requested number of eigenpairs.");
 
 
  184template <
class ScalarType, 
class MV, 
class OP>
 
  186            const Teuchos::RCP<
SortManager<
typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> > &sorter,
 
  189            Teuchos::ParameterList &plist
 
Basic implementation of the Anasazi::SortManager class.
 
Anasazi header file which uses auto-configuration information to include necessary C++ headers.
 
Abstract base class which defines the interface required by an eigensolver and status test class to c...
 
Abstract class definition for Anasazi Output Managers.
 
Class which provides internal utilities for the Anasazi solvers.
 
Status test for forming logical combinations of other status tests.
 
Special StatusTest for printing status tests.
 
A status test for testing the norm of the eigenvectors residuals.
 
A status test for testing the norm of the eigenvectors residuals along with a set of auxiliary eigenv...
 
The Anasazi::TraceMinBaseSolMgr provides an abstract base class for the TraceMin series of solver man...
 
Implementation of the trace minimization eigensolver.
 
Types and exceptions used within Anasazi solvers and interfaces.
 
This class defines the interface required by an eigensolver and status test class to compute solution...
 
The Anasazi::TraceMinBaseSolMgr provides an abstract base class for the TraceMin series of solver man...
 
This is an abstract base class for the trace minimization eigensolvers.
 
The Anasazi::TraceMinSolMgr provides a flexible solver manager over the TraceMin eigensolver.
 
TraceMinSolMgr(const Teuchos::RCP< Eigenproblem< ScalarType, MV, OP > > &problem, Teuchos::ParameterList &pl)
Basic constructor for TraceMinSolMgr.
 
This class implements a TraceMIN iteration, a preconditioned iteration for solving linear symmetric p...
 
Anasazi's templated virtual class for providing routines for orthogonalization and orthonormalization...
 
Traits class which defines basic operations on multivectors.
 
Virtual base class which defines basic traits for the operator type.
 
Anasazi's templated pure virtual class for managing the sorting of approximate eigenvalues computed b...
 
Common interface of stopping criteria for Anasazi's solvers.
 
Namespace Anasazi contains the classes, structs, enums and utilities used by the Anasazi package.