Belos Package Browser (Single Doxygen Collection) Development
Loading...
Searching...
No Matches
BelosStatusTest.hpp
Go to the documentation of this file.
1
2//@HEADER
3// ************************************************************************
4//
5// Belos: Block Linear Solvers Package
6// Copyright 2004 Sandia Corporation
7//
8// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9// the U.S. Government retains certain rights in this software.
10//
11// Redistribution and use in source and binary forms, with or without
12// modification, are permitted provided that the following conditions are
13// met:
14//
15// 1. Redistributions of source code must retain the above copyright
16// notice, this list of conditions and the following disclaimer.
17//
18// 2. Redistributions in binary form must reproduce the above copyright
19// notice, this list of conditions and the following disclaimer in the
20// documentation and/or other materials provided with the distribution.
21//
22// 3. Neither the name of the Corporation nor the names of the
23// contributors may be used to endorse or promote products derived from
24// this software without specific prior written permission.
25//
26// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
39//
40// ************************************************************************
41//@HEADER
42//
43
44#ifndef BELOS_STATUS_TEST_HPP
45#define BELOS_STATUS_TEST_HPP
46
51
52#include "BelosTypes.hpp"
53#include "BelosIteration.hpp"
54#include "BelosConfigDefs.hpp"
55#include "Teuchos_Describable.hpp"
56
65
66namespace Belos {
67
69
70
74 {public: StatusTestError(const std::string& what_arg) : BelosError(what_arg) {}};
75
77
78template <class ScalarType, class MV, class OP>
79class StatusTest : public Teuchos::Describable {
80
81 public:
83
84
87
89 virtual ~StatusTest() {};
91
93
94
104
106 virtual StatusType getStatus() const = 0;
108
110
111
117 virtual void reset() = 0;
119
121
122
124 virtual void print(std::ostream& os, int indent = 0) const = 0;
125
127 virtual void printStatus(std::ostream& os, StatusType type) const {
128 os << std::left << std::setw(13) << std::setfill('.');
129 switch (type) {
130 case Passed:
131 os << "Passed";
132 break;
133 case Failed:
134 os << "Failed";
135 break;
136 case Undefined:
137 default:
138 os << "**";
139 break;
140 }
141 os << std::left << std::setfill(' ');
142 return;
143 };
144
145
146};
147
148} // end of Belos namespace
149
150#endif /* BELOS_STATUS_TEST_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.
Collection of types and exceptions used within the Belos solvers.
BelosError(const std::string &what_arg)
StatusTestError(const std::string &what_arg)
virtual StatusType getStatus() const =0
Return the result of the most recent CheckStatus call.
virtual ~StatusTest()
Destructor.
virtual void print(std::ostream &os, int indent=0) const =0
Output formatted description of stopping test to output stream.
virtual StatusType checkStatus(Iteration< ScalarType, MV, OP > *iSolver)=0
Check convergence status: Unconverged, Converged, Failed.
StatusTest()
Constructor.
virtual void reset()=0
Informs the convergence test that it should reset its internal configuration to the initialized state...
virtual void printStatus(std::ostream &os, StatusType type) const
Output the result of the most recent CheckStatus call.
StatusType
Whether the StatusTest wants iteration to stop.