49#include "OMSimulator/Types.h"
54#include <unordered_map>
58#include <dcp/log/OstreamLog.hpp>
80 virtual oms_status_enu_t
setSolver(oms_solver_enu_t solver) {
return oms_status_error;}
84 virtual oms_status_enu_t
reset() = 0;
85 virtual oms_status_enu_t
doStep() = 0;
86 virtual oms_status_enu_t
stepUntil(
double stopTime) = 0;
105 oms_status_enu_t
exportToSSD(pugi::xml_node& node,
Snapshot& snapshot, std::string variantName)
const;
107 oms_status_enu_t
importFromSnapshot(
const pugi::xml_node& node,
const std::string& sspVersion,
const Snapshot& snapshot, std::string variantName);
123 oms_status_enu_t
newResources(
const ComRef&
cref,
const std::string& ssvFilename,
const std::string& ssmFilename =
"",
bool externalresources =
false);
144 oms_status_enu_t
exportDependencyGraphs(
const std::string& pathInitialization,
const std::string& pathEvent,
const std::string& pathSimulation);
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);
204 std::map<std::string, filesystem::path>
fmuGuid;
212 void dcpSetTimeRes(
const uint32_t numerator,
const uint32_t denominator);
BusConnector.
Definition BusConnector.h:56
ComRef - component reference.
Definition ComRef.h:51
Definition Component.h:65
**
Definition Connection.h:52
Connector.
Definition Connector.h:54
Definition DirectedGraph.h:71
Element.
Definition Element.h:51
void setGeometry(const oms::ssd::ElementGeometry *newGeometry)
Definition Element.cpp:70
Definition ResultWriter.h:73
void dcpStop()
Definition System.cpp:2998
Connection * getConnection(const ComRef &crefA, const ComRef &crefB)
Definition System.cpp:1491
oms_status_enu_t setFixedStepSize(double stepSize)
Definition System.h:182
std::vector< AlgLoop > algLoops
vector of algebraic loop objects
Definition System.h:268
oms_status_enu_t solveAlgLoop(DirectedGraph &graph, int loopNumber)
Definition System.cpp:2707
Model & getModel()
Definition System.cpp:1499
oms_status_enu_t setExportName(const ComRef &cref, const std::string &exportName)
Definition System.cpp:356
oms_status_enu_t setTolerance(double relativeTolerance)
Definition System.h:181
double initialStepSize
Definition System.h:242
std::map< std::string, filesystem::path > fmuGuid
Definition System.h:204
DirectedGraph initializationGraph
dependency graph, with all connections, solved at initialization
Definition System.h:230
double dcpTimeStep
Definition System.h:275
oms_status_enu_t addSubModel(const ComRef &cref, const std::string &fmuPath)
Definition System.cpp:298
virtual oms_status_enu_t setSolver(oms_solver_enu_t solver)
Definition System.h:80
void getFilteredSignals(std::vector< Connector > &filteredSignals) const
Definition System.cpp:1677
oms_status_enu_t setConnectorGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition System.cpp:1358
oms_status_enu_t updateAlgebraicLoops(const std::vector< scc_t > &sortedConnections, DirectedGraph &graph)
Definition System.cpp:2686
oms_status_enu_t getReals(const std::vector< ComRef > &crefs, std::vector< double > &values)
Definition System.cpp:2368
virtual oms_status_enu_t reset()=0
oms_status_enu_t delete_(const ComRef &cref)
Definition System.cpp:1532
ComRef cref
Definition System.h:248
System(System const ©)
not implemented
oms_status_enu_t deleteAllConectionsTo(const ComRef &cref)
Definition System.cpp:1506
Variable * getVariable(const ComRef &cref)
Definition System.cpp:225
oms_status_enu_t setRealInputDerivatives(const ComRef &cref, int order, double value)
Definition System.cpp:2390
oms_status_enu_t freeState(const ComRef &cref)
Definition System.cpp:2116
BusConnector * getBusConnector(const ComRef &cref)
Definition System.cpp:1124
void dcpConfigure()
Definition System.cpp:2952
System * getSystem(const ComRef &cref)
Definition System.cpp:169
std::unordered_map< unsigned int, unsigned int > resultFileMapping
Definition System.h:244
oms_status_enu_t renameConnectors()
Definition System.cpp:2787
oms_status_enu_t setBusGeometry(const ComRef &cref, const oms::ssd::ConnectorGeometry *geometry)
Definition System.cpp:1474
oms_status_enu_t renameConnections(const ComRef &cref, const ComRef &newCref)
Definition System.cpp:2777
oms_status_enu_t addSignalsToResults(const char *regex)
Definition System.cpp:2517
std::vector< Connection * > connections
last element is always NULL
Definition System.h:262
void getAllResources(std::vector< std::string > &resources) const
Definition System.cpp:1668
std::string getFmiVersion(const std::string &path)
Definition System.cpp:384
virtual oms_status_enu_t registerSignalsForResultFile(ResultWriter &resultFile)
Definition System.cpp:2415
void startDcpSlaveThread()
Definition System.cpp:2940
oms_status_enu_t getReal(const ComRef &cref, double &value)
Definition System.cpp:1920
std::map< oms::ComRef, double * > dcpOutputs
Definition System.h:277
oms_status_enu_t removeSignalsFromResults(const char *regex)
Definition System.cpp:2550
void getTolerance(double *relativeTolerance) const
Definition System.h:179
oms_solver_enu_t solverMethod
Definition System.h:237
double dcpTime
Definition System.h:274
oms_status_enu_t setBoolean(const ComRef &cref, bool value)
Definition System.cpp:2140
oms_status_enu_t importFromSSD_ConnectionGeometry(const pugi::xml_node &node, const ComRef &crefA, const ComRef &crefB)
Definition System.cpp:2395
std::string getUniqueID() const
Definition System.cpp:2593
Values values
system level connectors, parameters and their start values defined before instantiating the FMU and e...
Definition System.h:256
oms_status_enu_t setInteger(const ComRef &cref, int value)
Definition System.cpp:2187
oms_status_enu_t importBusConnectorGeometry(const pugi::xml_node &node)
Definition System.cpp:2626
oms_status_enu_t setConnectorNumericType(const ComRef &cref, const oms_signal_numeric_type_enu_t numericType)
Definition System.cpp:1389
UdpDriver * dcpDriver
Definition System.h:272
const DirectedGraph & getOutputsGraph()
Definition System.h:143
oms_status_enu_t rename(const ComRef &newCref)
rename the system itself
Definition System.cpp:2712
oms_status_enu_t exportToSSD(pugi::xml_node &node, Snapshot &snapshot, std::string variantName) const
Definition System.cpp:731
unsigned int clock_id
Definition System.h:235
oms_status_enu_t getString(const ComRef &cref, std::string &value)
Definition System.cpp:1997
oms_status_enu_t deleteConnection(const ComRef &crefA, const ComRef &crefB)
Definition System.cpp:1252
DirectedGraph simulationGraph
filtered dependency graph, with connections of type Real, solved at continuous time mode;
Definition System.h:232
double maximumStepSize
Definition System.h:241
oms_status_enu_t addConnection(const ComRef &crefA, const ComRef &crefB, bool suppressUnitConversion=false)
Definition System.cpp:1159
bool isConnected(const ComRef &cref) const
Definition System.cpp:1523
bool supportsDirectionalDerivatives(int i, DirectedGraph &graph)
returns true if all FMUs support providesDirectionalDerivative
Definition System.cpp:2672
std::string exportName
export name for top system and subsystem-level connector, used in the result file
Definition System.h:254
oms_status_enu_t setState(const ComRef &cref)
Definition System.cpp:2092
const ComRef & getCref() const
Definition System.h:90
std::map< ComRef, Component * > components
Definition System.h:253
AlgLoop * getAlgLoop(const int systemNumber)
Definition System.cpp:2644
std::thread dcpThread
Definition System.h:264
oms_status_enu_t setReals(const std::vector< ComRef > &crefs, std::vector< double > values)
Definition System.cpp:2379
virtual oms_status_enu_t instantiate()=0
oms_status_enu_t getDirectionalDerivative(const ComRef &unknownCref, const ComRef &knownCref, double &value)
Definition System.cpp:2049
std::map< ComRef, System * > subsystems
Definition System.h:252
oms_status_enu_t updateDependencyGraphs()
Definition System.cpp:1702
oms_status_enu_t importFromSnapshot(const pugi::xml_node &node, const std::string &sspVersion, const Snapshot &snapshot, std::string variantName)
Definition System.cpp:841
bool useThreadPool()
Definition System.cpp:2583
oms_status_enu_t setAliasName(const ComRef &cref, const std::string &aliasName)
Definition System.cpp:370
oms_status_enu_t setString(const ComRef &cref, const std::string &value)
Definition System.cpp:2284
void dcpDoStep(uint64_t steps)
Definition System.cpp:2967
oms_status_enu_t addBus(const ComRef &cref)
Definition System.cpp:1285
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:507
std::map< ComRef, Component * > & getComponents()
Definition System.h:138
oms_status_enu_t getVariableType(const ComRef &cref, oms_signal_type_enu_t &type)
Definition System.cpp:201
virtual oms_status_enu_t updateSignals(ResultWriter &resultFile)
Definition System.cpp:2472
double getTime() const
Definition System.h:146
std::map< oms::ComRef, valueReference_t > dcpOutputValueReferences
Definition System.h:279
System * getParentSystem() const
Definition System.h:134
virtual oms_status_enu_t doStep()=0
void dcpInitialize()
Definition System.cpp:2962
bool isTopLevelSystem() const
Definition System.h:174
oms_status_enu_t startDcpSlave()
Definition System.cpp:2925
double time
Definition System.h:228
std::map< oms::ComRef, valueReference_t > dcpInputValueReferences
Definition System.h:278
Connector ** getConnectors()
Definition System.h:112
static System * NewSystem(const ComRef &cref, oms_system_enu_t type, Model *parentModel, System *parentSystem)
Definition System.cpp:109
std::vector< Connection * > dcpConnections
dummy connections to be used for setting up a DCP simulation
Definition System.h:263
oms_status_enu_t setUnit(const ComRef &cref, const std::string &value)
Definition System.cpp:2330
System * parentSystem
Definition System.h:251
double relativeTolerance
Definition System.h:239
Model * parentModel
Definition System.h:250
oms_status_enu_t listUnconnectedConnectors(char **contents) const
Definition System.cpp:661
oms_status_enu_t getState(const ComRef &cref)
Definition System.cpp:2068
oms_system_enu_t type
Definition System.h:249
Connector * getConnector(const ComRef &cref)
Definition System.cpp:1099
oms_solver_enu_t getSolver()
Definition System.h:185
double minimumStepSize
Definition System.h:240
oms_status_enu_t getInteger(const ComRef &cref, int &value)
Definition System.cpp:1850
oms_status_enu_t setReal(const ComRef &cref, double value)
Definition System.cpp:2234
Clock clock
Definition System.h:234
oms_status_enu_t configureDcpSlave(port_t port)
Definition System.cpp:2803
const DirectedGraph & getInitialUnknownsGraph()
Definition System.h:142
virtual oms_status_enu_t initialize()=0
ctpl::thread_pool & getThreadPool()
Definition System.cpp:2588
oms_status_enu_t getBoolean(const ComRef &cref, bool &value)
Definition System.cpp:1780
std::string getConnectorOwner(const ComRef &cref) const
Definition System.cpp:1119
void getStepSize(double *initialStepSize, double *minimumStepSize, double *maximumStepSize) const
Definition System.h:180
bool validCref(const ComRef &cref)
Definition System.cpp:246
oms_status_enu_t setConnectionLinearTransformation(const oms::ComRef &crefA, const oms::ComRef &crefB, double factor, double offset)
Definition System.cpp:1447
double getMaximumStepSize()
Definition System.h:184
oms_status_enu_t addConnectorToBus(const ComRef &busCref, const ComRef &connectorCref)
Definition System.cpp:1310
oms_status_enu_t deleteReferencesInSSD(const ComRef &cref, const std::string &filename)
Definition System.cpp:609
virtual oms_status_enu_t terminate()=0
std::vector< Connector * > connectors
last element is always NULL
Definition System.h:259
Element * getElement()
Definition System.h:95
oms_status_enu_t exportToSSV(Snapshot &snapshot) const
Definition System.cpp:826
oms_status_enu_t addSubSystem(const ComRef &cref, oms_system_enu_t type)
Definition System.cpp:266
oms_status_enu_t newResources(const ComRef &cref, const std::string &ssvFilename, const std::string &ssmFilename="", bool externalresources=false)
Definition System.cpp:539
oms_status_enu_t replaceSubModel(const ComRef &cref, const std::string &fmuPath, bool dryRun, int &warningCount)
Definition System.cpp:398
std::vector< oms_element_t * > subelements
last element is always NULL; don't free it
Definition System.h:260
std::unordered_map< ComRef, bool > exportConnectors
Definition System.h:245
Component * getComponent(const ComRef &cref)
Definition System.cpp:184
void setGeometry(const ssd::ElementGeometry &geometry)
Definition System.h:108
virtual ~System()
Definition System.cpp:85
OstreamLog dcpLog
Definition System.h:273
std::vector< BusConnector * > busconnectors
Definition System.h:261
std::vector< Connection * > & getDcpConnections()
Definition System.h:140
DirectedGraph eventGraph
filtered dependency graph, without parameters, solved at event mode
Definition System.h:231
Element element
Definition System.h:258
oms_status_enu_t setVariableStepSize(double initialStepSize, double minimumStepSize, double maximumStepSize)
Definition System.h:183
DcpManagerSlave * dcpManager
Definition System.h:271
virtual oms_status_enu_t stepUntil(double stopTime)=0
bool copyResources()
Definition System.cpp:1661
std::map< oms::ComRef, double * > dcpInputs
Definition System.h:276
oms_status_enu_t deleteConnectorFromBus(const ComRef &busCref, const ComRef &connectorCref)
Definition System.cpp:1334
oms_status_enu_t addConnector(const ComRef &cref, oms_causality_enu_t causality, oms_signal_type_enu_t type)
Definition System.cpp:1078
System & operator=(System const ©)
not implemented
oms_status_enu_t importBusConnectorSignals(const pugi::xml_node &node)
Definition System.cpp:2604
void forceLoopsToBeUpdated()
Definition System.h:197
oms_status_enu_t deleteResourcesInSSP(const std::string &filename)
Definition System.cpp:633
void dcpSetTimeRes(const uint32_t numerator, const uint32_t denominator)
Definition System.cpp:2992
bool loopsNeedUpdate
Definition System.h:267
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:1420
oms_status_enu_t dcpSlaveThreadReturnValue
Definition System.h:280
oms_system_enu_t getType() const
Definition System.h:97
oms_status_enu_t exportDependencyGraphs(const std::string &pathInitialization, const std::string &pathEvent, const std::string &pathSimulation)
Definition System.cpp:1692
std::vector< Connection * > & getConnections()
Definition System.h:139
virtual oms_status_enu_t importFromSSD_SimulationInformation(const pugi::xml_node &node, const std::string &sspVersion)=0
std::map< ComRef, System * > & getSubSystems()
Definition System.h:137
ComRef getFullCref() const
Definition System.cpp:158
Values & getValues()
Definition System.h:203
oms_status_enu_t addAlgLoop(scc_t SCC, const int algLoopNum, DirectedGraph &graph, bool supportsDirectionalDerivatives)
Definition System.cpp:2655
Definition ConnectionGeometry.h:50
Definition ConnectorGeometry.h:50
Definition ElementGeometry.h:50
Strong connected components data type.
Definition DirectedGraph.h:59