CppADCodeGen
2.4.3
A C++ Algorithmic Differentiation Package with Source Code Generation
Loading...
Searching...
No Matches
dummy_deriv_util.hpp
1
#ifndef CPPAD_CG_DUMMY_DERIV_UTIL_INCLUDED
2
#define CPPAD_CG_DUMMY_DERIV_UTIL_INCLUDED
3
/* --------------------------------------------------------------------------
4
* CppADCodeGen: C++ Algorithmic Differentiation with Source Code Generation:
5
* Copyright (C) 2012 Ciengis
6
*
7
* CppADCodeGen is distributed under multiple licenses:
8
*
9
* - Eclipse Public License Version 1.0 (EPL1), and
10
* - GNU General Public License Version 3 (GPL3).
11
*
12
* EPL1 terms and conditions can be found in the file "epl-v10.txt", while
13
* terms and conditions for the GPL3 can be found in the file "gpl3.txt".
14
* ----------------------------------------------------------------------------
15
* Author: Joao Leal
16
*/
17
18
#include <cppad/cg/dae_index_reduction/bipartite_nodes.hpp>
19
20
namespace
CppAD
{
21
namespace
cg {
22
30
template
<
class
Base>
31
bool
sortVnodesByOrder(
Vnode<Base>
*
i
,
32
Vnode<Base>
*
j
) {
33
return
(
i
->order() >
j
->order());
34
}
35
39
class
DaeVarOrderInfo
{
40
public
:
41
size_t
originalIndex;
42
size_t
originalIndex0;
43
bool
hasDerivatives;
44
int
order;
45
public
:
46
inline
DaeVarOrderInfo
() :
47
originalIndex(0),
48
originalIndex0(0),
49
hasDerivatives(
false
),
50
order(-1) {
51
}
52
53
inline
DaeVarOrderInfo
(
size_t
moriginalIndex
,
54
size_t
moriginalIndex0
,
55
bool
mhasDerivatives
,
56
int
morder
) :
57
originalIndex(
moriginalIndex
),
58
originalIndex0(
moriginalIndex0
),
59
hasDerivatives(
mhasDerivatives
),
60
order(
morder
) {
61
}
62
};
63
67
class
DaeEqOrderInfo
{
68
public
:
69
size_t
originalIndex;
70
size_t
originalIndex0;
71
bool
differential;
72
int
assignedVar;
73
public
:
74
inline
DaeEqOrderInfo
() :
75
originalIndex(0),
76
originalIndex0(0),
77
differential(
false
),
78
assignedVar(-1) {
79
}
80
81
inline
DaeEqOrderInfo
(
size_t
moriginalIndex
,
82
size_t
moriginalIndex0
,
83
bool
mdifferential
,
84
int
massignedVar
) :
85
originalIndex(
moriginalIndex
),
86
originalIndex0(
moriginalIndex0
),
87
differential(
mdifferential
),
88
assignedVar(
massignedVar
) {
89
}
90
};
91
100
inline
bool
sortVariablesByOrder(
const
DaeVarOrderInfo
&
i
,
101
const
DaeVarOrderInfo
&
j
) {
102
if
(
j
.order <
i
.order) {
103
return
true
;
104
}
else
if
(
j
.order >
i
.order) {
105
return
false
;
106
}
else
if
(
i
.hasDerivatives ==
j
.hasDerivatives) {
107
return
j
.originalIndex >
i
.originalIndex;
108
}
else
{
109
return
i
.hasDerivatives;
110
}
111
}
112
121
inline
bool
sortEquationByAssignedOrder2(
const
DaeEqOrderInfo&
i
,
122
const
DaeEqOrderInfo&
j
) {
123
if
(
i
.differential) {
124
if
(
j
.differential)
125
return
i
.assignedVar <
j
.assignedVar;
126
else
127
return
true
;
128
}
else
{
129
if
(
j
.differential) {
130
return
false
;
131
}
else
{
132
if
(
i
.originalIndex0 ==
j
.originalIndex0) {
133
return
i
.originalIndex ==
j
.originalIndex0;
134
}
else
{
135
return
i
.originalIndex0 <
j
.originalIndex0;
136
}
137
}
138
}
139
}
140
141
}
// END cg namespace
142
}
// END CppAD namespace
143
144
#endif
CppAD::cg::DaeEqOrderInfo
Definition
dummy_deriv_util.hpp:67
CppAD::cg::DaeVarOrderInfo
Definition
dummy_deriv_util.hpp:39
CppAD
Definition
abstract_atomic_fun.hpp:19
CppAD::GreaterThanZero
bool GreaterThanZero(const cg::CG< Base > &x)
Definition
ordered.hpp:21
include
cppad
cg
dae_index_reduction
dummy_deriv_util.hpp
Generated on Tue Sep 10 2024 03:29:10 for CppADCodeGen by
1.10.0