44 int triggerable[N_ZERO];
55 const double* arg[SZ_ARG];
66 for (i = 0; i < N_X; ++i) m->
x[i] = m->
v[x_vr[i]];
67 for (i = 0; i < N_Z; ++i) m->
z[i] = m->
v[z_vr[i]];
68 for (i = 0; i < N_P; ++i) m->
p[i] = m->
v[p_vr[i]];
69 for (i = 0; i < N_U; ++i) m->
u[i] = m->
v[u_vr[i]];
87 mem = MODELNAME_checkout();
88 flag = MODELNAME(m->
arg, m->
res, m->
iw, m->
w, mem);
89 MODELNAME_release(mem);
92 for (i = 0; i < N_X; ++i) m->
v[xdot_vr[i]] = m->
xdot[i];
93 for (i = 0; i < N_Z; ++i) m->
v[alg_vr[i]] = m->
alg[i];
94 for (i = 0; i < N_Y; ++i) m->
v[y_vr[i]] = m->
y[i];
95 for (i = 0; i < N_ZERO; ++i) m->
v[zero_vr[i]] = m->
zero[i];
105 for (i = 0; i < N_X; ++i) m->
dx[i] = m->
d[x_vr[i]];
106 for (i = 0; i < N_Z; ++i) m->
dz[i] = m->
d[z_vr[i]];
107 for (i = 0; i < N_P; ++i) m->
dp[i] = m->
d[p_vr[i]];
108 for (i = 0; i < N_U; ++i) m->
du[i] = m->
d[u_vr[i]];
139 mem = fwd1_MODELNAME_checkout();
140 flag = fwd1_MODELNAME(m->
arg, m->
res, m->
iw, m->
w, mem);
141 fwd1_MODELNAME_release(mem);
144 for (i = 0; i < N_X; ++i) m->
d[xdot_vr[i]] = m->
dxdot[i];
145 for (i = 0; i < N_Z; ++i) m->
d[alg_vr[i]] = m->
dalg[i];
146 for (i = 0; i < N_Y; ++i) m->
d[y_vr[i]] = m->
dy[i];
147 for (i = 0; i < N_ZERO; ++i) m->
d[zero_vr[i]] = m->
dzero[i];
158 for (i = 0; i < N_X; ++i) m->
dxdot[i] = m->
d[xdot_vr[i]];
159 for (i = 0; i < N_Z; ++i) m->
dalg[i] = m->
d[alg_vr[i]];
160 for (i = 0; i < N_Y; ++i) m->
dy[i] = m->
d[y_vr[i]];
161 for (i = 0; i < N_ZERO; ++i) m->
dzero[i] = m->
d[zero_vr[i]];
164 for (i = 0; i < N_X; ++i) m->
dx[i] = 0;
165 for (i = 0; i < N_Z; ++i) m->
dz[i] = 0;
166 for (i = 0; i < N_P; ++i) m->
dp[i] = 0;
167 for (i = 0; i < N_U; ++i) m->
du[i] = 0;
198 mem = adj1_MODELNAME_checkout();
199 flag = adj1_MODELNAME(m->
arg, m->
res, m->
iw, m->
w, mem);
200 adj1_MODELNAME_release(mem);
203 for (i = 0; i < N_X; ++i) m->
d[x_vr[i]] = m->
dx[i];
204 for (i = 0; i < N_Z; ++i) m->
d[z_vr[i]] = m->
dz[i];
205 for (i = 0; i < N_P; ++i) m->
d[p_vr[i]] = m->
dp[i];
206 for (i = 0; i < N_U; ++i) m->
d[u_vr[i]] = m->
du[i];
224 for (i = 0; i < N_X; ++i) m->
x[i] = m->
v[x_vr[i]];
225 for (i = 0; i < N_Z; ++i) m->
z[i] = m->
v[z_vr[i]];
226 for (i = 0; i < N_P; ++i) m->
p[i] = m->
v[p_vr[i]];
227 for (i = 0; i < N_U; ++i) m->
u[i] = m->
v[u_vr[i]];
231 m->
arg[i++] = &zeroind;
244 mem = transition_MODELNAME_checkout();
245 flag = transition_MODELNAME(m->
arg, m->
res, m->
iw, m->
w, mem);
246 transition_MODELNAME_release(mem);
249 for (i = 0; i < N_X; ++i) m->
v[x_vr[i]] = m->
xdot[i];
250 for (i = 0; i < N_Z; ++i) m->
v[z_vr[i]] = m->
alg[i];
256 FMI3_Export fmi3Status fmi3Reset(fmi3Instance instance) {
263 for (i = 0; i < SZ_MEM; ++i) m->
v[i] = start[i];
265 for (i = 0; i < SZ_MEM; ++i) m->
d[i] = 0;
272 for (i = 0; i < N_ZERO; ++i) m->
triggerable[i] = 0;
277 FMI3_Export fmi3Instance fmi3InstantiateModelExchange(
278 fmi3String instanceName,
279 fmi3String instantiationToken,
280 fmi3String resourcePath,
282 fmi3Boolean loggingOn,
283 fmi3InstanceEnvironment instanceEnvironment,
284 fmi3LogMessageCallback logMessage) {
291 (void)instanceEnvironment;
300 transition_MODELNAME_incref();
311 FMI3_Export fmi3Instance fmi3InstantiateCoSimulation(fmi3String instanceName,
312 fmi3String instantiationToken,
313 fmi3String resourcePath,
315 fmi3Boolean loggingOn,
316 fmi3Boolean eventModeUsed,
317 fmi3Boolean earlyReturnAllowed,
318 const fmi3ValueReference requiredIntermediateVariables[],
319 size_t nRequiredIntermediateVariables,
320 fmi3InstanceEnvironment instanceEnvironment,
321 fmi3LogMessageCallback logMessage,
322 fmi3IntermediateUpdateCallback intermediateUpdate) {
327 FMI3_Export fmi3Instance fmi3InstantiateScheduledExecution(fmi3String instanceName,
328 fmi3String instantiationToken,
329 fmi3String resourcePath,
331 fmi3Boolean loggingOn,
332 fmi3InstanceEnvironment instanceEnvironment,
333 fmi3LogMessageCallback logMessage,
334 fmi3ClockUpdateCallback clockUpdate,
335 fmi3LockPreemptionCallback lockPreemption,
336 fmi3UnlockPreemptionCallback unlockPreemption) {
341 FMI3_Export fmi3Status fmi3GetNumberOfVariableDependencies(fmi3Instance instance,
342 fmi3ValueReference valueReference,
343 size_t* nDependencies) {
348 FMI3_Export fmi3Status fmi3GetVariableDependencies(fmi3Instance instance,
349 fmi3ValueReference dependent,
350 size_t elementIndicesOfDependent[],
351 fmi3ValueReference independents[],
352 size_t elementIndicesOfIndependents[],
353 fmi3DependencyKind dependencyKinds[],
354 size_t nDependencies) {
359 FMI3_Export fmi3Status fmi3GetFMUState(fmi3Instance instance,
360 fmi3FMUState* FMUState) {
365 FMI3_Export fmi3Status fmi3SetFMUState(fmi3Instance instance,
366 fmi3FMUState FMUState) {
371 FMI3_Export fmi3Status fmi3FreeFMUState(fmi3Instance instance,
372 fmi3FMUState* FMUState) {
377 FMI3_Export fmi3Status fmi3SerializedFMUStateSize(fmi3Instance instance,
378 fmi3FMUState FMUState,
384 FMI3_Export fmi3Status fmi3SerializeFMUState(fmi3Instance instance,
385 fmi3FMUState FMUState,
386 fmi3Byte serializedState[],
392 FMI3_Export fmi3Status fmi3DeserializeFMUState(fmi3Instance instance,
393 const fmi3Byte serializedState[],
395 fmi3FMUState* FMUState) {
400 FMI3_Export
void fmi3FreeInstance(fmi3Instance instance) {
407 transition_MODELNAME_decref();
412 FMI3_Export fmi3Status fmi3SetFloat64(
413 fmi3Instance instance,
414 const fmi3ValueReference valueReferences[],
415 size_t nValueReferences,
416 const fmi3Float64 values[],
420 size_t i, j, var_off, var_sz, val_ind;
421 fmi3ValueReference vr;
429 for (i = 0; i < nValueReferences; ++i) {
431 vr = valueReferences[i];
433 var_off = var_offset[vr];
434 var_sz = var_offset[vr + 1] - var_off;
436 for (j = 0; j < var_sz; ++j) m->
v[var_off + j] = values[val_ind++];
439 if (val_ind != nValues)
return fmi3Fatal;
444 FMI3_Export fmi3Status fmi3GetFloat64(
445 fmi3Instance instance,
446 const fmi3ValueReference valueReferences[],
447 size_t nValueReferences,
448 fmi3Float64 values[],
452 size_t i, j, var_off, var_sz, val_ind;
453 fmi3ValueReference vr;
459 if (evaluate(m))
return fmi3Error;
466 for (i = 0; i < nValueReferences; ++i) {
468 vr = valueReferences[i];
470 var_off = var_offset[vr];
471 var_sz = var_offset[vr + 1] - var_off;
473 for (j = 0; j < var_sz; ++j) values[val_ind++] = m->
v[var_off + j];
476 if (val_ind != nValues)
return fmi3Fatal;
481 FMI3_Export fmi3Status fmi3EnterInitializationMode(
482 fmi3Instance instance,
483 fmi3Boolean toleranceDefined,
484 fmi3Float64 tolerance,
485 fmi3Float64 startTime,
486 fmi3Boolean stopTimeDefined,
487 fmi3Float64 stopTime) {
491 (void)toleranceDefined;
493 (void)stopTimeDefined;
503 FMI3_Export fmi3Status fmi3ExitInitializationMode(fmi3Instance instance) {
510 FMI3_Export fmi3Status fmi3EnterContinuousTimeMode(fmi3Instance instance) {
517 FMI3_Export fmi3Status fmi3SetTime(fmi3Instance instance, fmi3Float64 time) {
528 FMI3_Export fmi3Status fmi3SetContinuousStates(
529 fmi3Instance instance,
530 const fmi3Float64 continuousStates[],
531 size_t nContinuousStates) {
532 return fmi3SetFloat64(instance, x_vr, N_X, continuousStates, nContinuousStates);
535 FMI3_Export fmi3Status fmi3GetContinuousStates(
536 fmi3Instance instance,
537 fmi3Float64 continuousStates[],
538 size_t nContinuousStates) {
539 return fmi3GetFloat64(instance, x_vr, N_X, continuousStates, nContinuousStates);
542 fmi3Status fmi3GetDirectionalDerivative(
543 fmi3Instance instance,
544 const fmi3ValueReference unknowns[],
546 const fmi3ValueReference knowns[],
548 const fmi3Float64 seed[],
550 fmi3Float64 sensitivity[],
551 size_t nSensitivity) {
554 size_t i, j, var_off, var_sz, val_ind;
555 fmi3ValueReference vr;
562 if (evaluate(m))
return fmi3Error;
568 for (i = 0; i < nKnowns; ++i) {
572 var_off = var_offset[vr];
573 var_sz = var_offset[vr + 1] - var_off;
575 for (j = 0; j < var_sz; ++j) m->
d[var_off + j] = seed[val_ind++];
578 if (val_ind != nSeed)
return fmi3Fatal;
580 flag = evaluate_forward(m);
583 for (i = 0; i < nUnknowns; ++i) {
587 var_off = var_offset[vr];
588 var_sz = var_offset[vr + 1] - var_off;
590 for (j = 0; j < var_sz; ++j) {
591 sensitivity[val_ind++] = m->
d[var_off + j];
592 m->
d[var_off + j] = 0;
596 if (val_ind != nSensitivity)
return fmi3Fatal;
599 for (i = 0; i < nKnowns; ++i) {
603 var_off = var_offset[vr];
604 var_sz = var_offset[vr + 1] - var_off;
606 for (j = 0; j < var_sz; ++j) m->
d[var_off + j] = 0;
609 if (flag)
return fmi3Error;
614 fmi3Status fmi3GetAdjointDerivative(
615 fmi3Instance instance,
616 const fmi3ValueReference unknowns[],
618 const fmi3ValueReference knowns[],
620 const fmi3Float64 seed[],
622 fmi3Float64 sensitivity[],
623 size_t nSensitivity) {
626 size_t i, j, var_off, var_sz, val_ind;
627 fmi3ValueReference vr;
634 if (evaluate(m))
return fmi3Error;
640 for (i = 0; i < nUnknowns; ++i) {
644 var_off = var_offset[vr];
645 var_sz = var_offset[vr + 1] - var_off;
647 for (j = 0; j < var_sz; ++j) m->
d[var_off + j] = seed[val_ind++];
650 if (val_ind != nSeed)
return fmi3Fatal;
652 flag = evaluate_adjoint(m);
655 for (i = 0; i < nKnowns; ++i) {
659 var_off = var_offset[vr];
660 var_sz = var_offset[vr + 1] - var_off;
662 for (j = 0; j < var_sz; ++j) {
663 sensitivity[val_ind++] = m->
d[var_off + j];
664 m->
d[var_off + j] = 0;
668 if (val_ind != nSensitivity)
return fmi3Fatal;
671 for (i = 0; i < nUnknowns; ++i) {
675 var_off = var_offset[vr];
676 var_sz = var_offset[vr + 1] - var_off;
678 for (j = 0; j < var_sz; ++j) m->
d[var_off + j] = 0;
681 if (flag)
return fmi3Error;
686 FMI3_Export
const char* fmi3GetVersion(
void) {
690 FMI3_Export fmi3Status fmi3SetDebugLogging(
691 fmi3Instance instance,
692 fmi3Boolean loggingOn,
694 const fmi3String categories[]) {
699 FMI3_Export fmi3Status fmi3Terminate(fmi3Instance instance) {
704 FMI3_Export fmi3Status fmi3GetFloat32(
705 fmi3Instance instance,
706 const fmi3ValueReference valueReferences[],
707 size_t nValueReferences,
708 fmi3Float32 values[],
714 FMI3_Export fmi3Status fmi3GetInt8(
715 fmi3Instance instance,
716 const fmi3ValueReference valueReferences[],
717 size_t nValueReferences,
724 FMI3_Export fmi3Status fmi3GetUInt8(
725 fmi3Instance instance,
726 const fmi3ValueReference valueReferences[],
727 size_t nValueReferences,
734 FMI3_Export fmi3Status fmi3GetInt16(
735 fmi3Instance instance,
736 const fmi3ValueReference valueReferences[],
737 size_t nValueReferences,
744 FMI3_Export fmi3Status fmi3GetUInt16(
745 fmi3Instance instance,
746 const fmi3ValueReference valueReferences[],
747 size_t nValueReferences,
754 FMI3_Export fmi3Status fmi3GetInt32(
755 fmi3Instance instance,
756 const fmi3ValueReference valueReferences[],
757 size_t nValueReferences,
764 FMI3_Export fmi3Status fmi3GetUInt32(
765 fmi3Instance instance,
766 const fmi3ValueReference valueReferences[],
767 size_t nValueReferences,
774 FMI3_Export fmi3Status fmi3GetInt64(
775 fmi3Instance instance,
776 const fmi3ValueReference valueReferences[],
777 size_t nValueReferences,
784 FMI3_Export fmi3Status fmi3GetUInt64(
785 fmi3Instance instance,
786 const fmi3ValueReference valueReferences[],
787 size_t nValueReferences,
794 FMI3_Export fmi3Status fmi3GetBoolean(
795 fmi3Instance instance,
796 const fmi3ValueReference valueReferences[],
797 size_t nValueReferences,
798 fmi3Boolean values[],
804 FMI3_Export fmi3Status fmi3GetString(
805 fmi3Instance instance,
806 const fmi3ValueReference valueReferences[],
807 size_t nValueReferences,
814 FMI3_Export fmi3Status fmi3GetBinary(
815 fmi3Instance instance,
816 const fmi3ValueReference valueReferences[],
817 size_t nValueReferences,
825 FMI3_Export fmi3Status fmi3GetClock(
826 fmi3Instance instance,
827 const fmi3ValueReference valueReferences[],
828 size_t nValueReferences,
829 fmi3Clock values[]) {
834 FMI3_Export fmi3Status fmi3SetFloat32(fmi3Instance instance,
835 const fmi3ValueReference valueReferences[],
836 size_t nValueReferences,
837 const fmi3Float32 values[],
843 FMI3_Export fmi3Status fmi3SetInt8(fmi3Instance instance,
844 const fmi3ValueReference valueReferences[],
845 size_t nValueReferences,
846 const fmi3Int8 values[],
852 FMI3_Export fmi3Status fmi3SetUInt8(fmi3Instance instance,
853 const fmi3ValueReference valueReferences[],
854 size_t nValueReferences,
855 const fmi3UInt8 values[],
861 FMI3_Export fmi3Status fmi3SetInt16(fmi3Instance instance,
862 const fmi3ValueReference valueReferences[],
863 size_t nValueReferences,
864 const fmi3Int16 values[],
870 FMI3_Export fmi3Status fmi3SetUInt16(fmi3Instance instance,
871 const fmi3ValueReference valueReferences[],
872 size_t nValueReferences,
873 const fmi3UInt16 values[],
879 FMI3_Export fmi3Status fmi3SetInt32(fmi3Instance instance,
880 const fmi3ValueReference valueReferences[],
881 size_t nValueReferences,
882 const fmi3Int32 values[],
888 FMI3_Export fmi3Status fmi3SetUInt32(fmi3Instance instance,
889 const fmi3ValueReference valueReferences[],
890 size_t nValueReferences,
891 const fmi3UInt32 values[],
897 FMI3_Export fmi3Status fmi3SetInt64(fmi3Instance instance,
898 const fmi3ValueReference valueReferences[],
899 size_t nValueReferences,
900 const fmi3Int64 values[],
906 FMI3_Export fmi3Status fmi3SetUInt64(fmi3Instance instance,
907 const fmi3ValueReference valueReferences[],
908 size_t nValueReferences,
909 const fmi3UInt64 values[],
915 FMI3_Export fmi3Status fmi3SetBoolean(fmi3Instance instance,
916 const fmi3ValueReference valueReferences[],
917 size_t nValueReferences,
918 const fmi3Boolean values[],
924 FMI3_Export fmi3Status fmi3SetString(fmi3Instance instance,
925 const fmi3ValueReference valueReferences[],
926 size_t nValueReferences,
927 const fmi3String values[],
933 FMI3_Export fmi3Status fmi3SetBinary(fmi3Instance instance,
934 const fmi3ValueReference valueReferences[],
935 size_t nValueReferences,
936 const size_t valueSizes[],
937 const fmi3Binary values[],
943 FMI3_Export fmi3Status fmi3SetClock(fmi3Instance instance,
944 const fmi3ValueReference valueReferences[],
945 size_t nValueReferences,
946 const fmi3Clock values[]) {
951 FMI3_Export fmi3Status fmi3SetIntervalDecimal(fmi3Instance instance,
952 const fmi3ValueReference valueReferences[],
953 size_t nValueReferences,
954 const fmi3Float64 intervals[]) {
959 FMI3_Export fmi3Status fmi3GetIntervalDecimal(fmi3Instance instance,
960 const fmi3ValueReference valueReferences[],
961 size_t nValueReferences,
962 fmi3Float64 intervals[],
963 fmi3IntervalQualifier qualifiers[]) {
968 FMI3_Export fmi3Status fmi3GetShiftDecimal(fmi3Instance instance,
969 const fmi3ValueReference valueReferences[],
970 size_t nValueReferences,
971 fmi3Float64 shifts[]) {
976 FMI3_Export fmi3Status fmi3SetShiftDecimal(fmi3Instance instance,
977 const fmi3ValueReference valueReferences[],
978 size_t nValueReferences,
979 const fmi3Float64 shifts[]) {
984 FMI3_Export fmi3Status fmi3GetNumberOfContinuousStates(fmi3Instance instance,
985 size_t* nContinuousStates) {
986 if (nContinuousStates) *nContinuousStates = N_X;
990 FMI3_Export fmi3Status fmi3GetNumberOfEventIndicators(fmi3Instance instance,
991 size_t* nEventIndicators) {
992 if (nEventIndicators) *nEventIndicators = N_ZERO;
996 FMI3_Export fmi3Status fmi3GetContinuousStateDerivatives(fmi3Instance instance,
997 fmi3Float64 derivatives[],
size_t nContinuousStates) {
998 (void)nContinuousStates;
999 return fmi3GetFloat64(instance, xdot_vr, N_X, derivatives, N_X);
1002 FMI3_Export fmi3Status fmi3GetNominalsOfContinuousStates(fmi3Instance instance,
1003 fmi3Float64 nominals[],
size_t nContinuousStates) {
1006 for (i = 0; i < nContinuousStates; ++i) nominals[i] = 1;
1010 FMI3_Export fmi3Status fmi3GetEventIndicators(fmi3Instance instance,
1011 fmi3Float64 eventIndicators[],
1012 size_t nEventIndicators) {
1018 fmi3Float64 most_negative;
1020 (void)nEventIndicators;
1024 flag = fmi3GetFloat64(instance, zero_vr, N_ZERO, eventIndicators, N_ZERO);
1027 for (i = 0; i < N_ZERO; ++i) {
1030 if (eventIndicators[i] < most_negative) {
1031 most_negative = eventIndicators[i];
1034 }
else if (eventIndicators[i] > 1e-6) {
1047 FMI3_Export fmi3Status fmi3CompletedIntegratorStep(fmi3Instance instance,
1048 fmi3Boolean noSetFMUStatePriorToCurrentPoint,
1049 fmi3Boolean* enterEventMode,
1050 fmi3Boolean* terminateSimulation) {
1055 FMI3_Export fmi3Status fmi3EnterEventMode(fmi3Instance instance) {
1063 if (m->
zeroind < 0)
return fmi3OK;
1065 if (evaluate_transition(m))
return fmi3Error;
1072 for (i = 0; i < N_ZERO; ++i) m->
triggerable[i] = 0;
1078 FMI3_Export fmi3Status fmi3UpdateDiscreteStates(fmi3Instance instance,
1079 fmi3Boolean* discreteStatesNeedUpdate,
1080 fmi3Boolean* terminateSimulation,
1081 fmi3Boolean* nominalsOfContinuousStatesChanged,
1082 fmi3Boolean* valuesOfContinuousStatesChanged,
1083 fmi3Boolean* nextEventTimeDefined,
1084 fmi3Float64* nextEventTime) {
1090 *discreteStatesNeedUpdate = fmi3False;
1091 *terminateSimulation = fmi3False;
1092 *nominalsOfContinuousStatesChanged = fmi3False;
1094 *nextEventTimeDefined = fmi3False;
1101 FMI3_Export fmi3Status fmi3EnterConfigurationMode(fmi3Instance instance) {
1106 FMI3_Export fmi3Status fmi3ExitConfigurationMode(fmi3Instance instance) {
1111 FMI3_Export fmi3Status fmi3GetIntervalFraction(fmi3Instance instance,
1112 const fmi3ValueReference valueReferences[],
1113 size_t nValueReferences,
1114 fmi3UInt64 counters[],
1115 fmi3UInt64 resolutions[],
1116 fmi3IntervalQualifier qualifiers[]) {
1121 FMI3_Export fmi3Status fmi3GetShiftFraction(fmi3Instance instance,
1122 const fmi3ValueReference valueReferences[],
1123 size_t nValueReferences,
1124 fmi3UInt64 counters[],
1125 fmi3UInt64 resolutions[]) {
1130 FMI3_Export fmi3Status fmi3SetIntervalFraction(fmi3Instance instance,
1131 const fmi3ValueReference valueReferences[],
1132 size_t nValueReferences,
1133 const fmi3UInt64 counters[],
1134 const fmi3UInt64 resolutions[]) {
1139 FMI3_Export fmi3Status fmi3SetShiftFraction(fmi3Instance instance,
1140 const fmi3ValueReference valueReferences[],
1141 size_t nValueReferences,
1142 const fmi3UInt64 counters[],
1143 const fmi3UInt64 resolutions[]) {
1148 FMI3_Export fmi3Status fmi3EvaluateDiscreteStates(fmi3Instance instance) {
1153 FMI3_Export fmi3Status fmi3EnterStepMode(fmi3Instance instance) {
1158 FMI3_Export fmi3Status fmi3GetOutputDerivatives(fmi3Instance instance,
1159 const fmi3ValueReference valueReferences[],
1160 size_t nValueReferences,
1161 const fmi3Int32 orders[],
1162 fmi3Float64 values[],
1168 FMI3_Export fmi3Status fmi3DoStep(fmi3Instance instance,
1169 fmi3Float64 currentCommunicationPoint,
1170 fmi3Float64 communicationStepSize,
1171 fmi3Boolean noSetFMUStatePriorToCurrentPoint,
1172 fmi3Boolean* eventHandlingNeeded,
1173 fmi3Boolean* terminateSimulation,
1174 fmi3Boolean* earlyReturn,
1175 fmi3Float64* lastSuccessfulTime) {
1180 FMI3_Export fmi3Status fmi3ActivateModelPartition(fmi3Instance instance,
1181 fmi3ValueReference clockReference,
1182 fmi3Float64 activationTime) {
const char * instance_name
int continuous_states_changed
const double * arg[SZ_ARG]