FMI Library: part of JModelica.org
fmu1_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 FM1_MODEL_H_
19 #define FM1_MODEL_H_
20 
22 
23 typedef struct {
24  /*************** FMI ME 1.0 ****************/
25  fmiReal states [N_STATES];
26  fmiReal states_nom [N_STATES];
28  fmiReal states_der [N_STATES];
29  fmiReal event_indicators[N_EVENT_INDICATORS];
30  fmiReal reals [N_REAL];
31  fmiInteger integers [N_INTEGER];
32  fmiBoolean booleans [N_BOOLEAN];
33  fmiString strings [N_STRING];
34 
35  /* fmiInstantiateModel */
37  char instanceName [BUFFER];
38  char GUID [BUFFER];
39  fmiCallbackFunctions functions;
40 
41  /* fmiSetTime */
43 
44  /* fmiCompletedIntegratorStep */
46 
47  /* fmiInitialize */
50  fmiEventInfo eventInfo;
51 
52  /*************** FMI CS 1.0. Depends on the ME fields above and functions ****************/
53  fmiReal states_prev [N_STATES];
54 
55  /* fmiInstantiateSlave */
56  char fmuLocation [BUFFER];
57  char mimeType [BUFFER];
61 
62  /* fmiInitializeSlave */
66 
67  /* fmiSetRealInputDerivatives */
69 
70  /* fmiGetRealOutputDerivatives */
72 
73 } component_t;
74 
76 
77 /* FMI 1.0 Common Functions */
78 const char* fmi_get_version();
79 
80 fmiStatus fmi_set_debug_logging(
82  fmiBoolean loggingOn);
83 
84 fmiStatus fmi_get_real(
86  const fmiValueReference vr[],
87  size_t nvr, fmiReal value[]);
88 
89 fmiStatus fmi_get_integer(
91  const fmiValueReference vr[],
92  size_t nvr,
93  fmiInteger value[]);
94 fmiStatus fmi_get_boolean(
96  const fmiValueReference vr[],
97  size_t nvr,
98  fmiBoolean value[]);
99 
100 fmiStatus fmi_get_string(
101  fmiComponent c,
102  const fmiValueReference vr[],
103  size_t nvr,
104  fmiString value[]);
105 
106 fmiStatus fmi_set_real(
107  fmiComponent c,
108  const fmiValueReference vr[],
109  size_t nvr,
110  const fmiReal value[]);
111 fmiStatus fmi_set_integer(
112  fmiComponent c,
113  const fmiValueReference vr[],
114  size_t nvr,
115  const fmiInteger value[]);
116 
117 fmiStatus fmi_set_boolean(
118  fmiComponent c,
119  const fmiValueReference vr[],
120  size_t nvr,
121  const fmiBoolean value[]);
122 
123 fmiStatus fmi_set_string(
124  fmiComponent c,
125  const fmiValueReference vr[],
126  size_t nvr,
127  const fmiString value[]);
128 
129 /* FMI 1.0 ME Functions */
130 const char* fmi_get_model_types_platform();
131 
133  fmiString instanceName,
134  fmiString GUID,
135  fmiCallbackFunctions functions,
136  fmiBoolean loggingOn);
137 
139  fmiComponent c);
140 
141 fmiStatus fmi_set_time(
142  fmiComponent c,
143  fmiReal fmitime);
144 
145 fmiStatus fmi_set_continuous_states(
146  fmiComponent c,
147  const fmiReal x[],
148  size_t nx);
149 
151  fmiComponent c,
152  fmiBoolean* callEventUpdate);
153 
154 fmiStatus fmi_initialize(
155  fmiComponent c,
156  fmiBoolean toleranceControlled,
157  fmiReal relativeTolerance,
158  fmiEventInfo* eventInfo);
159 
160 fmiStatus fmi_get_derivatives(
161  fmiComponent c,
162  fmiReal derivatives[],
163  size_t nx);
164 
165 fmiStatus fmi_get_event_indicators(
166  fmiComponent c,
167  fmiReal eventIndicators[],
168  size_t ni);
169 
170 fmiStatus fmi_event_update(
171  fmiComponent c,
172  fmiBoolean intermediateResults,
173  fmiEventInfo* eventInfo);
174 fmiStatus fmi_get_continuous_states(
175  fmiComponent c,
176  fmiReal states[],
177  size_t nx);
178 
180  fmiComponent c,
181  fmiReal x_nominal[],
182  size_t nx);
183 
185  fmiComponent c,
186  fmiValueReference vrx[],
187  size_t nx);
188 
189 fmiStatus fmi_terminate(fmiComponent c);
190 
191 /* FMI 1.0 CS Functions */
192 #ifdef fmiFunctions_h
193 
194 const char* fmi_get_types_platform();
195 
197  fmiString instanceName,
198  fmiString fmuGUID,
199  fmiString fmuLocation,
200  fmiString mimeType,
201  fmiReal timeout,
202  fmiBoolean visible,
203  fmiBoolean interactive,
204  fmiCallbackFunctions functions,
205  fmiBoolean loggingOn);
206 
207 fmiStatus fmi_initialize_slave(
208  fmiComponent c,
209  fmiReal tStart,
210  fmiBoolean StopTimeDefined,
211  fmiReal tStop);
212 
213 fmiStatus fmi_terminate_slave(
214  fmiComponent c);
215 
216 fmiStatus fmi_reset_slave(
217  fmiComponent c);
218 
220  fmiComponent c);
221 
223  fmiComponent c,
224  const fmiValueReference vr[],
225  size_t nvr,
226  const fmiInteger order[],
227  const fmiReal value[]);
228 
230  fmiComponent c,
231  const fmiValueReference vr[],
232  size_t nvr,
233  const fmiInteger order[],
234  fmiReal value[]);
235 
236 fmiStatus fmi_cancel_step(
237  fmiComponent c);
238 fmiStatus fmi_do_step(
239  fmiComponent c,
240  fmiReal currentCommunicationPoint,
241  fmiReal communicationStepSize,
242  fmiBoolean newStep);
243 
244 fmiStatus fmi_get_status(
245  fmiComponent c,
246  const fmiStatusKind s,
247  fmiStatus* value);
248 
249 fmiStatus fmi_get_real_status(
250  fmiComponent c,
251  const fmiStatusKind s,
252  fmiReal* value);
253 
254 fmiStatus fmi_get_integer_status(
255  fmiComponent c,
256  const fmiStatusKind s,
257  fmiInteger* value);
258 
259 fmiStatus fmi_get_boolean_status(
260  fmiComponent c,
261  const fmiStatusKind s,
262  fmiBoolean* value);
263 
264 fmiStatus fmi_get_string_status(
265  fmiComponent c,
266  const fmiStatusKind s,
267  fmiString* value);
268 
269 #endif /* End of fmiFunctions_h */
270 #endif /* End of header FM1_MODEL_H_ */
fmiStatus fmi_cancel_step(fmiComponent c)
Definition: fmu1_model.c:560
fmiStatus fmi_set_real(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiReal value[])
Definition: fmu1_model.c:155
fmiBoolean StopTimeDefined
Definition: fmu1_model.h:64
#define N_STATES
fmiStatus fmi_set_debug_logging(fmiComponent c, fmiBoolean loggingOn)
Definition: fmu1_model.c:82
fmiComponent fmi_instantiate_slave(fmiString instanceName, fmiString fmuGUID, fmiString fmuLocation, fmiString mimeType, fmiReal timeout, fmiBoolean visible, fmiBoolean interactive, fmiCallbackFunctions functions, fmiBoolean loggingOn)
Definition: fmu1_model.c:480
fmiStatus fmi_get_event_indicators(fmiComponent c, fmiReal eventIndicators[], size_t ni)
Definition: fmu1_model.c:391
fmiStatus fmi_get_real(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiReal value[])
Definition: fmu1_model.c:93
fmiBoolean callEventUpdate
Definition: fmu1_model.h:45
fmiStatus fmi_get_derivatives(fmiComponent c, fmiReal derivatives[], size_t nx)
Definition: fmu1_model.c:374
fmiStatus fmi_get_string(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiString value[])
Definition: fmu1_model.c:141
size_t jm_callbacks * c
fmiStatus fmi_get_continuous_states(fmiComponent c, fmiReal states[], size_t nx)
Definition: fmu1_model.c:421
fmiStatus fmi_set_time(fmiComponent c, fmiReal fmitime)
Definition: fmu1_model.c:313
fmiStatus fmi_initialize(fmiComponent c, fmiBoolean toleranceControlled, fmiReal relativeTolerance, fmiEventInfo *eventInfo)
Definition: fmu1_model.c:349
fmiStatus fmi_initialize_slave(fmiComponent c, fmiReal tStart, fmiBoolean StopTimeDefined, fmiReal tStop)
Definition: fmu1_model.c:499
fmiStatus fmi_reset_slave(fmiComponent c)
Definition: fmu1_model.c:522
fmiReal tStart
Definition: fmu1_model.h:63
fmiComponent fmi_instantiate_model(fmiString instanceName, fmiString GUID, fmiCallbackFunctions functions, fmiBoolean loggingOn)
Definition: fmu1_model.c:254
#define N_OUTPUT_REAL_MAX_ORDER
#define fmiBoolean
Definition: fmi1_types.h:37
#define N_REAL
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
fmiReal tStop
Definition: fmu1_model.h:65
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
fmiStatus fmi_get_nominal_continuousstates(fmiComponent c, fmiReal x_nominal[], size_t nx)
Definition: fmu1_model.c:436
fmiStatus fmi_set_continuous_states(fmiComponent c, const fmiReal x[], size_t nx)
Definition: fmu1_model.c:324
fmiStatus fmi_completed_integrator_step(fmiComponent c, fmiBoolean *callEventUpdate)
Definition: fmu1_model.c:338
#define N_INPUT_REAL_MAX_ORDER
#define N_STRING
#define fmiString
Definition: fmi1_types.h:38
#define fmiValueReference
Definition: fmi1_types.h:34
fmiReal relativeTolerance
Definition: fmu1_model.h:49
fmiStatus fmi_set_string(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiString value[])
Definition: fmu1_model.c:203
fmiStatus fmi_terminate(fmiComponent c)
Definition: fmu1_model.c:464
#define BUFFER
#define fmiReal
Definition: fmi1_types.h:35
fmiStatus fmi_get_integer(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiInteger value[])
Definition: fmu1_model.c:113
fmiReal fmitime
Definition: fmu1_model.h:42
fmiStatus fmi_set_boolean(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiBoolean value[])
Definition: fmu1_model.c:189
#define N_OUTPUT_REAL
fmiStatus fmi_get_string_status(fmiComponent c, const fmiStatusKind s, fmiString *value)
Definition: fmu1_model.c:702
#define N_INTEGER
fmiBoolean interactive
Definition: fmu1_model.h:60
fmiEventInfo eventInfo
Definition: fmu1_model.h:50
fmiStatus fmi_get_boolean(fmiComponent c, const fmiValueReference vr[], size_t nvr, fmiBoolean value[])
Definition: fmu1_model.c:127
fmiStatus fmi_terminate_slave(fmiComponent c)
Definition: fmu1_model.c:517
fmiBoolean loggingOn
Definition: fmu1_model.h:36
fmiStatus fmi_get_real_output_derivatives(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger order[], fmiReal value[])
Definition: fmu1_model.c:548
fmiCallbackFunctions functions
Definition: fmu1_model.h:39
#define fmiInteger
Definition: fmi1_types.h:36
const char * fmi_get_version()
Definition: fmu1_model.c:77
const char * fmi_get_model_types_platform()
Definition: fmu1_model.c:242
fmiStatus fmi_get_integer_status(fmiComponent c, const fmiStatusKind s, fmiInteger *value)
Definition: fmu1_model.c:686
#define N_BOOLEAN
const char * fmi_get_types_platform()
Definition: fmu1_model.c:475
fmiStatus fmi_set_integer(fmiComponent c, const fmiValueReference vr[], size_t nvr, const fmiInteger value[])
Definition: fmu1_model.c:175
fmiStatus fmi_get_real_status(fmiComponent c, const fmiStatusKind s, fmiReal *value)
Definition: fmu1_model.c:674
#define N_EVENT_INDICATORS
fmiBoolean visible
Definition: fmu1_model.h:59
void fmi_free_model_instance(fmiComponent c)
Definition: fmu1_model.c:302
fmiReal timeout
Definition: fmu1_model.h:58
fmiStatus fmi_event_update(fmiComponent c, fmiBoolean intermediateResults, fmiEventInfo *eventInfo)
Definition: fmu1_model.c:408
component_t * component_ptr_t
Definition: fmu1_model.h:75
#define N_INPUT_REAL
fmiStatusKind
Definition: fmu1_model_me.c:30
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
fmiStatus fmi_get_state_value_references(fmiComponent c, fmiValueReference vrx[], size_t nx)
Definition: fmu1_model.c:450
fmiBoolean toleranceControlled
Definition: fmu1_model.h:48
#define fmiComponent
Definition: fmi1_types.h:33