42 #ifndef BELOS_BLOCK_CG_SOLMGR_HPP
43 #define BELOS_BLOCK_CG_SOLMGR_HPP
66 #ifdef BELOS_TEUCHOS_TIME_MONITOR
69 #if defined(HAVE_TEUCHOSCORE_CXX11)
70 # include <type_traits>
71 #endif // defined(HAVE_TEUCHOSCORE_CXX11)
116 template<
class ScalarType,
class MV,
class OP,
117 const bool lapackSupportsScalarType =
142 template<
class ScalarType,
class MV,
class OP>
254 return Teuchos::tuple(timerSolve_);
325 std::string description()
const override;
363 static constexpr
int maxIters_default_ = 1000;
364 static constexpr
bool adaptiveBlockSize_default_ =
true;
365 static constexpr
bool showMaxResNormOnly_default_ =
false;
366 static constexpr
bool useSingleReduction_default_ =
false;
367 static constexpr
int blockSize_default_ = 1;
370 static constexpr
int outputFreq_default_ = -1;
371 static constexpr
const char * resNorm_default_ =
"TwoNorm";
372 static constexpr
bool foldConvergenceDetectionIntoAllreduce_default_ =
false;
373 static constexpr
const char * resScale_default_ =
"Norm of Initial Residual";
374 static constexpr
const char * label_default_ =
"Belos";
375 static constexpr
const char * orthoType_default_ =
"ICGS";
376 static constexpr
bool assertPositiveDefiniteness_default_ =
true;
377 static constexpr std::ostream * outputStream_default_ = &std::cout;
421 template<
class ScalarType,
class MV,
class OP>
423 outputStream_(Teuchos::
rcp(outputStream_default_,false)),
427 maxIters_(maxIters_default_),
429 blockSize_(blockSize_default_),
430 verbosity_(verbosity_default_),
431 outputStyle_(outputStyle_default_),
432 outputFreq_(outputFreq_default_),
433 adaptiveBlockSize_(adaptiveBlockSize_default_),
434 showMaxResNormOnly_(showMaxResNormOnly_default_),
435 useSingleReduction_(useSingleReduction_default_),
436 orthoType_(orthoType_default_),
437 resScale_(resScale_default_),
438 assertPositiveDefiniteness_(assertPositiveDefiniteness_default_),
439 foldConvergenceDetectionIntoAllreduce_(foldConvergenceDetectionIntoAllreduce_default_),
440 label_(label_default_),
446 template<
class ScalarType,
class MV,
class OP>
451 outputStream_(Teuchos::
rcp(outputStream_default_,false)),
455 maxIters_(maxIters_default_),
457 blockSize_(blockSize_default_),
458 verbosity_(verbosity_default_),
459 outputStyle_(outputStyle_default_),
460 outputFreq_(outputFreq_default_),
461 adaptiveBlockSize_(adaptiveBlockSize_default_),
462 showMaxResNormOnly_(showMaxResNormOnly_default_),
463 useSingleReduction_(useSingleReduction_default_),
464 orthoType_(orthoType_default_),
465 resScale_(resScale_default_),
466 assertPositiveDefiniteness_(assertPositiveDefiniteness_default_),
467 foldConvergenceDetectionIntoAllreduce_(foldConvergenceDetectionIntoAllreduce_default_),
468 label_(label_default_),
472 "BlockCGSolMgr's constructor requires a nonnull LinearProblem instance.");
482 template<
class ScalarType,
class MV,
class OP>
497 maxIters_ = params->
get(
"Maximum Iterations",maxIters_default_);
500 params_->set(
"Maximum Iterations", maxIters_);
502 maxIterTest_->setMaxIters( maxIters_ );
507 blockSize_ = params->
get(
"Block Size",blockSize_default_);
509 "Belos::BlockCGSolMgr: \"Block Size\" must be strictly positive.");
512 params_->set(
"Block Size", blockSize_);
517 adaptiveBlockSize_ = params->
get(
"Adaptive Block Size",adaptiveBlockSize_default_);
520 params_->set(
"Adaptive Block Size", adaptiveBlockSize_);
525 useSingleReduction_ = params->
get(
"Use Single Reduction", useSingleReduction_default_);
526 if (useSingleReduction_)
527 foldConvergenceDetectionIntoAllreduce_ = params->
get(
"Fold Convergence Detection Into Allreduce",
528 foldConvergenceDetectionIntoAllreduce_default_);
533 std::string tempLabel = params->
get(
"Timer Label", label_default_);
536 if (tempLabel != label_) {
538 params_->set(
"Timer Label", label_);
539 std::string solveLabel = label_ +
": BlockCGSolMgr total solve time";
540 #ifdef BELOS_TEUCHOS_TIME_MONITOR
544 ortho_->setLabel( label_ );
551 if (Teuchos::isParameterType<int>(*params,
"Verbosity")) {
552 verbosity_ = params->
get(
"Verbosity", verbosity_default_);
554 verbosity_ = (int)Teuchos::getParameter<Belos::MsgType>(*params,
"Verbosity");
558 params_->set(
"Verbosity", verbosity_);
560 printer_->setVerbosity(verbosity_);
565 if (Teuchos::isParameterType<int>(*params,
"Output Style")) {
566 outputStyle_ = params->
get(
"Output Style", outputStyle_default_);
568 outputStyle_ = (int)Teuchos::getParameter<Belos::OutputType>(*params,
"Output Style");
572 params_->set(
"Output Style", outputStyle_);
578 outputStream_ = Teuchos::getParameter<Teuchos::RCP<std::ostream> >(*params,
"Output Stream");
581 params_->set(
"Output Stream", outputStream_);
583 printer_->setOStream( outputStream_ );
589 outputFreq_ = params->
get(
"Output Frequency", outputFreq_default_);
593 params_->set(
"Output Frequency", outputFreq_);
595 outputTest_->setOutputFrequency( outputFreq_ );
604 bool changedOrthoType =
false;
606 std::string tempOrthoType = params->
get(
"Orthogonalization",orthoType_default_);
607 if (tempOrthoType != orthoType_) {
608 orthoType_ = tempOrthoType;
609 changedOrthoType =
true;
612 params_->set(
"Orthogonalization", orthoType_);
615 if (params->
isParameter(
"Orthogonalization Constant")) {
617 orthoKappa_ = params->
get (
"Orthogonalization Constant",
621 orthoKappa_ = params->
get (
"Orthogonalization Constant",
626 params_->set(
"Orthogonalization Constant",orthoKappa_);
627 if (orthoType_==
"DGKS") {
628 if (orthoKappa_ > 0 && ortho_ !=
Teuchos::null && !changedOrthoType) {
638 if (orthoType_==
"DGKS" && orthoKappa_ > 0) {
639 paramsOrtho->
set (
"depTol", orthoKappa_ );
650 if (params->
isParameter(
"Convergence Tolerance")) {
652 convtol_ = params->
get (
"Convergence Tolerance",
660 params_->set(
"Convergence Tolerance", convtol_);
662 convTest_->setTolerance( convtol_ );
665 if (params->
isParameter(
"Show Maximum Residual Norm Only")) {
666 showMaxResNormOnly_ = Teuchos::getParameter<bool>(*params,
"Show Maximum Residual Norm Only");
669 params_->set(
"Show Maximum Residual Norm Only", showMaxResNormOnly_);
671 convTest_->setShowMaxResNormOnly( showMaxResNormOnly_ );
675 bool newResTest =
false;
677 std::string tempResScale = resScale_;
678 if (params->
isParameter (
"Implicit Residual Scaling")) {
679 tempResScale = params->
get<std::string> (
"Implicit Residual Scaling");
683 if (resScale_ != tempResScale) {
686 resScale_ = tempResScale;
689 params_->set (
"Implicit Residual Scaling", resScale_);
691 if (! convTest_.is_null ()) {
695 if (params->
isType<std::string> (
"Residual Norm")) {
699 convTest_->defineResForm(StatusTestResNorm_t::Implicit, normType);
702 catch (std::exception& e) {
717 if (convTest_.is_null () || newResTest) {
721 if (params->
isType<std::string> (
"Residual Norm")) {
726 convTest_ =
rcp (
new StatusTestResNorm_t (convtol_, 1, showMaxResNormOnly_));
727 convTest_->defineResForm(StatusTestResNorm_t::Implicit, normType);
731 if (sTest_.is_null () || newResTest)
732 sTest_ =
Teuchos::rcp(
new StatusTestCombo_t( StatusTestCombo_t::OR, maxIterTest_, convTest_ ) );
734 if (outputTest_.is_null () || newResTest) {
742 std::string solverDesc =
" Block CG ";
743 outputTest_->setSolverDesc( solverDesc );
748 if (params->
isParameter(
"Assert Positive Definiteness")) {
749 assertPositiveDefiniteness_ = Teuchos::getParameter<bool>(*params,
"Assert Positive Definiteness");
750 params_->set(
"Assert Positive Definiteness", assertPositiveDefiniteness_);
755 std::string solveLabel = label_ +
": BlockCGSolMgr total solve time";
756 #ifdef BELOS_TEUCHOS_TIME_MONITOR
766 template<
class ScalarType,
class MV,
class OP>
776 "The relative residual tolerance that needs to be achieved by the\n"
777 "iterative solver in order for the linear system to be declared converged.");
778 pl->
set(
"Maximum Iterations", static_cast<int>(maxIters_default_),
779 "The maximum number of block iterations allowed for each\n"
780 "set of RHS solved.");
781 pl->
set(
"Block Size", static_cast<int>(blockSize_default_),
782 "The number of vectors in each block.");
783 pl->
set(
"Adaptive Block Size", static_cast<bool>(adaptiveBlockSize_default_),
784 "Whether the solver manager should adapt to the block size\n"
785 "based on the number of RHS to solve.");
786 pl->
set(
"Verbosity", static_cast<int>(verbosity_default_),
787 "What type(s) of solver information should be outputted\n"
788 "to the output stream.");
789 pl->
set(
"Output Style", static_cast<int>(outputStyle_default_),
790 "What style is used for the solver information outputted\n"
791 "to the output stream.");
792 pl->
set(
"Output Frequency", static_cast<int>(outputFreq_default_),
793 "How often convergence information should be outputted\n"
794 "to the output stream.");
796 "A reference-counted pointer to the output stream where all\n"
797 "solver output is sent.");
798 pl->
set(
"Show Maximum Residual Norm Only", static_cast<bool>(showMaxResNormOnly_default_),
799 "When convergence information is printed, only show the maximum\n"
800 "relative residual norm when the block size is greater than one.");
801 pl->
set(
"Use Single Reduction", static_cast<bool>(useSingleReduction_default_),
802 "Use single reduction iteration when the block size is one.");
803 pl->
set(
"Implicit Residual Scaling", resScale_default_,
804 "The type of scaling used in the residual convergence test.");
805 pl->
set(
"Timer Label", static_cast<const char *>(label_default_),
806 "The string to use as a prefix for the timer labels.");
807 pl->
set(
"Orthogonalization", static_cast<const char *>(orthoType_default_),
808 "The type of orthogonalization to use: DGKS, ICGS, or IMGS.");
809 pl->
set(
"Assert Positive Definiteness",static_cast<bool>(assertPositiveDefiniteness_default_),
810 "Assert for positivity of p^H*A*p in CG iteration.");
812 "The constant used by DGKS orthogonalization to determine\n"
813 "whether another step of classical Gram-Schmidt is necessary.");
814 pl->
set(
"Residual Norm",static_cast<const char *>(resNorm_default_),
815 "Norm used for the convergence check on the residual.");
816 pl->
set(
"Fold Convergence Detection Into Allreduce",static_cast<bool>(foldConvergenceDetectionIntoAllreduce_default_),
817 "Merge the allreduce for convergence detection with the one for CG.\n"
818 "This saves one all-reduce, but incurs more computation.");
826 template<
class ScalarType,
class MV,
class OP>
830 using Teuchos::rcp_const_cast;
831 using Teuchos::rcp_dynamic_cast;
838 setParameters(Teuchos::parameterList(*getValidParameters()));
846 "Belos::BlockCGSolMgr::solve(): Linear problem is not ready, setProblem() "
847 "has not been called.");
851 int numRHS2Solve = MVT::GetNumberVecs( *(problem_->getRHS()) );
852 int numCurrRHS = ( numRHS2Solve < blockSize_) ? numRHS2Solve : blockSize_;
854 std::vector<int> currIdx, currIdx2;
859 if ( adaptiveBlockSize_ ) {
860 blockSize_ = numCurrRHS;
861 currIdx.resize( numCurrRHS );
862 currIdx2.resize( numCurrRHS );
863 for (
int i=0; i<numCurrRHS; ++i)
864 { currIdx[i] = startPtr+i; currIdx2[i]=i; }
868 currIdx.resize( blockSize_ );
869 currIdx2.resize( blockSize_ );
870 for (
int i=0; i<numCurrRHS; ++i)
871 { currIdx[i] = startPtr+i; currIdx2[i]=i; }
872 for (
int i=numCurrRHS; i<blockSize_; ++i)
873 { currIdx[i] = -1; currIdx2[i] = i; }
877 problem_->setLSIndex( currIdx );
882 plist.
set(
"Block Size",blockSize_);
885 outputTest_->reset();
889 bool isConverged =
true;
894 plist.
set(
"Assert Positive Definiteness", assertPositiveDefiniteness_);
896 RCP<CGIteration<ScalarType,MV,OP> > block_cg_iter;
897 if (blockSize_ == 1) {
901 if (useSingleReduction_) {
902 plist.
set(
"Fold Convergence Detection Into Allreduce",
903 foldConvergenceDetectionIntoAllreduce_);
906 outputTest_, convTest_, plist));
911 outputTest_, plist));
922 #ifdef BELOS_TEUCHOS_TIME_MONITOR
926 while ( numRHS2Solve > 0 ) {
929 std::vector<int> convRHSIdx;
930 std::vector<int> currRHSIdx( currIdx );
931 currRHSIdx.resize(numCurrRHS);
934 block_cg_iter->resetNumIters();
937 outputTest_->resetNumCalls();
940 RCP<MV> R_0 = MVT::CloneViewNonConst( *(rcp_const_cast<MV>(problem_->getInitResVec())), currIdx );
945 block_cg_iter->initializeCG(newstate);
951 block_cg_iter->iterate();
955 if (convTest_->getStatus() ==
Passed) {
960 std::vector<int> convIdx =
961 rcp_dynamic_cast<conv_test_type>(convTest_)->convIndices();
966 if (convIdx.size() == currRHSIdx.size())
971 problem_->setCurrLS();
976 std::vector<int> unconvIdx(currRHSIdx.size());
977 for (
unsigned int i=0; i<currRHSIdx.size(); ++i) {
979 for (
unsigned int j=0; j<convIdx.size(); ++j) {
980 if (currRHSIdx[i] == convIdx[j]) {
986 currIdx2[have] = currIdx2[i];
987 currRHSIdx[have++] = currRHSIdx[i];
992 currRHSIdx.resize(have);
993 currIdx2.resize(have);
996 problem_->setLSIndex( currRHSIdx );
999 std::vector<MagnitudeType> norms;
1000 R_0 = MVT::CloneCopy( *(block_cg_iter->getNativeResiduals(&norms)),currIdx2 );
1001 for (
int i=0; i<have; ++i) { currIdx2[i] = i; }
1004 block_cg_iter->setBlockSize( have );
1009 block_cg_iter->initializeCG(defstate);
1015 else if (maxIterTest_->getStatus() ==
Passed) {
1016 isConverged =
false;
1025 "Belos::BlockCGSolMgr::solve(): Neither the convergence test nor "
1026 "the maximum iteration count test passed. Please report this bug "
1027 "to the Belos developers.");
1030 catch (
const std::exception &e) {
1031 std::ostream& err = printer_->stream (
Errors);
1032 err <<
"Error! Caught std::exception in CGIteration::iterate() at "
1033 <<
"iteration " << block_cg_iter->getNumIters() << std::endl
1034 << e.what() << std::endl;
1041 problem_->setCurrLS();
1044 startPtr += numCurrRHS;
1045 numRHS2Solve -= numCurrRHS;
1046 if ( numRHS2Solve > 0 ) {
1047 numCurrRHS = ( numRHS2Solve < blockSize_) ? numRHS2Solve : blockSize_;
1049 if ( adaptiveBlockSize_ ) {
1050 blockSize_ = numCurrRHS;
1051 currIdx.resize( numCurrRHS );
1052 currIdx2.resize( numCurrRHS );
1053 for (
int i=0; i<numCurrRHS; ++i)
1054 { currIdx[i] = startPtr+i; currIdx2[i] = i; }
1057 currIdx.resize( blockSize_ );
1058 currIdx2.resize( blockSize_ );
1059 for (
int i=0; i<numCurrRHS; ++i)
1060 { currIdx[i] = startPtr+i; currIdx2[i] = i; }
1061 for (
int i=numCurrRHS; i<blockSize_; ++i)
1062 { currIdx[i] = -1; currIdx2[i] = i; }
1065 problem_->setLSIndex( currIdx );
1068 block_cg_iter->setBlockSize( blockSize_ );
1071 currIdx.resize( numRHS2Solve );
1082 #ifdef BELOS_TEUCHOS_TIME_MONITOR
1093 numIters_ = maxIterTest_->getNumIters();
1099 const std::vector<MagnitudeType>* pTestValues =
1100 rcp_dynamic_cast<conv_test_type>(convTest_)->getTestValue();
1103 "Belos::BlockCGSolMgr::solve(): The convergence test's getTestValue() "
1104 "method returned NULL. Please report this bug to the Belos developers.");
1107 "Belos::BlockCGSolMgr::solve(): The convergence test's getTestValue() "
1108 "method returned a vector of length zero. Please report this bug to the "
1109 "Belos developers.");
1114 achievedTol_ = *std::max_element (pTestValues->begin(), pTestValues->end());
1124 template<
class ScalarType,
class MV,
class OP>
1127 std::ostringstream oss;
1130 oss <<
"Ortho Type='"<<orthoType_<<
"\', Block Size=" << blockSize_;
static const double orthoKappa
DGKS orthogonalization constant.
ScaleType convertStringToScaleType(const std::string &scaleType)
Convert the given string to its ScaleType enum value.
Teuchos::RCP< const MV > R
The current residual.
bool isLOADetected() const override
Return whether a loss of accuracy was detected by this solver during the most current solve...
Collection of types and exceptions used within the Belos solvers.
Teuchos::Array< Teuchos::RCP< Teuchos::Time > > getTimers() const
Return the timers for this object.
Belos's basic output manager for sending information of select verbosity levels to the appropriate ou...
int maxIters_
Maximum iteration count (read from parameter list).
Class which manages the output and verbosity of the Belos solvers.
bool is_null(const boost::shared_ptr< T > &p)
bool isSet_
Whether or not the parameters have been set (via setParameters()).
Teuchos::RCP< Teuchos::ParameterList > params_
Current parameter list.
Teuchos::RCP< StatusTestOutput< ScalarType, MV, OP > > outputTest_
Output "status test" that controls all the other status tests.
ScaleType
The type of scaling to use on the residual norm value.
Teuchos::RCP< SolverManager< ScalarType, MV, OP > > clone() const override
clone for Inverted Injection (DII)
Teuchos::ScalarTraits< ScalarType > SCT
This class implements the preconditioned Conjugate Gradient (CG) iteration.
T & get(ParameterList &l, const std::string &name)
Structure to contain pointers to CGIteration state variables.
Belos concrete class for performing the conjugate-gradient (CG) iteration.
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
bool is_null(const std::shared_ptr< T > &p)
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
A factory class for generating StatusTestOutput objects.
Belos concrete class for performing the block conjugate-gradient (CG) iteration.
An implementation of StatusTestResNorm using a family of residual norms.
void setProblem(const Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > &problem) override
Set the linear problem that needs to be solved.
std::string label_
Prefix label for all the timers.
The Belos::BlockCGSolMgr provides a powerful and fully-featured solver manager over the CG and BlockC...
static const double convTol
Default convergence tolerance.
Belos::StatusTest class for specifying a maximum number of iterations.
static std::string name()
BlockCGSolMgrLinearProblemFailure(const std::string &what_arg)
Teuchos::RCP< const Teuchos::ParameterList > getCurrentParameters() const override
Get a parameter list containing the current parameters for this object.
BlockCGSolMgrLinearProblemFailure is thrown when the linear problem is not setup (i.e.
A factory class for generating StatusTestOutput objects.
Teuchos::RCP< MatOrthoManager< ScalarType, MV, OP > > ortho_
Orthogonalization manager.
BlockCGSolMgr(const Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > &problem, const Teuchos::RCP< Teuchos::ParameterList > &pl)
Teuchos::RCP< StatusTestMaxIters< ScalarType, MV, OP > > maxIterTest_
Maximum iteration count stopping criterion.
Traits class which defines basic operations on multivectors.
Belos::StatusTest for logically combining several status tests.
Teuchos::RCP< StatusTest< ScalarType, MV, OP > > sTest_
Aggregate stopping criterion.
bool assertPositiveDefiniteness_
Details::SolverManagerRequiresLapack< ScalarType, MV, OP, requiresLapack > base_type
bool isParameter(const std::string &name) const
virtual ~BlockCGSolMgr()
Destructor.
OperatorTraits< ScalarType, MV, OP > OPT
MultiVecTraits< ScalarType, MV > MVT
A Belos::StatusTest class for specifying a maximum number of iterations.
ResetType
How to reset the solver.
void reset(const ResetType type) override
Performs a reset of the solver manager specified by the ResetType. This informs the solver manager th...
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Pure virtual base class which describes the basic interface for a solver manager. ...
Belos concrete class for performing a single-reduction conjugate-gradient (CG) iteration.
static void summarize(Ptr< const Comm< int > > comm, std::ostream &out=std::cout, const bool alwaysWriteLocal=false, const bool writeGlobalStats=true, const bool writeZeroTimers=true, const ECounterSetOp setOp=Intersection, const std::string &filter="", const bool ignoreZeroTimers=false)
bool is_null(const RCP< T > &p)
NormType convertStringToNormType(const std::string &normType)
Convert the given string to its NormType enum value.
A linear system to solve, and its associated information.
Class which describes the linear problem to be solved by the iterative solver.
MagnitudeType achievedTol_
Tolerance achieved by the last solve() invocation.
BlockCGSolMgrOrthoFailure is thrown when the orthogonalization manager is unable to generate orthonor...
MagnitudeType achievedTol() const override
Tolerance achieved by the last solve() invocation.
Type traits class that says whether Teuchos::LAPACK has a valid implementation for the given ScalarTy...
Teuchos::ScalarTraits< ScalarType >::magnitudeType MagnitudeType
ReturnType
Whether the Belos solve converged for all linear systems.
Teuchos::RCP< StatusTestGenResNorm< ScalarType, MV, OP > > convTest_
Convergence stopping criterion.
int getNumIters() const override
Get the iteration count for the most recent call to solve().
Teuchos::RCP< LinearProblem< ScalarType, MV, OP > > problem_
The linear problem to solve.
void validateParameters(ParameterList const &validParamList, int const depth=1000, EValidateUsed const validateUsed=VALIDATE_USED_ENABLED, EValidateDefaults const validateDefaults=VALIDATE_DEFAULTS_ENABLED) const
BlockCGSolMgrOrthoFailure(const std::string &what_arg)
NormType
The type of vector norm to compute.
Teuchos::RCP< StatusTestOutput< ScalarType, MV, OP > > create(const Teuchos::RCP< OutputManager< ScalarType > > &printer, Teuchos::RCP< StatusTest< ScalarType, MV, OP > > test, int mod, int printStates)
Create the StatusTestOutput object specified by the outputStyle.
Belos::StatusTestResNorm for specifying general residual norm stopping criteria.
MagnitudeType convtol_
Convergence tolerance (read from parameter list).
bool isType(const std::string &name) const
Teuchos::RCP< Teuchos::Time > timerSolve_
Solve timer.
An implementation of the Belos::MatOrthoManager that performs orthogonalization using (potentially) m...
A class for extending the status testing capabilities of Belos via logical combinations.
const LinearProblem< ScalarType, MV, OP > & getProblem() const override
Return a reference to the linear problem being solved by this solver manager.
Class which defines basic traits for the operator type.
bool foldConvergenceDetectionIntoAllreduce_
Parent class to all Belos exceptions.
Default parameters common to most Belos solvers.
This class implements the preconditioned single-reduction Conjugate Gradient (CG) iteration...
Teuchos::RCP< OutputManager< ScalarType > > printer_
Output manager, that handles printing of different kinds of messages.
Base class for Belos::SolverManager subclasses which normally can only compile with ScalarType types ...
Belos header file which uses auto-configuration information to include necessary C++ headers...
int numIters_
Number of iterations taken by the last solve() invocation.
Teuchos::ScalarTraits< MagnitudeType > MT
static const bool requiresLapack
Teuchos::RCP< std::ostream > outputStream_
Output stream to which the output manager prints.
MagnitudeType orthoKappa_
Orthogonalization parameter (read from parameter list).
Stub implementation of BlockCGIter, for ScalarType types for which Teuchos::LAPACK does NOT have a va...
Teuchos::RCP< Belos::MatOrthoManager< Scalar, MV, OP > > makeMatOrthoManager(const std::string &ortho, const Teuchos::RCP< const OP > &M, const Teuchos::RCP< OutputManager< Scalar > > &, const std::string &label, const Teuchos::RCP< Teuchos::ParameterList > ¶ms)
Return an instance of the specified MatOrthoManager subclass.