Belos
Version of the Day
Loading...
Searching...
No Matches
src
BelosStatusTestOutputFactory.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_OUTPUT_FACTORY_HPP
12
#define BELOS_STATUS_TEST_OUTPUT_FACTORY_HPP
13
18
19
#include "
BelosConfigDefs.hpp
"
20
#include "
BelosTypes.hpp
"
21
#include "
BelosStatusTestResNormOutput.hpp
"
22
#include "
BelosStatusTestUserOutput.hpp
"
23
#include "
BelosStatusTestGeneralOutput.hpp
"
24
25
namespace
Belos
{
26
36
template
<
class
ScalarType,
class
MV,
class
OP,
class
DM = DefaultDenseMatrix<
int
,ScalarType>>
37
class
StatusTestOutputFactory
{
38
39
public
:
41
42
51
StatusTestOutputFactory
(
int
outputStyle, Teuchos::RCP<std::map<std::string,Teuchos::RCP<
StatusTest<ScalarType,MV,OP,DM>
> > > taggedTests = Teuchos::null )
52
: outputStyle_(outputStyle),
53
taggedTests_(taggedTests)
54
{}
55
57
virtual
~StatusTestOutputFactory
() {}
59
60
62
63
78
Teuchos::RCP<StatusTestOutput<ScalarType,MV,OP,DM> >
create
(
const
Teuchos::RCP<
OutputManager<ScalarType>
> &printer,
79
Teuchos::RCP<
StatusTest<ScalarType,MV,OP,DM>
> test,
80
int
mod,
81
int
printStates)
82
{
83
Teuchos::RCP<StatusTestOutput<ScalarType,MV,OP,DM> > outputTest;
84
85
switch
( outputStyle_ ) {
86
87
case
General
:
88
if
(mod > 0) {
89
outputTest = Teuchos::rcp(
new
StatusTestGeneralOutput<ScalarType,MV,OP,DM>
( printer, test, mod, printStates ) );
90
}
91
else
{
92
outputTest = Teuchos::rcp(
new
StatusTestGeneralOutput<ScalarType,MV,OP,DM>
( printer, test, 1 ) );
93
}
94
break
;
95
case
Brief
:
96
if
(mod > 0) {
97
outputTest = Teuchos::rcp(
new
StatusTestResNormOutput<ScalarType,MV,OP,DM>
( printer, test, mod, printStates ) );
98
}
99
else
{
100
outputTest = Teuchos::rcp(
new
StatusTestResNormOutput<ScalarType,MV,OP,DM>
( printer, test, 1 ) );
101
}
102
break
;
103
case
User
:
104
if
(mod > 0) {
105
outputTest = Teuchos::rcp(
new
StatusTestUserOutput<ScalarType,MV,OP,DM>
( printer, test, taggedTests_, mod, printStates ) );
106
}
107
else
{
108
outputTest = Teuchos::rcp(
new
StatusTestUserOutput<ScalarType,MV,OP,DM>
( printer, test, taggedTests_, 1 ) );
109
}
110
break
;
111
default
:
//Default to General if invalid outputStyle_ given.
112
if
(mod > 0) {
113
outputTest = Teuchos::rcp(
new
StatusTestGeneralOutput<ScalarType,MV,OP,DM>
( printer, test, mod, printStates ) );
114
}
115
else
{
116
outputTest = Teuchos::rcp(
new
StatusTestGeneralOutput<ScalarType,MV,OP,DM>
( printer, test, 1 ) );
117
}
118
break
;
119
}
120
121
122
return
outputTest;
123
}
124
126
127
private
:
128
129
// Which type of StatusTestOutput class
130
int
outputStyle_;
131
132
Teuchos::RCP<std::map<std::string,Teuchos::RCP<StatusTest<ScalarType,MV,OP,DM> > > > taggedTests_;
133
134
// Hide the default constructor and copy constructor
135
StatusTestOutputFactory
(
void
) {}
136
StatusTestOutputFactory
(
const
StatusTestOutputFactory<ScalarType,MV,OP,DM>
& ) {}
137
138
};
139
140
}
// end of Belos namespace
141
142
#ifdef HAVE_BELOS_TPETRA
143
#include "
BelosTpetraETIHelpers.hpp
"
144
145
#define BELOS_TPETRA_STATUSTESTOUTPUTFACTORY_NOEXTERN_CALL(SC, LO, GO, NT) \
146
BELOS_TPETRA_CALL(Belos::StatusTestOutputFactory, SC, LO, GO, NT)
147
148
#define BELOS_TPETRA_STATUSTESTOUTPUTFACTORY_EXTERN_CALL(SC, LO, GO, NT) \
149
BELOS_TPETRA_EXTERN_CALL(Belos::StatusTestOutputFactory, SC, LO, GO, NT)
150
151
TPETRA_INSTANTIATE_SLGN_NO_ORDINAL_SCALAR(BELOS_TPETRA_STATUSTESTOUTPUTFACTORY_EXTERN_CALL)
152
#endif
153
154
155
#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.
BelosTpetraETIHelpers.hpp
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:42
Belos::StatusTestGeneralOutput
A special StatusTest for printing other status tests.
Definition
BelosStatusTestGeneralOutput.hpp:40
Belos::StatusTest
A pure virtual class for defining the status tests for the Belos iterative solvers.
Definition
BelosStatusTest.hpp:50
Belos::StatusTestOutputFactory::~StatusTestOutputFactory
virtual ~StatusTestOutputFactory()
Destructor.
Definition
BelosStatusTestOutputFactory.hpp:57
Belos::StatusTestOutputFactory::create
Teuchos::RCP< StatusTestOutput< ScalarType, MV, OP, DM > > create(const Teuchos::RCP< OutputManager< ScalarType > > &printer, Teuchos::RCP< StatusTest< ScalarType, MV, OP, DM > > test, int mod, int printStates)
Create the StatusTestOutput object specified by the outputStyle.
Definition
BelosStatusTestOutputFactory.hpp:78
Belos::StatusTestOutputFactory::StatusTestOutputFactory
StatusTestOutputFactory(int outputStyle, Teuchos::RCP< std::map< std::string, Teuchos::RCP< StatusTest< ScalarType, MV, OP, DM > > > > taggedTests=Teuchos::null)
Constructor.
Definition
BelosStatusTestOutputFactory.hpp:51
Belos::StatusTestResNormOutput
A special StatusTest for printing other status tests in a simple format.
Definition
BelosStatusTestResNormOutput.hpp:42
Belos::StatusTestUserOutput
A special StatusTest for printing other status tests in a simple format.
Definition
BelosStatusTestUserOutput.hpp:38
Belos
Definition
Belos_Details_EBelosSolverType.cpp:13
Belos::General
@ General
Definition
BelosTypes.hpp:119
Belos::User
@ User
Definition
BelosTypes.hpp:121
Belos::Brief
@ Brief
Definition
BelosTypes.hpp:120
Generated for Belos by
1.15.0