OMSimulatorLib
The OMSimulator project is a FMI-based co-simulation environment that supports ordinary (i.e., non-delayed) and TLM connections.
System.h
Go to the documentation of this file.
1 /*
2  * This file is part of OpenModelica.
3  *
4  * Copyright (c) 1998-CurrentYear, Open Source Modelica Consortium (OSMC),
5  * c/o Linköpings universitet, Department of Computer and Information Science,
6  * SE-58183 Linköping, Sweden.
7  *
8  * All rights reserved.
9  *
10  * THIS PROGRAM IS PROVIDED UNDER THE TERMS OF GPL VERSION 3 LICENSE OR
11  * THIS OSMC PUBLIC LICENSE (OSMC-PL) VERSION 1.2.
12  * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES
13  * RECIPIENT'S ACCEPTANCE OF THE OSMC PUBLIC LICENSE OR THE GPL VERSION 3,
14  * ACCORDING TO RECIPIENTS CHOICE.
15  *
16  * The OpenModelica software and the Open Source Modelica
17  * Consortium (OSMC) Public License (OSMC-PL) are obtained
18  * from OSMC, either from the above address,
19  * from the URLs: http://www.ida.liu.se/projects/OpenModelica or
20  * http://www.openmodelica.org, and in the OpenModelica distribution.
21  * GNU version 3 is obtained from: http://www.gnu.org/copyleft/gpl.html.
22  *
23  * This program is distributed WITHOUT ANY WARRANTY; without
24  * even the implied warranty of MERCHANTABILITY or FITNESS
25  * FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY SET FORTH
26  * IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF OSMC-PL.
27  *
28  * See the full OSMC Public License conditions for more details.
29  *
30  */
31 
32 #ifndef _OMS_SYSTEM_H_
33 #define _OMS_SYSTEM_H_
34 
35 #include "AlgLoop.h"
36 #include "BusConnector.h"
37 #include "Clock.h"
38 #include "ComRef.h"
39 #include "Connection.h"
40 #include "DirectedGraph.h"
41 #include "Element.h"
42 #include "ExternalModel.h"
43 #include "ResultWriter.h"
44 #include "Snapshot.h"
45 #include "ssd/ConnectorGeometry.h"
46 #include "ssd/SystemGeometry.h"
47 #if !defined(NO_TLM)
48 #include "TLMBusConnector.h"
49 #endif
50 #include "OMSimulator/Types.h"
51 #include "Values.h"
52 
53 #include <map>
54 #include <pugixml.hpp>
55 #include <unordered_map>
56 
57 #include <ctpl_stl.h>
58 
59 namespace oms
60 {
61  class AlgLoop;
62  class Component;
63  class Model;
64  class Variable;
65 
66  class System
67  {
68  public: // methods
69  virtual ~System();
70 
71  virtual oms_status_enu_t exportToSSD_SimulationInformation(pugi::xml_node& node) const = 0;
72  virtual oms_status_enu_t importFromSSD_SimulationInformation(const pugi::xml_node& node, const std::string& sspVersion) = 0;
73  virtual oms_status_enu_t registerSignalsForResultFile(ResultWriter& resultFile);
74  virtual oms_status_enu_t updateSignals(ResultWriter& resultFile);
75  virtual oms_status_enu_t setSolver(oms_solver_enu_t solver) {return oms_status_error;}
76  virtual oms_status_enu_t instantiate() = 0;
77  virtual oms_status_enu_t initialize() = 0;
78  virtual oms_status_enu_t terminate() = 0;
79  virtual oms_status_enu_t reset() = 0;
80  virtual oms_status_enu_t doStep() = 0;
81  virtual oms_status_enu_t stepUntil(double stopTime) = 0;
82 
83  static System* NewSystem(const ComRef& cref, oms_system_enu_t type, Model* parentModel, System* parentSystem);
84 
85  const ComRef& getCref() const {return cref;}
86  ComRef getFullCref() const;
87  System* getSystem(const ComRef& cref);
90  Element* getElement() {return &element;}
91  oms_status_enu_t listUnconnectedConnectors(char** contents) const;
92  oms_system_enu_t getType() const {return type;}
93  oms_status_enu_t addSubSystem(const ComRef& cref, oms_system_enu_t type);
94  oms_status_enu_t addSubModel(const ComRef& cref, const std::string& fmuPath);
95  oms_status_enu_t replaceSubModel(const ComRef& cref, const std::string& fmuPath, bool dryRun, int& warningCount);
96  bool isValidScalarVariable(Component* referenceComponent, Component* replacingComponent, Connection* connection, const ComRef& crefA, const ComRef& crefB, const ComRef& signalName, const std::string& path, std::vector<std::string>& warningList);
97  bool validCref(const ComRef& cref);
98  oms_status_enu_t exportToSSD(pugi::xml_node& node, Snapshot& snapshot, std::string variantName) const;
99  oms_status_enu_t exportToSSV(Snapshot& snapshot) const;
100  oms_status_enu_t importFromSnapshot(const pugi::xml_node& node, const std::string& sspVersion, const Snapshot& snapshot, std::string variantName);
101  void setGeometry(const ssd::ElementGeometry& geometry) {element.setGeometry(&geometry);}
102  oms_status_enu_t addConnector(const ComRef& cref, oms_causality_enu_t causality, oms_signal_type_enu_t type);
104  std::string getConnectorOwner(const ComRef& cref) const;
107  oms_status_enu_t addTLMConnection(const ComRef& crefA, const ComRef& crefB, double delay, double alpha, double linearimpedance, double angularimpedance);
108  oms_status_enu_t setTLMConnectionParameters(const ComRef &crefA, const ComRef &crefB, const oms_tlm_connection_parameters_t* parameters);
109  oms_status_enu_t addTLMBus(const ComRef& cref, oms_tlm_domain_t domain, const int dimensions, const oms_tlm_interpolation_t interpolation);
110  oms_status_enu_t addConnectorToTLMBus(const ComRef& busCref, const ComRef& connectorCref, const std::string type);
111  oms_status_enu_t deleteConnectorFromTLMBus(const ComRef& busCref, const ComRef& connectorCref);
112  oms_status_enu_t setTLMBusGeometry(const ComRef& cref, const oms::ssd::ConnectorGeometry* geometry);
113 #if !defined(NO_TLM)
116 #endif
117  Connection* getConnection(const ComRef& crefA, const ComRef& crefB);
119  oms_status_enu_t addConnection(const ComRef& crefA, const ComRef& crefB, bool suppressUnitConversion = false);
120  oms_status_enu_t deleteConnection(const ComRef& crefA, const ComRef& crefB);
121  oms_status_enu_t setConnectorGeometry(const ComRef& cref, const oms::ssd::ConnectorGeometry* geometry);
122  oms_status_enu_t setConnectionGeometry(const ComRef &crefA, const ComRef &crefB, const oms::ssd::ConnectionGeometry* geometry);
123  oms_status_enu_t addBus(const ComRef& cref);
124  oms_status_enu_t newResources(const ComRef& cref, const std::string& ssvFilename, const std::string& ssmFilename = "", bool externalresources = false);
125  oms_status_enu_t addConnectorToBus(const ComRef& busCref, const ComRef& connectorCref);
126  oms_status_enu_t deleteConnectorFromBus(const ComRef& busCref, const ComRef& connectorCref);
127  oms_status_enu_t setBusGeometry(const ComRef& cref, const oms::ssd::ConnectorGeometry* geometry);
128  oms_status_enu_t addExternalModel(const ComRef &cref, std::string path, std::string startscript);
129  oms_status_enu_t delete_(const ComRef& cref);
130  oms_status_enu_t deleteAllConectionsTo(const ComRef& cref);
131  oms_status_enu_t deleteReferencesInSSD(const ComRef& cref, const std::string& filename);
132  oms_status_enu_t deleteResourcesInSSP(const std::string& filename);
133 
134  bool isConnected(const ComRef& cref) const;
135  Model& getModel();
137  bool copyResources();
138  void getAllResources(std::vector<std::string>& resources) const;
139  std::map<ComRef, System*>& getSubSystems() {return subsystems;}
140  std::map<ComRef, Component*>& getComponents() {return components;}
141  std::vector<Connection*>& getConnections() {return connections;}
142  oms_status_enu_t updateDependencyGraphs();
145  oms_status_enu_t exportDependencyGraphs(const std::string& pathInitialization, const std::string& pathEvent, const std::string& pathSimulation);
146  oms_status_enu_t setFaultInjection(const ComRef& signal, oms_fault_type_enu_t faultType, double faultValue);
147 
148  double getTime() const {return time;}
149 
150  oms_status_enu_t getBoolean(const ComRef& cref, bool& value);
151  oms_status_enu_t getInteger(const ComRef& cref, int& value);
152  oms_status_enu_t getReal(const ComRef& cref, double& value);
153  oms_status_enu_t getString(const ComRef& cref, std::string& value);
154  oms_status_enu_t setBoolean(const ComRef& cref, bool value);
155  oms_status_enu_t setInteger(const ComRef& cref, int value);
156  oms_status_enu_t setReal(const ComRef& cref, double value);
157  oms_status_enu_t setString(const ComRef& cref, const std::string& value);
158  oms_status_enu_t setUnit(const ComRef& cref, const std::string& value);
159 
160  oms_status_enu_t getReals(const std::vector<ComRef> &crefs, std::vector<double> &values);
161  oms_status_enu_t setReals(const std::vector<ComRef> &crefs, std::vector<double> values);
162  oms_status_enu_t setRealInputDerivatives(const ComRef &cref, int order, double value);
163 
164  oms_status_enu_t getDirectionalDerivative(const ComRef& unknownCref, const ComRef& knownCref, double& value);
165 
166  oms_status_enu_t getState(const ComRef& cref);
167  oms_status_enu_t setState(const ComRef& cref);
168  oms_status_enu_t freeState(const ComRef& cref);
169 
170  oms_status_enu_t rename(const ComRef& newCref);
171  oms_status_enu_t rename(const ComRef& cref, const ComRef& newCref);
172  oms_status_enu_t renameConnections(const ComRef& cref, const ComRef& newCref);
173  oms_status_enu_t renameConnectors();
174 
175  bool isTopLevelSystem() const {return (parentSystem == NULL);}
176 
177  oms_status_enu_t addSignalsToResults(const char* regex);
178  oms_status_enu_t removeSignalsFromResults(const char* regex);
179 
181  void getStepSize(double* initialStepSize, double* minimumStepSize, double* maximumStepSize) const {if (initialStepSize) *initialStepSize=this->initialStepSize; if (minimumStepSize) *minimumStepSize=this->minimumStepSize; if (maximumStepSize) *maximumStepSize=this->maximumStepSize;}
182  oms_status_enu_t setTolerance(double absoluteTolerance, double relativeTolerance) {this->absoluteTolerance=absoluteTolerance; this->relativeTolerance=relativeTolerance; return oms_status_ok;}
183  oms_status_enu_t setFixedStepSize(double stepSize) {this->minimumStepSize=this->maximumStepSize=this->initialStepSize=stepSize; return oms_status_ok;}
184  oms_status_enu_t setVariableStepSize(double initialStepSize, double minimumStepSize, double maximumStepSize) {this->minimumStepSize=minimumStepSize; this->maximumStepSize=maximumStepSize; this->initialStepSize=initialStepSize; return oms_status_ok;}
186  oms_solver_enu_t getSolver() {return solverMethod;}
187 
188  AlgLoop* getAlgLoop(const int systemNumber);
189  oms_status_enu_t addAlgLoop(scc_t SCC, const int algLoopNum, DirectedGraph& graph, bool supportsDirectionalDerivatives);
190  oms_status_enu_t updateAlgebraicLoops(const std::vector< scc_t >& sortedConnections, DirectedGraph& graph);
191  oms_status_enu_t solveAlgLoop(DirectedGraph& graph, int loopNumber);
192 
193  bool useThreadPool();
194  ctpl::thread_pool& getThreadPool();
195 
196  std::string getUniqueID() const;
197 
199 
200  void getFilteredSignals(std::vector<Connector>& filteredSignals) const;
201 
202  bool supportsDirectionalDerivatives(int i, DirectedGraph& graph);
203 
204  Values& getValues() { return values; }
205  std::map<std::string, filesystem::path> fmuGuid;
206 
207  protected: // methods
208  System(const ComRef& cref, oms_system_enu_t type, Model* parentModel, System* parentSystem, oms_solver_enu_t solverMethod);
209 
210  // stop the compiler generating methods copying the object
211  System(System const& copy);
212  System& operator=(System const& copy);
213 
214  private: // methods
215  oms_status_enu_t importFromSSD_ConnectionGeometry(const pugi::xml_node& node, const ComRef& crefA, const ComRef& crefB);
216  oms_status_enu_t importTLMBus(const pugi::xml_node& node, Component* component);
217  oms_status_enu_t importBusConnectorSignals(const pugi::xml_node& node);
218  oms_status_enu_t importBusConnectorGeometry(const pugi::xml_node& node);
219 
220  protected: // attributes
221  double time;
222 
226 
228  unsigned int clock_id;
229 
230  oms_solver_enu_t solverMethod = oms_solver_none;
231 
232  double absoluteTolerance = 1e-4;
233  double relativeTolerance = 1e-4;
237 
238  std::unordered_map<unsigned int /*result file var ID*/, unsigned int /*allVariables ID*/> resultFileMapping;
239  std::unordered_map<ComRef, bool> exportConnectors;
240 
241  private: // attributes
243  oms_system_enu_t type;
246  std::map<ComRef, System*> subsystems;
247  std::map<ComRef, Component*> components;
248 
250 
253 
254  std::vector<Connector*> connectors;
255  std::vector<oms_element_t*> subelements;
256  std::vector<BusConnector*> busconnectors;
257 #if !defined(NO_TLM)
258  std::vector<TLMBusConnector*> tlmbusconnectors;
259 #endif
260  std::vector<Connection*> connections;
261 
262  bool loopsNeedUpdate = true;
263  std::vector<AlgLoop> algLoops;
264  };
265 }
266 
267 #endif
Definition: Clock.h:39
Definition: AlgLoop.h:91
BusConnector.
Definition: BusConnector.h:21
ComRef - component reference.
Definition: ComRef.h:47
Definition: Component.h:60
**
Definition: Connection.h:48
Connector.
Definition: Connector.h:50
Definition: DirectedGraph.h:65
Element.
Definition: Element.h:50
void setGeometry(const oms::ssd::ElementGeometry *newGeometry)
Definition: Element.cpp:67
Definition: Model.h:53
Definition: ResultWriter.h:69
Definition: Snapshot.h:47
Definition: System.h:67
Connection * getConnection(const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:1800
oms_status_enu_t setFixedStepSize(double stepSize)
Definition: System.h:183
std::vector< AlgLoop > algLoops
vector of algebraic loop objects
Definition: System.h:263
oms_status_enu_t solveAlgLoop(DirectedGraph &graph, int loopNumber)
Definition: System.cpp:3113
Model & getModel()
Definition: System.cpp:1808
double absoluteTolerance
Definition: System.h:232
Values & getValues()
Definition: System.h:204
oms_status_enu_t setTLMConnectionParameters(const ComRef &crefA, const ComRef &crefB, const oms_tlm_connection_parameters_t *parameters)
Definition: System.cpp:1732
double initialStepSize
Definition: System.h:236
std::map< std::string, filesystem::path > fmuGuid
Definition: System.h:205
DirectedGraph initializationGraph
dependency graph, with all connections, solved at initialization
Definition: System.h:223
oms_status_enu_t addSubModel(const ComRef &cref, const std::string &fmuPath)
Definition: System.cpp:285
virtual oms_status_enu_t setSolver(oms_solver_enu_t solver)
Definition: System.h:75
void getFilteredSignals(std::vector< Connector > &filteredSignals) const
Definition: System.cpp:2012
oms_status_enu_t setConnectorGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition: System.cpp:1673
oms_status_enu_t updateAlgebraicLoops(const std::vector< scc_t > &sortedConnections, DirectedGraph &graph)
Definition: System.cpp:3092
oms_status_enu_t addTLMBus(const ComRef &cref, oms_tlm_domain_t domain, const int dimensions, const oms_tlm_interpolation_t interpolation)
Definition: System.cpp:1498
oms_status_enu_t addTLMConnection(const ComRef &crefA, const ComRef &crefB, double delay, double alpha, double linearimpedance, double angularimpedance)
Definition: System.cpp:1415
oms_status_enu_t getReals(const std::vector< ComRef > &crefs, std::vector< double > &values)
Definition: System.cpp:2700
virtual oms_status_enu_t reset()=0
System * getParentSystem() const
Definition: System.h:136
oms_status_enu_t delete_(const ComRef &cref)
Definition: System.cpp:1841
ComRef cref
Definition: System.h:242
System(System const &copy)
not implemented
oms_status_enu_t deleteAllConectionsTo(const ComRef &cref)
Definition: System.cpp:1815
Variable * getVariable(const ComRef &cref)
Definition: System.cpp:207
oms_status_enu_t setRealInputDerivatives(const ComRef &cref, int order, double value)
Definition: System.cpp:2722
oms_status_enu_t freeState(const ComRef &cref)
Definition: System.cpp:2448
BusConnector * getBusConnector(const ComRef &cref)
Definition: System.cpp:1200
const DirectedGraph & getInitialUnknownsGraph()
Definition: System.h:143
System * getSystem(const ComRef &cref)
Definition: System.cpp:176
std::unordered_map< unsigned int, unsigned int > resultFileMapping
Definition: System.h:238
oms_status_enu_t renameConnectors()
Definition: System.cpp:3193
oms_status_enu_t setBusGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition: System.cpp:1762
oms_status_enu_t renameConnections(const ComRef &cref, const ComRef &newCref)
Definition: System.cpp:3183
oms_status_enu_t addSignalsToResults(const char *regex)
Definition: System.cpp:2838
std::vector< Connection * > connections
last element is always NULL
Definition: System.h:260
void getAllResources(std::vector< std::string > &resources) const
Definition: System.cpp:2003
virtual oms_status_enu_t registerSignalsForResultFile(ResultWriter &resultFile)
Definition: System.cpp:2747
oms_status_enu_t getReal(const ComRef &cref, double &value)
Definition: System.cpp:2253
std::vector< TLMBusConnector * > tlmbusconnectors
Definition: System.h:258
oms_status_enu_t removeSignalsFromResults(const char *regex)
Definition: System.cpp:2871
TLMBusConnector * getTLMBusConnector(const ComRef &cref)
Definition: System.cpp:1222
Connector ** getConnectors()
Definition: System.h:105
oms_solver_enu_t solverMethod
Definition: System.h:230
oms_status_enu_t setBoolean(const ComRef &cref, bool value)
Definition: System.cpp:2472
oms_status_enu_t importFromSSD_ConnectionGeometry(const pugi::xml_node &node, const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:2727
std::map< ComRef, System * > & getSubSystems()
Definition: System.h:139
std::string getUniqueID() const
Definition: System.cpp:2914
Values values
system level connectors, parameters and their start values defined before instantiating the FMU and e...
Definition: System.h:249
Element * getElement()
Definition: System.h:90
oms_status_enu_t setInteger(const ComRef &cref, int value)
Definition: System.cpp:2519
System & operator=(System const &copy)
not implemented
oms_status_enu_t importBusConnectorGeometry(const pugi::xml_node &node)
Definition: System.cpp:3019
oms_status_enu_t rename(const ComRef &newCref)
rename the system itself
Definition: System.cpp:3118
TLMBusConnector ** getTLMBusConnectors()
Definition: System.h:115
oms_status_enu_t exportToSSD(pugi::xml_node &node, Snapshot &snapshot, std::string variantName) const
Definition: System.cpp:670
unsigned int clock_id
Definition: System.h:228
ssd::SystemGeometry * system_geometry
Definition: System.h:252
oms_status_enu_t addConnectorToTLMBus(const ComRef &busCref, const ComRef &connectorCref, const std::string type)
Definition: System.cpp:1579
oms_status_enu_t getString(const ComRef &cref, std::string &value)
Definition: System.cpp:2329
oms_status_enu_t deleteConnection(const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:1382
DirectedGraph simulationGraph
filtered dependency graph, with connections of type Real, solved at continuous time mode;
Definition: System.h:225
double maximumStepSize
Definition: System.h:235
oms_status_enu_t addConnection(const ComRef &crefA, const ComRef &crefB, bool suppressUnitConversion=false)
Definition: System.cpp:1261
bool isConnected(const ComRef &cref) const
Definition: System.cpp:1832
bool supportsDirectionalDerivatives(int i, DirectedGraph &graph)
returns true if all FMUs support providesDirectionalDerivative
Definition: System.cpp:3078
oms_status_enu_t setState(const ComRef &cref)
Definition: System.cpp:2424
std::map< ComRef, Component * > components
Definition: System.h:247
AlgLoop * getAlgLoop(const int systemNumber)
Definition: System.cpp:3050
oms_status_enu_t setReals(const std::vector< ComRef > &crefs, std::vector< double > values)
Definition: System.cpp:2711
virtual oms_status_enu_t instantiate()=0
std::map< ComRef, Component * > & getComponents()
Definition: System.h:140
oms_status_enu_t getDirectionalDerivative(const ComRef &unknownCref, const ComRef &knownCref, double &value)
Definition: System.cpp:2381
std::map< ComRef, System * > subsystems
Definition: System.h:246
const ComRef & getCref() const
Definition: System.h:85
oms_status_enu_t updateDependencyGraphs()
Definition: System.cpp:2037
oms_status_enu_t importFromSnapshot(const pugi::xml_node &node, const std::string &sspVersion, const Snapshot &snapshot, std::string variantName)
Definition: System.cpp:797
bool useThreadPool()
Definition: System.cpp:2904
oms_status_enu_t addExternalModel(const ComRef &cref, std::string path, std::string startscript)
Definition: System.cpp:1649
oms_status_enu_t setString(const ComRef &cref, const std::string &value)
Definition: System.cpp:2616
oms_status_enu_t addBus(const ComRef &cref)
Definition: System.cpp:1471
bool isValidScalarVariable(Component *referenceComponent, Component *replacingComponent, Connection *connection, const ComRef &crefA, const ComRef &crefB, const ComRef &signalName, const std::string &path, std::vector< std::string > &warningList)
Definition: System.cpp:440
virtual oms_status_enu_t updateSignals(ResultWriter &resultFile)
Definition: System.cpp:2793
double getTime() const
Definition: System.h:148
virtual oms_status_enu_t doStep()=0
bool isTopLevelSystem() const
Definition: System.h:175
double time
Definition: System.h:221
static System * NewSystem(const ComRef &cref, oms_system_enu_t type, Model *parentModel, System *parentSystem)
Definition: System.cpp:104
oms_status_enu_t setUnit(const ComRef &cref, const std::string &value)
Definition: System.cpp:2662
System * parentSystem
Definition: System.h:245
double relativeTolerance
Definition: System.h:233
Model * parentModel
Definition: System.h:244
oms_status_enu_t listUnconnectedConnectors(char **contents) const
Definition: System.cpp:594
oms_status_enu_t deleteConnectorFromTLMBus(const ComRef &busCref, const ComRef &connectorCref)
Definition: System.cpp:1618
oms_status_enu_t getState(const ComRef &cref)
Definition: System.cpp:2400
oms_system_enu_t type
Definition: System.h:243
System(const ComRef &cref, oms_system_enu_t type, Model *parentModel, System *parentSystem, oms_solver_enu_t solverMethod)
Definition: System.cpp:50
Connector * getConnector(const ComRef &cref)
Definition: System.cpp:1175
oms_solver_enu_t getSolver()
Definition: System.h:186
double minimumStepSize
Definition: System.h:234
oms_status_enu_t getInteger(const ComRef &cref, int &value)
Definition: System.cpp:2183
oms_status_enu_t setReal(const ComRef &cref, double value)
Definition: System.cpp:2566
Clock clock
Definition: System.h:227
virtual oms_status_enu_t initialize()=0
ctpl::thread_pool & getThreadPool()
Definition: System.cpp:2909
oms_status_enu_t getBoolean(const ComRef &cref, bool &value)
Definition: System.cpp:2113
std::string getConnectorOwner(const ComRef &cref) const
Definition: System.cpp:1195
void getStepSize(double *initialStepSize, double *minimumStepSize, double *maximumStepSize) const
Definition: System.h:181
bool validCref(const ComRef &cref)
Definition: System.cpp:228
double getMaximumStepSize()
Definition: System.h:185
oms_status_enu_t addConnectorToBus(const ComRef &busCref, const ComRef &connectorCref)
Definition: System.cpp:1531
oms_status_enu_t deleteReferencesInSSD(const ComRef &cref, const std::string &filename)
Definition: System.cpp:542
virtual oms_status_enu_t terminate()=0
std::vector< Connector * > connectors
last element is always NULL
Definition: System.h:254
oms_status_enu_t exportToSSV(Snapshot &snapshot) const
Definition: System.cpp:782
oms_status_enu_t addSubSystem(const ComRef &cref, oms_system_enu_t type)
Definition: System.cpp:253
oms_status_enu_t newResources(const ComRef &cref, const std::string &ssvFilename, const std::string &ssmFilename="", bool externalresources=false)
Definition: System.cpp:472
oms_status_enu_t replaceSubModel(const ComRef &cref, const std::string &fmuPath, bool dryRun, int &warningCount)
Definition: System.cpp:331
std::vector< oms_element_t * > subelements
last element is always NULL; don't free it
Definition: System.h:255
std::unordered_map< ComRef, bool > exportConnectors
Definition: System.h:239
Component * getComponent(const ComRef &cref)
Definition: System.cpp:191
void setGeometry(const ssd::ElementGeometry &geometry)
Definition: System.h:101
virtual ~System()
Definition: System.cpp:74
oms_status_enu_t importTLMBus(const pugi::xml_node &node, Component *component)
Definition: System.cpp:2943
oms_status_enu_t setFaultInjection(const ComRef &signal, oms_fault_type_enu_t faultType, double faultValue)
Definition: System.cpp:2925
std::vector< BusConnector * > busconnectors
Definition: System.h:256
DirectedGraph eventGraph
filtered dependency graph, without parameters, solved at event mode
Definition: System.h:224
Element element
Definition: System.h:251
oms_status_enu_t setVariableStepSize(double initialStepSize, double minimumStepSize, double maximumStepSize)
Definition: System.h:184
virtual oms_status_enu_t stepUntil(double stopTime)=0
bool copyResources()
Definition: System.cpp:1996
oms_status_enu_t setTLMBusGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition: System.cpp:1779
oms_status_enu_t deleteConnectorFromBus(const ComRef &busCref, const ComRef &connectorCref)
Definition: System.cpp:1555
oms_status_enu_t addConnector(const ComRef &cref, oms_causality_enu_t causality, oms_signal_type_enu_t type)
Definition: System.cpp:1152
void getTolerance(double *absoluteTolerance, double *relativeTolerance) const
Definition: System.h:180
oms_status_enu_t importBusConnectorSignals(const pugi::xml_node &node)
Definition: System.cpp:2991
void forceLoopsToBeUpdated()
Definition: System.h:198
oms_status_enu_t deleteResourcesInSSP(const std::string &filename)
Definition: System.cpp:566
bool loopsNeedUpdate
Definition: System.h:262
virtual oms_status_enu_t exportToSSD_SimulationInformation(pugi::xml_node &node) const =0
oms_status_enu_t setConnectionGeometry(const ComRef &crefA, const ComRef &crefB, const oms::ssd::ConnectionGeometry *geometry)
Definition: System.cpp:1704
oms_status_enu_t setTolerance(double absoluteTolerance, double relativeTolerance)
Definition: System.h:182
oms_system_enu_t getType() const
Definition: System.h:92
oms_status_enu_t exportDependencyGraphs(const std::string &pathInitialization, const std::string &pathEvent, const std::string &pathSimulation)
Definition: System.cpp:2027
std::vector< Connection * > & getConnections()
Definition: System.h:141
virtual oms_status_enu_t importFromSSD_SimulationInformation(const pugi::xml_node &node, const std::string &sspVersion)=0
ComRef getFullCref() const
Definition: System.cpp:165
oms_status_enu_t addAlgLoop(scc_t SCC, const int algLoopNum, DirectedGraph &graph, bool supportsDirectionalDerivatives)
Definition: System.cpp:3061
const DirectedGraph & getOutputsGraph()
Definition: System.h:144
TLMBusConnector.
Definition: TLMBusConnector.h:97
Definition: Values.h:46
Definition: Variable.h:46
Definition: ConnectionGeometry.h:46
Definition: ConnectorGeometry.h:46
Definition: ElementGeometry.h:46
Definition: SystemGeometry.h:46
const char * component
Definition: Tags.cpp:45
const char * connection
Definition: Tags.cpp:46
const char * signal
Definition: Tags.cpp:38
const char * parameters
Definition: Tags.cpp:81
Definition: AlgLoop.h:45
Strong connected components data type.
Definition: DirectedGraph.h:54