]> gerrit.simantics Code Review - simantics/fmil.git/blob - org.simantics.fmil.core/native/FMILibrary/src/CAPI/src/FMI2/fmi2_capi_me.c
Add FMILibrary-2.0.3 to org.simantics.fmil.core\native.
[simantics/fmil.git] / org.simantics.fmil.core / native / FMILibrary / src / CAPI / src / FMI2 / fmi2_capi_me.c
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     This program is distributed in the hope that it will be useful,\r
8     but WITHOUT ANY WARRANTY; without even the implied warranty of\r
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
10     FMILIB_License.txt file for more details.\r
11 \r
12     You should have received a copy of the FMILIB_License.txt file\r
13     along with this program. If not, contact Modelon AB <http://www.modelon.com>.\r
14 */\r
15 \r
16 #include <assert.h>\r
17 #include <FMI2/fmi2_capi.h>\r
18 #include <FMI2/fmi2_capi_impl.h>\r
19 \r
20 \r
21 fmi2_status_t fmi2_capi_enter_event_mode(fmi2_capi_t* fmu)\r
22 {\r
23     assert(fmu); assert(fmu->c);\r
24     jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2EnterEventMode");\r
25     return fmu->fmi2EnterEventMode(fmu->c);\r
26 }\r
27 \r
28 fmi2_status_t fmi2_capi_new_discrete_states(fmi2_capi_t* fmu, fmi2_event_info_t* eventInfo)\r
29 {\r
30     assert(fmu); assert(fmu->c);\r
31     jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2NewDiscreteStates");\r
32     return fmu->fmi2NewDiscreteStates(fmu->c, eventInfo);\r
33 }\r
34 \r
35 fmi2_status_t fmi2_capi_enter_continuous_time_mode(fmi2_capi_t* fmu)\r
36 {\r
37     assert(fmu); assert(fmu->c);\r
38     jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2EnterContinuousTimeMode");\r
39     return fmu->fmi2EnterContinuousTimeMode(fmu->c);\r
40 }\r
41 \r
42 fmi2_status_t fmi2_capi_set_time(fmi2_capi_t* fmu, fmi2_real_t time)\r
43 {\r
44         assert(fmu);\r
45         jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2SetTime");\r
46         return fmu->fmi2SetTime(fmu->c, time);\r
47 }\r
48 \r
49 fmi2_status_t fmi2_capi_set_continuous_states(fmi2_capi_t* fmu, const fmi2_real_t x[], size_t nx)\r
50 {\r
51         assert(fmu);\r
52         jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2SetContinuousStates");\r
53         return fmu->fmi2SetContinuousStates(fmu->c, x, nx);\r
54 }\r
55 \r
56 fmi2_status_t fmi2_capi_completed_integrator_step(fmi2_capi_t* fmu,\r
57   fmi2_boolean_t noSetFMUStatePriorToCurrentPoint,\r
58   fmi2_boolean_t* enterEventMode, fmi2_boolean_t* terminateSimulation)\r
59 {\r
60     assert(fmu);\r
61     jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2CompletedIntegratorStep");\r
62     return fmu->fmi2CompletedIntegratorStep(fmu->c, noSetFMUStatePriorToCurrentPoint,\r
63                                            enterEventMode, terminateSimulation);\r
64 }\r
65 \r
66 fmi2_status_t fmi2_capi_get_derivatives(fmi2_capi_t* fmu, fmi2_real_t derivatives[], size_t nx)\r
67 {\r
68         assert(fmu);\r
69         jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2GetDerivatives");\r
70         return fmu->fmi2GetDerivatives(fmu->c, derivatives, nx);\r
71 }\r
72 \r
73 fmi2_status_t fmi2_capi_get_event_indicators(fmi2_capi_t* fmu, fmi2_real_t eventIndicators[], size_t ni)\r
74 {\r
75         assert(fmu);\r
76         jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2GetEventIndicators");\r
77         return fmu->fmi2GetEventIndicators(fmu->c, eventIndicators, ni);\r
78 }\r
79 \r
80 fmi2_status_t fmi2_capi_get_continuous_states(fmi2_capi_t* fmu, fmi2_real_t states[], size_t nx)\r
81 {\r
82         assert(fmu);\r
83         jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2GetContinuousStates");\r
84         return fmu->fmi2GetContinuousStates(fmu->c, states, nx);\r
85 }\r
86 \r
87 fmi2_status_t fmi2_capi_get_nominals_of_continuous_states(fmi2_capi_t* fmu, fmi2_real_t x_nominal[], size_t nx)\r
88 {\r
89         assert(fmu);\r
90         jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmi2GetNominalsOfContinuousStates");\r
91         return fmu->fmi2GetNominalsOfContinuousStates(fmu->c, x_nominal, nx);\r
92 }\r