Belos
Version of the Day
Loading...
Searching...
No Matches
src
BelosStatusTestOutputFactory.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
43
#ifndef BELOS_STATUS_TEST_OUTPUT_FACTORY_HPP
44
#define BELOS_STATUS_TEST_OUTPUT_FACTORY_HPP
45
51
#include "
BelosConfigDefs.hpp
"
52
#include "
BelosTypes.hpp
"
53
#include "
BelosStatusTestResNormOutput.hpp
"
54
#include "
BelosStatusTestUserOutput.hpp
"
55
#include "
BelosStatusTestGeneralOutput.hpp
"
56
57
58
namespace
Belos
{
59
69
template
<
class
ScalarType,
class
MV,
class
OP>
70
class
StatusTestOutputFactory
{
71
72
public
:
74
75
84
StatusTestOutputFactory
(
int
outputStyle, Teuchos::RCP<std::map<std::string,Teuchos::RCP<
StatusTest<ScalarType,MV,OP>
> > > taggedTests = Teuchos::null )
85
: outputStyle_(outputStyle),
86
taggedTests_(taggedTests)
87
{}
88
90
virtual
~StatusTestOutputFactory
() {}
92
93
95
96
111
Teuchos::RCP<StatusTestOutput<ScalarType,MV,OP> >
create
(
const
Teuchos::RCP<
OutputManager<ScalarType>
> &printer,
112
Teuchos::RCP<
StatusTest<ScalarType,MV,OP>
> test,
113
int
mod,
114
int
printStates)
115
{
116
Teuchos::RCP<StatusTestOutput<ScalarType,MV,OP> > outputTest;
117
118
switch
( outputStyle_ ) {
119
120
case
General
:
121
if
(mod > 0) {
122
outputTest = Teuchos::rcp(
new
StatusTestGeneralOutput<ScalarType,MV,OP>
( printer, test, mod, printStates ) );
123
}
124
else
{
125
outputTest = Teuchos::rcp(
new
StatusTestGeneralOutput<ScalarType,MV,OP>
( printer, test, 1 ) );
126
}
127
break
;
128
case
Brief
:
129
if
(mod > 0) {
130
outputTest = Teuchos::rcp(
new
StatusTestResNormOutput<ScalarType,MV,OP>
( printer, test, mod, printStates ) );
131
}
132
else
{
133
outputTest = Teuchos::rcp(
new
StatusTestResNormOutput<ScalarType,MV,OP>
( printer, test, 1 ) );
134
}
135
break
;
136
case
User
:
137
if
(mod > 0) {
138
outputTest = Teuchos::rcp(
new
StatusTestUserOutput<ScalarType,MV,OP>
( printer, test, taggedTests_, mod, printStates ) );
139
}
140
else
{
141
outputTest = Teuchos::rcp(
new
StatusTestUserOutput<ScalarType,MV,OP>
( printer, test, taggedTests_, 1 ) );
142
}
143
break
;
144
default
:
//Default to General if invalid outputStyle_ given.
145
if
(mod > 0) {
146
outputTest = Teuchos::rcp(
new
StatusTestGeneralOutput<ScalarType,MV,OP>
( printer, test, mod, printStates ) );
147
}
148
else
{
149
outputTest = Teuchos::rcp(
new
StatusTestGeneralOutput<ScalarType,MV,OP>
( printer, test, 1 ) );
150
}
151
break
;
152
}
153
154
155
return
outputTest;
156
}
157
159
160
private
:
161
162
// Which type of StatusTestOutput class
163
int
outputStyle_;
164
165
Teuchos::RCP<std::map<std::string,Teuchos::RCP<StatusTest<ScalarType,MV,OP> > > > taggedTests_;
166
167
// Hide the default constructor and copy constructor
168
StatusTestOutputFactory
(
void
) {}
169
StatusTestOutputFactory(
const
StatusTestOutputFactory<ScalarType,MV,OP>& ) {}
170
171
};
172
173
}
// end of Belos namespace
174
175
#endif
/* BELOS_STATUS_TEST_OUTPUT_FACTORY_HPP */
BelosConfigDefs.hpp
Belos header file which uses auto-configuration information to include necessary C++ headers.
BelosStatusTestGeneralOutput.hpp
Special StatusTest for printing any kind of status test.
BelosStatusTestResNormOutput.hpp
Special StatusTest for printing status tests in simple format for residuals.
BelosStatusTestUserOutput.hpp
Special StatusTest for printing status tests in simple format for residuals.
BelosTypes.hpp
Collection of types and exceptions used within the Belos solvers.
Belos::OutputManager
Belos's basic output manager for sending information of select verbosity levels to the appropriate ou...
Definition
BelosOutputManager.hpp:73
Belos::StatusTestGeneralOutput
A special StatusTest for printing other status tests.
Definition
BelosStatusTestGeneralOutput.hpp:72
Belos::StatusTestOutputFactory
A factory class for generating StatusTestOutput objects.
Definition
BelosStatusTestOutputFactory.hpp:70
Belos::StatusTestOutputFactory::StatusTestOutputFactory
StatusTestOutputFactory(int outputStyle, Teuchos::RCP< std::map< std::string, Teuchos::RCP< StatusTest< ScalarType, MV, OP > > > > taggedTests=Teuchos::null)
Constructor.
Definition
BelosStatusTestOutputFactory.hpp:84
Belos::StatusTestOutputFactory::~StatusTestOutputFactory
virtual ~StatusTestOutputFactory()
Destructor.
Definition
BelosStatusTestOutputFactory.hpp:90
Belos::StatusTestOutputFactory::create
Teuchos::RCP< StatusTestOutput< ScalarType, MV, OP > > create(const Teuchos::RCP< OutputManager< ScalarType > > &printer, Teuchos::RCP< StatusTest< ScalarType, MV, OP > > test, int mod, int printStates)
Create the StatusTestOutput object specified by the outputStyle.
Definition
BelosStatusTestOutputFactory.hpp:111
Belos::StatusTestResNormOutput
A special StatusTest for printing other status tests in a simple format.
Definition
BelosStatusTestResNormOutput.hpp:74
Belos::StatusTestUserOutput
A special StatusTest for printing other status tests in a simple format.
Definition
BelosStatusTestUserOutput.hpp:70
Belos::StatusTest
A pure virtual class for defining the status tests for the Belos iterative solvers.
Definition
BelosStatusTest.hpp:79
Belos
Definition
Belos_Details_EBelosSolverType.cpp:45
Belos::General
@ General
Definition
BelosTypes.hpp:141
Belos::User
@ User
Definition
BelosTypes.hpp:143
Belos::Brief
@ Brief
Definition
BelosTypes.hpp:142
Generated for Belos by
1.10.0