Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
support
nonlinear
model_evaluator
client_support
Thyra_DefaultFinalPointCaptureModelEvaluator.hpp
1
// @HEADER
2
// *****************************************************************************
3
// Thyra: Interfaces and Support for Abstract Numerical Algorithms
4
//
5
// Copyright 2004 NTESS and the Thyra contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef THYRA_DEFAULT_FINAL_POINT_CAPTURE_MODEL_EVALUATOR_HPP
11
#define THYRA_DEFAULT_FINAL_POINT_CAPTURE_MODEL_EVALUATOR_HPP
12
13
#include "Thyra_ModelEvaluatorDelegatorBase.hpp"
14
#include "Thyra_LinearOpWithSolveFactoryBase.hpp"
15
#include "
Teuchos_Time.hpp
"
16
17
18
//#define THYRA_DEFAULT_FINAL_POINT_CAPTURE_MODEL_EVALUATOR_DUMP_ALL
19
20
21
namespace
Thyra {
22
23
31
template
<
class
Scalar>
32
class
DefaultFinalPointCaptureModelEvaluator
33
:
virtual
public
ModelEvaluatorDelegatorBase
<Scalar>
34
{
35
public
:
36
38
typedef
typename
Teuchos::ScalarTraits<Scalar>::magnitudeType
ScalarMag
;
39
42
44
DefaultFinalPointCaptureModelEvaluator
();
45
47
DefaultFinalPointCaptureModelEvaluator
(
48
const
Teuchos::RCP
<
ModelEvaluator<Scalar>
> &thyraModel
49
);
50
52
const
ModelEvaluatorBase::InArgs<Scalar>
&
getFinalPoint
()
const
;
53
55
bool
finalPointWasSolved
()
const
;
56
58
61
63
std::string
description
()
const
;
64
66
69
71
void
reportFinalPoint
(
72
const
ModelEvaluatorBase::InArgs<Scalar>
&finalPoint,
73
const
bool
wasSolved
74
);
75
77
78
private
:
79
82
84
void
evalModelImpl(
85
const
ModelEvaluatorBase::InArgs<Scalar>
&inArgs,
86
const
ModelEvaluatorBase::OutArgs<Scalar>
&outArgs
87
)
const
;
88
90
91
private
:
92
93
ModelEvaluatorBase::InArgs<Scalar>
finalPoint_;
94
bool
finalPointWasSolved_;
95
96
};
97
98
99
// /////////////////////////////////
100
// Implementations
101
102
103
// Constructors/initializers/accessors/utilities
104
105
106
template
<
class
Scalar>
107
DefaultFinalPointCaptureModelEvaluator<Scalar>::DefaultFinalPointCaptureModelEvaluator
()
108
:finalPointWasSolved_(false)
109
{}
110
111
112
template
<
class
Scalar>
113
DefaultFinalPointCaptureModelEvaluator<Scalar>::DefaultFinalPointCaptureModelEvaluator
(
114
const
Teuchos::RCP
<
ModelEvaluator<Scalar>
> &thyraModel
115
)
116
{
117
this->
ModelEvaluatorDelegatorBase<Scalar>::initialize
(thyraModel);
118
finalPoint_ = thyraModel->createInArgs();
119
finalPoint_.setArgs(thyraModel->getNominalValues());
120
finalPointWasSolved_ =
false
;
121
}
122
123
124
template
<
class
Scalar>
125
const
ModelEvaluatorBase::InArgs<Scalar>
&
126
DefaultFinalPointCaptureModelEvaluator<Scalar>::getFinalPoint
()
const
127
{
128
#ifdef THYRA_DEFAULT_FINAL_POINT_CAPTURE_MODEL_EVALUATOR_DUMP_ALL
129
*
Teuchos::VerboseObjectBase::getDefaultOStream
()
130
<<
"\nDefaultFinalPointCaptureModelEvaluator<Scalar>::getFinalPoint():"
131
<<
" finalPoint =\n"
<< Teuchos::describe(finalPoint_,
Teuchos::VERB_EXTREME
);
132
#endif
133
return
finalPoint_;
134
}
135
136
137
template
<
class
Scalar>
138
bool
DefaultFinalPointCaptureModelEvaluator<Scalar>::finalPointWasSolved
()
const
139
{
140
return
finalPointWasSolved_;
141
}
142
143
144
// Public functions overridden from Teuchos::Describable
145
146
147
template
<
class
Scalar>
148
std::string
DefaultFinalPointCaptureModelEvaluator<Scalar>::description
()
const
149
{
150
const
Teuchos::RCP<const ModelEvaluator<Scalar>
>
151
thyraModel = this->
getUnderlyingModel
();
152
std::ostringstream oss;
153
oss <<
"Thyra::DefaultFinalPointCaptureModelEvaluator{"
;
154
oss <<
"thyraModel="
;
155
if
(thyraModel.
get
())
156
oss <<
"\'"
<<thyraModel->description()<<
"\'"
;
157
else
158
oss <<
"NULL"
;
159
oss <<
"}"
;
160
return
oss.str();
161
}
162
163
164
// Overridden from ModelEvaulator.
165
166
167
template
<
class
Scalar>
168
void
DefaultFinalPointCaptureModelEvaluator<Scalar>::reportFinalPoint
(
169
const
ModelEvaluatorBase::InArgs<Scalar>
&finalPoint,
170
const
bool
wasSolved
171
)
172
{
173
finalPoint_.setArgs(finalPoint);
174
finalPointWasSolved_ = wasSolved;
175
if
(!this->
isUnderlyingModelConst
())
176
this->
getNonconstUnderlyingModel
()->reportFinalPoint(finalPoint,wasSolved);
177
#ifdef THYRA_DEFAULT_FINAL_POINT_CAPTURE_MODEL_EVALUATOR_DUMP_ALL
178
*
Teuchos::VerboseObjectBase::getDefaultOStream
()
179
<<
"\nDefaultFinalPointCaptureModelEvaluator<Scalar>::reportFinalPoint(...):"
180
<<
" finalPoint =\n"
<< Teuchos::describe(finalPoint_,
Teuchos::VERB_EXTREME
);
181
#endif
182
}
183
184
185
// Private functions overridden from ModelEvaulatorDefaultBase
186
187
188
template
<
class
Scalar>
189
void
DefaultFinalPointCaptureModelEvaluator<Scalar>::evalModelImpl(
190
const
ModelEvaluatorBase::InArgs<Scalar>
&inArgs,
191
const
ModelEvaluatorBase::OutArgs<Scalar>
&outArgs
192
)
const
193
{
194
195
THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_BEGIN(
196
"Thyra::DefaultFinalPointCaptureModelEvaluator"
,inArgs,outArgs
197
);
198
199
thyraModel->evalModel(inArgs,outArgs);
200
201
THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_END();
202
203
}
204
205
206
}
// namespace Thyra
207
208
209
#endif
// THYRA_DEFAULT_FINAL_POINT_CAPTURE_MODEL_EVALUATOR_HPP
Teuchos_Time.hpp
Teuchos::RCP
Teuchos::RCP::get
T * get() const
Teuchos::VerboseObjectBase::getDefaultOStream
static RCP< FancyOStream > getDefaultOStream()
Thyra::DefaultFinalPointCaptureModelEvaluator::finalPointWasSolved
bool finalPointWasSolved() const
Definition
Thyra_DefaultFinalPointCaptureModelEvaluator.hpp:138
Thyra::DefaultFinalPointCaptureModelEvaluator::getFinalPoint
const ModelEvaluatorBase::InArgs< Scalar > & getFinalPoint() const
Definition
Thyra_DefaultFinalPointCaptureModelEvaluator.hpp:126
Thyra::DefaultFinalPointCaptureModelEvaluator::DefaultFinalPointCaptureModelEvaluator
DefaultFinalPointCaptureModelEvaluator()
Definition
Thyra_DefaultFinalPointCaptureModelEvaluator.hpp:107
Thyra::DefaultFinalPointCaptureModelEvaluator::reportFinalPoint
void reportFinalPoint(const ModelEvaluatorBase::InArgs< Scalar > &finalPoint, const bool wasSolved)
Definition
Thyra_DefaultFinalPointCaptureModelEvaluator.hpp:168
Thyra::DefaultFinalPointCaptureModelEvaluator::description
std::string description() const
Definition
Thyra_DefaultFinalPointCaptureModelEvaluator.hpp:148
Thyra::DefaultFinalPointCaptureModelEvaluator::ScalarMag
Teuchos::ScalarTraits< Scalar >::magnitudeType ScalarMag
Definition
Thyra_DefaultFinalPointCaptureModelEvaluator.hpp:38
Thyra::ModelEvaluatorBase::InArgs
Concrete aggregate class for all input arguments computable by a ModelEvaluator subclass object.
Definition
Thyra_ModelEvaluatorBase_decl.hpp:127
Thyra::ModelEvaluatorBase::OutArgs
Concrete aggregate class for all output arguments computable by a ModelEvaluator subclass object.
Definition
Thyra_ModelEvaluatorBase_decl.hpp:870
Thyra::ModelEvaluatorDelegatorBase::isUnderlyingModelConst
virtual bool isUnderlyingModelConst() const
Definition
Thyra_ModelEvaluatorDelegatorBase.hpp:348
Thyra::ModelEvaluatorDelegatorBase::ModelEvaluatorDelegatorBase
ModelEvaluatorDelegatorBase()
Constructs to uninitialized.
Definition
Thyra_ModelEvaluatorDelegatorBase.hpp:297
Thyra::ModelEvaluatorDelegatorBase::getUnderlyingModel
virtual RCP< const ModelEvaluator< Scalar > > getUnderlyingModel() const
Definition
Thyra_ModelEvaluatorDelegatorBase.hpp:364
Thyra::ModelEvaluatorDelegatorBase::initialize
void initialize(const RCP< ModelEvaluator< Scalar > > &model)
Initialize given a non-const model evaluator.
Definition
Thyra_ModelEvaluatorDelegatorBase.hpp:320
Thyra::ModelEvaluatorDelegatorBase::getNonconstUnderlyingModel
virtual RCP< ModelEvaluator< Scalar > > getNonconstUnderlyingModel()
Definition
Thyra_ModelEvaluatorDelegatorBase.hpp:356
Thyra::ModelEvaluator
Pure abstract base interface for evaluating a stateless "model" that can be mapped into a number of d...
Definition
Thyra_ModelEvaluator.hpp:741
Teuchos::VERB_EXTREME
VERB_EXTREME
Teuchos::ScalarTraits::magnitudeType
T magnitudeType
Generated by
1.17.0