Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
support
nonlinear
model_evaluator
client_support
Thyra_StateFuncModelEvaluatorBase.hpp
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Thyra: Interfaces and Support for Abstract Numerical Algorithms
5
// Copyright (2004) Sandia Corporation
6
//
7
// Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8
// license for use of this work by or on behalf of the U.S. Government.
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 Roscoe A. Bartlett (bartlettra@ornl.gov)
38
//
39
// ***********************************************************************
40
// @HEADER
41
42
#ifndef THYRA_STATE_FUNC_MODEL_EVALUATOR_BASE_HPP
43
#define THYRA_STATE_FUNC_MODEL_EVALUATOR_BASE_HPP
44
45
#include "Thyra_ModelEvaluatorDefaultBase.hpp"
46
47
48
namespace
Thyra {
49
50
61
template
<
class
Scalar>
62
class
StateFuncModelEvaluatorBase
:
virtual
public
ModelEvaluatorDefaultBase
<Scalar> {
63
public
:
64
67
69
RCP<const VectorSpaceBase<Scalar>
>
get_p_space
(
int
l)
const
;
71
RCP<const Teuchos::Array<std::string>
>
get_p_names
(
int
l)
const
;
73
RCP<const VectorSpaceBase<Scalar>
>
get_g_space
(
int
j)
const
;
75
Teuchos::ArrayView<const std::string>
get_g_names
(
int
j)
const
;
77
ModelEvaluatorBase::InArgs<Scalar>
getNominalValues
()
const
;
79
ModelEvaluatorBase::InArgs<Scalar>
getLowerBounds
()
const
;
81
ModelEvaluatorBase::InArgs<Scalar>
getUpperBounds
()
const
;
83
RCP<LinearOpBase<Scalar>
>
create_W_op
()
const
;
85
RCP<PreconditionerBase<Scalar>
>
create_W_prec
()
const
;
87
RCP<const LinearOpWithSolveFactoryBase<Scalar>
>
get_W_factory
()
const
;
89
void
reportFinalPoint
(
90
const
ModelEvaluatorBase::InArgs<Scalar>
&finalPoint,
91
const
bool
wasSolved
92
);
93
95
96
};
97
98
99
// /////////////////////////////////
100
// Implementations
101
102
103
// Public functions overridden from ModelEvaulator
104
105
106
template
<
class
Scalar>
107
RCP<const VectorSpaceBase<Scalar>
>
108
StateFuncModelEvaluatorBase<Scalar>::get_p_space
(
int
/* l */
)
const
109
{
110
TEUCHOS_TEST_FOR_EXCEPTION
(
111
true
,std::logic_error
112
,
"ModelEvaluator<"
<<
Teuchos::ScalarTraits<Scalar>::name
()<<
">::get_p_space(l): "
113
"Error, this function was not overridden in *this = \'"
<<this->
description
()<<
"\'!"
114
);
115
TEUCHOS_UNREACHABLE_RETURN
(Teuchos::null);
116
}
117
118
119
template
<
class
Scalar>
120
RCP<const Teuchos::Array<std::string>
>
121
StateFuncModelEvaluatorBase<Scalar>::get_p_names
(
int
/* l */
)
const
122
{
123
TEUCHOS_TEST_FOR_EXCEPTION
(
124
true
,std::logic_error
125
,
"ModelEvaluator<"
<<
Teuchos::ScalarTraits<Scalar>::name
()<<
">::get_p_names(l): "
126
"Error, this function was not overridden in *this = \'"
<<this->
description
()<<
"\'!"
127
);
128
TEUCHOS_UNREACHABLE_RETURN
(Teuchos::null);
129
}
130
131
132
template
<
class
Scalar>
133
RCP<const VectorSpaceBase<Scalar>
>
134
StateFuncModelEvaluatorBase<Scalar>::get_g_space
(
int
/* j */
)
const
135
{
136
TEUCHOS_TEST_FOR_EXCEPTION
(
137
true
,std::logic_error
138
,
"ModelEvaluator<"
<<
Teuchos::ScalarTraits<Scalar>::name
()<<
">::get_g_space(j): "
139
" Error, this function was not overridden in \'"
140
<<this->
description
()<<
"\'!"
141
);
142
TEUCHOS_UNREACHABLE_RETURN
(Teuchos::null);
143
}
144
145
146
template
<
class
Scalar>
147
Teuchos::ArrayView<const std::string>
148
StateFuncModelEvaluatorBase<Scalar>::get_g_names
(
int
/* j */
)
const
149
{
150
TEUCHOS_TEST_FOR_EXCEPTION
(
151
true
,std::logic_error
152
,
"ModelEvaluator<"
<<
Teuchos::ScalarTraits<Scalar>::name
()<<
">::get_g_names(j): "
153
"Error, this function was not overridden in *this = \'"
<<this->
description
()<<
"\'!"
154
);
155
TEUCHOS_UNREACHABLE_RETURN
(
Teuchos::ArrayView<const std::string>
(Teuchos::null));
156
}
157
158
159
template
<
class
Scalar>
160
ModelEvaluatorBase::InArgs<Scalar>
161
StateFuncModelEvaluatorBase<Scalar>::getNominalValues
()
const
162
{
return
this->
createInArgs
(); }
163
164
165
template
<
class
Scalar>
166
ModelEvaluatorBase::InArgs<Scalar>
167
StateFuncModelEvaluatorBase<Scalar>::getLowerBounds
()
const
168
{
return
this->
createInArgs
(); }
169
170
171
template
<
class
Scalar>
172
ModelEvaluatorBase::InArgs<Scalar>
173
StateFuncModelEvaluatorBase<Scalar>::getUpperBounds
()
const
174
{
return
this->
createInArgs
(); }
175
176
177
template
<
class
Scalar>
178
RCP<LinearOpBase<Scalar>
>
179
StateFuncModelEvaluatorBase<Scalar>::create_W_op
()
const
180
{
181
TEUCHOS_TEST_FOR_EXCEPTION
(
182
true
, std::logic_error
183
,
"Error, if \'W_op\' is supported by the ModelEvaluator subclass then"
184
" this function create_W_op() must be overridden by the subclass "
185
<<this->
description
()<<
" to return a non-null object!"
186
);
187
TEUCHOS_UNREACHABLE_RETURN
(Teuchos::null);
188
}
189
190
191
template
<
class
Scalar>
192
RCP<PreconditionerBase<Scalar>
>
193
StateFuncModelEvaluatorBase<Scalar>::create_W_prec
()
const
194
{
195
return
Teuchos::null;
196
}
197
198
199
template
<
class
Scalar>
200
RCP<const LinearOpWithSolveFactoryBase<Scalar>
>
201
StateFuncModelEvaluatorBase<Scalar>::get_W_factory
()
const
202
{
203
return
Teuchos::null;
204
}
205
206
207
template
<
class
Scalar>
208
void
StateFuncModelEvaluatorBase<Scalar>::reportFinalPoint
(
209
const
ModelEvaluatorBase::InArgs<Scalar>
&
/* finalPoint */
,
210
const
bool
/* wasSolved */
211
)
212
{
213
// This final point is just ignored by default!
214
}
215
216
217
}
// namespace Thyra
218
219
220
#endif
// THYRA_STATE_FUNC_MODEL_EVALUATOR_BASE_HPP
Teuchos::ArrayView
Teuchos::Describable::description
virtual std::string description() const
Teuchos::RCP
Thyra::ModelEvaluatorBase::InArgs
Concrete aggregate class for all input arguments computable by a ModelEvaluator subclass object.
Definition
Thyra_ModelEvaluatorBase_decl.hpp:159
Thyra::ModelEvaluatorDefaultBase::ModelEvaluatorDefaultBase
ModelEvaluatorDefaultBase()
Definition
Thyra_ModelEvaluatorDefaultBase.hpp:1036
Thyra::ModelEvaluator::createInArgs
virtual ModelEvaluatorBase::InArgs< Scalar > createInArgs() const =0
Create an empty input arguments object that can be set up and passed to evalModel().
Thyra::StateFuncModelEvaluatorBase
This base class defines default function implementations appropritate for a set of nonlinear state fu...
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:62
Thyra::StateFuncModelEvaluatorBase::get_W_factory
RCP< const LinearOpWithSolveFactoryBase< Scalar > > get_W_factory() const
Returns null .
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:201
Thyra::StateFuncModelEvaluatorBase::create_W_prec
RCP< PreconditionerBase< Scalar > > create_W_prec() const
Returns null.
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:193
Thyra::StateFuncModelEvaluatorBase::getUpperBounds
ModelEvaluatorBase::InArgs< Scalar > getUpperBounds() const
Returns this->createInArgs().
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:173
Thyra::StateFuncModelEvaluatorBase::getNominalValues
ModelEvaluatorBase::InArgs< Scalar > getNominalValues() const
Returns this->createInArgs().
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:161
Thyra::StateFuncModelEvaluatorBase::getLowerBounds
ModelEvaluatorBase::InArgs< Scalar > getLowerBounds() const
Returns this->createInArgs().
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:167
Thyra::StateFuncModelEvaluatorBase::get_g_names
Teuchos::ArrayView< const std::string > get_g_names(int j) const
Throws exception.
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:148
Thyra::StateFuncModelEvaluatorBase::create_W_op
RCP< LinearOpBase< Scalar > > create_W_op() const
Throws exception.
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:179
Thyra::StateFuncModelEvaluatorBase::get_p_space
RCP< const VectorSpaceBase< Scalar > > get_p_space(int l) const
Throws exception.
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:108
Thyra::StateFuncModelEvaluatorBase::get_p_names
RCP< const Teuchos::Array< std::string > > get_p_names(int l) const
Throws exception.
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:121
Thyra::StateFuncModelEvaluatorBase::reportFinalPoint
void reportFinalPoint(const ModelEvaluatorBase::InArgs< Scalar > &finalPoint, const bool wasSolved)
Ignores input and does nothing.
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:208
Thyra::StateFuncModelEvaluatorBase::get_g_space
RCP< const VectorSpaceBase< Scalar > > get_g_space(int j) const
Throws exception.
Definition
Thyra_StateFuncModelEvaluatorBase.hpp:134
TEUCHOS_TEST_FOR_EXCEPTION
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
TEUCHOS_UNREACHABLE_RETURN
#define TEUCHOS_UNREACHABLE_RETURN(dummyReturnVal)
Teuchos::ScalarTraits::name
static std::string name()
Generated by
1.17.0