1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
/*
This program is part of the TACLeBench benchmark suite.
Version V 1.x
Name: powerwindow_rtw_continuous.h
Author: CoSys-Lab, University of Antwerp
Function: headerfile
Source: https://github.com/tacle/tacle-bench/blob/master/bench/app/PowerWindow/powerwindow_HeaderFiles/powerwindow_rtw_continuous.h
Changes: a brief summary of major functional changes and formatting)
License: GNU General Public License
*/
#ifndef powerwindow___RTW_CONTINUOUS_H__
#define powerwindow___RTW_CONTINUOUS_H__
//#include "../powerwindow_HeaderFiles/powerwindow_tmwtypes.h"
/* For models registering MassMatrix */
typedef enum {
SS_MATRIX_NONE,
SS_MATRIX_CONSTANT,
SS_MATRIX_TIMEDEP,
SS_MATRIX_STATEDEP
} powerwindow_ssMatrixType;
typedef enum {
SOLVER_MODE_AUTO, /* only occurs in
mdlInitializeSizes/mdlInitializeSampleTimes */
SOLVER_MODE_SINGLETASKING,
SOLVER_MODE_MULTITASKING
} powerwindow_SolverMode;
typedef enum {
MINOR_TIME_STEP,
MAJOR_TIME_STEP
} powerwindow_SimTimeStep;
/* =============================================================================
* Model methods object
* =============================================================================
*/
typedef void (*powerwindow_rtMdlInitializeSizesFcn)(void *rtModel);
typedef void (*powerwindow_rtMdlInitializeSampleTimesFcn)(void *rtModel);
typedef void (*powerwindow_rtMdlStartFcn)(void *rtModel);
typedef void (*powerwindow_rtMdlOutputsFcn)(void *rtModel, powerwindow_int_T tid);
typedef void (*powerwindow_rtMdlUpdateFcn)(void *rtModel, powerwindow_int_T tid);
typedef void (*powerwindow_rtMdlDerivativesFcn)(void *rtModel);
typedef void (*powerwindow_rtMdlProjectionFcn)(void *rtModel);
typedef void (*powerwindow_rtMdlMassMatrixFcn)(void *rtModel);
typedef void (*powerwindow_rtMdlForcingFunctionFcn)(void *rtModel);
typedef void (*powerwindow_rtMdlTerminateFcn)(void *rtModel);
#ifdef RT_MALLOC
typedef real_T (*rtMdlDiscreteEventsFcn)(void *pModel,
powerwindow_int_T rtmNumSampTimes,
void *rtmTimingData,
powerwindow_int_T *rtmSampleHitPtr,
powerwindow_int_T *rtmPerTaskSampleHits);
#endif
typedef struct powerwindow__RTWRTModelMethodsInfo_tag {
void *rtModelPtr;
powerwindow_rtMdlInitializeSizesFcn rtmInitSizesFcn;
powerwindow_rtMdlInitializeSampleTimesFcn rtmInitSampTimesFcn;
powerwindow_rtMdlStartFcn rtmStartFcn;
powerwindow_rtMdlOutputsFcn rtmOutputsFcn;
powerwindow_rtMdlUpdateFcn rtmUpdateFcn;
powerwindow_rtMdlDerivativesFcn rtmDervisFcn;
powerwindow_rtMdlProjectionFcn rtmProjectionFcn;
powerwindow_rtMdlMassMatrixFcn rtmMassMatrixFcn;
powerwindow_rtMdlForcingFunctionFcn rtmForcingFunctionFcn;
powerwindow_rtMdlTerminateFcn rtmTerminateFcn;
#ifdef RT_MALLOC
rtMdlDiscreteEventsFcn rtmDiscreteEventsFcn;
#endif
} powerwindow_RTWRTModelMethodsInfo;
#define rtmiSetRTModelPtr(M,rtmp) ((M).rtModelPtr = (rtmp))
#define rtmiGetRTModelPtr(M) (M).rtModelPtr
#define rtmiSetInitSizesFcn(M,fp) \
((M).rtmInitSizesFcn = ((powerwindow_rtMdlInitializeSizesFcn)(fp)))
#define rtmiSetInitSampTimesFcn(M,fp) \
((M).rtmInitSampTimesFcn = ((powerwindow_rtMdlInitializeSampleTimesFcn)(fp)))
#define rtmiSetStartFcn(M,fp) \
((M).rtmStartFcn = ((powerwindow_rtMdlStartFcn)(fp)))
#define rtmiSetOutputsFcn(M,fp) \
((M).rtmOutputsFcn = ((powerwindow_rtMdlOutputsFcn)(fp)))
#define rtmiSetUpdateFcn(M,fp) \
((M).rtmUpdateFcn = ((powerwindow_rtMdlUpdateFcn)(fp)))
#define rtmiSetDervisFcn(M,fp) \
((M).rtmDervisFcn = ((powerwindow_rtMdlDerivativesFcn)(fp)))
#define rtmiSetProjectionFcn(M,fp) \
((M).rtmProjectionFcn = ((powerwindow_rtMdlProjectionFcn)(fp)))
#define rtmiSetMassMatrixFcn(M,fp) \
((M).rtmMassMatrixFcn = ((powerwindow_rtMdlMassMatrixFcn)(fp)))
#define rtmiSetForcingFunctionFcn(M,fp) \
((M).rtmForcingFunctionFcn = ((powerwindow_rtMdlForcingFunctionFcn)(fp)))
#define rtmiSetTerminateFcn(M,fp) \
((M).rtmTerminateFcn = ((powerwindow_rtMdlTerminateFcn)(fp)))
#ifdef RT_MALLOC
#define rtmiSetDiscreteEventsFcn(M,fp) \
((M).rtmDiscreteEventsFcn = ((rtMdlDiscreteEventsFcn)(fp)))
#endif
#define rtmiInitializeSizes(M) \
((*(M).rtmInitSizesFcn)((M).rtModelPtr))
#define rtmiInitializeSampleTimes(M) \
((*(M).rtmInitSampTimesFcn)((M).rtModelPtr))
#define rtmiStart(M) \
((*(M).rtmStartFcn)((M).rtModelPtr))
#define rtmiOutputs(M, tid) \
((*(M).rtmOutputsFcn)((M).rtModelPtr,tid))
#define rtmiUpdate(M, tid) \
((*(M).rtmUpdateFcn)((M).rtModelPtr,tid))
#define rtmiDerivatives(M) \
((*(M).rtmDervisFcn)((M).rtModelPtr))
#define rtmiProjection(M) \
((*(M).rtmProjectionFcn)((M).rtModelPtr))
#define rtmiMassMatrix(M) \
((*(M).rtmMassMatrixFcn)((M).rtModelPtr))
#define rtmiForcingFunction(M) \
((*(M).rtmForcingFunctionFcn)((M).rtModelPtr))
#define rtmiTerminate(M) \
((*(M).rtmTerminateFcn)((M).rtModelPtr))
#ifdef RT_MALLOC
#define rtmiDiscreteEvents(M,x1,x2,x3,x4) \
((*(M).rtmDiscreteEventsFcn)((M).rtModelPtr,(x1),(x2),(x3),(x4)))
#endif
#endif /* __RTW_CONTINUOUS_H__ */
|