FMI Library: part of JModelica.org
fmi1_functions.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 FMI1_FUNCTIONS_H_
17 #define FMI1_FUNCTIONS_H_
18 
19 #include <fmilib_config.h>
20 
21 #include "fmi1_types.h"
22 #include <string.h>
31 typedef enum {
39 
42 
44 typedef void (*fmi1_callback_logger_ft) (fmi1_component_t c, fmi1_string_t instanceName, fmi1_status_t status, fmi1_string_t category, fmi1_string_t message, ...);
46 typedef void* (*fmi1_callback_allocate_memory_ft)(size_t nobj, size_t size);
48 typedef void (*fmi1_callback_free_memory_ft) (void* obj);
50 typedef void (*fmi1_step_finished_ft) (fmi1_component_t c, fmi1_status_t status);
51 
53 typedef struct {
58 
60 typedef struct {
66 
68 typedef struct {
69  fmi1_boolean_t iterationConverged;
71  fmi1_boolean_t stateValuesChanged;
72  fmi1_boolean_t terminateSimulation;
73  fmi1_boolean_t upcomingTimeEvent;
74  fmi1_real_t nextEventTime;
76 
78 typedef enum {
83 
84 /* FMI 1.0 common functions */
85 typedef const char* (*fmi1_get_version_ft) (void);
86 typedef fmi1_status_t (*fmi1_set_debug_logging_ft) (fmi1_component_t c, fmi1_boolean_t loggingOn);
87 typedef fmi1_status_t (*fmi1_set_real_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_real_t value[]);
88 typedef fmi1_status_t (*fmi1_set_integer_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_integer_t value[]);
89 typedef fmi1_status_t (*fmi1_set_boolean_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_boolean_t value[]);
90 typedef fmi1_status_t (*fmi1_set_string_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_string_t value[]);
91 typedef fmi1_status_t (*fmi1_get_real_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, fmi1_real_t value[]);
92 typedef fmi1_status_t (*fmi1_get_integer_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, fmi1_integer_t value[]);
93 typedef fmi1_status_t (*fmi1_get_boolean_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, fmi1_boolean_t value[]);
94 typedef fmi1_status_t (*fmi1_get_string_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, fmi1_string_t value[]);
95 
96 /* FMI ME 1.0 functions */
97 typedef const char* (*fmi1_get_model_typesPlatform_ft) (void);
98 typedef fmi1_component_t (*fmi1_instantiate_model_ft) (fmi1_string_t instanceName, fmi1_string_t GUID, fmi1_me_callback_functions_t functions, fmi1_boolean_t loggingOn);
99 typedef void (*fmi1_free_model_instance_ft) (fmi1_component_t c);
100 typedef fmi1_status_t (*fmi1_set_time_ft) (fmi1_component_t c, fmi1_real_t time);
101 typedef fmi1_status_t (*fmi1_set_continuous_states_ft) (fmi1_component_t c, const fmi1_real_t x[], size_t nx);
102 typedef fmi1_status_t (*fmi1_completed_integrator_step_ft) (fmi1_component_t c, fmi1_boolean_t* callEventUpdate);
103 typedef fmi1_status_t (*fmi1_initialize_ft) (fmi1_component_t c, fmi1_boolean_t toleranceControlled, fmi1_real_t relativeTolerance, fmi1_event_info_t* eventInfo);
104 typedef fmi1_status_t (*fmi1_get_derivatives_ft) (fmi1_component_t c, fmi1_real_t derivatives[] , size_t nx);
105 typedef fmi1_status_t (*fmi1_get_event_indicators_ft) (fmi1_component_t c, fmi1_real_t eventIndicators[], size_t ni);
106 typedef fmi1_status_t (*fmi1_event_update_ft) (fmi1_component_t c, fmi1_boolean_t intermediateResults, fmi1_event_info_t* eventInfo);
107 typedef fmi1_status_t (*fmi1_get_continuous_states_ft) (fmi1_component_t c, fmi1_real_t states[], size_t nx);
108 typedef fmi1_status_t (*fmi1_get_nominal_continuousStates_ft) (fmi1_component_t c, fmi1_real_t x_nominal[], size_t nx);
109 typedef fmi1_status_t (*fmi1_get_state_valueReferences_ft) (fmi1_component_t c, fmi1_value_reference_t vrx[], size_t nx);
110 typedef fmi1_status_t (*fmi1_terminate_ft) (fmi1_component_t c);
111 
112 
113 /* FMI CS 1.0 functions */
114 typedef const char* (*fmi1_get_types_platform_ft) (void );
115 typedef fmi1_component_t (*fmi1_instantiate_slave_ft) (fmi1_string_t instanceName, fmi1_string_t fmuGUID, fmi1_string_t fmuLocation,
116  fmi1_string_t mimeType, fmi1_real_t timeout, fmi1_boolean_t visible, fmi1_boolean_t interactive,
117  fmi1_callback_functions_t functions, fmi1_boolean_t loggingOn);
118 typedef fmi1_status_t (*fmi1_initialize_slave_ft) (fmi1_component_t c, fmi1_real_t tStart, fmi1_boolean_t StopTimeDefined, fmi1_real_t tStop);
119 typedef fmi1_status_t (*fmi1_terminate_slave_ft) (fmi1_component_t c);
120 typedef fmi1_status_t (*fmi1_reset_slave_ft) (fmi1_component_t c);
121 typedef void (*fmi1_free_slave_instance_ft) (fmi1_component_t c);
122 typedef fmi1_status_t (*fmi1_set_real_inputDerivatives_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_integer_t order[], const fmi1_real_t value[]);
123 typedef fmi1_status_t (*fmi1_get_real_outputDerivatives_ft) (fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_integer_t order[], fmi1_real_t value[]);
124 typedef fmi1_status_t (*fmi1_cancel_step_ft) (fmi1_component_t c);
125 typedef fmi1_status_t (*fmi1_do_step_ft) (fmi1_component_t c, fmi1_real_t currentCommunicationPoint, fmi1_real_t communicationStepSize, fmi1_boolean_t newStep);
126 
127 typedef fmi1_status_t (*fmi1_get_status_ft) (fmi1_component_t c, const fmi1_status_kind_t s, fmi1_status_t* value);
128 typedef fmi1_status_t (*fmi1_get_real_status_ft) (fmi1_component_t c, const fmi1_status_kind_t s, fmi1_real_t* value);
129 typedef fmi1_status_t (*fmi1_get_integer_status_ft) (fmi1_component_t c, const fmi1_status_kind_t s, fmi1_integer_t* value);
130 typedef fmi1_status_t (*fmi1_get_boolean_status_ft) (fmi1_component_t c, const fmi1_status_kind_t s, fmi1_boolean_t* value);
131 typedef fmi1_status_t (*fmi1_get_string_status_ft) (fmi1_component_t c, const fmi1_status_kind_t s, fmi1_string_t* value);
132 
136 #endif /* End of header file FMI_FUNCTIONS_H_ */
fmi1_status_t(* fmi1_get_boolean_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, fmi1_boolean_t value[])
fmi1_status_t(* fmi1_get_string_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, fmi1_string_t value[])
fmi1_status_t(* fmi1_get_derivatives_ft)(fmi1_component_t c, fmi1_real_t derivatives[], size_t nx)
Library configuration file generated by the build system.
fmi1_component_t(* fmi1_instantiate_slave_ft)(fmi1_string_t instanceName, fmi1_string_t fmuGUID, fmi1_string_t fmuLocation, fmi1_string_t mimeType, fmi1_real_t timeout, fmi1_boolean_t visible, fmi1_boolean_t interactive, fmi1_callback_functions_t functions, fmi1_boolean_t loggingOn)
fmi1_status_t(* fmi1_cancel_step_ft)(fmi1_component_t c)
size_t jm_callbacks * c
fmi1_status_t(* fmi1_completed_integrator_step_ft)(fmi1_component_t c, fmi1_boolean_t *callEventUpdate)
fmi1_status_t(* fmi1_set_string_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_string_t value[])
fmi1_status_t(* fmi1_get_continuous_states_ft)(fmi1_component_t c, fmi1_real_t states[], size_t nx)
void(* fmi1_callback_free_memory_ft)(void *obj)
fmi1_status_t(* fmi1_get_nominal_continuousStates_ft)(fmi1_component_t c, fmi1_real_t x_nominal[], size_t nx)
void(* fmi1_free_model_instance_ft)(fmi1_component_t c)
fmi1_status_t(* fmi1_set_continuous_states_ft)(fmi1_component_t c, const fmi1_real_t x[], size_t nx)
fmi1_callback_logger_ft logger
fmi1_status_kind_t
fmi1_status_t(* fmi1_get_real_status_ft)(fmi1_component_t c, const fmi1_status_kind_t s, fmi1_real_t *value)
fmi1_callback_allocate_memory_ft allocateMemory
v size
fmi1_status_t(* fmi1_get_boolean_status_ft)(fmi1_component_t c, const fmi1_status_kind_t s, fmi1_boolean_t *value)
fmi1_real_t nextEventTime
fmi1_callback_allocate_memory_ft allocateMemory
fmi1_status_t(* fmi1_set_integer_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_integer_t value[])
fmi1_boolean_t stateValueReferencesChanged
fmi1_status_t(* fmi1_get_integer_status_ft)(fmi1_component_t c, const fmi1_status_kind_t s, fmi1_integer_t *value)
fmi1_boolean_t upcomingTimeEvent
#define FMILIB_EXPORT
Used to declare the public API of the library needed for dynamic linking.
void(* fmi1_step_finished_ft)(fmi1_component_t c, fmi1_status_t status)
fmi1_status_t
fmi1_status_t(* fmi1_get_status_ft)(fmi1_component_t c, const fmi1_status_kind_t s, fmi1_status_t *value)
fmi1_status_t(* fmi1_initialize_ft)(fmi1_component_t c, fmi1_boolean_t toleranceControlled, fmi1_real_t relativeTolerance, fmi1_event_info_t *eventInfo)
fmi1_status_t(* fmi1_do_step_ft)(fmi1_component_t c, fmi1_real_t currentCommunicationPoint, fmi1_real_t communicationStepSize, fmi1_boolean_t newStep)
fmi1_status_t(* fmi1_get_real_outputDerivatives_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_integer_t order[], fmi1_real_t value[])
fmi1_status_t(* fmi1_reset_slave_ft)(fmi1_component_t c)
fmi1_status_t(* fmi1_get_integer_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, fmi1_integer_t value[])
fmi1_callback_logger_ft logger
fmi1_boolean_t stateValuesChanged
fmi1_status_t(* fmi1_set_time_ft)(fmi1_component_t c, fmi1_real_t time)
fmi1_status_t(* fmi1_set_real_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_real_t value[])
fmi1_status_t(* fmi1_set_boolean_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_boolean_t value[])
fmi1_status_t(* fmi1_get_string_status_ft)(fmi1_component_t c, const fmi1_status_kind_t s, fmi1_string_t *value)
void *(* fmi1_callback_allocate_memory_ft)(size_t nobj, size_t size)
fmi1_component_t(* fmi1_instantiate_model_ft)(fmi1_string_t instanceName, fmi1_string_t GUID, fmi1_me_callback_functions_t functions, fmi1_boolean_t loggingOn)
fmi1_callback_free_memory_ft freeMemory
fmi1_step_finished_ft stepFinished
fmi1_boolean_t iterationConverged
fmi1_callback_free_memory_ft freeMemory
fmi1_status_t(* fmi1_terminate_ft)(fmi1_component_t c)
fmi1_status_t(* fmi1_terminate_slave_ft)(fmi1_component_t c)
void(* fmi1_callback_logger_ft)(fmi1_component_t c, fmi1_string_t instanceName, fmi1_status_t status, fmi1_string_t category, fmi1_string_t message,...)
fmi1_status_t(* fmi1_set_real_inputDerivatives_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, const fmi1_integer_t order[], const fmi1_real_t value[])
FMILIB_EXPORT const char * fmi1_status_to_string(fmi1_status_t status)
fmi1_status_t(* fmi1_event_update_ft)(fmi1_component_t c, fmi1_boolean_t intermediateResults, fmi1_event_info_t *eventInfo)
fmi1_status_t(* fmi1_get_state_valueReferences_ft)(fmi1_component_t c, fmi1_value_reference_t vrx[], size_t nx)
fmi1_status_t(* fmi1_get_real_ft)(fmi1_component_t c, const fmi1_value_reference_t vr[], size_t nvr, fmi1_real_t value[])
fmi1_boolean_t terminateSimulation
fmi1_status_t(* fmi1_set_debug_logging_ft)(fmi1_component_t c, fmi1_boolean_t loggingOn)
void(* fmi1_free_slave_instance_ft)(fmi1_component_t c)
fmi1_status_t(* fmi1_get_event_indicators_ft)(fmi1_component_t c, fmi1_real_t eventIndicators[], size_t ni)
fmi1_status_t(* fmi1_initialize_slave_ft)(fmi1_component_t c, fmi1_real_t tStart, fmi1_boolean_t StopTimeDefined, fmi1_real_t tStop)