Skip to content

Commit 287953c

Browse files
authored
add prototype for FMI-3.0 ModelExchange (#1523)
* fix FMI-3.0 ME call sequence * add new SystemSC3 for FMI-3.0 Model exchange * check eventindicator after initialization for fmi3-me * use component base class for SC systems * integrate fmi2 and fmi3 with single SC-system
1 parent 9acb585 commit 287953c

30 files changed

Lines changed: 4017 additions & 85 deletions

include/OMSimulator/Types.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,14 @@ typedef enum {
9494
typedef enum {
9595
oms_system_none,
9696
oms_system_wc, ///< Weakly Coupled System
97-
oms_system_sc ///< Strongly Coupled System
97+
oms_system_sc, ///< Strongly Coupled System for FMU2 and FMU3
98+
oms_system_sc3 ///< Strongly Coupled System for only FMU3
9899
} oms_system_enu_t;
99100

100101
typedef enum {
101102
oms_component_none,
102103
oms_component_fmu, ///< FMU
103-
oms_component_fmu3, ///< FMU3
104+
oms_component_fmu3, ///< FMU3
104105
oms_component_table, ///< lookup table
105106
oms_component_external ///< external model
106107
} oms_component_enu_t;

src/OMSimulatorLib/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ set(OMSIMULATORLIB_SOURCES
2727
Component.cpp
2828
ComponentFMU3CS.cpp
2929
ComponentFMUCS.cpp
30+
ComponentFMU3ME.cpp
3031
ComponentFMUME.cpp
3132
ComponentTable.cpp
3233
ComRef.cpp
@@ -58,6 +59,7 @@ set(OMSIMULATORLIB_SOURCES
5859
ssd/Tags.cpp
5960
System.cpp
6061
SystemSC.cpp
62+
SystemSC3.cpp
6163
SystemWC.cpp
6264
Values.cpp
6365
Variable.cpp)

src/OMSimulatorLib/Component.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,29 @@ namespace oms
107107
virtual oms_status_enu_t addResources(std::string& filename) { return logError_NotImplemented; }
108108
virtual oms_status_enu_t deleteReferencesInSSD(const std::string& filename) {return logError_NotImplemented;}
109109
virtual oms_status_enu_t deleteResourcesInSSP(const std::string& filename) {return logError_NotImplemented;}
110+
// common virtual functions for ME for fmi2 and fmi3
111+
virtual size_t getNumberOfContinuousStates() const {return logError_NotImplemented;}
112+
virtual size_t getNumberOfEventIndicators() const {return logError_NotImplemented;}
113+
virtual oms_status_enu_t getContinuousStates(double* states) {return logError_NotImplemented;}
114+
virtual oms_status_enu_t setContinuousStates(double* states) {return logError_NotImplemented;}
115+
virtual oms_status_enu_t getDerivatives(double* derivatives) {return logError_NotImplemented;}
116+
virtual oms_status_enu_t getNominalsOfContinuousStates(double* nominals) {return logError_NotImplemented;}
117+
virtual oms_status_enu_t getEventindicators(double* eventindicators) {return logError_NotImplemented;}
118+
virtual oms_status_enu_t getEventindicators(double* eventindicators, size_t size) {return logError_NotImplemented;}
119+
120+
virtual fmiHandle* getFMU() {return nullptr; }
121+
virtual fmi2EventInfo* getEventInfo() {return nullptr;}
122+
virtual oms_status_enu_t doEventIteration() {return logError_NotImplemented;}
123+
virtual oms_status_enu_t completedIntegratorStep(bool noSetFMUStatePriorToCurrentPoint, bool& enterEventMode, bool& terminateSimulation) {return logError_NotImplemented;}
124+
virtual oms_status_enu_t enterEventMode() {return logError_NotImplemented;}
125+
virtual oms_status_enu_t enterContinuousTimeMode() {return logError_NotImplemented;}
126+
127+
virtual bool getNewDiscreteStatesNeeded() {return logError_NotImplemented; }
128+
virtual bool getTerminateSimulation() {return logError_NotImplemented; }
129+
virtual bool getNominalsOfContinuousStatesChanged() {return logError_NotImplemented; }
130+
virtual bool getValuesOfContinuousStatesChanged() {return logError_NotImplemented; }
131+
virtual bool getNextEventTimeDefined() {return logError_NotImplemented; }
132+
virtual double getNextEventTime() { return logError_NotImplemented; }
110133

111134
const ComRef& getCref() const { return cref; }
112135
ComRef getFullCref() const;

0 commit comments

Comments
 (0)