]> gerrit.simantics Code Review - simantics/fmil.git/blob - FMI2/fmu_dummy/fmu2_model.h
Switch to full JavaSE-11+ compatibility
[simantics/fmil.git] / FMI2 / fmu_dummy / fmu2_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.\r
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 FMU2_MODEL_H_\r
19 #define FMU2_MODEL_H_\r
20 #include <FMI2/fmi2Functions.h>\r
21 \r
22 #include <fmu_dummy/fmu2_model_defines.h>\r
23 #ifndef FMI2_Export\r
24         #define FMI2_Export DllExport\r
25 #endif\r
26 typedef struct {\r
27         /*************** FMI ME 2.0 ****************/\r
28         fmi2Real                                        states                  [N_STATES];\r
29         fmi2Real                                        states_nom              [N_STATES];\r
30         fmi2Real                                        states_der              [N_STATES];\r
31         fmi2Real                                        event_indicators[N_EVENT_INDICATORS];\r
32         fmi2Real                                        reals                   [N_REAL];\r
33         fmi2Integer                             integers                [N_INTEGER];\r
34         fmi2Boolean                             booleans                [N_BOOLEAN];\r
35         fmi2String                              strings                 [N_STRING];\r
36 \r
37         /* fmiInstantiateModel */\r
38         fmi2Boolean                             loggingOn;\r
39         char                                    instanceName    [BUFFER];\r
40         char                                    GUID                    [BUFFER];\r
41         const fmi2CallbackFunctions*    functions;\r
42 \r
43         /* fmiSetTime */\r
44         fmi2Real                                        fmitime;\r
45 \r
46         /* fmiInitializeModel */\r
47         fmi2Boolean                             toleranceControlled;\r
48         fmi2Real                                        relativeTolerance;\r
49         fmi2EventInfo                   eventInfo;\r
50 \r
51         /*************** FMI CS 2.0. Depends on the ME fields above and functions ****************/\r
52         fmi2Real                                        states_prev             [N_STATES];\r
53 \r
54         /* fmiInstantiateSlave */\r
55         char                                    fmuLocation             [BUFFER];\r
56         fmi2Boolean                             visible;\r
57 \r
58         /* fmiInitializeSlave */\r
59         fmi2Real                                        tStart;\r
60         fmi2Boolean                             StopTimeDefined;\r
61         fmi2Real                                        tStop;\r
62 \r
63         /* fmiSetRealInputDerivatives */\r
64         fmi2Real                                        input_real              [N_INPUT_REAL][N_INPUT_REAL_MAX_ORDER + 1];\r
65 \r
66         /* fmiGetRealOutputDerivatives */\r
67         fmi2Real                                        output_real             [N_OUTPUT_REAL][N_OUTPUT_REAL_MAX_ORDER + 1];\r
68 \r
69 } component_t;\r
70 \r
71 typedef component_t* component_ptr_t;\r
72 \r
73 /* FMI 2.0 Common Functions */\r
74 const char*             fmi_get_version();\r
75 \r
76 fmi2Status              fmi_set_debug_logging(\r
77                                                                                                         fmi2Component c,\r
78                                                                                                         fmi2Boolean loggingOn);\r
79 \r
80 fmi2Component fmi_instantiate (\r
81     fmi2String instanceName,\r
82     fmi2Type fmuType,\r
83     fmi2String fmuGUID,\r
84     fmi2String fmuLocation,\r
85     const fmi2CallbackFunctions* functions,\r
86     fmi2Boolean visible,\r
87     fmi2Boolean loggingOn);\r
88 \r
89 void fmi_free_instance(\r
90     fmi2Component c);\r
91 \r
92 fmi2Status fmi_setup_experiment(fmi2Component c,\r
93     fmi2Boolean toleranceDefined, fmi2Real tolerance,\r
94     fmi2Real startTime, fmi2Boolean stopTimeDefined,\r
95     fmi2Real stopTime);\r
96 fmi2Status              fmi_enter_initialization_mode(fmi2Component c);\r
97 fmi2Status              fmi_exit_initialization_mode(fmi2Component c);\r
98 \r
99 fmi2Status              fmi_terminate(fmi2Component c);\r
100 \r
101 fmi2Status              fmi_reset(\r
102                                                                                                         fmi2Component c);\r
103 \r
104 \r
105 fmi2Status              fmi_get_real(                   \r
106                                                                                                         fmi2Component c,\r
107                                                                                                         const fmi2ValueReference vr[],\r
108                                                                                                         size_t nvr, fmi2Real value[]);\r
109 \r
110 fmi2Status              fmi_get_integer(        \r
111                                                                                                         fmi2Component c,\r
112                                                                                                         const fmi2ValueReference vr[],\r
113                                                                                                         size_t nvr,\r
114                                                                                                         fmi2Integer value[]);\r
115 fmi2Status              fmi_get_boolean(\r
116                                                                                                         fmi2Component c,\r
117                                                                                                         const fmi2ValueReference vr[],\r
118                                                                                                         size_t nvr,\r
119                                                                                                         fmi2Boolean value[]);\r
120 \r
121 fmi2Status              fmi_get_string(\r
122                                                                                                         fmi2Component c,\r
123                                                                                                         const fmi2ValueReference vr[],\r
124                                                                                                         size_t nvr,\r
125                                                                                                         fmi2String  value[]);\r
126 \r
127 fmi2Status              fmi_set_real(\r
128                                                                                                         fmi2Component c,\r
129                                                                                                         const fmi2ValueReference vr[],\r
130                                                                                                         size_t nvr,\r
131                                                                                                         const fmi2Real value[]);\r
132 fmi2Status              fmi_set_integer(\r
133                                                                                                         fmi2Component c,\r
134                                                                                                         const fmi2ValueReference vr[],\r
135                                                                                                         size_t nvr,\r
136                                                                                                         const fmi2Integer value[]);\r
137 \r
138 fmi2Status              fmi_set_boolean(\r
139                                                                                                         fmi2Component c,\r
140                                                                                                         const fmi2ValueReference vr[],\r
141                                                                                                         size_t nvr,\r
142                                                                                                         const fmi2Boolean value[]);\r
143 \r
144 fmi2Status              fmi_set_string(\r
145                                                                                                         fmi2Component c,\r
146                                                                                                         const fmi2ValueReference vr[],\r
147                                                                                                         size_t nvr,\r
148                                                                                                         const fmi2String  value[]);\r
149 \r
150 /* FMI 2.0 ME Functions */\r
151 const char*             fmi_get_model_types_platform();\r
152 \r
153 fmi2Status              fmi_enter_event_mode(fmi2Component c);\r
154 fmi2Status              fmi_new_discrete_states(fmi2Component c, fmi2EventInfo* eventInfo);\r
155 fmi2Status              fmi_enter_continuous_time_mode(fmi2Component c);\r
156 \r
157 fmi2Status              fmi_set_time(\r
158                                                                                                         fmi2Component c,\r
159                                                                                                         fmi2Real fmitime);\r
160 \r
161 fmi2Status              fmi_set_continuous_states(\r
162                                                                                                         fmi2Component c,\r
163                                                                                                         const fmi2Real x[],\r
164                                                                                                         size_t nx);\r
165 \r
166 fmi2Status fmi_completed_integrator_step(\r
167     fmi2Component c,\r
168     fmi2Boolean noSetFMUStatePriorToCurrentPoint,\r
169     fmi2Boolean* enterEventMode, fmi2Boolean* terminateSimulation);\r
170 \r
171 fmi2Status              fmi_get_derivatives(\r
172                                                                                                         fmi2Component c,\r
173                                                                                                         fmi2Real derivatives[],\r
174                                                                                                         size_t nx);\r
175 \r
176 fmi2Status              fmi_get_event_indicators(\r
177                                                                                                         fmi2Component c,\r
178                                                                                                         fmi2Real eventIndicators[],\r
179                                                                                                         size_t ni);\r
180 \r
181 fmi2Status              fmi_get_continuous_states(\r
182                                                                                                         fmi2Component c,\r
183                                                                                                         fmi2Real states[],\r
184                                                                                                         size_t nx);\r
185 \r
186 fmi2Status              fmi_get_nominals_of_continuousstates(   \r
187                                                                                                         fmi2Component c,\r
188                                                                                                         fmi2Real x_nominal[],\r
189                                                                                                         size_t nx);\r
190 \r
191 \r
192 /* FMI 2.0 CS Functions */\r
193 #ifdef fmi2Functions_h\r
194 \r
195 const char*             fmi_get_types_platform();\r
196 \r
197 void                    fmi_free_slave_instance(\r
198                                                                                                         fmi2Component c);\r
199 \r
200 fmi2Status              fmi_set_real_input_derivatives(\r
201                                                                                                         fmi2Component c,\r
202                                                                                                         const fmi2ValueReference vr[],\r
203                                                                                                         size_t nvr,\r
204                                                                                                         const fmi2Integer order[],\r
205                                                                                                         const fmi2Real value[]);\r
206 \r
207 fmi2Status              fmi_get_real_output_derivatives(\r
208                                                                                                         fmi2Component c,\r
209                                                                                                         const fmi2ValueReference vr[],\r
210                                                                                                         size_t nvr,\r
211                                                                                                         const fmi2Integer order[],\r
212                                                                                                         fmi2Real value[]);\r
213 \r
214 fmi2Status              fmi_cancel_step(\r
215                                                                                                         fmi2Component c);\r
216 fmi2Status              fmi_do_step(\r
217                                                                                                         fmi2Component c,\r
218                                                                                                         fmi2Real currentCommunicationPoint,\r
219                                                                                                         fmi2Real communicationStepSize,\r
220                                                                                                         fmi2Boolean newStep);\r
221 \r
222 fmi2Status              fmi_get_status(\r
223                                                                                                         fmi2Component c,\r
224                                                                                                         const fmi2StatusKind s,\r
225                                                                                                         fmi2Status*  value);\r
226 \r
227 fmi2Status              fmi_get_real_status(\r
228                                                                                                         fmi2Component c,\r
229                                                                                                         const fmi2StatusKind s,\r
230                                                                                                         fmi2Real*    value);\r
231 \r
232 fmi2Status              fmi_get_integer_status(\r
233                                                                                                         fmi2Component c,\r
234                                                                                                         const fmi2StatusKind s,\r
235                                                                                                         fmi2Integer* value);\r
236 \r
237 fmi2Status              fmi_get_boolean_status(\r
238                                                                                                         fmi2Component c,\r
239                                                                                                         const fmi2StatusKind s,\r
240                                                                                                         fmi2Boolean* value);\r
241 \r
242 fmi2Status              fmi_get_string_status(\r
243                                                                                                         fmi2Component c,\r
244                                                                                                         const fmi2StatusKind s,\r
245                                                                                                         fmi2String*  value);\r
246 \r
247 #endif /* End of fmi2Functions_h */\r
248 #endif /* End of header FMU2_MODEL_H_ */\r