Belos Version of the Day
Loading...
Searching...
No Matches
BelosIteration.hpp
Go to the documentation of this file.
1//@HEADER
2// ************************************************************************
3//
4// Belos: Block Linear Solvers Package
5// Copyright 2004 Sandia Corporation
6//
7// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8// the U.S. Government retains certain rights in this software.
9//
10// Redistribution and use in source and binary forms, with or without
11// modification, are permitted provided that the following conditions are
12// met:
13//
14// 1. Redistributions of source code must retain the above copyright
15// notice, this list of conditions and the following disclaimer.
16//
17// 2. Redistributions in binary form must reproduce the above copyright
18// notice, this list of conditions and the following disclaimer in the
19// documentation and/or other materials provided with the distribution.
20//
21// 3. Neither the name of the Corporation nor the names of the
22// contributors may be used to endorse or promote products derived from
23// this software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36//
37// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38//
39// ************************************************************************
40//@HEADER
41
42#ifndef BELOS_ITERATION_HPP
43#define BELOS_ITERATION_HPP
44
49#include "BelosConfigDefs.hpp"
50#include "BelosTypes.hpp"
51
52#include "Teuchos_Array.hpp"
53#include "Teuchos_ParameterList.hpp"
54#include "Teuchos_RCP.hpp"
55#include "Teuchos_ScalarTraits.hpp"
56
57
58namespace Belos {
59
60template <class ScalarType, class MV, class OP>
61class LinearProblem;
62
63template <class ScalarType>
64class OutputManager;
65
66template <class ScalarType, class MV, class OP>
67class StatusTest;
68
69template <class ScalarType, class MV, class OP>
70class MatOrthoManager;
71
72template<class ScalarType, class MV, class OP>
73class Iteration {
74
75 public:
76
78
79
82
84 virtual ~Iteration() {};
86
87
89
90
94 virtual void iterate() = 0;
95
99 virtual void initialize() = 0;
100
102
103
105
106
108 virtual int getNumIters() const = 0;
109
111 virtual void resetNumIters( int iter = 0 ) = 0;
112
115 virtual Teuchos::RCP<const MV> getNativeResiduals( std::vector<typename Teuchos::ScalarTraits<ScalarType>::magnitudeType> *norms ) const = 0;
116
118
121 virtual Teuchos::RCP<MV> getCurrentUpdate() const = 0;
122
124
125
126
128
129
131 virtual const LinearProblem<ScalarType,MV,OP>& getProblem() const = 0;
132
134 virtual int getBlockSize() const = 0;
135
137 virtual void setBlockSize(int blockSize) = 0;
138
140 virtual bool isInitialized() = 0;
141
143
144};
145
146} // end Belos namespace
147
148#endif /* BELOS_ITERATION_HPP */
Belos header file which uses auto-configuration information to include necessary C++ headers.
Collection of types and exceptions used within the Belos solvers.
virtual void initialize()=0
Initialize the solver with the initial vectors from the linear problem or random data.
virtual int getNumIters() const =0
Get the current iteration count.
virtual Teuchos::RCP< const MV > getNativeResiduals(std::vector< typename Teuchos::ScalarTraits< ScalarType >::magnitudeType > *norms) const =0
Get the residuals native to the solver.
virtual ~Iteration()
Destructor.
virtual void setBlockSize(int blockSize)=0
Set the blocksize to be used by the iterative solver in solving this linear problem.
virtual bool isInitialized()=0
States whether the solver has been initialized or not.
Iteration()
Default Constructor.
virtual void iterate()=0
This method performs linear solver iterations until the status test indicates the need to stop or an ...
virtual int getBlockSize() const =0
Get the blocksize to be used by the iterative solver in solving this linear problem.
virtual Teuchos::RCP< MV > getCurrentUpdate() const =0
Get the current update to the linear system.
virtual void resetNumIters(int iter=0)=0
Reset the iteration count to iter.
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.

Generated for Belos by doxygen 1.9.6