Thyra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
support
nonlinear
model_evaluator
client_support
Thyra_ScaledModelEvaluator_def.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_FINITE_DIFFERENCE_MODEL_EVALUATOR_DEF_HPP
11
#define THYRA_DEFAULT_FINITE_DIFFERENCE_MODEL_EVALUATOR_DEF_HPP
12
13
#include "Thyra_DefaultFiniteDifferenceModelEvaluator_decl.hpp"
14
#include "Thyra_ScaledLinearOpBase.hpp"
15
#include "Thyra_VectorStdOps.hpp"
16
17
18
namespace
Thyra {
19
20
21
// Constructors/initializers/accessors/utilities
22
23
24
template
<
class
Scalar>
25
ScaledModelEvaluator<Scalar>::ScaledModelEvaluator
()
26
{}
27
28
29
// Public functions overridden from Teuchos::Describable
30
31
32
template
<
class
Scalar>
33
std::string
ScaledModelEvaluator<Scalar>::description
()
const
34
{
35
const
RCP<const ModelEvaluator<Scalar>
>
36
thyraModel = this->
getUnderlyingModel
();
37
std::ostringstream oss;
38
oss <<
"Thyra::ScaledModelEvaluator{"
;
39
oss <<
"thyraModel="
;
40
if
(thyraModel.
get
())
41
oss <<
"\'"
<<thyraModel->description()<<
"\'"
;
42
else
43
oss <<
"NULL"
;
44
oss <<
"}"
;
45
return
oss.str();
46
}
47
48
49
template
<
class
Scalar>
50
void
ScaledModelEvaluator<Scalar>::
51
set_f_scaling
(
const
RCP
<
const
Thyra::VectorBase<Scalar>
>& f_scaling)
52
{
53
f_scaling_ = f_scaling;
54
}
55
56
57
// Private functions overridden from ModelEvaulatorDefaultBase
58
59
60
template
<
class
Scalar>
61
void
ScaledModelEvaluator<Scalar>::evalModelImpl(
62
const
ModelEvaluatorBase::InArgs<Scalar>
&inArgs,
63
const
ModelEvaluatorBase::OutArgs<Scalar>
&outArgs
64
)
const
65
{
66
using
Teuchos::rcp
;
67
using
Teuchos::rcp_const_cast;
68
using
Teuchos::rcp_dynamic_cast;
69
using
Teuchos::OSTab
;
70
71
THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_BEGIN(
72
"Thyra::ScaledModelEvaluator"
,inArgs,outArgs
73
);
74
75
thyraModel->evalModel(inArgs, outArgs);
76
77
if
(nonnull(f_scaling_)) {
78
79
const
RCP<VectorBase<Scalar>
> f = outArgs.
get_f
();
80
if
(nonnull(f)) {
81
ele_wise_scale
(*f_scaling_, f.
ptr
());
82
}
83
84
const
RCP<LinearOpBase<Scalar> > W_op = outArgs.
get_W_op
();
85
if
(nonnull(W_op)) {
86
const
RCP<ScaledLinearOpBase<Scalar> > W_scaled =
87
rcp_dynamic_cast<ScaledLinearOpBase<Scalar> >(W_op,
true
);
88
W_scaled->scaleLeft(*f_scaling_);
89
}
90
91
}
92
93
THYRA_MODEL_EVALUATOR_DECORATOR_EVAL_MODEL_END();
94
95
}
96
97
98
}
// namespace Thyra
99
100
101
#endif
// THYRA_DEFAULT_FINITE_DIFFERENCE_MODEL_EVALUATOR_DEF_HPP
Teuchos::RCP
Teuchos::RCP::ptr
Ptr< T > ptr() const
Teuchos::RCP::get
T * get() const
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::ModelEvaluatorBase::OutArgs::get_f
Evaluation< VectorBase< Scalar > > get_f() const
Precondition: supports(OUT_ARG_f)==true.
Definition
Thyra_ModelEvaluatorBase_def.hpp:1141
Thyra::ModelEvaluatorBase::OutArgs::get_W_op
RCP< LinearOpBase< Scalar > > get_W_op() const
Precondition: supports(OUT_ARG_W_op)==true.
Definition
Thyra_ModelEvaluatorBase_def.hpp:1255
Thyra::ModelEvaluatorDelegatorBase::getUnderlyingModel
virtual RCP< const ModelEvaluator< Scalar > > getUnderlyingModel() const
Definition
Thyra_ModelEvaluatorDelegatorBase.hpp:364
Thyra::ScaledModelEvaluator::description
std::string description() const
Definition
Thyra_ScaledModelEvaluator_def.hpp:33
Thyra::ScaledModelEvaluator::set_f_scaling
void set_f_scaling(const RCP< const Thyra::VectorBase< Scalar > > &f_scaling)
Definition
Thyra_ScaledModelEvaluator_def.hpp:51
Thyra::ScaledModelEvaluator::ScaledModelEvaluator
ScaledModelEvaluator()
Constructs to uninitialized.
Definition
Thyra_ScaledModelEvaluator_def.hpp:25
Thyra::VectorBase
Abstract interface for finite-dimensional dense vectors.
Definition
Thyra_VectorBase.hpp:115
Thyra::VectorBase::ele_wise_scale
void ele_wise_scale(const VectorBase< Scalar > &x, const Ptr< VectorBase< Scalar > > &y)
Element-wise scaling: y(i) *= x(i), i = 0...y->space()->dim()-1.
Definition
Thyra_VectorStdOps_def.hpp:221
Teuchos::OSTab
basic_OSTab< char > OSTab
Teuchos::rcp
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Generated by
1.17.0