CppADCodeGen 2.4.3
A C++ Algorithmic Differentiation Package with Source Code Generation
Loading...
Searching...
No Matches
dae_structural_index_reduction.hpp
1#ifndef CPPAD_CG_DAE_STRUCTURAL_INDEX_REDUCTION_INCLUDED
2#define CPPAD_CG_DAE_STRUCTURAL_INDEX_REDUCTION_INCLUDED
3/* --------------------------------------------------------------------------
4 * CppADCodeGen: C++ Algorithmic Differentiation with Source Code Generation:
5 * Copyright (C) 2016 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/dae_index_reduction.hpp>
19#include <cppad/cg/dae_index_reduction/bipartite_graph.hpp>
20
21namespace CppAD {
22namespace cg {
23
28template<class Base>
30protected:
32 using ADCG = CppAD::AD<CGBase>;
33protected:
34 //
36public:
37
47 const std::vector<DaeVarInfo>& varInfo,
48 const std::vector<std::string>& eqName) :
49 DaeIndexReduction<Base>(fun),
50 graph_(fun, varInfo, eqName, *this) {
51 }
52
53 inline virtual ~DaeStructuralIndexReduction() {
54 }
55
56 inline BipartiteGraph<Base>& getGraph() {
57 return graph_;
58 }
59
60 inline const BipartiteGraph<Base>& getGraph() const {
61 return graph_;
62 }
63
69 inline void setPreserveNames(bool p) {
70 graph_.setPreserveNames(p);
71 }
72
78 inline bool isPreserveNames() const {
79 return graph_.isPreserveNames();
80 }
81
90 inline size_t getStructuralIndex() const {
91 return graph_.getStructuralIndex();
92 }
93};
94
95} // END cg namespace
96} // END CppAD namespace
97
98#endif
99
DaeStructuralIndexReduction(ADFun< CG< Base > > &fun, const std::vector< DaeVarInfo > &varInfo, const std::vector< std::string > &eqName)