FMI Library: part of JModelica.org
fmu2_model.h
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 #ifndef FMU2_MODEL_H_
19 #define FMU2_MODEL_H_
20 #include <FMI2/fmi2Functions.h>
21 
23 #ifndef FMI2_Export
24  #define FMI2_Export DllExport
25 #endif
26 typedef struct {
27  /*************** FMI ME 2.0 ****************/
28  fmi2Real states [N_STATES];
29  fmi2Real states_nom [N_STATES];
30  fmi2Real states_der [N_STATES];
31  fmi2Real event_indicators[N_EVENT_INDICATORS];
32  fmi2Real reals [N_REAL];
33  fmi2Integer integers [N_INTEGER];
34  fmi2Boolean booleans [N_BOOLEAN];
35  fmi2String strings [N_STRING];
36 
37  /* fmiInstantiateModel */
39  char instanceName [BUFFER];
40  char GUID [BUFFER];
41  const fmi2CallbackFunctions* functions;
42 
43  /* fmiSetTime */
45 
46  /* fmiInitializeModel */
49  fmi2EventInfo eventInfo;
50 
51  /*************** FMI CS 2.0. Depends on the ME fields above and functions ****************/
52  fmi2Real states_prev [N_STATES];
53 
54  /* fmiInstantiateSlave */
55  char fmuLocation [BUFFER];
57 
58  /* fmiInitializeSlave */
62 
63  /* fmiSetRealInputDerivatives */
65 
66  /* fmiGetRealOutputDerivatives */
68 
69 } component_t;
70 
72 
73 /* FMI 2.0 Common Functions */
74 const char* fmi_get_version();
75 
76 fmi2Status fmi_set_debug_logging(
78  fmi2Boolean loggingOn);
79 
81  fmi2String instanceName,
82  fmi2Type fmuType,
83  fmi2String fmuGUID,
84  fmi2String fmuLocation,
85  const fmi2CallbackFunctions* functions,
86  fmi2Boolean visible,
87  fmi2Boolean loggingOn);
88 
91 
93  fmi2Boolean toleranceDefined, fmi2Real tolerance,
94  fmi2Real startTime, fmi2Boolean stopTimeDefined,
95  fmi2Real stopTime);
98 
99 fmi2Status fmi_terminate(fmi2Component c);
100 
101 fmi2Status fmi_reset(
102  fmi2Component c);
103 
104 
105 fmi2Status fmi_get_real(
107  const fmi2ValueReference vr[],
108  size_t nvr, fmi2Real value[]);
109 
110 fmi2Status fmi_get_integer(
112  const fmi2ValueReference vr[],
113  size_t nvr,
114  fmi2Integer value[]);
115 fmi2Status fmi_get_boolean(
117  const fmi2ValueReference vr[],
118  size_t nvr,
119  fmi2Boolean value[]);
120 
121 fmi2Status fmi_get_string(
123  const fmi2ValueReference vr[],
124  size_t nvr,
125  fmi2String value[]);
126 
127 fmi2Status fmi_set_real(
129  const fmi2ValueReference vr[],
130  size_t nvr,
131  const fmi2Real value[]);
132 fmi2Status fmi_set_integer(
134  const fmi2ValueReference vr[],
135  size_t nvr,
136  const fmi2Integer value[]);
137 
138 fmi2Status fmi_set_boolean(
140  const fmi2ValueReference vr[],
141  size_t nvr,
142  const fmi2Boolean value[]);
143 
144 fmi2Status fmi_set_string(
146  const fmi2ValueReference vr[],
147  size_t nvr,
148  const fmi2String value[]);
149 
150 /* FMI 2.0 ME Functions */
151 const char* fmi_get_model_types_platform();
152 
154 fmi2Status fmi_new_discrete_states(fmi2Component c, fmi2EventInfo* eventInfo);
156 
157 fmi2Status fmi_set_time(
159  fmi2Real fmitime);
160 
161 fmi2Status fmi_set_continuous_states(
163  const fmi2Real x[],
164  size_t nx);
165 
168  fmi2Boolean noSetFMUStatePriorToCurrentPoint,
169  fmi2Boolean* enterEventMode, fmi2Boolean* terminateSimulation);
170 
171 fmi2Status fmi_get_derivatives(
173  fmi2Real derivatives[],
174  size_t nx);
175 
176 fmi2Status fmi_get_event_indicators(
178  fmi2Real eventIndicators[],
179  size_t ni);
180 
181 fmi2Status fmi_get_continuous_states(
183  fmi2Real states[],
184  size_t nx);
185 
188  fmi2Real x_nominal[],
189  size_t nx);
190 
191 
192 /* FMI 2.0 CS Functions */
193 #ifdef fmi2Functions_h
194 
195 const char* fmi_get_types_platform();
196 
198  fmi2Component c);
199 
202  const fmi2ValueReference vr[],
203  size_t nvr,
204  const fmi2Integer order[],
205  const fmi2Real value[]);
206 
209  const fmi2ValueReference vr[],
210  size_t nvr,
211  const fmi2Integer order[],
212  fmi2Real value[]);
213 
214 fmi2Status fmi_cancel_step(
215  fmi2Component c);
216 fmi2Status fmi_do_step(
218  fmi2Real currentCommunicationPoint,
219  fmi2Real communicationStepSize,
220  fmi2Boolean newStep);
221 
222 fmi2Status fmi_get_status(
224  const fmi2StatusKind s,
225  fmi2Status* value);
226 
227 fmi2Status fmi_get_real_status(
229  const fmi2StatusKind s,
230  fmi2Real* value);
231 
232 fmi2Status fmi_get_integer_status(
234  const fmi2StatusKind s,
235  fmi2Integer* value);
236 
237 fmi2Status fmi_get_boolean_status(
239  const fmi2StatusKind s,
240  fmi2Boolean* value);
241 
242 fmi2Status fmi_get_string_status(
244  const fmi2StatusKind s,
245  fmi2String* value);
246 
247 #endif /* End of fmi2Functions_h */
248 #endif /* End of header FMU2_MODEL_H_ */
fmiStatus fmi_cancel_step(fmiComponent c)
Definition: fmu1_model.c:560
fmi2EventInfo eventInfo
Definition: fmu2_model.h:49
#define N_STATES
fmi2Status fmi_set_real(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Real value[])
Definition: fmu2_model.c:160
fmi2Status fmi_new_discrete_states(fmi2Component c, fmi2EventInfo *eventInfo)
Definition: fmu2_model.c:364
fmi2Real relativeTolerance
Definition: fmu2_model.h:48
void fmi_free_instance(fmi2Component c)
Definition: fmu2_model.c:312
size_t jm_callbacks * c
#define fmi2Boolean
Definition: fmi2_types.h:39
fmi2Status fmi_set_debug_logging(fmi2Component c, fmi2Boolean loggingOn)
Definition: fmu2_model.c:83
fmi2Status fmi_get_real(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Real value[])
Definition: fmu2_model.c:94
fmi2Status fmi_get_continuous_states(fmi2Component c, fmi2Real states[], size_t nx)
Definition: fmu2_model.c:454
#define N_OUTPUT_REAL_MAX_ORDER
#define N_REAL
const fmi2CallbackFunctions * functions
Definition: fmu2_model.h:41
fmiStatus fmi_get_status(fmiComponent c, const fmiStatusKind s, fmiStatus *value)
Definition: fmu1_model.c:662
fmiStatus fmi_get_boolean_status(fmiComponent c, const fmiStatusKind s, fmiBoolean *value)
Definition: fmu1_model.c:694
fmi2Status fmi_set_boolean(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Boolean value[])
Definition: fmu2_model.c:198
fmi2Status fmi_get_derivatives(fmi2Component c, fmi2Real derivatives[], size_t nx)
Definition: fmu2_model.c:420
fmi2Status fmi_enter_continuous_time_mode(fmi2Component c)
Definition: fmu2_model.c:377
fmiStatus fmi_set_real_input_derivatives(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger order[], const fmiReal value[])
Definition: fmu1_model.c:532
fmi2Boolean toleranceControlled
Definition: fmu2_model.h:47
fmi2Boolean visible
Definition: fmu2_model.h:56
fmi2Boolean StopTimeDefined
Definition: fmu2_model.h:60
fmi2Status fmi_set_time(fmi2Component c, fmi2Real fmitime)
Definition: fmu2_model.c:382
fmi2Status fmi_set_integer(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2Integer value[])
Definition: fmu2_model.c:184
#define N_INPUT_REAL_MAX_ORDER
#define N_STRING
fmi2Status fmi_terminate(fmi2Component c)
Definition: fmu2_model.c:483
#define fmi2ValueReference
Definition: fmi2_types.h:36
fmi2Boolean loggingOn
Definition: fmu2_model.h:38
fmi2Status fmi_get_integer(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Integer value[])
Definition: fmu2_model.c:118
fmi2Status fmi_get_boolean(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2Boolean value[])
Definition: fmu2_model.c:132
#define fmi2Integer
Definition: fmi2_types.h:38
#define BUFFER
#define N_OUTPUT_REAL
fmiStatus fmi_get_string_status(fmiComponent c, const fmiStatusKind s, fmiString *value)
Definition: fmu1_model.c:702
#define fmi2Component
Definition: fmi2_types.h:33
#define N_INTEGER
fmiStatus fmi_get_real_output_derivatives(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger order[], fmiReal value[])
Definition: fmu1_model.c:548
fmi2Status fmi_completed_integrator_step(fmi2Component c, fmi2Boolean noSetFMUStatePriorToCurrentPoint, fmi2Boolean *enterEventMode, fmi2Boolean *terminateSimulation)
Definition: fmu2_model.c:407
fmi2Status fmi_exit_initialization_mode(fmi2Component c)
Definition: fmu2_model.c:354
const char * fmi_get_version()
Definition: fmu1_model.c:77
#define fmi2String
Definition: fmi2_types.h:41
fmiStatus fmi_get_integer_status(fmiComponent c, const fmiStatusKind s, fmiInteger *value)
Definition: fmu1_model.c:686
fmi2Status fmi_get_nominals_of_continuousstates(fmi2Component c, fmi2Real x_nominal[], size_t nx)
Definition: fmu2_model.c:469
fmi2Status fmi_reset(fmi2Component c)
Definition: fmu2_model.c:499
fmi2Component fmi_instantiate(fmi2String instanceName, fmi2Type fmuType, fmi2String fmuGUID, fmi2String fmuLocation, const fmi2CallbackFunctions *functions, fmi2Boolean visible, fmi2Boolean loggingOn)
Definition: fmu2_model.c:260
#define N_BOOLEAN
const char * fmi_get_model_types_platform()
Definition: fmu1_model.c:242
#define fmi2Real
Definition: fmi2_types.h:37
const char * fmi_get_types_platform()
Definition: fmu1_model.c:475
fmiStatus fmi_get_real_status(fmiComponent c, const fmiStatusKind s, fmiReal *value)
Definition: fmu1_model.c:674
#define N_EVENT_INDICATORS
fmi2Status fmi_enter_initialization_mode(fmi2Component c)
Definition: fmu2_model.c:344
fmi2Status fmi_set_continuous_states(fmi2Component c, const fmi2Real x[], size_t nx)
Definition: fmu2_model.c:393
fmi2Real tStop
Definition: fmu2_model.h:61
fmi2Status fmi_setup_experiment(fmi2Component c, fmi2Boolean toleranceDefined, fmi2Real tolerance, fmi2Real startTime, fmi2Boolean stopTimeDefined, fmi2Real stopTime)
Definition: fmu2_model.c:323
component_t * component_ptr_t
Definition: fmu2_model.h:71
#define N_INPUT_REAL
fmi2Real fmitime
Definition: fmu2_model.h:44
fmi2Status fmi_enter_event_mode(fmi2Component c)
Definition: fmu2_model.c:359
fmi2Real tStart
Definition: fmu2_model.h:59
fmiStatus fmi_do_step(fmiComponent c, fmiReal currentCommunicationPoint, fmiReal communicationStepSize, fmiBoolean newStep)
Definition: fmu1_model.c:565
void fmi_free_slave_instance(fmiComponent c)
Definition: fmu1_model.c:527
fmi2Status fmi_set_string(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, const fmi2String value[])
Definition: fmu2_model.c:212
fmi2Status fmi_get_string(fmi2Component c, const fmi2ValueReference vr[], size_t nvr, fmi2String value[])
Definition: fmu2_model.c:146
fmi2Status fmi_get_event_indicators(fmi2Component c, fmi2Real eventIndicators[], size_t ni)
Definition: fmu2_model.c:437