Belos Version of the Day
Loading...
Searching...
No Matches
BelosStatusTestGeneralOutput.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Belos: Block Linear Solvers Package
4//
5// Copyright 2004-2016 NTESS and the Belos contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9//
10
11#ifndef BELOS_STATUS_TEST_GENERAL_OUTPUT_HPP
12#define BELOS_STATUS_TEST_GENERAL_OUTPUT_HPP
13
20#include "BelosConfigDefs.hpp"
21#include "BelosTypes.hpp"
22#include "BelosIteration.hpp"
23
24#include "BelosStatusTest.hpp"
27
28namespace Belos {
29
39template <class ScalarType, class MV, class OP>
40class StatusTestGeneralOutput : public StatusTestOutput<ScalarType,MV,OP> {
41
42 public:
44
45
62 int mod = 1,
63 int printStates = Passed)
64 : printer_(printer),
65 test_(test),
66 state_(Undefined),
67 stateTest_(printStates),
68 modTest_(mod),
69 numCalls_(0)
70 {}
71
75
77
78
96 TEUCHOS_TEST_FOR_EXCEPTION(test_ == Teuchos::null,StatusTestError,"StatusTestGeneralOutput::checkStatus(): child pointer is null.");
97 state_ = test_->checkStatus(solver);
98
99 if (numCalls_++ % modTest_ == 0) {
100 if ( (state_ & stateTest_) == state_) {
101 if ( printer_->isVerbosity(StatusTestDetails) ) {
102 print( printer_->stream(StatusTestDetails) );
103 }
104 else if ( printer_->isVerbosity(Debug) ) {
105 print( printer_->stream(Debug) );
106 }
107 }
108 }
109
110 return state_;
111 }
112
115 return state_;
116 }
118
119
121
122
125 void setOutputManager(const Teuchos::RCP<OutputManager<ScalarType> > &printer) { printer_ = printer; }
126
129 void setOutputFrequency(int mod) { modTest_ = mod; }
130
136 test_ = test;
137 state_ = Undefined;
138 }
139
141 Teuchos::RCP<StatusTest<ScalarType,MV,OP> > getChild() const {
142 return test_;
143 }
144
147 void setSolverDesc(const std::string& solverDesc) { solverDesc_ = solverDesc; }
148
151 void setPrecondDesc(const std::string& precondDesc) { precondDesc_ = precondDesc; }
152
154
155
157
158
163 void reset() {
164 state_ = Undefined;
165 test_->reset();
166 numCalls_ = 0;
167 }
168
170 void resetNumCalls() { numCalls_ = 0; }
171
173
175
176
178 void print(std::ostream& os, int indent = 0) const {
179 std::string ind(indent,' ');
180 os << std::endl << ind << "Belos::StatusTestGeneralOutput: ";
181 switch (state_) {
182 case Passed:
183 os << "Passed" << std::endl;
184 break;
185 case Failed:
186 os << "Failed" << std::endl;
187 break;
188 case Undefined:
189 os << "Undefined" << std::endl;
190 break;
191 }
192 os << ind << " (Num calls,Mod test,State test): " << "(" << numCalls_ << ", " << modTest_ << ",";
193 if (stateTest_ == 0) {
194 os << " none)" << std::endl;
195 }
196 else {
197 if ( stateTest_ & Passed ) os << " Passed";
198 if ( stateTest_ & Failed ) os << " Failed";
199 if ( stateTest_ & Undefined ) os << " Undefined";
200 os << ")" << std::endl;
201 }
202 // print child, with extra indention
203 test_->print(os,indent+3);
204 }
205
207
208 private:
209 Teuchos::RCP<OutputManager<ScalarType> > printer_;
210 Teuchos::RCP<StatusTest<ScalarType,MV,OP> > test_;
211 std::string solverDesc_;
212 std::string precondDesc_;
213 StatusType state_;
214 int stateTest_;
215 int modTest_;
216 int numCalls_;
217};
218
219} // end of Belos namespace
220
221#endif /* BELOS_STATUS_TEST_OUTPUT_HPP */
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.
Class which manages the output and verbosity of the Belos solvers.
Virtual base class for StatusTest that printing status tests.
Pure virtual base class for defining the status testing capabilities of Belos.
Collection of types and exceptions used within the Belos solvers.
Alternative run-time polymorphic interface for operators.
Exception thrown to signal error in a status test during Belos::StatusTest::checkStatus().
A special StatusTest for printing other status tests.
StatusType getStatus() const
Return the result of the most recent checkStatus call, or undefined if it has not been run.
void resetNumCalls()
Informs the outputting status test that it should reset the number of calls to zero.
void reset()
Informs the status test that it should reset its internal configuration to the uninitialized state.
void setOutputManager(const Teuchos::RCP< OutputManager< ScalarType > > &printer)
Set the output manager.
StatusType checkStatus(Iteration< ScalarType, MV, OP > *solver)
void setOutputFrequency(int mod)
Set how often the child test is printed.
Teuchos::RCP< StatusTest< ScalarType, MV, OP > > getChild() const
Get child test.
void setChild(Teuchos::RCP< StatusTest< ScalarType, MV, OP > > test)
Set child test.
StatusTestGeneralOutput(const Teuchos::RCP< OutputManager< ScalarType > > &printer, Teuchos::RCP< StatusTest< ScalarType, MV, OP > > test, int mod=1, int printStates=Passed)
Constructor.
void setSolverDesc(const std::string &solverDesc)
Set a short solver description for output clarity.
void print(std::ostream &os, int indent=0) const
Output formatted description of stopping test to output stream.
void setPrecondDesc(const std::string &precondDesc)
Set a short preconditioner description for output clarity.
A virtual base class for StatusTest that print other status tests.
@ StatusTestDetails
StatusType
Whether the StatusTest wants iteration to stop.

Generated for Belos by doxygen 1.9.8