Sacado Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Sacado_ELRCacheFad_Expression.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Sacado Package
5
// Copyright (2006) 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
// This library is free software; you can redistribute it and/or modify
11
// it under the terms of the GNU Lesser General Public License as
12
// published by the Free Software Foundation; either version 2.1 of the
13
// License, or (at your option) any later version.
14
//
15
// This library is distributed in the hope that it will be useful, but
16
// WITHOUT ANY WARRANTY; without even the implied warranty of
17
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18
// Lesser General Public License for more details.
19
//
20
// You should have received a copy of the GNU Lesser General Public
21
// License along with this library; if not, write to the Free Software
22
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
23
// USA
24
// Questions? Contact David M. Gay (dmgay@sandia.gov) or Eric T. Phipps
25
// (etphipp@sandia.gov).
26
//
27
// ***********************************************************************
28
//
29
// The forward-mode AD classes in Sacado are a derivative work of the
30
// expression template classes in the Fad package by Nicolas Di Cesare.
31
// The following banner is included in the original Fad source code:
32
//
33
// ************ DO NOT REMOVE THIS BANNER ****************
34
//
35
// Nicolas Di Cesare <Nicolas.Dicesare@ann.jussieu.fr>
36
// http://www.ann.jussieu.fr/~dicesare
37
//
38
// CEMRACS 98 : C++ courses,
39
// templates : new C++ techniques
40
// for scientific computing
41
//
42
//********************************************************
43
//
44
// A short implementation ( not all operators and
45
// functions are overloaded ) of 1st order Automatic
46
// Differentiation in forward mode (FAD) using
47
// EXPRESSION TEMPLATES.
48
//
49
//********************************************************
50
// @HEADER
51
52
#ifndef SACADO_ELRCACHEFAD_EXPRESSION_HPP
53
#define SACADO_ELRCACHEFAD_EXPRESSION_HPP
54
55
#include "
Sacado_Traits.hpp
"
56
57
namespace
Sacado
{
58
59
namespace
ELRCacheFad
{
60
62
69
template
<
typename
>
struct
BaseExpr
{};
70
72
76
template
<
typename
ExprT>
77
class
Expr
{};
78
80
85
template
<
typename
T>
86
struct
ExprLevel
{
87
static
const
unsigned
value
= 0;
88
};
89
90
template
<
typename
T>
91
struct
ExprLevel
<
Expr
<
T
> > {
92
static
const
unsigned
value
=
93
ExprLevel< typename Expr<T>::value_type
>
::value
+ 1;
94
};
95
97
template
<
typename
T>
98
struct
IsFadExpr
{
99
static
const
bool
value
=
false
;
100
};
101
102
template
<
typename
T>
103
struct
IsFadExpr
<
Expr
<
T
> > {
104
static
const
bool
value
=
true
;
105
};
106
108
111
template
<
typename
ConstT>
112
class
ConstExpr
{
113
114
public
:
115
117
typedef
ConstT
value_type
;
118
120
typedef
typename
ScalarType<value_type>::type
scalar_type
;
121
123
typedef
ConstT
base_expr_type
;
124
126
static
const
int
num_args
= 0;
127
129
SACADO_INLINE_FUNCTION
130
ConstExpr
(
const
ConstT& constant) :
constant_
(constant) {}
131
133
SACADO_INLINE_FUNCTION
134
int
size
()
const
{
return
0; }
135
137
SACADO_INLINE_FUNCTION
138
bool
updateValue
()
const
{
return
true
; }
139
141
SACADO_INLINE_FUNCTION
142
void
cache
()
const
{}
143
145
SACADO_INLINE_FUNCTION
146
value_type
val
()
const
{
return
constant_
; }
147
149
SACADO_INLINE_FUNCTION
150
void
computePartials
(
const
value_type
&
bar
,
151
value_type
partials[])
const
{}
152
154
SACADO_INLINE_FUNCTION
155
void
getTangents
(
int
i,
value_type
dots[])
const
{}
156
158
template
<
int
Arg>
159
SACADO_INLINE_FUNCTION
160
value_type
getTangent
(
int
i)
const
{
return
0.0; }
161
163
template
<
int
Arg>
164
SACADO_INLINE_FUNCTION
165
bool
isActive
()
const
{
return
false
; }
166
168
SACADO_INLINE_FUNCTION
169
bool
isLinear
()
const
{
return
true
; }
170
171
protected
:
172
174
const
ConstT&
constant_
;
175
176
};
// class ConstExpr
177
178
template
<
typename
T>
struct
ExprConstRef
{
179
typedef
const
T
&
type
;
180
};
181
template
<
typename
T>
struct
ExprConstRef
<
ConstExpr
<
T
> > {
182
typedef
const
ConstExpr<T>
type
;
183
};
184
185
}
// namespace ELRCacheFad
186
187
template
<
typename
T>
188
struct
IsExpr
<
ELRCacheFad
::Expr<T> > {
189
static
const
bool
value
=
true
;
190
};
191
192
template
<
typename
T>
193
struct
BaseExprType
<
ELRCacheFad
::Expr<T> > {
194
typedef
typename
ELRCacheFad::Expr<T>::base_expr_type
type
;
195
};
196
197
}
// namespace Sacado
198
199
#include "
Sacado_SFINAE_Macros.hpp
"
200
201
#endif
// SACADO_ELRCACHEFAD_EXPRESSION_HPP
SACADO_INLINE_FUNCTION
#define SACADO_INLINE_FUNCTION
Definition
Sacado_ConfigDefs.h:110
Sacado_SFINAE_Macros.hpp
Sacado_Traits.hpp
T
#define T
Definition
Sacado_rad.hpp:573
Sacado::ELRCacheFad::ConstExpr
Constant expression template.
Definition
Sacado_ELRCacheFad_Expression.hpp:112
Sacado::ELRCacheFad::ConstExpr::cache
SACADO_INLINE_FUNCTION void cache() const
Cache values.
Definition
Sacado_ELRCacheFad_Expression.hpp:142
Sacado::ELRCacheFad::ConstExpr::updateValue
SACADO_INLINE_FUNCTION bool updateValue() const
Return whether value should be updated.
Definition
Sacado_ELRCacheFad_Expression.hpp:138
Sacado::ELRCacheFad::ConstExpr::isLinear
SACADO_INLINE_FUNCTION bool isLinear() const
Return whether expression is linear.
Definition
Sacado_ELRCacheFad_Expression.hpp:169
Sacado::ELRCacheFad::ConstExpr::isActive
SACADO_INLINE_FUNCTION bool isActive() const
Return whether argument is active.
Definition
Sacado_ELRCacheFad_Expression.hpp:165
Sacado::ELRCacheFad::ConstExpr::getTangent
SACADO_INLINE_FUNCTION value_type getTangent(int i) const
Return tangent component i of argument Arg.
Definition
Sacado_ELRCacheFad_Expression.hpp:160
Sacado::ELRCacheFad::ConstExpr::computePartials
SACADO_INLINE_FUNCTION void computePartials(const value_type &bar, value_type partials[]) const
Return partials w.r.t. arguments.
Definition
Sacado_ELRCacheFad_Expression.hpp:150
Sacado::ELRCacheFad::ConstExpr::constant_
const ConstT & constant_
The constant.
Definition
Sacado_ELRCacheFad_Expression.hpp:174
Sacado::ELRCacheFad::ConstExpr::value_type
ConstT value_type
Typename of argument values.
Definition
Sacado_ELRCacheFad_Expression.hpp:117
Sacado::ELRCacheFad::ConstExpr::num_args
static const int num_args
Number of arguments.
Definition
Sacado_ELRCacheFad_Expression.hpp:126
Sacado::ELRCacheFad::ConstExpr::getTangents
SACADO_INLINE_FUNCTION void getTangents(int i, value_type dots[]) const
Rturn tangent component i of arguments.
Definition
Sacado_ELRCacheFad_Expression.hpp:155
Sacado::ELRCacheFad::ConstExpr::val
SACADO_INLINE_FUNCTION value_type val() const
Return value of operation.
Definition
Sacado_ELRCacheFad_Expression.hpp:146
Sacado::ELRCacheFad::ConstExpr::size
SACADO_INLINE_FUNCTION int size() const
Return size of the derivative array of the operation.
Definition
Sacado_ELRCacheFad_Expression.hpp:134
Sacado::ELRCacheFad::ConstExpr::base_expr_type
ConstT base_expr_type
Typename of base-expressions.
Definition
Sacado_ELRCacheFad_Expression.hpp:123
Sacado::ELRCacheFad::ConstExpr::scalar_type
ScalarType< value_type >::type scalar_type
Typename of scalar's (which may be different from ConstT).
Definition
Sacado_ELRCacheFad_Expression.hpp:120
Sacado::ELRCacheFad::ConstExpr::ConstExpr
SACADO_INLINE_FUNCTION ConstExpr(const ConstT &constant)
Constructor.
Definition
Sacado_ELRCacheFad_Expression.hpp:130
Sacado::ELRCacheFad::Expr
Wrapper for a generic expression template.
Definition
Sacado_ELRCacheFad_Expression.hpp:77
Sacado::ELRCacheFad
Namespace for expression-level reverse forward-mode AD classes.
Definition
Sacado_ELRCacheFad_DFadTraits.hpp:56
Sacado
Definition
Sacado_mpl_apply.hpp:39
bar
Definition
googletest-output-test_.cc:505
Sacado::BaseExprType< ELRCacheFad::Expr< T > >::type
ELRCacheFad::Expr< T >::base_expr_type type
Definition
Sacado_ELRCacheFad_Expression.hpp:194
Sacado::BaseExprType
Get the base Fad type from a view/expression.
Definition
Sacado_Traits.hpp:89
Sacado::ELRCacheFad::BaseExpr
Meta-function for determining concrete base expression.
Definition
Sacado_ELRCacheFad_Expression.hpp:69
Sacado::ELRCacheFad::ExprConstRef< ConstExpr< T > >::type
const ConstExpr< T > type
Definition
Sacado_ELRCacheFad_Expression.hpp:182
Sacado::ELRCacheFad::ExprConstRef
Definition
Sacado_ELRCacheFad_Expression.hpp:178
Sacado::ELRCacheFad::ExprConstRef::type
const T & type
Definition
Sacado_ELRCacheFad_Expression.hpp:179
Sacado::ELRCacheFad::ExprLevel< Expr< T > >::value
static const unsigned value
Definition
Sacado_ELRCacheFad_Expression.hpp:92
Sacado::ELRCacheFad::ExprLevel
Meta-function for determining nesting with an expression.
Definition
Sacado_ELRCacheFad_Expression.hpp:86
Sacado::ELRCacheFad::ExprLevel::value
static const unsigned value
Definition
Sacado_ELRCacheFad_Expression.hpp:87
Sacado::ELRCacheFad::IsFadExpr< Expr< T > >::value
static const bool value
Definition
Sacado_ELRCacheFad_Expression.hpp:104
Sacado::ELRCacheFad::IsFadExpr
Determine whether a given type is an expression.
Definition
Sacado_ELRCacheFad_Expression.hpp:98
Sacado::ELRCacheFad::IsFadExpr::value
static const bool value
Definition
Sacado_ELRCacheFad_Expression.hpp:99
Sacado::IsExpr< ELRCacheFad::Expr< T > >::value
static const bool value
Definition
Sacado_ELRCacheFad_Expression.hpp:189
Sacado::IsExpr
Is a type an expression.
Definition
Sacado_Traits.hpp:77
Sacado::ScalarType::type
T type
Definition
Sacado_Traits.hpp:304
Generated by
1.17.0