forked from precice/tutorials
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFMI3.h
560 lines (456 loc) · 29.3 KB
/
FMI3.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include "FMI.h"
#include "fmi3FunctionTypes.h"
struct FMI3Functions_ {
fmi3Boolean eventModeUsed;
fmi3Boolean discreteStatesNeedUpdate;
fmi3Boolean terminateSimulation;
fmi3Boolean nominalsOfContinuousStatesChanged;
fmi3Boolean valuesOfContinuousStatesChanged;
fmi3Boolean nextEventTimeDefined;
fmi3Float64 nextEventTime;
/***************************************************
Common Functions for FMI 3.0
****************************************************/
/* Inquire version numbers and set debug logging */
fmi3GetVersionTYPE * fmi3GetVersion;
fmi3SetDebugLoggingTYPE *fmi3SetDebugLogging;
/* Creation and destruction of FMU instances */
fmi3InstantiateModelExchangeTYPE * fmi3InstantiateModelExchange;
fmi3InstantiateCoSimulationTYPE * fmi3InstantiateCoSimulation;
fmi3InstantiateScheduledExecutionTYPE *fmi3InstantiateScheduledExecution;
fmi3FreeInstanceTYPE * fmi3FreeInstance;
/* Enter and exit initialization mode, terminate and reset */
fmi3EnterInitializationModeTYPE *fmi3EnterInitializationMode;
fmi3ExitInitializationModeTYPE * fmi3ExitInitializationMode;
fmi3EnterEventModeTYPE * fmi3EnterEventMode;
fmi3TerminateTYPE * fmi3Terminate;
fmi3ResetTYPE * fmi3Reset;
/* Getting and setting variable values */
fmi3GetFloat32TYPE *fmi3GetFloat32;
fmi3GetFloat64TYPE *fmi3GetFloat64;
fmi3GetInt8TYPE * fmi3GetInt8;
fmi3GetUInt8TYPE * fmi3GetUInt8;
fmi3GetInt16TYPE * fmi3GetInt16;
fmi3GetUInt16TYPE * fmi3GetUInt16;
fmi3GetInt32TYPE * fmi3GetInt32;
fmi3GetUInt32TYPE * fmi3GetUInt32;
fmi3GetInt64TYPE * fmi3GetInt64;
fmi3GetUInt64TYPE * fmi3GetUInt64;
fmi3GetBooleanTYPE *fmi3GetBoolean;
fmi3GetStringTYPE * fmi3GetString;
fmi3GetBinaryTYPE * fmi3GetBinary;
fmi3GetClockTYPE * fmi3GetClock;
fmi3SetFloat32TYPE *fmi3SetFloat32;
fmi3SetFloat64TYPE *fmi3SetFloat64;
fmi3SetInt8TYPE * fmi3SetInt8;
fmi3SetUInt8TYPE * fmi3SetUInt8;
fmi3SetInt16TYPE * fmi3SetInt16;
fmi3SetUInt16TYPE * fmi3SetUInt16;
fmi3SetInt32TYPE * fmi3SetInt32;
fmi3SetUInt32TYPE * fmi3SetUInt32;
fmi3SetInt64TYPE * fmi3SetInt64;
fmi3SetUInt64TYPE * fmi3SetUInt64;
fmi3SetBooleanTYPE *fmi3SetBoolean;
fmi3SetStringTYPE * fmi3SetString;
fmi3SetBinaryTYPE * fmi3SetBinary;
fmi3SetClockTYPE * fmi3SetClock;
/* Getting Variable Dependency Information */
fmi3GetNumberOfVariableDependenciesTYPE *fmi3GetNumberOfVariableDependencies;
fmi3GetVariableDependenciesTYPE * fmi3GetVariableDependencies;
/* Getting and setting the internal FMU state */
fmi3GetFMUStateTYPE * fmi3GetFMUState;
fmi3SetFMUStateTYPE * fmi3SetFMUState;
fmi3FreeFMUStateTYPE * fmi3FreeFMUState;
fmi3SerializedFMUStateSizeTYPE *fmi3SerializedFMUStateSize;
fmi3SerializeFMUStateTYPE * fmi3SerializeFMUState;
fmi3DeserializeFMUStateTYPE * fmi3DeserializeFMUState;
/* Getting partial derivatives */
fmi3GetDirectionalDerivativeTYPE *fmi3GetDirectionalDerivative;
fmi3GetAdjointDerivativeTYPE * fmi3GetAdjointDerivative;
/* Entering and exiting the Configuration or Reconfiguration Mode */
fmi3EnterConfigurationModeTYPE *fmi3EnterConfigurationMode;
fmi3ExitConfigurationModeTYPE * fmi3ExitConfigurationMode;
/* Clock related functions */
fmi3GetIntervalDecimalTYPE * fmi3GetIntervalDecimal;
fmi3GetIntervalFractionTYPE * fmi3GetIntervalFraction;
fmi3GetShiftDecimalTYPE * fmi3GetShiftDecimal;
fmi3GetShiftFractionTYPE * fmi3GetShiftFraction;
fmi3SetIntervalDecimalTYPE * fmi3SetIntervalDecimal;
fmi3SetIntervalFractionTYPE * fmi3SetIntervalFraction;
fmi3SetShiftDecimalTYPE * fmi3SetShiftDecimal;
fmi3SetShiftFractionTYPE * fmi3SetShiftFraction;
fmi3EvaluateDiscreteStatesTYPE *fmi3EvaluateDiscreteStates;
fmi3UpdateDiscreteStatesTYPE * fmi3UpdateDiscreteStates;
/***************************************************
Functions for Model Exchange
****************************************************/
fmi3EnterContinuousTimeModeTYPE *fmi3EnterContinuousTimeMode;
fmi3CompletedIntegratorStepTYPE *fmi3CompletedIntegratorStep;
/* Providing independent variables and re-initialization of caching */
fmi3SetTimeTYPE * fmi3SetTime;
fmi3SetContinuousStatesTYPE *fmi3SetContinuousStates;
/* Evaluation of the model equations */
fmi3GetContinuousStateDerivativesTYPE *fmi3GetContinuousStateDerivatives;
fmi3GetEventIndicatorsTYPE * fmi3GetEventIndicators;
fmi3GetContinuousStatesTYPE * fmi3GetContinuousStates;
fmi3GetNominalsOfContinuousStatesTYPE *fmi3GetNominalsOfContinuousStates;
fmi3GetNumberOfEventIndicatorsTYPE * fmi3GetNumberOfEventIndicators;
fmi3GetNumberOfContinuousStatesTYPE * fmi3GetNumberOfContinuousStates;
/***************************************************
Functions for FMI 3.0 for Co-Simulation
****************************************************/
fmi3EnterStepModeTYPE * fmi3EnterStepMode;
fmi3GetOutputDerivativesTYPE *fmi3GetOutputDerivatives;
fmi3DoStepTYPE * fmi3DoStep;
/***************************************************
Functions for Scheduled Execution
****************************************************/
fmi3ActivateModelPartitionTYPE *fmi3ActivateModelPartition;
};
/***************************************************
Common Functions
****************************************************/
/* Inquire version numbers and setting logging status */
FMI_STATIC const char *FMI3GetVersion(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3SetDebugLogging(FMIInstance * instance,
fmi3Boolean loggingOn,
size_t nCategories,
const fmi3String categories[]);
/* Creation and destruction of FMU instances and setting debug status */
FMI_STATIC FMIStatus FMI3InstantiateModelExchange(
FMIInstance *instance,
fmi3String instantiationToken,
fmi3String resourcePath,
fmi3Boolean visible,
fmi3Boolean loggingOn);
FMI_STATIC FMIStatus FMI3InstantiateCoSimulation(
FMIInstance * instance,
fmi3String instantiationToken,
fmi3String resourcePath,
fmi3Boolean visible,
fmi3Boolean loggingOn,
fmi3Boolean eventModeUsed,
fmi3Boolean earlyReturnAllowed,
const fmi3ValueReference requiredIntermediateVariables[],
size_t nRequiredIntermediateVariables,
fmi3IntermediateUpdateCallback intermediateUpdate);
FMI_STATIC FMIStatus FMI3InstantiateScheduledExecution(
FMIInstance * instance,
fmi3String instantiationToken,
fmi3String resourcePath,
fmi3Boolean visible,
fmi3Boolean loggingOn,
fmi3InstanceEnvironment instanceEnvironment,
fmi3LogMessageCallback logMessage,
fmi3ClockUpdateCallback clockUpdate,
fmi3LockPreemptionCallback lockPreemption,
fmi3UnlockPreemptionCallback unlockPreemption);
FMI_STATIC FMIStatus FMI3FreeInstance(FMIInstance *instance);
/* Enter and exit initialization mode, enter event mode, terminate and reset */
FMI_STATIC FMIStatus FMI3EnterInitializationMode(FMIInstance *instance,
fmi3Boolean toleranceDefined,
fmi3Float64 tolerance,
fmi3Float64 startTime,
fmi3Boolean stopTimeDefined,
fmi3Float64 stopTime);
FMI_STATIC FMIStatus FMI3ExitInitializationMode(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3EnterEventMode(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3Terminate(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3Reset(FMIInstance *instance);
/* Getting and setting variable values */
FMI_STATIC FMIStatus FMI3GetFloat32(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Float32 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetFloat64(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Float64 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetInt8(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Int8 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetUInt8(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3UInt8 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetInt16(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Int16 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetUInt16(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3UInt16 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetInt32(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Int32 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetUInt32(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3UInt32 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetInt64(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Int64 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetUInt64(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3UInt64 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetBoolean(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Boolean values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetString(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3String values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetBinary(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
size_t sizes[],
fmi3Binary values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3GetClock(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Clock values[]);
FMI_STATIC FMIStatus FMI3SetFloat32(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Float32 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetFloat64(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Float64 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetInt8(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Int8 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetUInt8(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3UInt8 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetInt16(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Int16 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetUInt16(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3UInt16 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetInt32(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Int32 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetUInt32(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3UInt32 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetInt64(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Int64 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetUInt64(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3UInt64 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetBoolean(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Boolean values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetString(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3String values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetBinary(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const size_t sizes[],
const fmi3Binary values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3SetClock(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Clock values[]);
/* Getting Variable Dependency Information */
FMI_STATIC FMIStatus FMI3GetNumberOfVariableDependencies(FMIInstance * instance,
fmi3ValueReference valueReference,
size_t * nDependencies);
FMI_STATIC FMIStatus FMI3GetVariableDependencies(FMIInstance * instance,
fmi3ValueReference dependent,
size_t elementIndicesOfDependent[],
fmi3ValueReference independents[],
size_t elementIndicesOfIndependents[],
fmi3DependencyKind dependencyKinds[],
size_t nDependencies);
/* Getting and setting the internal FMU state */
FMI_STATIC FMIStatus FMI3GetFMUState(FMIInstance *instance, fmi3FMUState *FMUState);
FMI_STATIC FMIStatus FMI3SetFMUState(FMIInstance *instance, fmi3FMUState FMUState);
FMI_STATIC FMIStatus FMI3FreeFMUState(FMIInstance *instance, fmi3FMUState *FMUState);
FMI_STATIC FMIStatus FMI3SerializedFMUStateSize(FMIInstance *instance,
fmi3FMUState FMUState,
size_t * size);
FMI_STATIC FMIStatus FMI3SerializeFMUState(FMIInstance *instance,
fmi3FMUState FMUState,
fmi3Byte serializedState[],
size_t size);
FMI_STATIC FMIStatus FMI3DeserializeFMUState(FMIInstance * instance,
const fmi3Byte serializedState[],
size_t size,
fmi3FMUState * FMUState);
/* Getting partial derivatives */
FMI_STATIC FMIStatus FMI3GetDirectionalDerivative(FMIInstance * instance,
const fmi3ValueReference unknowns[],
size_t nUnknowns,
const fmi3ValueReference knowns[],
size_t nKnowns,
const fmi3Float64 seed[],
size_t nSeed,
fmi3Float64 sensitivity[],
size_t nSensitivity);
FMI_STATIC FMIStatus FMI3GetAdjointDerivative(FMIInstance * instance,
const fmi3ValueReference unknowns[],
size_t nUnknowns,
const fmi3ValueReference knowns[],
size_t nKnowns,
const fmi3Float64 seed[],
size_t nSeed,
fmi3Float64 sensitivity[],
size_t nSensitivity);
/* Entering and exiting the Configuration or Reconfiguration Mode */
FMI_STATIC FMIStatus FMI3EnterConfigurationMode(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3ExitConfigurationMode(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3GetIntervalDecimal(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Float64 intervals[],
fmi3IntervalQualifier qualifiers[]);
FMI_STATIC FMIStatus FMI3GetIntervalFraction(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3UInt64 intervalCounters[],
fmi3UInt64 resolutions[],
fmi3IntervalQualifier qualifiers[]);
FMI_STATIC FMIStatus FMI3GetShiftDecimal(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3Float64 shifts[]);
FMI_STATIC FMIStatus FMI3GetShiftFraction(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
fmi3UInt64 shiftCounters[],
fmi3UInt64 resolutions[]);
FMI_STATIC FMIStatus FMI3SetIntervalDecimal(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Float64 intervals[]);
FMI_STATIC FMIStatus FMI3SetIntervalFraction(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3UInt64 intervalCounters[],
const fmi3UInt64 resolutions[]);
FMI_STATIC FMIStatus FMI3SetShiftDecimal(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Float64 shifts[]);
FMI_STATIC FMIStatus FMI3SetShiftFraction(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3UInt64 shiftCounters[],
const fmi3UInt64 resolutions[]);
FMI_STATIC FMIStatus FMI3EvaluateDiscreteStates(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3UpdateDiscreteStates(FMIInstance *instance,
fmi3Boolean *discreteStatesNeedUpdate,
fmi3Boolean *terminateSimulation,
fmi3Boolean *nominalsOfContinuousStatesChanged,
fmi3Boolean *valuesOfContinuousStatesChanged,
fmi3Boolean *nextEventTimeDefined,
fmi3Float64 *nextEventTime);
/***************************************************
Functions for Model Exchange
****************************************************/
FMI_STATIC FMIStatus FMI3EnterContinuousTimeMode(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3CompletedIntegratorStep(FMIInstance *instance,
fmi3Boolean noSetFMUStatePriorToCurrentPoint,
fmi3Boolean *enterEventMode,
fmi3Boolean *terminateSimulation);
/* Providing independent variables and re-initialization of caching */
FMI_STATIC FMIStatus FMI3SetTime(FMIInstance *instance, fmi3Float64 time);
FMI_STATIC FMIStatus FMI3SetContinuousStates(FMIInstance * instance,
const fmi3Float64 continuousStates[],
size_t nContinuousStates);
/* Evaluation of the model equations */
FMI_STATIC FMIStatus FMI3GetContinuousStateDerivatives(FMIInstance *instance,
fmi3Float64 derivatives[],
size_t nContinuousStates);
FMI_STATIC FMIStatus FMI3GetEventIndicators(FMIInstance *instance,
fmi3Float64 eventIndicators[],
size_t nEventIndicators);
FMI_STATIC FMIStatus FMI3GetContinuousStates(FMIInstance *instance,
fmi3Float64 continuousStates[],
size_t nContinuousStates);
FMI_STATIC FMIStatus FMI3GetNominalsOfContinuousStates(FMIInstance *instance,
fmi3Float64 nominals[],
size_t nContinuousStates);
FMI_STATIC FMIStatus FMI3GetNumberOfEventIndicators(FMIInstance *instance,
size_t * nEventIndicators);
FMI_STATIC FMIStatus FMI3GetNumberOfContinuousStates(FMIInstance *instance,
size_t * nContinuousStates);
/***************************************************
Functions for Co-Simulation
****************************************************/
/* Simulating the FMU */
FMI_STATIC FMIStatus FMI3EnterStepMode(FMIInstance *instance);
FMI_STATIC FMIStatus FMI3GetOutputDerivatives(FMIInstance * instance,
const fmi3ValueReference valueReferences[],
size_t nValueReferences,
const fmi3Int32 orders[],
fmi3Float64 values[],
size_t nValues);
FMI_STATIC FMIStatus FMI3DoStep(FMIInstance *instance,
fmi3Float64 currentCommunicationPoint,
fmi3Float64 communicationStepSize,
fmi3Boolean noSetFMUStatePriorToCurrentPoint,
fmi3Boolean *eventHandlingNeeded,
fmi3Boolean *terminateSimulation,
fmi3Boolean *earlyReturn,
fmi3Float64 *lastSuccessfulTime);
/***************************************************
Functions for Scheduled Execution
****************************************************/
FMI_STATIC FMIStatus FMI3ActivateModelPartition(FMIInstance * instance,
fmi3ValueReference clockReference,
fmi3Float64 activationTime);
#ifdef __cplusplus
} /* end of extern "C" { */
#endif