43#ifndef BELOS_STATUS_TEST_RESNORM_OUTPUT_HPP
44#define BELOS_STATUS_TEST_RESNORM_OUTPUT_HPP
73template <
class ScalarType,
class MV,
class OP>
147 TEUCHOS_TEST_FOR_EXCEPTION(
iterTest_ == Teuchos::null,
StatusTestError,
"StatusTestResNormOutput::checkStatus(): iteration test pointer is null.");
148 TEUCHOS_TEST_FOR_EXCEPTION(
resTestVec_.size() == 0,
StatusTestError,
"StatusTestResNormOutput::checkStatus(): residual test pointer is null.");
203 Teuchos::RCP<StatusTestCombo_t> comboTest = Teuchos::rcp_dynamic_cast<StatusTestCombo_t>(test);
204 TEUCHOS_TEST_FOR_EXCEPTION(comboTest == Teuchos::null,
StatusTestError,
"StatusTestResNormOutput(): test must be a Belos::StatusTestCombo.");
205 std::vector<Teuchos::RCP<StatusTest<ScalarType,MV,OP> > > tmpVec = comboTest->getStatusTests();
208 int numTests = tmpVec.size();
211 for (
int i=0; i<numTests; ++i) {
214 Teuchos::RCP<StatusTestMaxIters_t> tmpItrTest = Teuchos::rcp_dynamic_cast<StatusTestMaxIters_t>(tmpVec[i]);
215 if (tmpItrTest != Teuchos::null) {
221 Teuchos::RCP<StatusTestResNorm_t> tmpResTest = Teuchos::rcp_dynamic_cast<StatusTestResNorm_t>(tmpVec[i]);
223 if (tmpResTest != Teuchos::null) {
231 Teuchos::RCP<StatusTestCombo_t> tmpComboTest = Teuchos::rcp_dynamic_cast<StatusTestCombo_t>(tmpVec[i]);
232 TEUCHOS_TEST_FOR_EXCEPTION(tmpComboTest == Teuchos::null,
StatusTestError,
"StatusTestResNormOutput(): test must be Belos::StatusTest[MaxIters|ResNorm|Combo].");
233 tmpVec = tmpComboTest->getStatusTests();
238 tmpResTest = Teuchos::rcp_dynamic_cast<StatusTestResNorm_t>(tmpVec[j]);
239 TEUCHOS_TEST_FOR_EXCEPTION(tmpResTest == Teuchos::null,
StatusTestError,
"StatusTestResNormOutput(): test must be a vector of Belos::StatusTestResNorm.");
251 Teuchos::RCP<StatusTest<ScalarType,MV,OP> >
getChild()
const {
291 void print(std::ostream& os,
int indent = 0)
const {
292 std::string ind(indent,
' ');
293 std::string starLine(55,
'*');
294 std::string starFront(5,
'*');
296 std::ios_base::fmtflags osFlags(os.flags());
298 os.setf(std::ios::scientific, std::ios::floatfield);
303 os << std::endl << ind << starLine << std::endl;
304 os << ind << starFront <<
" Belos Iterative Solver: " <<
solverDesc_ << std::endl;
306 os << ind << starFront <<
" Preconditioner: " <<
precondDesc_ << std::endl;
307 os << ind << starFront <<
" Maximum Iterations: " <<
iterTest_->getMaxIters() << std::endl;
308 os << ind << starFront <<
" Block Size: " <<
blockSize_ << std::endl;
310 os << ind << starFront <<
" Residual Tests ("
312 <<
"): " << std::endl;
314 os << ind << starFront <<
" Residual Test: " << std::endl;
317 os << ind << starFront <<
" Test " << i+1 <<
" : " <<
resTestVec_[i]->description() << std::endl;
319 os << ind << starLine << std::endl;
324 os.setf(std::ios_base::right, std::ios_base::adjustfield);
337 os << std::setw(15) <<
"---";
353 Teuchos::RCP<StatusTest<ScalarType,MV,OP> >
test_;
356 Teuchos::RCP<StatusTestMaxIters<ScalarType,MV,OP> >
iterTest_;
359 std::vector<Teuchos::RCP<StatusTestResNorm<ScalarType,MV,OP> > >
resTestVec_;
Belos header file which uses auto-configuration information to include necessary C++ headers.
Pure virtual base class which describes the basic interface to the linear solver iteration.
Belos::StatusTest for logically combining several status tests.
Belos::StatusTest class for specifying a maximum number of iterations.
Virtual base class for StatusTest that printing status tests.
Belos::StatusTest abstract class for specifying a residual norm stopping criteria.
Pure virtual base class for defining the status testing capabilities of Belos.
Collection of types and exceptions used within the Belos solvers.
virtual int getBlockSize() const =0
Get the blocksize to be used by the iterative solver in solving this linear problem.
virtual const LinearProblem< ScalarType, MV, OP > & getProblem() const =0
Get a constant reference to the linear problem.
A linear system to solve, and its associated information.
int getLSNumber() const
The number of linear systems that have been set.
const std::vector< int > & getLSIndex() const
(Zero-based) indices of the linear system(s) currently being solved.
Teuchos::RCP< const MV > getRHS() const
A pointer to the right-hand side B.
Traits class which defines basic operations on multivectors.
static int GetNumberVecs(const MV &mv)
Obtain the number of vectors in mv.
Belos's basic output manager for sending information of select verbosity levels to the appropriate ou...
A class for extending the status testing capabilities of Belos via logical combinations.
Exception thrown to signal error in a status test during Belos::StatusTest::checkStatus().
A Belos::StatusTest class for specifying a maximum number of iterations.
A virtual base class for StatusTest that print other status tests.
A special StatusTest for printing other status tests in a simple format.
std::vector< Teuchos::RCP< StatusTestResNorm< ScalarType, MV, OP > > > resTestVec_
Vector of residual status tests.
void setOutputManager(const Teuchos::RCP< OutputManager< ScalarType > > &printer)
Set the output manager.
StatusTestResNormOutput(const Teuchos::RCP< OutputManager< ScalarType > > &printer, Teuchos::RCP< StatusTest< ScalarType, MV, OP > > test, int mod=1, int printStates=Passed)
Constructor.
Teuchos::RCP< StatusTestMaxIters< ScalarType, MV, OP > > iterTest_
void reset()
Informs the status test that it should reset its internal configuration to the uninitialized state.
void print(std::ostream &os, int indent=0) const
Output formatted description of stopping test to output stream.
StatusType checkStatus(Iteration< ScalarType, MV, OP > *solver)
void setSolverDesc(const std::string &solverDesc)
Set a short solver 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 single or combinatio...
Belos::StatusTestResNorm< ScalarType, MV, OP > StatusTestResNorm_t
Teuchos::RCP< StatusTest< ScalarType, MV, OP > > getChild() const
Get child test.
Belos::StatusTestCombo< ScalarType, MV, OP > StatusTestCombo_t
std::vector< int > currIdx_
MultiVecTraits< ScalarType, MV > MVT
void resetNumCalls()
Informs the outputting status test that it should reset the number of calls to zero.
Belos::StatusTestMaxIters< ScalarType, MV, OP > StatusTestMaxIters_t
StatusType getStatus() const
Return the result of the most recent checkStatus call, or undefined if it has not been run.
Teuchos::RCP< StatusTest< ScalarType, MV, OP > > test_
void setOutputFrequency(int mod)
Set how often the child test is printed.
void setPrecondDesc(const std::string &precondDesc)
Set a short preconditioner description for output clarity.
Teuchos::RCP< OutputManager< ScalarType > > printer_
virtual ~StatusTestResNormOutput()
Destructor.
An abstract class of StatusTest for stopping criteria using residual norms.
A pure virtual class for defining the status tests for the Belos iterative solvers.
StatusType
Whether the StatusTest wants iteration to stop.