FMI Library: part of JModelica.org
fmu2_model_me.c
Go to the documentation of this file.
1 /*
2 Copyright (C) 2012 Modelon AB
3 
4 This program is free software: you can redistribute it and/or modify
5 it under the terms of the BSD style license.
6 
7 the Free Software Foundation, version 3 of the License.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 FMILIB_License.txt file for more details.
13 
14 You should have received a copy of the FMILIB_License.txt file
15 along with this program. If not, contact Modelon AB <http://www.modelon.com>.
16 */
17 
18 #include <string.h>
19 
20 #if __GNUC__ >= 4
21  #pragma GCC visibility push(default)
22 #endif
23 /* Standard FMI 2.0 ME and CS types */
24 #include <FMI2/fmi2TypesPlatform.h>
25 #include <FMI2/fmi2Functions.h>
26 
27 #include <fmu_dummy/fmu2_model.h>
28 #include "config_test.h"
29 
30 #include "fmu2_model.c"
31 
32 /* #define MODEL_IDENTIFIER FMU_DUMMY_ME_MODEL_IDENTIFIER*/
33 
34 /* FMI 2.0 Common Functions */
36 {
37  return fmi_get_version();
38 }
39 
40 FMI2_Export fmi2Status fmi2SetDebugLogging(fmi2Component c, fmi2Boolean loggingOn, size_t n , const fmi2String cat[])
41 {
42  return fmi_set_debug_logging(c, loggingOn);
43 }
44 
46  fmi2Type fmuType, fmi2String GUID, fmi2String location,
47  const fmi2CallbackFunctions* functions, fmi2Boolean visible,
48  fmi2Boolean loggingOn)
49 {
50  return fmi_instantiate(instanceName, fmuType, GUID, location, functions,
51  visible, loggingOn);
52 }
53 
55 {
57 }
58 
60  fmi2Boolean toleranceDefined, fmi2Real tolerance,
61  fmi2Real startTime, fmi2Boolean stopTimeDefined,
62  fmi2Real stopTime)
63 {
64  return fmi_setup_experiment(c, toleranceDefined, tolerance, startTime,
65  stopTimeDefined, stopTime);
66 }
67 
69 {
71 }
72 
74 {
76 }
77 
78 FMI2_Export fmi2Status fmi2GetReal(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Real value[])
79 {
80  return fmi_get_real(c, vr, nvr, value);
81 }
82 
83 FMI2_Export fmi2Status fmi2GetInteger(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Integer value[])
84 {
85  return fmi_get_integer(c, vr, nvr, value);
86 }
87 
88 FMI2_Export fmi2Status fmi2GetBoolean(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Boolean value[])
89 {
90  return fmi_get_boolean(c, vr, nvr, value);
91 }
92 
93 FMI2_Export fmi2Status fmi2GetString(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2String value[])
94 {
95  return fmi_get_string(c, vr, nvr, value);
96 }
97 
98 FMI2_Export fmi2Status fmi2SetReal(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Real value[])
99 {
100  return fmi_set_real(c, vr, nvr, value);
101 }
102 
103 FMI2_Export fmi2Status fmi2SetInteger(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Integer value[])
104 {
105  return fmi_set_integer(c, vr, nvr, value);
106 }
107 
108 FMI2_Export fmi2Status fmi2SetBoolean(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Boolean value[])
109 {
110  return fmi_set_boolean(c, vr, nvr, value);
111 }
112 
113 FMI2_Export fmi2Status fmi2SetString(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2String value[])
114 {
115  return fmi_set_string(c, vr, nvr, value);
116 }
117 
118 /* FMI 2.0 ME Functions */
120 {
122 }
123 
125 {
126  return fmi_enter_event_mode(c);
127 }
128 
129 FMI2_Export fmi2Status fmi2NewDiscreteStates(fmi2Component c, fmi2EventInfo* eventInfo)
130 {
131  return fmi_new_discrete_states(c, eventInfo);
132 }
133 
135 {
137 }
138 
140 {
141  return fmi_set_time(c, fmitime);
142 }
143 
144 FMI2_Export fmi2Status fmi2SetContinuousStates(fmi2Component c, const fmi2Real x[], size_t nx)
145 {
146  return fmi_set_continuous_states(c, x, nx);
147 }
148 
150  fmi2Boolean noSetFMUStatePriorToCurrentPoint,
151  fmi2Boolean* enterEventMode, fmi2Boolean* terminateSimulation)
152 {
153  return fmi_completed_integrator_step(c, noSetFMUStatePriorToCurrentPoint,
154  enterEventMode, terminateSimulation);
155 }
156 
157 FMI2_Export fmi2Status fmi2GetDerivatives(fmi2Component c, fmi2Real derivatives[] , size_t nx)
158 {
159  return fmi_get_derivatives(c, derivatives, nx);
160 }
161 
162 FMI2_Export fmi2Status fmi2GetEventIndicators(fmi2Component c, fmi2Real eventIndicators[], size_t ni)
163 {
164  return fmi_get_event_indicators(c, eventIndicators, ni);
165 }
166 
168 {
169  return fmi_get_continuous_states(c, states, nx);
170 }
171 
173 {
174  return fmi_get_nominals_of_continuousstates(c, x_nominal, nx);
175 }
176 
178 {
179  return fmi_terminate(c);
180 }
181 
183 {
184  return fmi_reset(c);
185 }
#define FMI2_Export
Definition: fmu2_model.h:24
FMI2_Export const char * fmi2GetTypesPlatform()
fmiStatus fmi_set_debug_logging(fmiComponent c, fmiBoolean loggingOn)
Definition: fmu1_model.c:82
size_t jm_callbacks * c
#define fmi2Boolean
Definition: fmi2_types.h:39
fmi2Status fmi_enter_continuous_time_mode(fmi2Component c)
Definition: fmu2_model.c:377
FMI2_Export void fmi2FreeInstance(fmi2Component c)
Definition: fmu2_model_me.c:54
fmiStatus fmi_get_string(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiString value[])
Definition: fmu1_model.c:141
fmi2Status fmi_enter_event_mode(fmi2Component c)
Definition: fmu2_model.c:359
fmiStatus fmi_set_boolean(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiBoolean value[])
Definition: fmu1_model.c:189
fmiStatus fmi_completed_integrator_step(fmiComponent c, fmiBoolean *callEventUpdate)
Definition: fmu1_model.c:338
fmiStatus fmi_get_real(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiReal value[])
Definition: fmu1_model.c:93
void fmi_free_instance(fmi2Component c)
Definition: fmu2_model.c:312
FMI2_Export fmi2Status fmi2GetBoolean(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Boolean value[])
Definition: fmu2_model_me.c:88
FMI2_Export fmi2Status fmi2GetReal(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Real value[])
Definition: fmu2_model_me.c:78
FMI2_Export fmi2Status fmi2GetInteger(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Integer value[])
Definition: fmu2_model_me.c:83
fmiStatus fmi_set_string(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiString value[])
Definition: fmu1_model.c:203
fmiStatus fmi_get_event_indicators(fmiComponent c, fmiReal eventIndicators[], size_t ni)
Definition: fmu1_model.c:391
fmiStatus fmi_get_derivatives(fmiComponent c, fmiReal derivatives[], size_t nx)
Definition: fmu1_model.c:374
FMI2_Export fmi2Status fmi2GetDerivatives(fmi2Component c, fmi2Real derivatives[], size_t nx)
fmiStatus fmi_get_continuous_states(fmiComponent c, fmiReal states[], size_t nx)
Definition: fmu1_model.c:421
FMI2_Export fmi2Status fmi2SetDebugLogging(fmi2Component c, fmi2Boolean loggingOn, size_t n, const fmi2String cat[])
Definition: fmu2_model_me.c:40
FMI2_Export fmi2Status fmi2NewDiscreteStates(fmi2Component c, fmi2EventInfo *eventInfo)
FMI2_Export fmi2Status fmi2Terminate(fmi2Component c)
FMI2_Export fmi2Status fmi2ExitInitializationMode(fmi2Component c)
Definition: fmu2_model_me.c:73
FMI2_Export fmi2Status fmi2SetString(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2String value[])
fmiStatus fmi_get_integer(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiInteger value[])
Definition: fmu1_model.c:113
fmi2Status fmi_setup_experiment(fmi2Component c, fmi2Boolean toleranceDefined, fmi2Real tolerance, fmi2Real startTime, fmi2Boolean stopTimeDefined, fmi2Real stopTime)
Definition: fmu2_model.c:323
fmiStatus fmi_set_continuous_states(fmiComponent c, const fmiReal x[], size_t nx)
Definition: fmu1_model.c:324
#define fmi2ValueReference
Definition: fmi2_types.h:36
FMI2_Export fmi2Status fmi2GetNominalsOfContinuousStates(fmi2Component c, fmi2Real x_nominal[], size_t nx)
#define fmi2Integer
Definition: fmi2_types.h:38
fmi2Component fmi_instantiate(fmi2String instanceName, fmi2Type fmuType, fmi2String fmuGUID, fmi2String fmuLocation, const fmi2CallbackFunctions *functions, fmi2Boolean visible, fmi2Boolean loggingOn)
Definition: fmu2_model.c:260
FMI2_Export fmi2Status fmi2SetContinuousStates(fmi2Component c, const fmi2Real x[], size_t nx)
const char * fmi_get_version()
Definition: fmu1_model.c:77
FMI2_Export fmi2Status fmi2GetString(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2String value[])
Definition: fmu2_model_me.c:93
#define fmi2Component
Definition: fmi2_types.h:33
FMI2_Export fmi2Status fmi2SetTime(fmi2Component c, fmi2Real fmitime)
FMI2_Export fmi2Status fmi2SetupExperiment(fmi2Component c, fmi2Boolean toleranceDefined, fmi2Real tolerance, fmi2Real startTime, fmi2Boolean stopTimeDefined, fmi2Real stopTime)
Definition: fmu2_model_me.c:59
fmi2Status fmi_new_discrete_states(fmi2Component c, fmi2EventInfo *eventInfo)
Definition: fmu2_model.c:364
FMI2_Export const char * fmi2GetVersion()
Definition: fmu2_model_me.c:35
fmiStatus fmi_set_integer(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger value[])
Definition: fmu1_model.c:175
#define fmi2String
Definition: fmi2_types.h:41
fmiStatus fmi_set_time(fmiComponent c, fmiReal fmitime)
Definition: fmu1_model.c:313
FMI2_Export fmi2Status fmi2CompletedIntegratorStep(fmi2Component c, fmi2Boolean noSetFMUStatePriorToCurrentPoint, fmi2Boolean *enterEventMode, fmi2Boolean *terminateSimulation)
fmi2Status fmi_enter_initialization_mode(fmi2Component c)
Definition: fmu2_model.c:344
fmiStatus fmi_get_boolean(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiBoolean value[])
Definition: fmu1_model.c:127
#define fmi2Real
Definition: fmi2_types.h:37
FMI2_Export fmi2Status fmi2GetEventIndicators(fmi2Component c, fmi2Real eventIndicators[], size_t ni)
FMI2_Export fmi2Component fmi2Instantiate(fmi2String instanceName, fmi2Type fmuType, fmi2String GUID, fmi2String location, const fmi2CallbackFunctions *functions, fmi2Boolean visible, fmi2Boolean loggingOn)
Definition: fmu2_model_me.c:45
FMI2_Export fmi2Status fmi2EnterInitializationMode(fmi2Component c)
Definition: fmu2_model_me.c:68
FMI2_Export fmi2Status fmi2EnterContinuousTimeMode(fmi2Component c)
FMI2_Export fmi2Status fmi2EnterEventMode(fmi2Component c)
FMI2_Export fmi2Status fmi2SetInteger(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Integer value[])
FMI2_Export fmi2Status fmi2Reset(fmi2Component c)
fmi2Status fmi_reset(fmi2Component c)
Definition: fmu2_model.c:499
FMI2_Export fmi2Status fmi2GetContinuousStates(fmi2Component c, fmi2Real states[], size_t nx)
fmiStatus fmi_set_real(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiReal value[])
Definition: fmu1_model.c:155
FMI2_Export fmi2Status fmi2SetReal(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Real value[])
Definition: fmu2_model_me.c:98
FMI2_Export fmi2Status fmi2SetBoolean(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Boolean value[])
fmiStatus fmi_terminate(fmiComponent c)
Definition: fmu1_model.c:464
fmi2Status fmi_exit_initialization_mode(fmi2Component c)
Definition: fmu2_model.c:354
const char * fmi_get_model_types_platform()
Definition: fmu1_model.c:242
fmi2Status fmi_get_nominals_of_continuousstates(fmi2Component c, fmi2Real x_nominal[], size_t nx)
Definition: fmu2_model.c:469