32 #ifndef _OMS_SYSTEM_H_
33 #define _OMS_SYSTEM_H_
45 #include "OMSimulator/Types.h"
49 #include <pugixml.hpp>
50 #include <unordered_map>
70 virtual oms_status_enu_t
setSolver(oms_solver_enu_t solver) {
return oms_status_error;}
74 virtual oms_status_enu_t
reset() = 0;
75 virtual oms_status_enu_t
doStep() = 0;
76 virtual oms_status_enu_t
stepUntil(
double stopTime) = 0;
94 oms_status_enu_t
exportToSSD(pugi::xml_node& node,
Snapshot& snapshot, std::string variantName)
const;
96 oms_status_enu_t
importFromSnapshot(
const pugi::xml_node& node,
const std::string& sspVersion,
const Snapshot& snapshot, std::string variantName);
110 oms_status_enu_t
newResources(
const ComRef&
cref,
const std::string& ssvFilename,
const std::string& ssmFilename =
"",
bool externalresources =
false);
130 oms_status_enu_t
exportDependencyGraphs(
const std::string& pathInitialization,
const std::string& pathEvent,
const std::string& pathSimulation);
145 oms_status_enu_t
getReals(
const std::vector<ComRef> &crefs, std::vector<double> &
values);
146 oms_status_enu_t
setReals(
const std::vector<ComRef> &crefs, std::vector<double>
values);
190 std::map<std::string, filesystem::path>
fmuGuid;
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:47
void setGeometry(const oms::ssd::ElementGeometry *newGeometry)
Definition: Element.cpp:66
Definition: ResultWriter.h:69
Definition: Snapshot.h:47
Connection * getConnection(const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:1413
oms_status_enu_t setFixedStepSize(double stepSize)
Definition: System.h:168
std::vector< AlgLoop > algLoops
vector of algebraic loop objects
Definition: System.h:242
oms_status_enu_t solveAlgLoop(DirectedGraph &graph, int loopNumber)
Definition: System.cpp:2629
Model & getModel()
Definition: System.cpp:1421
Values & getValues()
Definition: System.h:189
oms_status_enu_t setExportName(const ComRef &cref, const std::string &exportName)
Definition: System.cpp:338
oms_status_enu_t setTolerance(double relativeTolerance)
Definition: System.h:167
double initialStepSize
Definition: System.h:219
std::map< std::string, filesystem::path > fmuGuid
Definition: System.h:190
DirectedGraph initializationGraph
dependency graph, with all connections, solved at initialization
Definition: System.h:207
oms_status_enu_t addSubModel(const ComRef &cref, const std::string &fmuPath)
Definition: System.cpp:284
virtual oms_status_enu_t setSolver(oms_solver_enu_t solver)
Definition: System.h:70
void getFilteredSignals(std::vector< Connector > &filteredSignals) const
Definition: System.cpp:1599
oms_status_enu_t setConnectorGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition: System.cpp:1338
oms_status_enu_t updateAlgebraicLoops(const std::vector< scc_t > &sortedConnections, DirectedGraph &graph)
Definition: System.cpp:2608
oms_status_enu_t getReals(const std::vector< ComRef > &crefs, std::vector< double > &values)
Definition: System.cpp:2287
virtual oms_status_enu_t reset()=0
System * getParentSystem() const
Definition: System.h:121
oms_status_enu_t delete_(const ComRef &cref)
Definition: System.cpp:1454
ComRef cref
Definition: System.h:225
System(System const ©)
not implemented
oms_status_enu_t deleteAllConectionsTo(const ComRef &cref)
Definition: System.cpp:1428
Variable * getVariable(const ComRef &cref)
Definition: System.cpp:211
oms_status_enu_t setRealInputDerivatives(const ComRef &cref, int order, double value)
Definition: System.cpp:2309
oms_status_enu_t freeState(const ComRef &cref)
Definition: System.cpp:2035
BusConnector * getBusConnector(const ComRef &cref)
Definition: System.cpp:1092
const DirectedGraph & getInitialUnknownsGraph()
Definition: System.h:128
System * getSystem(const ComRef &cref)
Definition: System.cpp:151
std::unordered_map< unsigned int, unsigned int > resultFileMapping
Definition: System.h:221
oms_status_enu_t renameConnectors()
Definition: System.cpp:2709
oms_status_enu_t setBusGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition: System.cpp:1396
oms_status_enu_t renameConnections(const ComRef &cref, const ComRef &newCref)
Definition: System.cpp:2699
oms_status_enu_t addSignalsToResults(const char *regex)
Definition: System.cpp:2439
std::vector< Connection * > connections
last element is always NULL
Definition: System.h:239
void getAllResources(std::vector< std::string > &resources) const
Definition: System.cpp:1590
std::string getFmiVersion(const std::string &path)
Definition: System.cpp:352
virtual oms_status_enu_t registerSignalsForResultFile(ResultWriter &resultFile)
Definition: System.cpp:2334
oms_status_enu_t getReal(const ComRef &cref, double &value)
Definition: System.cpp:1840
oms_status_enu_t removeSignalsFromResults(const char *regex)
Definition: System.cpp:2472
void getTolerance(double *relativeTolerance) const
Definition: System.h:165
Connector ** getConnectors()
Definition: System.h:101
oms_solver_enu_t solverMethod
Definition: System.h:214
oms_status_enu_t setBoolean(const ComRef &cref, bool value)
Definition: System.cpp:2059
oms_status_enu_t importFromSSD_ConnectionGeometry(const pugi::xml_node &node, const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:2314
std::map< ComRef, System * > & getSubSystems()
Definition: System.h:124
std::string getUniqueID() const
Definition: System.cpp:2515
Values values
system level connectors, parameters and their start values defined before instantiating the FMU and e...
Definition: System.h:233
Element * getElement()
Definition: System.h:85
oms_status_enu_t setInteger(const ComRef &cref, int value)
Definition: System.cpp:2106
System & operator=(System const ©)
not implemented
oms_status_enu_t importBusConnectorGeometry(const pugi::xml_node &node)
Definition: System.cpp:2548
oms_status_enu_t rename(const ComRef &newCref)
rename the system itself
Definition: System.cpp:2634
oms_status_enu_t exportToSSD(pugi::xml_node &node, Snapshot &snapshot, std::string variantName) const
Definition: System.cpp:699
unsigned int clock_id
Definition: System.h:212
oms_status_enu_t getString(const ComRef &cref, std::string &value)
Definition: System.cpp:1916
oms_status_enu_t deleteConnection(const ComRef &crefA, const ComRef &crefB)
Definition: System.cpp:1232
DirectedGraph simulationGraph
filtered dependency graph, with connections of type Real, solved at continuous time mode;
Definition: System.h:209
double maximumStepSize
Definition: System.h:218
oms_status_enu_t addConnection(const ComRef &crefA, const ComRef &crefB, bool suppressUnitConversion=false)
Definition: System.cpp:1127
bool isConnected(const ComRef &cref) const
Definition: System.cpp:1445
bool supportsDirectionalDerivatives(int i, DirectedGraph &graph)
returns true if all FMUs support providesDirectionalDerivative
Definition: System.cpp:2594
std::string exportName
export name for top system and subsystem-level connector, used in the result file
Definition: System.h:231
oms_status_enu_t setState(const ComRef &cref)
Definition: System.cpp:2011
std::map< ComRef, Component * > components
Definition: System.h:230
AlgLoop * getAlgLoop(const int systemNumber)
Definition: System.cpp:2566
oms_status_enu_t setReals(const std::vector< ComRef > &crefs, std::vector< double > values)
Definition: System.cpp:2298
virtual oms_status_enu_t instantiate()=0
std::map< ComRef, Component * > & getComponents()
Definition: System.h:125
oms_status_enu_t getDirectionalDerivative(const ComRef &unknownCref, const ComRef &knownCref, double &value)
Definition: System.cpp:1968
std::map< ComRef, System * > subsystems
Definition: System.h:229
const ComRef & getCref() const
Definition: System.h:80
oms_status_enu_t updateDependencyGraphs()
Definition: System.cpp:1624
oms_status_enu_t importFromSnapshot(const pugi::xml_node &node, const std::string &sspVersion, const Snapshot &snapshot, std::string variantName)
Definition: System.cpp:809
bool useThreadPool()
Definition: System.cpp:2505
oms_status_enu_t setString(const ComRef &cref, const std::string &value)
Definition: System.cpp:2203
oms_status_enu_t addBus(const ComRef &cref)
Definition: System.cpp:1265
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:475
oms_status_enu_t getVariableType(const ComRef &cref, oms_signal_type_enu_t &type)
Definition: System.cpp:183
virtual oms_status_enu_t updateSignals(ResultWriter &resultFile)
Definition: System.cpp:2394
double getTime() const
Definition: System.h:132
virtual oms_status_enu_t doStep()=0
bool isTopLevelSystem() const
Definition: System.h:160
double time
Definition: System.h:205
static System * NewSystem(const ComRef &cref, oms_system_enu_t type, Model *parentModel, System *parentSystem)
Definition: System.cpp:91
oms_status_enu_t setUnit(const ComRef &cref, const std::string &value)
Definition: System.cpp:2249
System * parentSystem
Definition: System.h:228
double relativeTolerance
Definition: System.h:216
Model * parentModel
Definition: System.h:227
oms_status_enu_t listUnconnectedConnectors(char **contents) const
Definition: System.cpp:629
oms_status_enu_t getState(const ComRef &cref)
Definition: System.cpp:1987
oms_system_enu_t type
Definition: System.h:226
System(const ComRef &cref, oms_system_enu_t type, Model *parentModel, System *parentSystem, oms_solver_enu_t solverMethod)
Definition: System.cpp:51
Connector * getConnector(const ComRef &cref)
Definition: System.cpp:1067
oms_solver_enu_t getSolver()
Definition: System.h:171
double minimumStepSize
Definition: System.h:217
oms_status_enu_t getInteger(const ComRef &cref, int &value)
Definition: System.cpp:1770
oms_status_enu_t setReal(const ComRef &cref, double value)
Definition: System.cpp:2153
Clock clock
Definition: System.h:211
virtual oms_status_enu_t initialize()=0
ctpl::thread_pool & getThreadPool()
Definition: System.cpp:2510
oms_status_enu_t getBoolean(const ComRef &cref, bool &value)
Definition: System.cpp:1700
std::string getConnectorOwner(const ComRef &cref) const
Definition: System.cpp:1087
void getStepSize(double *initialStepSize, double *minimumStepSize, double *maximumStepSize) const
Definition: System.h:166
bool validCref(const ComRef &cref)
Definition: System.cpp:232
double getMaximumStepSize()
Definition: System.h:170
oms_status_enu_t addConnectorToBus(const ComRef &busCref, const ComRef &connectorCref)
Definition: System.cpp:1290
oms_status_enu_t deleteReferencesInSSD(const ComRef &cref, const std::string &filename)
Definition: System.cpp:577
virtual oms_status_enu_t terminate()=0
std::vector< Connector * > connectors
last element is always NULL
Definition: System.h:236
oms_status_enu_t exportToSSV(Snapshot &snapshot) const
Definition: System.cpp:794
oms_status_enu_t addSubSystem(const ComRef &cref, oms_system_enu_t type)
Definition: System.cpp:252
oms_status_enu_t newResources(const ComRef &cref, const std::string &ssvFilename, const std::string &ssmFilename="", bool externalresources=false)
Definition: System.cpp:507
oms_status_enu_t replaceSubModel(const ComRef &cref, const std::string &fmuPath, bool dryRun, int &warningCount)
Definition: System.cpp:366
std::vector< oms_element_t * > subelements
last element is always NULL; don't free it
Definition: System.h:237
std::unordered_map< ComRef, bool > exportConnectors
Definition: System.h:222
Component * getComponent(const ComRef &cref)
Definition: System.cpp:166
void setGeometry(const ssd::ElementGeometry &geometry)
Definition: System.h:97
virtual ~System()
Definition: System.cpp:70
std::vector< BusConnector * > busconnectors
Definition: System.h:238
DirectedGraph eventGraph
filtered dependency graph, without parameters, solved at event mode
Definition: System.h:208
Element element
Definition: System.h:235
oms_status_enu_t setVariableStepSize(double initialStepSize, double minimumStepSize, double maximumStepSize)
Definition: System.h:169
virtual oms_status_enu_t stepUntil(double stopTime)=0
bool copyResources()
Definition: System.cpp:1583
oms_status_enu_t deleteConnectorFromBus(const ComRef &busCref, const ComRef &connectorCref)
Definition: System.cpp:1314
oms_status_enu_t addConnector(const ComRef &cref, oms_causality_enu_t causality, oms_signal_type_enu_t type)
Definition: System.cpp:1046
oms_status_enu_t importBusConnectorSignals(const pugi::xml_node &node)
Definition: System.cpp:2526
void forceLoopsToBeUpdated()
Definition: System.h:183
oms_status_enu_t deleteResourcesInSSP(const std::string &filename)
Definition: System.cpp:601
bool loopsNeedUpdate
Definition: System.h:241
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:1369
oms_system_enu_t getType() const
Definition: System.h:87
oms_status_enu_t exportDependencyGraphs(const std::string &pathInitialization, const std::string &pathEvent, const std::string &pathSimulation)
Definition: System.cpp:1614
std::vector< Connection * > & getConnections()
Definition: System.h:126
virtual oms_status_enu_t importFromSSD_SimulationInformation(const pugi::xml_node &node, const std::string &sspVersion)=0
ComRef getFullCref() const
Definition: System.cpp:140
oms_status_enu_t addAlgLoop(scc_t SCC, const int algLoopNum, DirectedGraph &graph, bool supportsDirectionalDerivatives)
Definition: System.cpp:2577
const DirectedGraph & getOutputsGraph()
Definition: System.h:129
Definition: Variable.h:46
Definition: ConnectionGeometry.h:46
Definition: ConnectorGeometry.h:46
Definition: ElementGeometry.h:46
const char * connection
Definition: Tags.cpp:44
Strong connected components data type.
Definition: DirectedGraph.h:54