43 #ifndef BELOS_STATUS_TEST_USER_OUTPUT_HPP 
   44 #define BELOS_STATUS_TEST_USER_OUTPUT_HPP 
   69 template <
class ScalarType, 
class MV, 
class OP>
 
  102       taggedTests_(taggedTests),
 
  104       headerPrinted_(false),
 
  105       stateTest_(printStates),
 
  146     state_ = test_->checkStatus(solver);
 
  155       currNumRHS_ = currIdx_.size();
 
  157       numIterDgts_ = (int)std::floor(std::log10((
double)iterTest_->getMaxIters()))+1;
 
  160     if (((iterTest_->getNumIters() % modTest_ == 0) && (iterTest_->getNumIters()!=lastNumIters_)) || (state_ == 
Passed)) {
 
  161       lastNumIters_ = iterTest_->getNumIters();
 
  162       if ( (state_ & stateTest_) == state_) {
 
  166         else if ( printer_->isVerbosity(
Debug) ) {
 
  202     std::vector<Teuchos::RCP<StatusTest<ScalarType,MV,OP> > > tmpVec = comboTest->
getStatusTests();
 
  205     int numTests = tmpVec.size();
 
  208     for (
int i=0; i<numTests; ++i) {
 
  212       if (tmpItrTest != Teuchos::null) {
 
  213         iterTest_ = tmpItrTest;
 
  222       if (tmpResTest != Teuchos::null) {
 
  223         resTestVec_.resize( 1 );
 
  224         resTestVec_[0] = tmpResTest;
 
  225         resTestNamesVec_.resize( 1 );
 
  226         resTestNamesVec_[0] = 
"IMPLICIT RES";
 
  234       TEUCHOS_TEST_FOR_EXCEPTION(tmpComboTest == Teuchos::null,
StatusTestError,
"StatusTestUserOutput():  test must be Belos::StatusTest[MaxIters|ResNorm|Combo].");
 
  240       typename std::map<std::string,Teuchos::RCP<StatusTest<ScalarType,MV,OP> > >::iterator it;
 
  241       for (
size_t j=0; j<tmpVec.size(); ++j) {
 
  244         if(tmpResTest == Teuchos::null) 
continue;
 
  247         for(it = taggedTests_->begin(); it != taggedTests_->end(); ++it) {
 
  248           if(tmpVec[j] == it->second) { bFound = 
true; 
break; }
 
  251           resTestVec_.push_back(tmpResTest);
 
  252           resTestNamesVec_.push_back(
"IMPLICIT RES");
 
  257       for(it = taggedTests_->begin(); it != taggedTests_->end(); ++it) {
 
  258         resTestVec_.push_back(it->second);
 
  259         resTestNamesVec_.push_back(it->first);
 
  276   void setSolverDesc(
const std::string& solverDesc) { solverDesc_ = solverDesc; }
 
  280   void setPrecondDesc(
const std::string& precondDesc) { precondDesc_ = precondDesc; }
 
  295     headerPrinted_ = 
false;
 
  310   void print(std::ostream& os, 
int indent = 0)
 const {
 
  311     std::string ind(indent,
' ');
 
  312     std::string starLine(55,
'*');
 
  313     std::string starFront(5,
'*');
 
  315     std::ios_base::fmtflags osFlags(os.flags());
 
  317     os.setf(std::ios::scientific, std::ios::floatfield);
 
  321     if (!headerPrinted_) {
 
  322       os << std::endl << ind << starLine << std::endl;
 
  323       os << ind << starFront << 
" Belos Iterative Solver: " << solverDesc_ << std::endl;
 
  324       if (precondDesc_ != 
"")
 
  325         os << ind << starFront << 
" Preconditioner: " << precondDesc_ << std::endl;
 
  326       os << ind << starFront << 
" Maximum Iterations: " << iterTest_->getMaxIters() << std::endl;
 
  327       os << ind << starFront << 
" Block Size: " << blockSize_ << std::endl;
 
  328       os << ind << starFront << 
" Status tests: " << std::endl;
 
  329       test_->print(os,indent + 3);
 
  330       os << ind << starLine << std::endl;
 
  331       os.setf(std::ios_base::right, std::ios_base::adjustfield);
 
  332       std::string indheader( 7 + numIterDgts_, 
' ' );
 
  334       for (
int i=0; i<currNumRHS_; ++i) {
 
  335         if ( i > 0 && currIdx_[i]!=-1 ) {
 
  337           os << ind << indheader;
 
  339         os << 
"[" << std::setw(numLSDgts_) << currIdx_[i]+1 << 
"] : ";
 
  340         for (
size_t j=0; j<resTestVec_.size(); ++j) {
 
  341           os << std::setw(15) << resTestNamesVec_[j];
 
  345       headerPrinted_ = 
true;
 
  349     os.setf(std::ios_base::right, std::ios_base::adjustfield);
 
  350     std::string ind2( 7 + numIterDgts_, 
' ' );
 
  351     os << ind << 
"Iter " << std::setw(numIterDgts_) << iterTest_->getNumIters() << 
", ";
 
  352     for (
int i=0; i<currNumRHS_; ++i) {
 
  353       if ( i > 0 && currIdx_[i]!=-1 ) {
 
  357       os << 
"[" << std::setw(numLSDgts_) << currIdx_[i]+1 << 
"] : ";
 
  358       for (
size_t j=0; j<resTestVec_.size(); ++j) {
 
  362           if(tempResTest != Teuchos::null)
 
  363             os << std::setw(15) << (*tempResTest->
getTestValue())[currIdx_[i]];
 
  366               os << std::setw(15) << 
"Passed";
 
  368               os << std::setw(15) << 
"Failed";
 
  369             else os << std::setw(15) << 
"Undefined";
 
  372           os << std::setw(15) << 
"---";
 
  397     std::vector<Teuchos::RCP<StatusTest<ScalarType,MV,OP> > > resTestVec_;
 
  400     std::vector<std::string> resTestNamesVec_;
 
  402     std::string solverDesc_;
 
  403     std::string precondDesc_;
 
  404     std::vector<int> currIdx_;
 
  406     mutable bool headerPrinted_;
 
  407     int stateTest_, modTest_;
 
  408     int lastNumIters_, comboType_;
 
  410     int currNumRHS_, currLSNum_;
 
  411     int numLSDgts_, numIterDgts_;
 
Collection of types and exceptions used within the Belos solvers. 
 
Belos's basic output manager for sending information of select verbosity levels to the appropriate ou...
 
void reset()
Informs the status test that it should reset its internal configuration to the uninitialized state...
 
virtual int getBlockSize() const =0
Get the blocksize to be used by the iterative solver in solving this linear problem. 
 
Exception thrown to signal error in a status test during Belos::StatusTest::checkStatus(). 
 
void print(std::ostream &os, int indent=0) const 
Output formatted description of stopping test to output stream. 
 
A special StatusTest for printing other status tests in a simple format. 
 
Virtual base class for StatusTest that printing status tests. 
 
Pure virtual base class for defining the status testing capabilities of Belos. 
 
ComboType getComboType() const 
Return the type of combination (OR, AND, or SEQ). 
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
 
An abstract class of StatusTest for stopping criteria using residual norms. 
 
void setSolverDesc(const std::string &solverDesc)
Set a short solver description for output clarity. 
 
Belos::StatusTest class for specifying a maximum number of iterations. 
 
Pure virtual base class which describes the basic interface to the linear solver iteration. 
 
Teuchos::RCP< const MV > getRHS() const 
A pointer to the right-hand side B. 
 
A pure virtual class for defining the status tests for the Belos iterative solvers. 
 
StatusType
Whether the StatusTest wants iteration to stop. 
 
static int GetNumberVecs(const MV &mv)
Obtain the number of vectors in mv. 
 
Traits class which defines basic operations on multivectors. 
 
Belos::StatusTest for logically combining several status tests. 
 
A Belos::StatusTest class for specifying a maximum number of iterations. 
 
void resetNumCalls()
Informs the outputting status test that it should reset the number of calls to zero. 
 
A linear system to solve, and its associated information. 
 
int getLSNumber() const 
The number of linear systems that have been set. 
 
virtual ~StatusTestUserOutput()
Destructor. 
 
Teuchos::RCP< StatusTest< ScalarType, MV, OP > > getChild() const 
Get child test. 
 
StatusTestUserOutput(const Teuchos::RCP< OutputManager< ScalarType > > &printer, Teuchos::RCP< StatusTest< ScalarType, MV, OP > > test, Teuchos::RCP< std::map< std::string, Teuchos::RCP< StatusTest< ScalarType, MV, OP > > > > taggedTests, int mod=1, int printStates=Passed)
Constructor. 
 
virtual const LinearProblem< ScalarType, MV, OP > & getProblem() const =0
Get a constant reference to the linear problem. 
 
virtual const std::vector< MagnitudeType > * getTestValue() const =0
Returns the test value, , computed in most recent call to CheckStatus. 
 
Belos::StatusTest abstract class for specifying a residual norm stopping criteria. 
 
void setPrecondDesc(const std::string &precondDesc)
Set a short preconditioner description for output clarity. 
 
void setChild(Teuchos::RCP< StatusTest< ScalarType, MV, OP > > test)
Set child test, which must be a combination of a Belos::StatusTestMaxIters AND a combination of Belos...
 
const std::vector< int > getLSIndex() const 
(Zero-based) indices of the linear system(s) currently being solved. 
 
void setOutputManager(const Teuchos::RCP< OutputManager< ScalarType > > &printer)
Set the output manager. 
 
StatusType getStatus() const 
Return the result of the most recent checkStatus call, or undefined if it has not been run...
 
StatusType checkStatus(Iteration< ScalarType, MV, OP > *solver)
 
A class for extending the status testing capabilities of Belos via logical combinations. 
 
st_vector getStatusTests()
Return the vector of status tests. 
 
Belos header file which uses auto-configuration information to include necessary C++ headers...
 
A virtual base class for StatusTest that print other status tests. 
 
void setOutputFrequency(int mod)
Set how often the child test is printed.