46 #ifndef ANASAZI_TRACEMIN_DAVIDSON_HPP 
   47 #define ANASAZI_TRACEMIN_DAVIDSON_HPP 
   63 namespace Experimental {
 
   79   template <
class ScalarType, 
class MV, 
class OP>
 
  126   template <
class ScalarType, 
class MV, 
class OP>
 
  135     TraceMinBase<ScalarType,MV,OP>(problem,sorter,printer,tester,ortho,params)
 
  145   template <
class ScalarType, 
class MV, 
class OP>
 
  150            "Anasazi::TraceMinDavidson::addToBasis(): Delta does not have blockSize_ columns");
 
  154     std::vector<int> curind(this->curDim_), newind(this->blockSize_);
 
  161     for(
int i=0; i<this->curDim_; i++)
 
  163     lclV = MVT::CloneViewNonConst(*this->V_,curind);
 
  167     for (
int i=0; i<this->blockSize_; ++i) 
 
  168       newind[i] = this->curDim_ + i;
 
  169     lclV = MVT::CloneViewNonConst(*this->V_,newind);
 
  172     MVT::SetBlock(*Delta,newind,*this->V_);
 
  173     this->curDim_ += this->blockSize_;
 
  180       lclMV = MVT::CloneViewNonConst(*this->MV_,curind);
 
  184       lclMV = MVT::CloneViewNonConst(*this->MV_,newind);
 
  186         #ifdef ANASAZI_TEUCHOS_TIME_MONITOR 
  189         this->count_ApplyM_+= this->blockSize_;
 
  190         OPT::Apply(*this->MOp_,*lclV,*lclMV);
 
  194         #ifdef ANASAZI_TEUCHOS_TIME_MONITOR 
  199         rank = this->orthman_->projectAndNormalizeMat(*lclV,projVecs,
 
  201                Teuchos::null,lclMV,MprojVecs);
 
  208       #ifdef ANASAZI_TEUCHOS_TIME_MONITOR 
  213       rank = this->orthman_->projectAndNormalizeMat(*lclV,projVecs);
 
  219            "Anasazi::TraceMinDavidson::addToBasis(): Couldn't generate basis of full rank.");
 
  222     if(this->Op_ != Teuchos::null)
 
  224       #ifdef ANASAZI_TEUCHOS_TIME_MONITOR 
  227       this->count_ApplyOp_+= this->blockSize_;
 
  229       lclKV = MVT::CloneViewNonConst(*this->KV_,newind);
 
  230       OPT::Apply(*this->Op_,*lclV,*lclKV);
 
  241   template <
class ScalarType, 
class MV, 
class OP>
 
  246            "Anasazi::TraceMinDavidson::addToBasis(): Delta does not have blockSize_ columns");
 
  250     std::vector<int> curind(this->curDim_), newind(this->blockSize_);
 
  256     for(
int i=0; i<this->curDim_; i++)
 
  258     projVecs = MVT::CloneViewNonConst(*this->V_,curind);
 
  260     if(this->Op_ != Teuchos::null)
 
  262       lclKV = MVT::CloneViewNonConst(*this->KV_,curind);
 
  267     for (
int i=0; i<this->blockSize_; ++i) 
 
  268       newind[i] = this->curDim_ + i;
 
  269     lclV = MVT::CloneViewNonConst(*this->V_,newind);
 
  272     MVT::SetBlock(*Delta,newind,*this->V_);
 
  273     this->curDim_ += this->blockSize_;
 
  276     if(this->auxVecs_.size() > 0)
 
  277       this->orthman_->projectMat(*lclV,this->auxVecs_);
 
  280     if(this->Op_ != Teuchos::null)
 
  282       #ifdef ANASAZI_TEUCHOS_TIME_MONITOR 
  285       this->count_ApplyOp_+= this->blockSize_;
 
  287       lclKV = MVT::CloneViewNonConst(*this->KV_,newind);
 
  288       OPT::Apply(*this->Op_,*lclV,*lclKV);
 
  294     int nauxVecs = MVT::GetNumberVecs(*projVecs);
 
  297     this->orthman_->innerProdMat(*KprojVecs,*lclKV,*gamma);
 
  300     MVT::MvTimesMatAddMv(-this->ONE,*KprojVecs,*gamma,this->ONE,*lclKV);
 
  303     MVT::MvTimesMatAddMv(-this->ONE,*projVecs,*gamma,this->ONE,*lclV);
 
  307     rank = this->orthman_->normalizeMat(*lclKV,gamma2);
 
  313     RCP<MV> tempMV = MVT::CloneCopy(*lclV);
 
  314     MVT::MvTimesMatAddMv(this->ONE,*tempMV,*gamma2,this->ZERO,*lclV);
 
  317            "Anasazi::TraceMinDavidson::addToBasis(): Couldn't generate basis of full rank.");
 
  322       #ifdef ANASAZI_TEUCHOS_TIME_MONITOR 
  325       this->count_ApplyM_+= this->blockSize_;
 
  327       lclMV = MVT::CloneViewNonConst(*this->MV_,newind);
 
  328       OPT::Apply(*this->MOp_,*lclV,*lclMV);
 
Abstract base class for trace minimization eigensolvers. 
 
Templated virtual class for providing orthogonalization/orthonormalization methods with matrix-based ...
 
This class defines the interface required by an eigensolver and status test class to compute solution...
 
Declaration of basic traits for the multivector type. 
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
 
Virtual base class which defines basic traits for the operator type. 
 
Pure virtual base class which describes the basic interface to the iterative eigensolver. 
 
Anasazi's templated virtual class for providing routines for orthogonalization and orthonormalization...
 
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
 
Output managers remove the need for the eigensolver to know any information about the required output...
 
TraceMinDavidson(const Teuchos::RCP< Eigenproblem< ScalarType, MV, OP > > &problem, const Teuchos::RCP< SortManager< typename Teuchos::ScalarTraits< ScalarType >::magnitudeType > > &sorter, const Teuchos::RCP< OutputManager< ScalarType > > &printer, const Teuchos::RCP< StatusTest< ScalarType, MV, OP > > &tester, const Teuchos::RCP< MatOrthoManager< ScalarType, MV, OP > > &ortho, Teuchos::ParameterList ¶ms)
TraceMinBase constructor with eigenproblem, solver utilities, and parameter list of solver options...
 
Traits class which defines basic operations on multivectors. 
 
Virtual base class which defines basic traits for the operator type. 
 
Anasazi header file which uses auto-configuration information to include necessary C++ headers...
 
void push_back(const value_type &x)
 
This class implements a TraceMin-Davidson iteration for solving symmetric generalized eigenvalue prob...
 
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. 
 
int setMatrix(const RCP< SerialDenseMatrix< OrdinalType, ScalarType > > &A)