]> gerrit.simantics Code Review - simantics/fmil.git/blob - org.simantics.fmil.core/native/FMILibrary/Test/FMI1/fmu_dummy/fmu1_model.h
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / Test / FMI1 / fmu_dummy / fmu1_model.h
1 /*\r
2 Copyright (C) 2012 Modelon AB\r
3 \r
4 This program is free software: you can redistribute it and/or modify\r
5 it under the terms of the BSD style license.
6 \r
7 the Free Software Foundation, version 3 of the License.\r
8 \r
9 This program is distributed in the hope that it will be useful,\r
10 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
12 FMILIB_License.txt file for more details.\r
13 \r
14 You should have received a copy of the FMILIB_License.txt file\r
15 along with this program. If not, contact Modelon AB <http://www.modelon.com>.\r
16 */\r
17 \r
18 #ifndef FM1_MODEL_H_\r
19 #define FM1_MODEL_H_\r
20 \r
21 #include <fmu_dummy/fmu1_model_defines.h>\r
22 \r
23 typedef struct {\r
24         /*************** FMI ME 1.0 ****************/\r
25         fmiReal                                 states                  [N_STATES];\r
26         fmiReal                                 states_nom              [N_STATES];\r
27         fmiValueReference               states_vr               [N_STATES];\r
28         fmiReal                                 states_der              [N_STATES];\r
29         fmiReal                                 event_indicators[N_EVENT_INDICATORS];\r
30         fmiReal                                 reals                   [N_REAL];\r
31         fmiInteger                              integers                [N_INTEGER];\r
32         fmiBoolean                              booleans                [N_BOOLEAN];\r
33         fmiString                               strings                 [N_STRING];\r
34 \r
35         /* fmiInstantiateModel */\r
36         fmiBoolean                              loggingOn;\r
37         char                                    instanceName    [BUFFER];\r
38         char                                    GUID                    [BUFFER];\r
39         fmiCallbackFunctions    functions;\r
40 \r
41         /* fmiSetTime */\r
42         fmiReal                                 fmitime;\r
43 \r
44         /* fmiCompletedIntegratorStep */\r
45         fmiBoolean                              callEventUpdate;\r
46 \r
47         /* fmiInitialize */\r
48         fmiBoolean                              toleranceControlled;\r
49         fmiReal                                 relativeTolerance;\r
50         fmiEventInfo                    eventInfo;\r
51 \r
52         /*************** FMI CS 1.0. Depends on the ME fields above and functions ****************/\r
53         fmiReal                                 states_prev             [N_STATES];\r
54 \r
55         /* fmiInstantiateSlave */\r
56         char                                    fmuLocation             [BUFFER];\r
57         char                                    mimeType                [BUFFER];\r
58         fmiReal                                 timeout;\r
59         fmiBoolean                              visible;\r
60         fmiBoolean                              interactive;\r
61 \r
62         /* fmiInitializeSlave */\r
63         fmiReal                                 tStart;\r
64         fmiBoolean                              StopTimeDefined;\r
65         fmiReal                                 tStop;\r
66 \r
67         /* fmiSetRealInputDerivatives */\r
68         fmiReal                                 input_real              [N_INPUT_REAL][N_INPUT_REAL_MAX_ORDER + 1];\r
69 \r
70         /* fmiGetRealOutputDerivatives */\r
71         fmiReal                                 output_real             [N_OUTPUT_REAL][N_OUTPUT_REAL_MAX_ORDER + 1];\r
72 \r
73 } component_t;\r
74 \r
75 typedef component_t* component_ptr_t;\r
76 \r
77 /* FMI 1.0 Common Functions */\r
78 const char*             fmi_get_version();\r
79 \r
80 fmiStatus               fmi_set_debug_logging(\r
81                                                                                                         fmiComponent c,\r
82                                                                                                         fmiBoolean loggingOn);\r
83 \r
84 fmiStatus               fmi_get_real(                   \r
85                                                                                                         fmiComponent c,\r
86                                                                                                         const fmiValueReference vr[],\r
87                                                                                                         size_t nvr, fmiReal value[]);\r
88 \r
89 fmiStatus               fmi_get_integer(        \r
90                                                                                                         fmiComponent c,\r
91                                                                                                         const fmiValueReference vr[],\r
92                                                                                                         size_t nvr,\r
93                                                                                                         fmiInteger value[]);\r
94 fmiStatus               fmi_get_boolean(\r
95                                                                                                         fmiComponent c,\r
96                                                                                                         const fmiValueReference vr[],\r
97                                                                                                         size_t nvr,\r
98                                                                                                         fmiBoolean value[]);\r
99 \r
100 fmiStatus               fmi_get_string(\r
101                                                                                                         fmiComponent c,\r
102                                                                                                         const fmiValueReference vr[],\r
103                                                                                                         size_t nvr,\r
104                                                                                                         fmiString  value[]);\r
105 \r
106 fmiStatus               fmi_set_real(\r
107                                                                                                         fmiComponent c,\r
108                                                                                                         const fmiValueReference vr[],\r
109                                                                                                         size_t nvr,\r
110                                                                                                         const fmiReal value[]);\r
111 fmiStatus               fmi_set_integer(\r
112                                                                                                         fmiComponent c,\r
113                                                                                                         const fmiValueReference vr[],\r
114                                                                                                         size_t nvr,\r
115                                                                                                         const fmiInteger value[]);\r
116 \r
117 fmiStatus               fmi_set_boolean(\r
118                                                                                                         fmiComponent c,\r
119                                                                                                         const fmiValueReference vr[],\r
120                                                                                                         size_t nvr,\r
121                                                                                                         const fmiBoolean value[]);\r
122 \r
123 fmiStatus               fmi_set_string(\r
124                                                                                                         fmiComponent c,\r
125                                                                                                         const fmiValueReference vr[],\r
126                                                                                                         size_t nvr,\r
127                                                                                                         const fmiString  value[]);\r
128 \r
129 /* FMI 1.0 ME Functions */\r
130 const char*             fmi_get_model_types_platform();\r
131 \r
132 fmiComponent    fmi_instantiate_model(\r
133                                                                                                         fmiString instanceName,\r
134                                                                                                         fmiString GUID,\r
135                                                                                                         fmiCallbackFunctions functions,\r
136                                                                                                         fmiBoolean loggingOn);\r
137 \r
138 void                    fmi_free_model_instance(\r
139                                                                                                         fmiComponent c);\r
140 \r
141 fmiStatus               fmi_set_time(\r
142                                                                                                         fmiComponent c,\r
143                                                                                                         fmiReal fmitime);\r
144 \r
145 fmiStatus               fmi_set_continuous_states(\r
146                                                                                                         fmiComponent c,\r
147                                                                                                         const fmiReal x[],\r
148                                                                                                         size_t nx);\r
149 \r
150 fmiStatus               fmi_completed_integrator_step(\r
151                                                                                                         fmiComponent c,\r
152                                                                                                         fmiBoolean* callEventUpdate);\r
153 \r
154 fmiStatus               fmi_initialize(\r
155                                                                                                         fmiComponent c,\r
156                                                                                                         fmiBoolean toleranceControlled,\r
157                                                                                                         fmiReal relativeTolerance,\r
158                                                                                                         fmiEventInfo* eventInfo);\r
159 \r
160 fmiStatus               fmi_get_derivatives(\r
161                                                                                                         fmiComponent c,\r
162                                                                                                         fmiReal derivatives[],\r
163                                                                                                         size_t nx);\r
164 \r
165 fmiStatus               fmi_get_event_indicators(\r
166                                                                                                         fmiComponent c,\r
167                                                                                                         fmiReal eventIndicators[],\r
168                                                                                                         size_t ni);\r
169 \r
170 fmiStatus               fmi_event_update(\r
171                                                                                                         fmiComponent c,\r
172                                                                                                         fmiBoolean intermediateResults,\r
173                                                                                                         fmiEventInfo* eventInfo);\r
174 fmiStatus               fmi_get_continuous_states(\r
175                                                                                                         fmiComponent c,\r
176                                                                                                         fmiReal states[],\r
177                                                                                                         size_t nx);\r
178 \r
179 fmiStatus               fmi_get_nominal_continuousstates(       \r
180                                                                                                         fmiComponent c,\r
181                                                                                                         fmiReal x_nominal[],\r
182                                                                                                         size_t nx);\r
183 \r
184 fmiStatus               fmi_get_state_value_references(\r
185                                                                                                         fmiComponent c,\r
186                                                                                                         fmiValueReference vrx[],\r
187                                                                                                         size_t nx);\r
188 \r
189 fmiStatus               fmi_terminate(fmiComponent c);\r
190 \r
191 /* FMI 1.0 CS Functions */\r
192 #ifdef fmiFunctions_h\r
193 \r
194 const char*             fmi_get_types_platform();\r
195 \r
196 fmiComponent    fmi_instantiate_slave(\r
197                                                                                                         fmiString instanceName,\r
198                                                                                                         fmiString fmuGUID,\r
199                                                                                                         fmiString fmuLocation,\r
200                                                                                                         fmiString mimeType,\r
201                                                                                                         fmiReal timeout,\r
202                                                                                                         fmiBoolean visible,\r
203                                                                                                         fmiBoolean interactive,\r
204                                                                                                         fmiCallbackFunctions functions,\r
205                                                                                                         fmiBoolean loggingOn);\r
206 \r
207 fmiStatus               fmi_initialize_slave(\r
208                                                                                                         fmiComponent c,\r
209                                                                                                         fmiReal tStart,\r
210                                                                                                         fmiBoolean StopTimeDefined,\r
211                                                                                                         fmiReal tStop);\r
212 \r
213 fmiStatus               fmi_terminate_slave(\r
214                                                                                                         fmiComponent c);\r
215 \r
216 fmiStatus               fmi_reset_slave(\r
217                                                                                                         fmiComponent c);\r
218 \r
219 void                    fmi_free_slave_instance(\r
220                                                                                                         fmiComponent c);\r
221 \r
222 fmiStatus               fmi_set_real_input_derivatives(\r
223                                                                                                         fmiComponent c,\r
224                                                                                                         const fmiValueReference vr[],\r
225                                                                                                         size_t nvr,\r
226                                                                                                         const fmiInteger order[],\r
227                                                                                                         const fmiReal value[]);\r
228 \r
229 fmiStatus               fmi_get_real_output_derivatives(\r
230                                                                                                         fmiComponent c,\r
231                                                                                                         const fmiValueReference vr[],\r
232                                                                                                         size_t nvr,\r
233                                                                                                         const fmiInteger order[],\r
234                                                                                                         fmiReal value[]);\r
235 \r
236 fmiStatus               fmi_cancel_step(\r
237                                                                                                         fmiComponent c);\r
238 fmiStatus               fmi_do_step(\r
239                                                                                                         fmiComponent c,\r
240                                                                                                         fmiReal currentCommunicationPoint,\r
241                                                                                                         fmiReal communicationStepSize,\r
242                                                                                                         fmiBoolean newStep);\r
243 \r
244 fmiStatus               fmi_get_status(\r
245                                                                                                         fmiComponent c,\r
246                                                                                                         const fmiStatusKind s,\r
247                                                                                                         fmiStatus*  value);\r
248 \r
249 fmiStatus               fmi_get_real_status(\r
250                                                                                                         fmiComponent c,\r
251                                                                                                         const fmiStatusKind s,\r
252                                                                                                         fmiReal*    value);\r
253 \r
254 fmiStatus               fmi_get_integer_status(\r
255                                                                                                         fmiComponent c,\r
256                                                                                                         const fmiStatusKind s,\r
257                                                                                                         fmiInteger* value);\r
258 \r
259 fmiStatus               fmi_get_boolean_status(\r
260                                                                                                         fmiComponent c,\r
261                                                                                                         const fmiStatusKind s,\r
262                                                                                                         fmiBoolean* value);\r
263 \r
264 fmiStatus               fmi_get_string_status(\r
265                                                                                                         fmiComponent c,\r
266                                                                                                         const fmiStatusKind s,\r
267                                                                                                         fmiString*  value);\r
268 \r
269 #endif /* End of fmiFunctions_h */\r
270 #endif /* End of header FM1_MODEL_H_ */