FMI Library: part of JModelica.org
fmi2_import_capi.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2012 Modelon AB
3 
4  This program is free software: you can redistribute it and/or modify
5  it under the terms of the BSD style license.
6 
7  This program is distributed in the hope that it will be useful,
8  but WITHOUT ANY WARRANTY; without even the implied warranty of
9  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  FMILIB_License.txt file for more details.
11 
12  You should have received a copy of the FMILIB_License.txt file
13  along with this program. If not, contact Modelon AB <http://www.modelon.com>.
14 */
15 
16 #ifndef FMI2_IMPORT_CAPI_H_
17 #define FMI2_IMPORT_CAPI_H_
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 #include <JM/jm_callbacks.h>
24 #include <FMI/fmi_import_util.h>
25 #include <FMI/fmi_import_context.h>
26 /* #include <FMI2/fmi2_xml_model_description.h>*/
27 
28 #include <FMI2/fmi2_types.h>
29 #include <FMI2/fmi2_functions.h>
30 #include <FMI2/fmi2_enums.h>
31 /* #include <FMI2/fmi2_capi.h> */
32 
76 
82 
105 
115  FMILIB_EXPORT fmi2_status_t fmi2_import_set_debug_logging(fmi2_import_t* fmu, fmi2_boolean_t loggingOn, size_t nCategories, fmi2_string_t categories[]);
116 
128  fmi2_string_t instanceName, fmi2_type_t fmuType,
129  fmi2_string_t fmuResourceLocation, fmi2_boolean_t visible);
130 
137 
138 
151  fmi2_boolean_t toleranceDefined, fmi2_real_t tolerance,
152  fmi2_real_t startTime, fmi2_boolean_t stopTimeDefined,
153  fmi2_real_t stopTime);
154 
162 
170 
178 
186 
187 
197 FMILIB_EXPORT fmi2_status_t fmi2_import_set_real(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_real_t value[]);
198 
208 FMILIB_EXPORT fmi2_status_t fmi2_import_set_integer(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_integer_t value[]);
209 
219 FMILIB_EXPORT fmi2_status_t fmi2_import_set_boolean(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_boolean_t value[]);
220 
230 FMILIB_EXPORT fmi2_status_t fmi2_import_set_string(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_string_t value[]);
231 
232 
242 FMILIB_EXPORT fmi2_status_t fmi2_import_get_real(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, fmi2_real_t value[]);
243 
253 FMILIB_EXPORT fmi2_status_t fmi2_import_get_integer(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, fmi2_integer_t value[]);
254 
264 FMILIB_EXPORT fmi2_status_t fmi2_import_get_boolean(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, fmi2_boolean_t value[]);
265 
275 FMILIB_EXPORT fmi2_status_t fmi2_import_get_string(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, fmi2_string_t value[]);
276 
284 
293 
302 
311 
321 
331 FMILIB_EXPORT fmi2_status_t fmi2_import_serialize_fmu_state (fmi2_import_t* fmu, fmi2_FMU_state_t s, fmi2_byte_t data[], size_t sz);
332 
342 FMILIB_EXPORT fmi2_status_t fmi2_import_de_serialize_fmu_state (fmi2_import_t* fmu, const fmi2_byte_t data[], size_t sz, fmi2_FMU_state_t* s);
343 
344 
345 
358 FMILIB_EXPORT fmi2_status_t fmi2_import_get_directional_derivative(fmi2_import_t* fmu, const fmi2_value_reference_t v_ref[], size_t nv,
359  const fmi2_value_reference_t z_ref[], size_t nz,
360  const fmi2_real_t dv[], fmi2_real_t dz[]);
361 
376 
385 
393 
402 
412 
425  fmi2_boolean_t noSetFMUStatePriorToCurrentPoint,
426  fmi2_boolean_t* enterEventMode, fmi2_boolean_t* terminateSimulation);
427 
436 FMILIB_EXPORT fmi2_status_t fmi2_import_get_derivatives(fmi2_import_t* fmu, fmi2_real_t derivatives[], size_t nx);
437 
446 FMILIB_EXPORT fmi2_status_t fmi2_import_get_event_indicators(fmi2_import_t* fmu, fmi2_real_t eventIndicators[], size_t ni);
447 
457 
467 
486 FMILIB_EXPORT fmi2_status_t fmi2_import_set_real_input_derivatives(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_integer_t order[], const fmi2_real_t value[]);
487 
498 FMILIB_EXPORT fmi2_status_t fmi2_import_get_real_output_derivatives(fmi2_import_t* fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_integer_t order[], fmi2_real_t value[]);
499 
507 
517 FMILIB_EXPORT fmi2_status_t fmi2_import_do_step(fmi2_import_t* fmu, fmi2_real_t currentCommunicationPoint, fmi2_real_t communicationStepSize, fmi2_boolean_t newStep);
518 
528 
538 
548 
558 
568 
574 #ifdef __cplusplus
575 }
576 #endif
577 #endif /* End of header FMI2_IMPORT_CAPI_H_ */
FMILIB_EXPORT fmi2_status_t fmi2_import_get_derivatives(fmi2_import_t *fmu, fmi2_real_t derivatives[], size_t nx)
Wrapper for the FMI function fmiGetDerivatives(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_enter_continuous_time_mode(fmi2_import_t *fmu)
Calls the FMI function fmiEnterContinuousTimeMode(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_new_discrete_states(fmi2_import_t *fmu, fmi2_event_info_t *eventInfo)
Calls the FMI function fmiNewDiscreteStates(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_enter_event_mode(fmi2_import_t *fmu)
Calls the FMI function fmiEnterEventMode(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_time(fmi2_import_t *fmu, fmi2_real_t time)
Wrapper for the FMI function fmiSetTime(...)
Import context is the entry point to the library. It is used to initialize, unzip, get FMI version and start parsing.
FMILIB_EXPORT void fmi2_import_free_instance(fmi2_import_t *fmu)
Wrapper for the FMI function fmiFreeInstance(...)
fmi2_type_t
FMILIB_EXPORT fmi2_status_t fmi2_import_get_string(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, fmi2_string_t value[])
Wrapper for the FMI function fmiGetString(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_continuous_states(fmi2_import_t *fmu, const fmi2_real_t x[], size_t nx)
Wrapper for the FMI function fmiSetContinuousStates(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_string(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_string_t value[])
Wrapper for the FMI function fmiSetString(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_serialize_fmu_state(fmi2_import_t *fmu, fmi2_FMU_state_t s, fmi2_byte_t data[], size_t sz)
Wrapper for the FMI function fmiSerializeFMUstate(...)
FMILIB_EXPORT const char * fmi2_import_get_version(fmi2_import_t *fmu)
Wrapper for the FMI function fmiGetVersion()
FMILIB_EXPORT fmi2_status_t fmi2_import_serialized_fmu_state_size(fmi2_import_t *fmu, fmi2_FMU_state_t s, size_t *sz)
Wrapper for the FMI function fmiSerializedFMUstateSize(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_do_step(fmi2_import_t *fmu, fmi2_real_t currentCommunicationPoint, fmi2_real_t communicationStepSize, fmi2_boolean_t newStep)
Wrapper for the FMI function fmiDoStep(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_real_output_derivatives(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_integer_t order[], fmi2_real_t value[])
Wrapper for the FMI function fmiGetOutputDerivatives(...)
#define FMILIB_EXPORT
Used to declare the public API of the library needed for dynamic linking.
FMILIB_EXPORT fmi2_status_t fmi2_import_get_integer(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, fmi2_integer_t value[])
Wrapper for the FMI function fmiGetInteger(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_debug_logging(fmi2_import_t *fmu, fmi2_boolean_t loggingOn, size_t nCategories, fmi2_string_t categories[])
Wrapper for the FMI function fmiSetDebugLogging(...)
fmi1_capi_t * fmu
FMILIB_EXPORT void fmi2_import_set_debug_mode(fmi2_import_t *fmu, int mode)
Set CAPI debug mode flag. Setting to non-zero prevents DLL unloading in fmi2_import_destroy_dllfmu wh...
FMILIB_EXPORT void fmi2_import_destroy_dllfmu(fmi2_import_t *fmu)
Free a C-API struct. All memory allocated since the struct was created is freed.
FMILIB_EXPORT fmi2_status_t fmi2_import_get_event_indicators(fmi2_import_t *fmu, fmi2_real_t eventIndicators[], size_t ni)
Wrapper for the FMI function fmiGetEventIndicators(...)
fmi2_status_t
FMILIB_EXPORT fmi2_status_t fmi2_import_exit_initialization_mode(fmi2_import_t *fmu)
Calls the FMI function fmiExitInitializationMode(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_de_serialize_fmu_state(fmi2_import_t *fmu, const fmi2_byte_t data[], size_t sz, fmi2_FMU_state_t *s)
Wrapper for the FMI function fmiSerializeFMUstate(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_real(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_real_t value[])
Wrapper for the FMI function fmiSetReal(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_reset(fmi2_import_t *fmu)
Wrapper for the FMI function fmiReset(...)
fmi2_fmu_kind_enu_t
FMU 2.0 kinds.
Definition: fmi2_enums.h:49
FMILIB_EXPORT fmi2_status_t fmi2_import_setup_experiment(fmi2_import_t *fmu, fmi2_boolean_t toleranceDefined, fmi2_real_t tolerance, fmi2_real_t startTime, fmi2_boolean_t stopTimeDefined, fmi2_real_t stopTime)
Calls the FMI function fmiSetupExperiment(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_real_input_derivatives(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_integer_t order[], const fmi2_real_t value[])
Wrapper for the FMI function fmiSetRealInputDerivatives(...)
FMILIB_EXPORT jm_status_enu_t fmi2_import_create_dllfmu(fmi2_import_t *fmu, fmi2_fmu_kind_enu_t fmuKind, const fmi2_callback_functions_t *callBackFunctions)
Create a C-API struct. The C-API struct is a placeholder for the FMI DLL functions.
FMILIB_EXPORT fmi2_status_t fmi2_import_get_string_status(fmi2_import_t *fmu, const fmi2_status_kind_t s, fmi2_string_t *value)
Wrapper for the FMI function fmiGetStringStatus(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_enter_initialization_mode(fmi2_import_t *fmu)
Calls the FMI function fmiEnterInitializationMode(...)
FMILIB_EXPORT const char * fmi2_import_get_types_platform(fmi2_import_t *fmu)
Wrapper for the FMI function fmiGetTypesPlatform(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_boolean(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, fmi2_boolean_t value[])
Wrapper for the FMI function fmiGetBoolean(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_status(fmi2_import_t *fmu, const fmi2_status_kind_t s, fmi2_status_t *value)
Wrapper for the FMI function fmiGetStatus(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_integer_status(fmi2_import_t *fmu, const fmi2_status_kind_t s, fmi2_integer_t *value)
Wrapper for the FMI function fmiGetIntegerStatus(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_completed_integrator_step(fmi2_import_t *fmu, fmi2_boolean_t noSetFMUStatePriorToCurrentPoint, fmi2_boolean_t *enterEventMode, fmi2_boolean_t *terminateSimulation)
Wrapper for the FMI function fmiCompletedIntegratorStep(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_integer(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_integer_t value[])
Wrapper for the FMI function fmiSetInteger(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_terminate(fmi2_import_t *fmu)
Wrapper for the FMI function fmiTerminate(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_cancel_step(fmi2_import_t *fmu)
Wrapper for the FMI function fmiCancelStep(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_continuous_states(fmi2_import_t *fmu, fmi2_real_t states[], size_t nx)
Wrapper for the FMI function fmiGetContinuousStates(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_real(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, fmi2_real_t value[])
Wrapper for the FMI function fmiGetReal(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_fmu_state(fmi2_import_t *fmu, fmi2_FMU_state_t s)
Wrapper for the FMI function fmiSetFMUstate(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_set_boolean(fmi2_import_t *fmu, const fmi2_value_reference_t vr[], size_t nvr, const fmi2_boolean_t value[])
Wrapper for the FMI function fmiSetBoolean(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_fmu_state(fmi2_import_t *fmu, fmi2_FMU_state_t *s)
Wrapper for the FMI function fmiGetFMUstate(...)
Definions the enum types used with FMI 2.0 libs.
jm_status_enu_t
Return status codes.
Definition: jm_types.h:44
FMILIB_EXPORT jm_status_enu_t fmi2_import_instantiate(fmi2_import_t *fmu, fmi2_string_t instanceName, fmi2_type_t fmuType, fmi2_string_t fmuResourceLocation, fmi2_boolean_t visible)
Wrapper for the FMI function fmiInstantiate(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_real_status(fmi2_import_t *fmu, const fmi2_status_kind_t s, fmi2_real_t *value)
Wrapper for the FMI function fmiGetRealStatus(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_nominals_of_continuous_states(fmi2_import_t *fmu, fmi2_real_t x_nominal[], size_t nx)
Wrapper for the FMI function fmiGetNominalsOfContinuousStates(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_directional_derivative(fmi2_import_t *fmu, const fmi2_value_reference_t v_ref[], size_t nv, const fmi2_value_reference_t z_ref[], size_t nz, const fmi2_real_t dv[], fmi2_real_t dz[])
Wrapper for the FMI function fmiGetDirectionalDerivative(...)
FMILIB_EXPORT fmi2_status_t fmi2_import_get_boolean_status(fmi2_import_t *fmu, const fmi2_status_kind_t s, fmi2_boolean_t *value)
Wrapper for the FMI function fmiGetBooleanStatus(...)
struct fmi2_import_t fmi2_import_t
FMU version 2.0 object.
FMILIB_EXPORT fmi2_status_t fmi2_import_free_fmu_state(fmi2_import_t *fmu, fmi2_FMU_state_t *s)
Wrapper for the FMI function fmiFreeFMUstate(...)
fmi2_status_kind_t