2 Copyright (C) 2012 Modelon AB
\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
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
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
20 #include <FMI1/fmi1_capi.h>
\r
21 #include <FMI1/fmi1_capi_impl.h>
\r
24 fmi1_component_t fmi1_capi_instantiate_model(fmi1_capi_t* fmu, fmi1_string_t instanceName, fmi1_string_t GUID, fmi1_boolean_t loggingOn)
\r
26 fmi1_me_callback_functions_t cb;
\r
28 cb.logger = fmu->callBackFunctions.logger;
\r
29 cb.allocateMemory = fmu->callBackFunctions.allocateMemory;
\r
30 cb.freeMemory = fmu->callBackFunctions.freeMemory;
\r
31 jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiInstantiateModel");
\r
32 return fmu->c = fmu->fmiInstantiateModel(instanceName, GUID, cb, loggingOn);
\r
35 void fmi1_capi_free_model_instance(fmi1_capi_t* fmu)
\r
37 jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiFreeModelInstance");
\r
38 fmu->fmiFreeModelInstance(fmu->c);
\r
41 fmi1_status_t fmi1_capi_initialize(fmi1_capi_t* fmu, fmi1_boolean_t toleranceControlled, fmi1_real_t relativeTolerance, fmi1_event_info_t* eventInfo)
\r
44 jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiInitialize");
\r
45 return fmu->fmiInitialize(fmu->c, toleranceControlled, relativeTolerance, eventInfo);
\r
48 const char* fmi1_capi_get_model_types_platform(fmi1_capi_t* fmu)
\r
51 jm_log_verbose(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetModelTypesPlatform");
\r
52 return fmu->fmiGetModelTypesPlatform();
\r
55 fmi1_status_t fmi1_capi_set_time(fmi1_capi_t* fmu, fmi1_real_t time)
\r
58 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetModelTypesPlatform");
\r
59 return fmu->fmiSetTime(fmu->c, time);
\r
62 fmi1_status_t fmi1_capi_set_continuous_states(fmi1_capi_t* fmu, const fmi1_real_t x[], size_t nx)
\r
65 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiSetContinuousStates");
\r
66 return fmu->fmiSetContinuousStates(fmu->c, x, nx);
\r
69 fmi1_status_t fmi1_capi_completed_integrator_step(fmi1_capi_t* fmu, fmi1_boolean_t* callEventUpdate)
\r
72 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiCompletedIntegratorStep");
\r
73 return fmu->fmiCompletedIntegratorStep(fmu->c, callEventUpdate);
\r
76 fmi1_status_t fmi1_capi_get_derivatives(fmi1_capi_t* fmu, fmi1_real_t derivatives[], size_t nx)
\r
79 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetDerivatives");
\r
80 return fmu->fmiGetDerivatives(fmu->c, derivatives, nx);
\r
83 fmi1_status_t fmi1_capi_get_event_indicators(fmi1_capi_t* fmu, fmi1_real_t eventIndicators[], size_t ni)
\r
86 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetEventIndicators");
\r
87 return fmu->fmiGetEventIndicators(fmu->c, eventIndicators, ni);
\r
90 fmi1_status_t fmi1_capi_eventUpdate(fmi1_capi_t* fmu, fmi1_boolean_t intermediateResults, fmi1_event_info_t* eventInfo)
\r
93 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiEventUpdate");
\r
94 return fmu->fmiEventUpdate(fmu->c, intermediateResults, eventInfo);
\r
97 fmi1_status_t fmi1_capi_get_continuous_states(fmi1_capi_t* fmu, fmi1_real_t states[], size_t nx)
\r
100 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetContinuousStates");
\r
101 return fmu->fmiGetContinuousStates(fmu->c, states, nx);
\r
104 fmi1_status_t fmi1_capi_get_nominal_continuous_states(fmi1_capi_t* fmu, fmi1_real_t x_nominal[], size_t nx)
\r
107 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetNominalContinuousStates");
\r
108 return fmu->fmiGetNominalContinuousStates(fmu->c, x_nominal, nx);
\r
111 fmi1_status_t fmi1_capi_get_state_value_references(fmi1_capi_t* fmu, fmi1_value_reference_t vrx[], size_t nx)
\r
114 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiGetStateValueReferences");
\r
115 return fmu->fmiGetStateValueReferences(fmu->c, vrx, nx);
\r
118 fmi1_status_t fmi1_capi_terminate(fmi1_capi_t* fmu)
\r
121 jm_log_debug(fmu->callbacks, FMI_CAPI_MODULE_NAME, "Calling fmiTerminate");
\r
122 return fmu->fmiTerminate(fmu->c);
\r