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 #if !defined(NO_TLM)
47 #include "TLMBusConnector.h"
48 #endif
49 #include "OMSimulator/Types.h"
50 #include "Values.h"
51 
52 #include <map>
53 #include <pugixml.hpp>
54 #include <unordered_map>
55 
56 #include <ctpl_stl.h>
57 
58 namespace oms
59 {
60  class AlgLoop;
61  class Component;
62  class Model;
63  class Variable;
64 
65  class System
66  {
67  public: // methods
68  virtual ~System();
69 
70  virtual oms_status_enu_t exportToSSD_SimulationInformation(pugi::xml_node& node) const = 0;
71  virtual oms_status_enu_t importFromSSD_SimulationInformation(const pugi::xml_node& node, const std::string& sspVersion) = 0;
72  virtual oms_status_enu_t registerSignalsForResultFile(ResultWriter& resultFile);
73  virtual oms_status_enu_t updateSignals(ResultWriter& resultFile);
74  virtual oms_status_enu_t setSolver(oms_solver_enu_t solver) {return oms_status_error;}
75  virtual oms_status_enu_t instantiate() = 0;
76  virtual oms_status_enu_t initialize() = 0;
77  virtual oms_status_enu_t terminate() = 0;
78  virtual oms_status_enu_t reset() = 0;
79  virtual oms_status_enu_t doStep() = 0;
80  virtual oms_status_enu_t stepUntil(double stopTime) = 0;
81 
82  static System* NewSystem(const ComRef& cref, oms_system_enu_t type, Model* parentModel, System* parentSystem);
83 
84  const ComRef& getCref() const {return cref;}
85  ComRef getFullCref() const;
86  System* getSystem(const ComRef& cref);
89  Element* getElement() {return &element;}
90  oms_status_enu_t listUnconnectedConnectors(char** contents) const;
91  oms_system_enu_t getType() const {return type;}
92  oms_status_enu_t addSubSystem(const ComRef& cref, oms_system_enu_t type);
93  oms_status_enu_t addSubModel(const ComRef& cref, const std::string& fmuPath);
94  oms_status_enu_t replaceSubModel(const ComRef& cref, const std::string& fmuPath, bool dryRun, int& warningCount);
95  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);
96  bool validCref(const ComRef& cref);
97  oms_status_enu_t exportToSSD(pugi::xml_node& node, Snapshot& snapshot, std::string variantName) const;
98  oms_status_enu_t exportToSSV(Snapshot& snapshot) const;
99  oms_status_enu_t importFromSnapshot(const pugi::xml_node& node, const std::string& sspVersion, const Snapshot& snapshot, std::string variantName);
100  void setGeometry(const ssd::ElementGeometry& geometry) {element.setGeometry(&geometry);}
101  oms_status_enu_t addConnector(const ComRef& cref, oms_causality_enu_t causality, oms_signal_type_enu_t type);
103  std::string getConnectorOwner(const ComRef& cref) const;
106  oms_status_enu_t addTLMConnection(const ComRef& crefA, const ComRef& crefB, double delay, double alpha, double linearimpedance, double angularimpedance);
107  oms_status_enu_t setTLMConnectionParameters(const ComRef &crefA, const ComRef &crefB, const oms_tlm_connection_parameters_t* parameters);
108  oms_status_enu_t addTLMBus(const ComRef& cref, oms_tlm_domain_t domain, const int dimensions, const oms_tlm_interpolation_t interpolation);
109  oms_status_enu_t addConnectorToTLMBus(const ComRef& busCref, const ComRef& connectorCref, const std::string type);
110  oms_status_enu_t deleteConnectorFromTLMBus(const ComRef& busCref, const ComRef& connectorCref);
111  oms_status_enu_t setTLMBusGeometry(const ComRef& cref, const oms::ssd::ConnectorGeometry* geometry);
112 #if !defined(NO_TLM)
115 #endif
116  Connection* getConnection(const ComRef& crefA, const ComRef& crefB);
118  oms_status_enu_t addConnection(const ComRef& crefA, const ComRef& crefB, bool suppressUnitConversion = false);
119  oms_status_enu_t deleteConnection(const ComRef& crefA, const ComRef& crefB);
120  oms_status_enu_t setConnectorGeometry(const ComRef& cref, const oms::ssd::ConnectorGeometry* geometry);
121  oms_status_enu_t setConnectionGeometry(const ComRef &crefA, const ComRef &crefB, const oms::ssd::ConnectionGeometry* geometry);
122  oms_status_enu_t addBus(const ComRef& cref);
123  oms_status_enu_t newResources(const ComRef& cref, const std::string& ssvFilename, const std::string& ssmFilename = "", bool externalresources = false);
124  oms_status_enu_t addConnectorToBus(const ComRef& busCref, const ComRef& connectorCref);
125  oms_status_enu_t deleteConnectorFromBus(const ComRef& busCref, const ComRef& connectorCref);
126  oms_status_enu_t setBusGeometry(const ComRef& cref, const oms::ssd::ConnectorGeometry* geometry);
127  oms_status_enu_t addExternalModel(const ComRef &cref, std::string path, std::string startscript);
128  oms_status_enu_t delete_(const ComRef& cref);
129  oms_status_enu_t deleteAllConectionsTo(const ComRef& cref);
130  oms_status_enu_t deleteReferencesInSSD(const ComRef& cref, const std::string& filename);
131  oms_status_enu_t deleteResourcesInSSP(const std::string& filename);
132 
133  bool isConnected(const ComRef& cref) const;
134  Model& getModel();
136  bool copyResources();
137  void getAllResources(std::vector<std::string>& resources) const;
138  std::map<ComRef, System*>& getSubSystems() {return subsystems;}
139  std::map<ComRef, Component*>& getComponents() {return components;}
140  std::vector<Connection*>& getConnections() {return connections;}
141  oms_status_enu_t updateDependencyGraphs();
144  oms_status_enu_t exportDependencyGraphs(const std::string& pathInitialization, const std::string& pathEvent, const std::string& pathSimulation);
145  oms_status_enu_t setFaultInjection(const ComRef& signal, oms_fault_type_enu_t faultType, double faultValue);
146 
147  double getTime() const {return time;}
148 
149  oms_status_enu_t getBoolean(const ComRef& cref, bool& value);
150  oms_status_enu_t getInteger(const ComRef& cref, int& value);
151  oms_status_enu_t getReal(const ComRef& cref, double& value);
152  oms_status_enu_t getString(const ComRef& cref, std::string& value);
153  oms_status_enu_t setBoolean(const ComRef& cref, bool value);
154  oms_status_enu_t setInteger(const ComRef& cref, int value);
155  oms_status_enu_t setReal(const ComRef& cref, double value);
156  oms_status_enu_t setString(const ComRef& cref, const std::string& value);
157  oms_status_enu_t setUnit(const ComRef& cref, const std::string& value);
158 
159  oms_status_enu_t getReals(const std::vector<ComRef> &crefs, std::vector<double> &values);
160  oms_status_enu_t setReals(const std::vector<ComRef> &crefs, std::vector<double> values);
161  oms_status_enu_t setRealInputDerivatives(const ComRef &cref, int order, double value);
162 
163  oms_status_enu_t getDirectionalDerivative(const ComRef& unknownCref, const ComRef& knownCref, double& value);
164 
165  oms_status_enu_t getState(const ComRef& cref);
166  oms_status_enu_t setState(const ComRef& cref);
167  oms_status_enu_t freeState(const ComRef& cref);
168 
169  oms_status_enu_t rename(const ComRef& newCref);
170  oms_status_enu_t rename(const ComRef& cref, const ComRef& newCref);
171  oms_status_enu_t renameConnections(const ComRef& cref, const ComRef& newCref);
172  oms_status_enu_t renameConnectors();
173 
174  bool isTopLevelSystem() const {return (parentSystem == NULL);}
175 
176  oms_status_enu_t addSignalsToResults(const char* regex);
177  oms_status_enu_t removeSignalsFromResults(const char* regex);
178 
180  void getStepSize(double* initialStepSize, double* minimumStepSize, double* maximumStepSize) const {if (initialStepSize) *initialStepSize=this->initialStepSize; if (minimumStepSize) *minimumStepSize=this->minimumStepSize; if (maximumStepSize) *maximumStepSize=this->maximumStepSize;}
181  oms_status_enu_t setTolerance(double absoluteTolerance, double relativeTolerance) {this->absoluteTolerance=absoluteTolerance; this->relativeTolerance=relativeTolerance; return oms_status_ok;}
182  oms_status_enu_t setFixedStepSize(double stepSize) {this->minimumStepSize=this->maximumStepSize=this->initialStepSize=stepSize; return oms_status_ok;}
183  oms_status_enu_t setVariableStepSize(double initialStepSize, double minimumStepSize, double maximumStepSize) {this->minimumStepSize=minimumStepSize; this->maximumStepSize=maximumStepSize; this->initialStepSize=initialStepSize; return oms_status_ok;}
185  oms_solver_enu_t getSolver() {return solverMethod;}
186 
187  AlgLoop* getAlgLoop(const int systemNumber);
188  oms_status_enu_t addAlgLoop(scc_t SCC, const int algLoopNum, DirectedGraph& graph, bool supportsDirectionalDerivatives);
189  oms_status_enu_t updateAlgebraicLoops(const std::vector< scc_t >& sortedConnections, DirectedGraph& graph);
190  oms_status_enu_t solveAlgLoop(DirectedGraph& graph, int loopNumber);
191 
192  bool useThreadPool();
193  ctpl::thread_pool& getThreadPool();
194 
195  std::string getUniqueID() const;
196 
198 
199  void getFilteredSignals(std::vector<Connector>& filteredSignals) const;
200 
201  bool supportsDirectionalDerivatives(int i, DirectedGraph& graph);
202 
203  Values& getValues() { return values; }
204  std::map<std::string, filesystem::path> fmuGuid;
205 
206  protected: // methods
207  System(const ComRef& cref, oms_system_enu_t type, Model* parentModel, System* parentSystem, oms_solver_enu_t solverMethod);
208 
209  // stop the compiler generating methods copying the object
210  System(System const& copy);
211  System& operator=(System const& copy);
212 
213  private: // methods
214  oms_status_enu_t importFromSSD_ConnectionGeometry(const pugi::xml_node& node, const ComRef& crefA, const ComRef& crefB);
215  oms_status_enu_t importTLMBus(const pugi::xml_node& node, Component* component);
216  oms_status_enu_t importBusConnectorSignals(const pugi::xml_node& node);
217  oms_status_enu_t importBusConnectorGeometry(const pugi::xml_node& node);
218 
219  protected: // attributes
220  double time;
221 
225 
227  unsigned int clock_id;
228 
229  oms_solver_enu_t solverMethod = oms_solver_none;
230 
231  double absoluteTolerance = 1e-4;
232  double relativeTolerance = 1e-4;
236 
237  std::unordered_map<unsigned int /*result file var ID*/, unsigned int /*allVariables ID*/> resultFileMapping;
238  std::unordered_map<ComRef, bool> exportConnectors;
239 
240  private: // attributes
242  oms_system_enu_t type;
245  std::map<ComRef, System*> subsystems;
246  std::map<ComRef, Component*> components;
247 
249 
251  std::vector<Connector*> connectors;
252  std::vector<oms_element_t*> subelements;
253  std::vector<BusConnector*> busconnectors;
254 #if !defined(NO_TLM)
255  std::vector<TLMBusConnector*> tlmbusconnectors;
256 #endif
257  std::vector<Connection*> connections;
258 
259  bool loopsNeedUpdate = true;
260  std::vector<AlgLoop> algLoops;
261  };
262 }
263 
264 #endif
oms::Connector::getCausality
const oms_causality_enu_t getCausality() const
Definition: Connector.h:77
oms
Definition: AlgLoop.h:44
oms::System::connections
std::vector< Connection * > connections
last element is always NULL
Definition: System.h:257
System.h
oms::Component::getElement
Element * getElement()
Definition: Component.h:112
Clock
Definition: Clock.h:38
oms::System::~System
virtual ~System()
Definition: System.cpp:74
oms::System::importBusConnectorSignals
oms_status_enu_t importBusConnectorSignals(const pugi::xml_node &node)
Definition: System.cpp:2979
oms::ssp::Draft20180219::ssd::simulation_information
const char * simulation_information
Definition: Tags.cpp:56
oms::System::setFixedStepSize
oms_status_enu_t setFixedStepSize(double stepSize)
Definition: System.h:182
oms::ssp::Draft20180219::ssd::connection
const char * connection
Definition: Tags.cpp:46
oms::ssp::Version1_0::oms_buses
const char * oms_buses
Definition: Tags.cpp:67
oms::System::setBoolean
oms_status_enu_t setBoolean(const ComRef &cref, bool value)
Definition: System.cpp:2460
oms::ssp::Draft20180219::annotation_type
const char * annotation_type
Definition: Tags.cpp:34
oms::System::setRealInputDerivatives
oms_status_enu_t setRealInputDerivatives(const ComRef &cref, int order, double value)
Definition: System.cpp:2710
ComRef.h
oms::System::setInteger
oms_status_enu_t setInteger(const ComRef &cref, int value)
Definition: System.cpp:2507
oms::System::addConnector
oms_status_enu_t addConnector(const ComRef &cref, oms_causality_enu_t causality, oms_signal_type_enu_t type)
Definition: System.cpp:1140
oms::Model
Definition: Model.h:52
oms::ssd::ConnectorGeometry::setPosition
void setPosition(double x, double y)
Definition: ConnectorGeometry.h:54
oms::System::getParentSystem
System * getParentSystem() const
Definition: System.h:135
oms::System::getUniqueID
std::string getUniqueID() const
Definition: System.cpp:2902
Model.h
oms::System::loopsNeedUpdate
bool loopsNeedUpdate
Definition: System.h:259
oms::System::components
std::map< ComRef, Component * > components
Definition: System.h:246
oms::System::operator=
System & operator=(System const &copy)
not implemented
oms::ssp::Draft20180219::ssd::system
const char * system
Definition: Tags.cpp:57
oms::System::exportConnectors
std::unordered_map< ComRef, bool > exportConnectors
Definition: System.h:238
oms::scc_t
Strong connected components data type.
Definition: DirectedGraph.h:53
oms::System::setConnectionGeometry
oms_status_enu_t setConnectionGeometry(const ComRef &crefA, const ComRef &crefB, const oms::ssd::ConnectionGeometry *geometry)
Definition: System.cpp:1692
oms::System::terminate
virtual oms_status_enu_t terminate()=0
oms::ssp::Draft20180219::bus_connections
const char * bus_connections
Definition: Tags.cpp:39
oms::System::parentSystem
System * parentSystem
Definition: System.h:244
logError_BusAndConnectorNotSameSystem
#define logError_BusAndConnectorNotSameSystem(bus, connector)
Definition: Logging.h:122
oms::System::getSubSystems
std::map< ComRef, System * > & getSubSystems()
Definition: System.h:138
oms::ComRef
ComRef - component reference.
Definition: ComRef.h:46
oms::System::delete_
oms_status_enu_t delete_(const ComRef &cref)
Definition: System.cpp:1829
SystemWC.h
oms::System::getSolver
oms_solver_enu_t getSolver()
Definition: System.h:185
oms::Connector::getType
const oms_signal_type_enu_t getType() const
Definition: Connector.h:78
oms::System::getBusConnector
BusConnector * getBusConnector(const ComRef &cref)
Definition: System.cpp:1188
oms::ssp::Draft20180219::ssd::component
const char * component
Definition: Tags.cpp:45
oms::System::addSubSystem
oms_status_enu_t addSubSystem(const ComRef &cref, oms_system_enu_t type)
Definition: System.cpp:250
oms::Variable::getType
oms_signal_type_enu_t getType() const
Definition: Variable.h:86
logError_NotImplemented
#define logError_NotImplemented
Definition: Logging.h:141
oms::System::clock_id
unsigned int clock_id
Definition: System.h:227
oms::System::setReals
oms_status_enu_t setReals(const std::vector< ComRef > &crefs, std::vector< double > values)
Definition: System.cpp:2699
logError_AlreadyInScope
#define logError_AlreadyInScope(cref)
Definition: Logging.h:120
oms::System::getComponent
Component * getComponent(const ComRef &cref)
Definition: System.cpp:188
oms::System::removeSignalsFromResults
oms_status_enu_t removeSignalsFromResults(const char *regex)
Definition: System.cpp:2859
oms::System::getThreadPool
ctpl::thread_pool & getThreadPool()
Definition: System.cpp:2897
oms::System::replaceSubModel
oms_status_enu_t replaceSubModel(const ComRef &cref, const std::string &fmuPath, bool dryRun, int &warningCount)
Definition: System.cpp:328
oms::System::getValues
Values & getValues()
Definition: System.h:203
oms::SignalType_INT
@ SignalType_INT
Definition: ResultWriter.h:44
oms::Values::ssmFile
std::string ssmFile
mapped ssm files associated with ssv files;
Definition: Values.h:179
oms::System::getConnections
std::vector< Connection * > & getConnections()
Definition: System.h:140
oms::System::fmuGuid
std::map< std::string, filesystem::path > fmuGuid
Definition: System.h:204
oms::System::importFromSSD_SimulationInformation
virtual oms_status_enu_t importFromSSD_SimulationInformation(const pugi::xml_node &node, const std::string &sspVersion)=0
oms::System::getDirectionalDerivative
oms_status_enu_t getDirectionalDerivative(const ComRef &unknownCref, const ComRef &knownCref, double &value)
Definition: System.cpp:2369
oms::System::getComponents
std::map< ComRef, Component * > & getComponents()
Definition: System.h:139
SystemSC.h
oms::System::setReal
oms_status_enu_t setReal(const ComRef &cref, double value)
Definition: System.cpp:2554
logWarning_deprecated
#define logWarning_deprecated
Definition: Logging.h:157
oms::System::setGeometry
void setGeometry(const ssd::ElementGeometry &geometry)
Definition: System.h:100
oms::System::getTLMBusConnectors
TLMBusConnector ** getTLMBusConnectors()
Definition: System.h:114
oms::System::getAlgLoop
AlgLoop * getAlgLoop(const int systemNumber)
Definition: System.cpp:3038
Snapshot.h
oms::Element::setBusConnectors
void setBusConnectors(oms::BusConnector **newBusConnectors)
Definition: Element.cpp:84
oms::System::eventGraph
DirectedGraph eventGraph
filtered dependency graph, without parameters, solved at event mode
Definition: System.h:223
oms::System::time
double time
Definition: System.h:220
logError_InternalError
#define logError_InternalError
Definition: Logging.h:132
oms::System::reset
virtual oms_status_enu_t reset()=0
oms::SignalType_REAL
@ SignalType_REAL
Definition: ResultWriter.h:43
oms::ssp::Version1_0::ssv::parameters
const char * parameters
Definition: Tags.cpp:80
logError_ModelInWrongState
#define logError_ModelInWrongState(cref)
Definition: Logging.h:135
oms::ssp::Draft20180219::signals
const char * signals
Definition: Tags.cpp:37
oms::System::listUnconnectedConnectors
oms_status_enu_t listUnconnectedConnectors(char **contents) const
Definition: System.cpp:591
oms::System::getReals
oms_status_enu_t getReals(const std::vector< ComRef > &crefs, std::vector< double > &values)
Definition: System.cpp:2688
oms::System::getSystem
System * getSystem(const ComRef &cref)
Definition: System.cpp:173
oms::ComRef::isValidIdent
static bool isValidIdent(const std::string &ident)
Definition: ComRef.cpp:89
Tags.h
oms::SignalValue_t::realValue
double realValue
Definition: ResultWriter.h:50
oms::System::setState
oms_status_enu_t setState(const ComRef &cref)
Definition: System.cpp:2412
oms::Snapshot::getTemplateResourceNodeSSV
pugi::xml_node getTemplateResourceNodeSSV(const filesystem::path &filename, const std::string &cref)
Definition: Snapshot.cpp:198
oms::ssp::Version1_0::ssd::parameter_bindings
const char * parameter_bindings
Definition: Tags.cpp:74
DirectedGraph.h
oms::System::copyResources
bool copyResources()
Definition: System.cpp:1984
oms::System::getState
oms_status_enu_t getState(const ComRef &cref)
Definition: System.cpp:2388
oms::System::setTLMConnectionParameters
oms_status_enu_t setTLMConnectionParameters(const ComRef &crefA, const ComRef &crefB, const oms_tlm_connection_parameters_t *parameters)
Definition: System.cpp:1720
oms::System::exportToSSV
oms_status_enu_t exportToSSV(Snapshot &snapshot) const
Definition: System.cpp:776
oms::Element
Element.
Definition: Element.h:49
oms::Component::getVariable
virtual Variable * getVariable(const ComRef &cref)=0
logError_OnlyForSystemTLM
#define logError_OnlyForSystemTLM
Definition: Logging.h:145
oms::Element::getConnectors
oms::Connector ** getConnectors() const
Definition: Element.h:57
oms::ssp::Draft20180219::ssd::elements
const char * elements
Definition: Tags.cpp:54
oms::DirectedGraph
Definition: DirectedGraph.h:64
oms::SignalType_BOOL
@ SignalType_BOOL
Definition: ResultWriter.h:45
oms::System::getConnectors
Connector ** getConnectors()
Definition: System.h:104
oms::Values::allresources
std::map< std::string, Values > allresources
mapped resources either inline or ssv
Definition: Values.h:178
oms::Element::setTLMBusConnectors
void setTLMBusConnectors(oms::TLMBusConnector **newTLMBusConnectors)
Definition: Element.cpp:90
Clock.h
oms_canonical
filesystem::path oms_canonical(const filesystem::path &p)
Definition: OMSFileSystem.cpp:103
oms::DirectedGraph::getSortedConnections
const std::vector< scc_t > & getSortedConnections()
Definition: DirectedGraph.cpp:247
Element.h
oms::ssp::Draft20180219::ssd::connector
const char * connector
Definition: Tags.cpp:49
oms::SystemSC::NewSystem
static System * NewSystem(const oms::ComRef &cref, Model *parentModel, System *parentSystem)
Definition: SystemSC.cpp:93
oms::System::getType
oms_system_enu_t getType() const
Definition: System.h:91
oms::BusConnector::setGeometry
void setGeometry(const oms::ssd::ConnectorGeometry *newGeometry)
Definition: BusConnector.cpp:83
oms::System::values
Values values
system level connectors, parameters and their start values defined before instantiating the FMU and e...
Definition: System.h:248
oms::ssp::Version1_0::oms_annotations
const char * oms_annotations
Definition: Tags.cpp:66
oms::Variable::getCausality
oms_causality_enu_t getCausality() const
Definition: Variable.cpp:94
oms::System::getConnector
Connector * getConnector(const ComRef &cref)
Definition: System.cpp:1163
oms::Connector::NewConnector
static Connector * NewConnector(const pugi::xml_node &node, const std::string &sspVersion, const oms::ComRef &owner)
Definition: Connector.cpp:124
oms::System::forceLoopsToBeUpdated
void forceLoopsToBeUpdated()
Definition: System.h:197
oms::System::getInitialUnknownsGraph
const DirectedGraph & getInitialUnknownsGraph()
Definition: System.h:142
oms::System::getReal
oms_status_enu_t getReal(const ComRef &cref, double &value)
Definition: System.cpp:2241
oms::Flags::MaximumStepSize
static double MaximumStepSize()
Definition: Flags.h:79
oms::Values
Definition: Values.h:45
oms::System::addTLMBus
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:1486
oms::SignalValue_t
Definition: ResultWriter.h:48
oms::SystemWC::NewSystem
static System * NewSystem(const ComRef &cref, Model *parentModel, System *parentSystem)
Definition: SystemWC.cpp:54
oms::System::stepUntil
virtual oms_status_enu_t stepUntil(double stopTime)=0
oms::System::NewSystem
static System * NewSystem(const ComRef &cref, oms_system_enu_t type, Model *parentModel, System *parentSystem)
Definition: System.cpp:101
oms::System::initialStepSize
double initialStepSize
Definition: System.h:235
oms::Component
Definition: Component.h:59
AlgLoop.h
oms::ssd::ConnectionGeometry::importFromSSD
oms_status_enu_t importFromSSD(const pugi::xml_node &node)
Definition: ConnectionGeometry.cpp:169
oms::System::getFullCref
ComRef getFullCref() const
Definition: System.cpp:162
ConnectorGeometry.h
logWarning
#define logWarning(msg)
Definition: Logging.h:101
oms::System::deleteReferencesInSSD
oms_status_enu_t deleteReferencesInSSD(const ComRef &cref, const std::string &filename)
Definition: System.cpp:539
oms::System::registerSignalsForResultFile
virtual oms_status_enu_t registerSignalsForResultFile(ResultWriter &resultFile)
Definition: System.cpp:2735
oms::System::setFaultInjection
oms_status_enu_t setFaultInjection(const ComRef &signal, oms_fault_type_enu_t faultType, double faultValue)
Definition: System.cpp:2913
oms::BusConnector
BusConnector.
Definition: BusConnector.h:20
oms::System::rename
oms_status_enu_t rename(const ComRef &newCref)
rename the system itself
Definition: System.cpp:3106
logError_ConnectionExistsAlready
#define logError_ConnectionExistsAlready(crefA, crefB, system)
Definition: Logging.h:126
oms::ComRef::isEmpty
bool isEmpty() const
Definition: ComRef.cpp:99
oms::System::setVariableStepSize
oms_status_enu_t setVariableStepSize(double initialStepSize, double minimumStepSize, double maximumStepSize)
Definition: System.h:183
oms::ssd::ElementGeometry
Definition: ElementGeometry.h:45
oms::System::getCref
const ComRef & getCref() const
Definition: System.h:84
oms::System::getConnection
Connection * getConnection(const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:1788
oms::System::setBusGeometry
oms_status_enu_t setBusGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition: System.cpp:1750
oms::System::addConnectorToBus
oms_status_enu_t addConnectorToBus(const ComRef &busCref, const ComRef &connectorCref)
Definition: System.cpp:1519
oms::System::newResources
oms_status_enu_t newResources(const ComRef &cref, const std::string &ssvFilename, const std::string &ssmFilename="", bool externalresources=false)
Definition: System.cpp:469
ResultWriter.h
oms::Flags::WallTime
static bool WallTime()
Definition: Flags.h:76
oms::ssd::ConnectionGeometry
Definition: ConnectionGeometry.h:45
oms::Snapshot
Definition: Snapshot.h:46
oms::System::subelements
std::vector< oms_element_t * > subelements
last element is always NULL; don't free it
Definition: System.h:252
oms::Component::updateOrDeleteStartValueInReplacedComponent
virtual oms_status_enu_t updateOrDeleteStartValueInReplacedComponent(std::vector< std::string > &warningList)
Definition: Component.h:85
oms::System::deleteConnection
oms_status_enu_t deleteConnection(const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:1370
oms::Flags::InitialStepSize
static double InitialStepSize()
Definition: Flags.h:78
oms::System::getFilteredSignals
void getFilteredSignals(std::vector< Connector > &filteredSignals) const
Definition: System.cpp:2000
oms::Element::setSubElements
void setSubElements(oms_element_t **subelements)
Definition: Element.cpp:96
oms::Flags::AlgLoopSolver
static oms_alg_solver_enu_t AlgLoopSolver()
Definition: Flags.h:85
oms::System::initialize
virtual oms_status_enu_t initialize()=0
oms::System::supportsDirectionalDerivatives
bool supportsDirectionalDerivatives(int i, DirectedGraph &graph)
returns true if all FMUs support providesDirectionalDerivative
Definition: System.cpp:3066
Component.h
oms::ResultWriter
Definition: ResultWriter.h:68
oms::System::getTolerance
void getTolerance(double *absoluteTolerance, double *relativeTolerance) const
Definition: System.h:179
oms::Element::setGeometry
void setGeometry(const oms::ssd::ElementGeometry *newGeometry)
Definition: Element.cpp:67
oms::Values::modelDescriptionVariableUnits
std::map< ComRef, std::string > modelDescriptionVariableUnits
variable units read from modeldescription.xml
Definition: Values.h:158
oms::System::getStepSize
void getStepSize(double *initialStepSize, double *minimumStepSize, double *maximumStepSize) const
Definition: System.h:180
oms::System::updateAlgebraicLoops
oms_status_enu_t updateAlgebraicLoops(const std::vector< scc_t > &sortedConnections, DirectedGraph &graph)
Definition: System.cpp:3080
oms::System::addConnectorToTLMBus
oms_status_enu_t addConnectorToTLMBus(const ComRef &busCref, const ComRef &connectorCref, const std::string type)
Definition: System.cpp:1567
oms::System::relativeTolerance
double relativeTolerance
Definition: System.h:232
oms::System::getModel
Model & getModel()
Definition: System.cpp:1796
BusConnector.h
oms::System::getConnectorOwner
std::string getConnectorOwner(const ComRef &cref) const
Definition: System.cpp:1183
Connection.h
oms::ssp::Draft20180219::ssd::connectors
const char * connectors
Definition: Tags.cpp:51
oms::System::instantiate
virtual oms_status_enu_t instantiate()=0
oms::System::getOutputsGraph
const DirectedGraph & getOutputsGraph()
Definition: System.h:143
logError_WrongSchema
#define logError_WrongSchema(name)
Definition: Logging.h:156
oms::System::minimumStepSize
double minimumStepSize
Definition: System.h:233
logError_UnknownSignal
#define logError_UnknownSignal(cref)
Definition: Logging.h:153
oms::System::importFromSnapshot
oms_status_enu_t importFromSnapshot(const pugi::xml_node &node, const std::string &sspVersion, const Snapshot &snapshot, std::string variantName)
Definition: System.cpp:791
oms::System::addSubModel
oms_status_enu_t addSubModel(const ComRef &cref, const std::string &fmuPath)
Definition: System.cpp:282
oms::System::connectors
std::vector< Connector * > connectors
last element is always NULL
Definition: System.h:251
LOG_NO_TLM
#define LOG_NO_TLM()
Definition: TLMInterface.h:36
oms::System::validCref
bool validCref(const ComRef &cref)
Definition: System.cpp:225
oms::System::freeState
oms_status_enu_t freeState(const ComRef &cref)
Definition: System.cpp:2436
oms::ExternalModel
Definition: ExternalModel.h:49
oms::ssp::Draft20180219::ssd::annotations
const char * annotations
Definition: Tags.cpp:44
oms::System::exportDependencyGraphs
oms_status_enu_t exportDependencyGraphs(const std::string &pathInitialization, const std::string &pathEvent, const std::string &pathSimulation)
Definition: System.cpp:2015
oms::System::tlmbusconnectors
std::vector< TLMBusConnector * > tlmbusconnectors
Definition: System.h:255
oms::System::addAlgLoop
oms_status_enu_t addAlgLoop(scc_t SCC, const int algLoopNum, DirectedGraph &graph, bool supportsDirectionalDerivatives)
Definition: System.cpp:3049
oms::System::setString
oms_status_enu_t setString(const ComRef &cref, const std::string &value)
Definition: System.cpp:2604
oms::System::initializationGraph
DirectedGraph initializationGraph
dependency graph, with all connections, solved at initialization
Definition: System.h:222
oms::System::updateSignals
virtual oms_status_enu_t updateSignals(ResultWriter &resultFile)
Definition: System.cpp:2781
oms::System::importFromSSD_ConnectionGeometry
oms_status_enu_t importFromSSD_ConnectionGeometry(const pugi::xml_node &node, const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:2715
oms::System::getTime
double getTime() const
Definition: System.h:147
oms::System::isTopLevelSystem
bool isTopLevelSystem() const
Definition: System.h:174
oms::ComRef::hasSuffix
bool hasSuffix() const
returns true if the cref has a suffix, i.e. contains ":"
Definition: ComRef.cpp:104
oms::Snapshot::importResourceFile
oms_status_enu_t importResourceFile(const filesystem::path &filename, const filesystem::path &root)
Definition: Snapshot.cpp:83
oms::Connector::isParameter
bool isParameter() const
Definition: Connector.h:87
oms::System::getBoolean
oms_status_enu_t getBoolean(const ComRef &cref, bool &value)
Definition: System.cpp:2101
oms::System::subsystems
std::map< ComRef, System * > subsystems
Definition: System.h:245
oms::System::addConnection
oms_status_enu_t addConnection(const ComRef &crefA, const ComRef &crefB, bool suppressUnitConversion=false)
Definition: System.cpp:1249
oms::ssp::Draft20180219::ssd::connection_geometry
const char * connection_geometry
Definition: Tags.cpp:47
oms::System::exportToSSD
oms_status_enu_t exportToSSD(pugi::xml_node &node, Snapshot &snapshot, std::string variantName) const
Definition: System.cpp:667
oms::AlgLoop
Definition: AlgLoop.h:90
oms::TLMBusConnector::setDelay
void setDelay(double delay)
Definition: TLMBusConnector.h:123
oms::System
Definition: System.h:65
oms::ssp::Draft20180219::bus
const char * bus
Definition: Tags.cpp:36
oms::ssp::Version1_0::simulation_information
const char * simulation_information
Definition: Tags.cpp:62
oms::System::busconnectors
std::vector< BusConnector * > busconnectors
Definition: System.h:253
oms::System::absoluteTolerance
double absoluteTolerance
Definition: System.h:231
oms::System::importBusConnectorGeometry
oms_status_enu_t importBusConnectorGeometry(const pugi::xml_node &node)
Definition: System.cpp:3007
oms::System::resultFileMapping
std::unordered_map< unsigned int, unsigned int > resultFileMapping
Definition: System.h:237
oms::System::isConnected
bool isConnected(const ComRef &cref) const
Definition: System.cpp:1820
oms::System::isValidScalarVariable
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:437
logError_ConnectionNotInSystem
#define logError_ConnectionNotInSystem(crefA, crefB, system)
Definition: Logging.h:127
logError_BusNotInSystem
#define logError_BusNotInSystem(cref, system)
Definition: Logging.h:124
oms::Flags::MinimumStepSize
static double MinimumStepSize()
Definition: Flags.h:80
oms::ResultWriter::updateSignal
void updateSignal(unsigned int id, SignalValue_t value)
Definition: ResultWriter.cpp:120
oms::System::getMaximumStepSize
double getMaximumStepSize()
Definition: System.h:184
oms::System::deleteConnectorFromTLMBus
oms_status_enu_t deleteConnectorFromTLMBus(const ComRef &busCref, const ComRef &connectorCref)
Definition: System.cpp:1606
oms::ssd::ElementGeometry::importFromSSD
oms_status_enu_t importFromSSD(const pugi::xml_node &node)
Definition: ElementGeometry.cpp:166
oms::ssd::ConnectorGeometry
Definition: ConnectorGeometry.h:45
logError
#define logError(msg)
Definition: Logging.h:102
logError_NotForTlmSystem
#define logError_NotForTlmSystem
Definition: Logging.h:140
oms::System::importTLMBus
oms_status_enu_t importTLMBus(const pugi::xml_node &node, Component *component)
Definition: System.cpp:2931
oms::Element::setConnectors
void setConnectors(oms::Connector **newConnectors)
Definition: Element.cpp:79
oms::System::renameConnections
oms_status_enu_t renameConnections(const ComRef &cref, const ComRef &newCref)
Definition: System.cpp:3171
oms::System::maximumStepSize
double maximumStepSize
Definition: System.h:234
oms::Values::importFromSnapshot
oms_status_enu_t importFromSnapshot(const pugi::xml_node &node, const std::string &sspVersion, const Snapshot &snapshot, std::string variantName)
Definition: Values.cpp:858
oms::System::addSignalsToResults
oms_status_enu_t addSignalsToResults(const char *regex)
Definition: System.cpp:2826
oms::System::deleteConnectorFromBus
oms_status_enu_t deleteConnectorFromBus(const ComRef &busCref, const ComRef &connectorCref)
Definition: System.cpp:1543
oms::ssp::Version1_0::ssc::annotation
const char * annotation
Definition: Tags.cpp:102
oms::ssp::Draft20180219::ssd::connections
const char * connections
Definition: Tags.cpp:48
oms::ResultWriter::addSignal
unsigned int addSignal(const ComRef &name, const std::string &description, SignalType_t type)
Definition: ResultWriter.cpp:50
oms::System::element
Element element
Definition: System.h:250
oms::ExternalModel::NewComponent
static ExternalModel * NewComponent(const oms::ComRef &cref, System *parentSystem, const std::string &path, const std::string &startscript)
Definition: ExternalModel.cpp:52
oms::System::addTLMConnection
oms_status_enu_t addTLMConnection(const ComRef &crefA, const ComRef &crefB, double delay, double alpha, double linearimpedance, double angularimpedance)
Definition: System.cpp:1403
ComponentFMUCS.h
oms::SignalValue_t::intValue
int intValue
Definition: ResultWriter.h:51
oms::System::deleteAllConectionsTo
oms_status_enu_t deleteAllConectionsTo(const ComRef &cref)
Definition: System.cpp:1803
oms::System::getInteger
oms_status_enu_t getInteger(const ComRef &cref, int &value)
Definition: System.cpp:2171
oms::System::solverMethod
oms_solver_enu_t solverMethod
Definition: System.h:229
oms::ComponentFMUME::NewComponent
static Component * NewComponent(const oms::ComRef &cref, System *parentSystem, const std::string &fmuPath, std::string replaceComponent="")
Definition: ComponentFMUME.cpp:63
oms::SystemTLM::NewSystem
static System * NewSystem(const oms::ComRef &cref, Model *parentModel, System *parentSystem)
Definition: SystemTLM.cpp:63
oms::TLMBusConnector::setGeometry
void setGeometry(const oms::ssd::ConnectorGeometry *newGeometry)
Definition: TLMBusConnector.cpp:124
oms::System::deleteResourcesInSSP
oms_status_enu_t deleteResourcesInSSP(const std::string &filename)
Definition: System.cpp:563
oms::ComponentTable::NewComponent
static Component * NewComponent(const oms::ComRef &cref, System *parentSystem, const std::string &path)
Definition: ComponentTable.cpp:57
ComponentTable.h
OMSString.h
oms::ComRef::pop_front
ComRef pop_front()
returns the first part of the ComRef and removed it from the current object
Definition: ComRef.cpp:184
oms::Connection::isValidUnits
static bool isValidUnits(const ComRef &crefA, const ComRef &crefB, const Connector &conA, const Connector &conB)
Definition: Connection.cpp:246
oms::System::parentModel
Model * parentModel
Definition: System.h:243
oms::Variable
Definition: Variable.h:45
logError_TlmBusNotInSystem
#define logError_TlmBusNotInSystem(cref, system)
Definition: Logging.h:152
oms::System::clock
Clock clock
Definition: System.h:226
Flags.h
oms::Connector
Connector.
Definition: Connector.h:49
oms::ComponentFMUCS::NewComponent
static Component * NewComponent(const ComRef &cref, System *parentSystem, const std::string &fmuPath, std::string replaceComponent="")
Definition: ComponentFMUCS.cpp:65
oms::System::setTolerance
oms_status_enu_t setTolerance(double absoluteTolerance, double relativeTolerance)
Definition: System.h:181
oms::TLMBusConnector
TLMBusConnector.
Definition: TLMBusConnector.h:96
oms::System::updateDependencyGraphs
oms_status_enu_t updateDependencyGraphs()
Definition: System.cpp:2025
oms::System::exportToSSD_SimulationInformation
virtual oms_status_enu_t exportToSSD_SimulationInformation(pugi::xml_node &node) const =0
oms::System::getString
oms_status_enu_t getString(const ComRef &cref, std::string &value)
Definition: System.cpp:2317
oms::System::useThreadPool
bool useThreadPool()
Definition: System.cpp:2892
OMSFileSystem.h
oms::System::getVariable
Variable * getVariable(const ComRef &cref)
Definition: System.cpp:204
oms::System::simulationGraph
DirectedGraph simulationGraph
filtered dependency graph, with connections of type Real, solved at continuous time mode;
Definition: System.h:224
logError_InvalidIdent
#define logError_InvalidIdent(cref)
Definition: Logging.h:134
oms::System::algLoops
std::vector< AlgLoop > algLoops
vector of algebraic loop objects
Definition: System.h:260
oms::ssp::Draft20180219::signal
const char * signal
Definition: Tags.cpp:38
Variable.h
oms::System::System
System(const ComRef &cref, oms_system_enu_t type, Model *parentModel, System *parentSystem, oms_solver_enu_t solverMethod)
Definition: System.cpp:50
oms::System::addBus
oms_status_enu_t addBus(const ComRef &cref)
Definition: System.cpp:1459
oms::Connection
**
Definition: Connection.h:47
oms::Connection::isValid
static bool isValid(const ComRef &crefA, const ComRef &crefB, const Connector &conA, const Connector &conB)
Checks a connection based on SSP-1.0 connection table.
Definition: Connection.cpp:212
oms::Component::setValuesResources
virtual oms_status_enu_t setValuesResources(Values &values)
Definition: Component.h:84
oms::System::cref
ComRef cref
Definition: System.h:241
oms::Values::parameterResources
std::vector< Values > parameterResources
list of parameter resources provided inline or .ssv files
Definition: Values.h:177
oms::System::type
oms_system_enu_t type
Definition: System.h:242
oms::System::setTLMBusGeometry
oms_status_enu_t setTLMBusGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition: System.cpp:1767
logError_ConnectorNotInSystem
#define logError_ConnectorNotInSystem(cref, system)
Definition: Logging.h:129
oms::System::addExternalModel
oms_status_enu_t addExternalModel(const ComRef &cref, std::string path, std::string startscript)
Definition: System.cpp:1637
oms::ssp::Draft20180219::ssd::connector_geometry
const char * connector_geometry
Definition: Tags.cpp:50
logError_NotForScSystem
#define logError_NotForScSystem
Definition: Logging.h:139
ComponentFMUME.h
oms::ssp::Draft20180219::bus_connection
const char * bus_connection
Definition: Tags.cpp:40
oms::ssp::Draft20180219::external_model
const char * external_model
Definition: Tags.cpp:41
oms::System::solveAlgLoop
oms_status_enu_t solveAlgLoop(DirectedGraph &graph, int loopNumber)
Definition: System.cpp:3101
oms::System::doStep
virtual oms_status_enu_t doStep()=0
Values.h
oms::SignalValue_t::boolValue
bool boolValue
Definition: ResultWriter.h:52
oms::System::renameConnectors
oms_status_enu_t renameConnectors()
Definition: System.cpp:3181
oms::System::getTLMBusConnector
TLMBusConnector * getTLMBusConnector(const ComRef &cref)
Definition: System.cpp:1210
oms::System::setUnit
oms_status_enu_t setUnit(const ComRef &cref, const std::string &value)
Definition: System.cpp:2650
oms::System::getAllResources
void getAllResources(std::vector< std::string > &resources) const
Definition: System.cpp:1991
oms::ssp::Draft20180219::ssd::annotation
const char * annotation
Definition: Tags.cpp:43
oms::ssp::Draft20180219::ssd::element_geometry
const char * element_geometry
Definition: Tags.cpp:53
oms::mallocAndCopyString
char * mallocAndCopyString(const char *source)
Definition: OMSString.cpp:67
oms::System::getElement
Element * getElement()
Definition: System.h:89
oms::System::setSolver
virtual oms_status_enu_t setSolver(oms_solver_enu_t solver)
Definition: System.h:74
oms::System::setConnectorGeometry
oms_status_enu_t setConnectorGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition: System.cpp:1661