MicroModelicaCCompiler  4.5.3
node_selector.hpp
Go to the documentation of this file.
1 /*****************************************************************************
2 
3  This file is part of QSS Solver.
4 
5  QSS Solver is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  QSS Solver is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with QSS Solver. If not, see <http://www.gnu.org/licenses/>.
17 
18  ******************************************************************************/
19 
20 #pragma once
21 
22 #include <ir/index.hpp>
23 #include <ir/equation.hpp>
24 #include <ir/expression.hpp>
25 #include <ir/event.hpp>
26 #include <deps/sbg_graph/deps_graph.hpp>
27 #include <util/symbol_table.hpp>
28 
29 namespace MicroModelica {
30 namespace Deps {
31 
32 class EQSelector {
33  public:
34  EQSelector() : _eqs(), _select_states(false), _lhs_states(false) {};
35  EQSelector(IR::EquationTable eqs, bool select_states, bool lhs_states) : _eqs(eqs), _select_states(select_states), _lhs_states(lhs_states) {};
37  ~EQSelector() = default;
39  IR::Expression exp(IR::Equation eq);
40  IR::Equation getNode(int id);
41  IR::Equation setUsage(IR::Index ifr_idx, IR::Equation eq, Option<IR::Range> range);
42  IR::Equation getScalarUsage(SB::Set range, IR::Expression exp, IR::Equation eq, IR::Index ifr_idx);
43  bool isAlgebraic(SB::Deps::SetVertex vertex);
44  bool multipleNodes() const;
45  int id(SB::Deps::SetVertex vertex);
46  bool lhsStates();
47  std::string nodeName(int id);
48  bool validVariable(Util::Variable var);
49  SB::PWLMap mapU();
50  SB::PWLMap mapF();
51  void setMapU(SB::PWLMap map_u);
52  void setMapF(SB::PWLMap map_f);
53 
54  protected:
56  bool _select_states;
57  bool _lhs_states;
58  SB::PWLMap _map_u;
59  SB::PWLMap _map_f;
60 };
61 
62 class EVSelector {
63  public:
64  EVSelector() : _evs() {};
66  ~EVSelector() = default;
67  IR::EventTable getNodes() const;
69  IR::Event getNode(int id);
71  IR::Event getScalarUsage(SB::Set range, IR::Expression exp, IR::Event ev, IR::Index ifr_idx);
72  bool isAlgebraic(SB::Deps::SetVertex vertex);
73  bool multipleNodes() const;
74  int id(SB::Deps::SetVertex vertex);
75  bool lhsStates();
76  std::string nodeName(int id);
77  bool validVariable(Util::Variable var);
78  SB::PWLMap mapU();
79  SB::PWLMap mapF();
80  void setMapU(SB::PWLMap map_u);
81  void setMapF(SB::PWLMap map_f);
82 
83  protected:
85  SB::PWLMap _map_u;
86  SB::PWLMap _map_f;
87 };
88 
89 } // namespace Deps
90 } // namespace MicroModelica
MicroModelica::Deps::EQSelector::lhsStates
bool lhsStates()
Definition: node_selector.cpp:88
MicroModelica::Deps::EQSelector::_eqs
IR::EquationTable _eqs
Definition: node_selector.hpp:106
ModelTable< int, Event >
MicroModelica::Deps::EVSelector::mapU
SB::PWLMap mapU()
Definition: node_selector.cpp:144
MicroModelica::Deps::EVSelector::setMapU
void setMapU(SB::PWLMap map_u)
Definition: node_selector.cpp:148
MicroModelica::Deps::EVSelector::exp
IR::Expression exp(IR::Event ev)
Definition: node_selector.cpp:134
MicroModelica::Util::Variable
Definition: symbol_table.hpp:75
MicroModelica::Deps::EQSelector::_map_u
SB::PWLMap _map_u
Definition: node_selector.hpp:109
index.hpp
expression.hpp
MicroModelica::Deps::EVSelector::lhsStates
bool lhsStates()
Definition: node_selector.cpp:138
MicroModelica::Deps::EVSelector::nodeName
std::string nodeName(int id)
Definition: node_selector.cpp:140
MicroModelica::Deps::EQSelector::~EQSelector
~EQSelector()=default
MicroModelica::Deps::EQSelector::getScalarUsage
IR::Equation getScalarUsage(SB::Set range, IR::Expression exp, IR::Equation eq, IR::Index ifr_idx)
Definition: node_selector.cpp:67
MicroModelica::Deps::EVSelector::getNode
IR::Event getNode(int id)
Definition: node_selector.cpp:112
MicroModelica::Deps::EVSelector::id
int id(SB::Deps::SetVertex vertex)
Definition: node_selector.cpp:132
MicroModelica::IR::EquationTable
ModelTable< int, Equation > EquationTable
Definition: equation.hpp:169
symbol_table.hpp
event.hpp
MicroModelica::Deps::EQSelector::getNode
IR::Equation getNode(int id)
Definition: node_selector.cpp:50
Option
Definition: util_types.hpp:32
MicroModelica::Deps::EQSelector::getNodes
IR::EquationTable getNodes() const
Definition: node_selector.cpp:48
MicroModelica::Deps::EQSelector::id
int id(SB::Deps::SetVertex vertex)
Definition: node_selector.cpp:82
MicroModelica::Deps::EVSelector::validVariable
bool validVariable(Util::Variable var)
Definition: node_selector.cpp:142
MicroModelica::Deps::EVSelector::EVSelector
EVSelector()
Definition: node_selector.hpp:98
MicroModelica::Deps::EQSelector::isAlgebraic
bool isAlgebraic(SB::Deps::SetVertex vertex)
Definition: node_selector.cpp:76
MicroModelica::Deps::EVSelector::_evs
IR::EventTable _evs
Definition: node_selector.hpp:118
MicroModelica::Deps::EVSelector::getNodes
IR::EventTable getNodes() const
Definition: node_selector.cpp:110
MicroModelica::IR::Expression
Definition: expression.hpp:64
MicroModelica::Deps::EQSelector::_map_f
SB::PWLMap _map_f
Definition: node_selector.hpp:110
MicroModelica::Deps::EQSelector::setUsage
IR::Equation setUsage(IR::Index ifr_idx, IR::Equation eq, Option< IR::Range > range)
Definition: node_selector.cpp:57
MicroModelica::Deps::EVSelector::setMapF
void setMapF(SB::PWLMap map_f)
Definition: node_selector.cpp:150
MicroModelica::Deps::EQSelector::_select_states
bool _select_states
Definition: node_selector.hpp:107
MicroModelica::IR::Event
Definition: event.hpp:84
equation.hpp
MicroModelica::Deps::EVSelector::setUsage
IR::Event setUsage(IR::Index ifr_idx, IR::Event ev, Option< IR::Range > range)
Definition: node_selector.cpp:119
MicroModelica::Deps::EVSelector::isAlgebraic
bool isAlgebraic(SB::Deps::SetVertex vertex)
Definition: node_selector.cpp:123
MicroModelica::IR::Index
Definition: index.hpp:92
MicroModelica::Deps::EVSelector::getScalarUsage
IR::Event getScalarUsage(SB::Set range, IR::Expression exp, IR::Event ev, IR::Index ifr_idx)
Definition: node_selector.cpp:121
MicroModelica::Generator::MODEL_INSTANCE::Component::Deps
@ Deps
MicroModelica
Definition: files.cpp:45
MicroModelica::Deps::EQSelector::EQSelector
EQSelector()
Definition: node_selector.hpp:85
MicroModelica::Deps::EQSelector::nodeName
std::string nodeName(int id)
Definition: node_selector.cpp:90
MicroModelica::Deps::EVSelector::multipleNodes
bool multipleNodes() const
Definition: node_selector.cpp:136
MicroModelica::Deps::EQSelector::setMapU
void setMapU(SB::PWLMap map_u)
Definition: node_selector.cpp:104
MicroModelica::Deps::EQSelector::_lhs_states
bool _lhs_states
Definition: node_selector.hpp:108
MicroModelica::Deps::EVSelector::_map_u
SB::PWLMap _map_u
Definition: node_selector.hpp:119
MicroModelica::Deps::EVSelector::_map_f
SB::PWLMap _map_f
Definition: node_selector.hpp:120
MicroModelica::Deps::EQSelector::validVariable
bool validVariable(Util::Variable var)
Definition: node_selector.cpp:92
MicroModelica::Deps::EQSelector::exp
IR::Expression exp(IR::Equation eq)
Definition: node_selector.cpp:84
MicroModelica::Deps::EVSelector::mapF
SB::PWLMap mapF()
Definition: node_selector.cpp:146
MicroModelica::Deps::EQSelector::setMapF
void setMapF(SB::PWLMap map_f)
Definition: node_selector.cpp:106
MicroModelica::Deps::EQSelector::multipleNodes
bool multipleNodes() const
Definition: node_selector.cpp:86
MicroModelica::Deps::EVSelector::~EVSelector
~EVSelector()=default
MicroModelica::Deps::EQSelector::mapF
SB::PWLMap mapF()
Definition: node_selector.cpp:102
MicroModelica::Deps::EQSelector::mapU
SB::PWLMap mapU()
Definition: node_selector.cpp:100
MicroModelica::IR::EventTable
ModelTable< int, Event > EventTable
Definition: event.hpp:129