1 | /* Simulation code for Test.Test1 generated by the OpenModelica Compiler 1.8.0 (r10946). */
|
---|
2 |
|
---|
3 | #include "openmodelica.h"
|
---|
4 | #include "openmodelica_func.h"
|
---|
5 | #include "simulation_data.h"
|
---|
6 | #include "simulation_runtime.h"
|
---|
7 | #include "error.h"
|
---|
8 |
|
---|
9 | #include <assert.h>
|
---|
10 | #include <string.h>
|
---|
11 |
|
---|
12 | #include "Test.Test1_functions.h"
|
---|
13 |
|
---|
14 | #include "_Test.Test1.h"
|
---|
15 | #include "Test.Test1_functions.c"
|
---|
16 | #define _OMC_SEED_HACK char* _omc_hack
|
---|
17 | #define _OMC_SEED_HACK_2 NULL
|
---|
18 | /* dummy VARINFO and FILEINFO */
|
---|
19 | const FILE_INFO dummyFILE_INFO = {"",-1,-1,-1,-1,1};
|
---|
20 | const VAR_INFO dummyVAR_INFO = {-1,"","",(FILE_INFO){"",-1,-1,-1,-1,1}};
|
---|
21 | #ifdef __cplusplus
|
---|
22 | extern "C" {
|
---|
23 | #endif
|
---|
24 | #ifdef _OMC_MEASURE_TIME
|
---|
25 | int measure_time_flag = 1;
|
---|
26 | #else
|
---|
27 | int measure_time_flag = 0;
|
---|
28 | #endif
|
---|
29 |
|
---|
30 | void initializeDataStruc_X_(DATA *data)
|
---|
31 | {
|
---|
32 | ASSERT(data,"Error while initialize Data");
|
---|
33 | data->modelData.modelName = "Test.Test1";
|
---|
34 | data->modelData.modelFilePrefix = "Test.Test1";
|
---|
35 | data->modelData.modelDir = "";
|
---|
36 | data->modelData.modelGUID = "{8c4e810f-3df3-4a00-8276-176fa3c9f9e0}";
|
---|
37 |
|
---|
38 | data->modelData.nStates = 1;
|
---|
39 | data->modelData.nVariablesReal = 2*1+2;
|
---|
40 | data->modelData.nVariablesInteger = 1;
|
---|
41 | data->modelData.nVariablesBoolean = 0;
|
---|
42 | data->modelData.nVariablesString = 0;
|
---|
43 | data->modelData.nParametersReal = 11;
|
---|
44 | data->modelData.nParametersInteger = 7;
|
---|
45 | data->modelData.nParametersBoolean = 0;
|
---|
46 | data->modelData.nParametersString = 0;
|
---|
47 | data->modelData.nInputVars = 0;
|
---|
48 | data->modelData.nOutputVars = 0;
|
---|
49 | data->modelData.nJacobianVars = 0;
|
---|
50 | data->modelData.nHelpVars = 0;
|
---|
51 |
|
---|
52 | data->modelData.nAliasReal = 1;
|
---|
53 | data->modelData.nAliasInteger = 0;
|
---|
54 | data->modelData.nAliasBoolean = 0;
|
---|
55 | data->modelData.nAliasString = 0;
|
---|
56 |
|
---|
57 | data->modelData.nZeroCrossings = 2;
|
---|
58 | data->modelData.nSamples = 0;
|
---|
59 | data->modelData.nInitEquations = 0;
|
---|
60 | data->modelData.nResiduals = 2;
|
---|
61 | data->modelData.nExtObjs = 0;
|
---|
62 | data->modelData.nFunctions = 1;
|
---|
63 | data->modelData.nEquations = 5;
|
---|
64 |
|
---|
65 | data->modelData.nDelayExpressions = 0;
|
---|
66 |
|
---|
67 | }
|
---|
68 |
|
---|
69 | void initializeDataStruc_X_2(DATA *data)
|
---|
70 | {
|
---|
71 | const struct FUNCTION_INFO funcInfo[1] = {
|
---|
72 | {1005,"Test.F1",{"test.mo",17,3,33,9,0}}
|
---|
73 | };
|
---|
74 | memcpy(data->modelData.functionNames, &funcInfo, data->modelData.nFunctions*sizeof(FUNCTION_INFO));
|
---|
75 |
|
---|
76 | const VAR_INFO** equationInfo_cref1 = (const VAR_INFO**)calloc(1,sizeof(VAR_INFO*));
|
---|
77 | equationInfo_cref1[0] = &$P$DER$P$dummy__varInfo;
|
---|
78 | const VAR_INFO** equationInfo_cref3 = (const VAR_INFO**)calloc(1,sizeof(VAR_INFO*));
|
---|
79 | equationInfo_cref3[0] = &$Prp$Py__varInfo;
|
---|
80 | const struct EQUATION_INFO equationInfo[5] = {
|
---|
81 | {1006,"SES_ALGORITHM 0",0,NULL},
|
---|
82 | {1007,"SES_SIMPLE_ASSIGN 1",1,equationInfo_cref1},
|
---|
83 | {1008,"SES_ALGORITHM 2",0,NULL},
|
---|
84 | {1009,"SES_SIMPLE_ASSIGN 3",1,equationInfo_cref3},
|
---|
85 | {1010,"SES_ALGORITHM 4",0,NULL}
|
---|
86 | };
|
---|
87 | const int n_omc_equationInfo_reverse_prof_index = 0;
|
---|
88 | const int omc_equationInfo_reverse_prof_index[] = {
|
---|
89 |
|
---|
90 | };
|
---|
91 | memcpy(data->modelData.equationInfo, &equationInfo, data->modelData.nEquations*sizeof(EQUATION_INFO));
|
---|
92 |
|
---|
93 | data->modelData.nProfileBlocks = n_omc_equationInfo_reverse_prof_index;
|
---|
94 | data->modelData.equationInfo_reverse_prof_index = (int*) malloc(data->modelData.nProfileBlocks*sizeof(int));
|
---|
95 | memcpy(data->modelData.equationInfo_reverse_prof_index, omc_equationInfo_reverse_prof_index, data->modelData.nProfileBlocks*sizeof(int));
|
---|
96 | }
|
---|
97 |
|
---|
98 | /* Has to be performed after _init.xml file has been read */
|
---|
99 | void callExternalObjectConstructors(DATA *data)
|
---|
100 | {
|
---|
101 | state mem_state;
|
---|
102 | mem_state = get_memory_state();
|
---|
103 | /* data->simulationInfo.extObjs = NULL; */
|
---|
104 | }
|
---|
105 |
|
---|
106 | void callExternalObjectDestructors(DATA *data)
|
---|
107 | {
|
---|
108 | if (data->simulationInfo.extObjs) {
|
---|
109 | free(data->simulationInfo.extObjs);
|
---|
110 | data->simulationInfo.extObjs = 0;
|
---|
111 | }
|
---|
112 | }
|
---|
113 |
|
---|
114 |
|
---|
115 | int input_function(DATA *data)
|
---|
116 | {
|
---|
117 | return 0;
|
---|
118 | }
|
---|
119 |
|
---|
120 | int output_function(DATA *data)
|
---|
121 | {
|
---|
122 | return 0;
|
---|
123 | }
|
---|
124 |
|
---|
125 | /* Initializes the raw time events of the simulation using the now
|
---|
126 | calcualted parameters. */
|
---|
127 | void function_sampleInit(DATA *data)
|
---|
128 | {
|
---|
129 | }
|
---|
130 |
|
---|
131 | int function_updateSample(DATA *data)
|
---|
132 | {
|
---|
133 | state mem_state;
|
---|
134 |
|
---|
135 | mem_state = get_memory_state();
|
---|
136 | restore_memory_state(mem_state);
|
---|
137 |
|
---|
138 | return 0;
|
---|
139 | }
|
---|
140 |
|
---|
141 | int function_storeDelayed(DATA *data)
|
---|
142 | {
|
---|
143 | state mem_state;
|
---|
144 |
|
---|
145 | mem_state = get_memory_state();
|
---|
146 | restore_memory_state(mem_state);
|
---|
147 |
|
---|
148 | return 0;
|
---|
149 | }
|
---|
150 |
|
---|
151 | int updateBoundStartValues(DATA *data)
|
---|
152 | {
|
---|
153 |
|
---|
154 |
|
---|
155 |
|
---|
156 | return 0;
|
---|
157 | }
|
---|
158 |
|
---|
159 | int initial_residual(DATA *data, double $P$_lambda, double* initialResiduals)
|
---|
160 | {
|
---|
161 | int i = 0;
|
---|
162 | state mem_state;
|
---|
163 |
|
---|
164 | mem_state = get_memory_state();
|
---|
165 | initialResiduals[i++] = ($P$_lambda * ($P$dummy - $P$START$P$dummy));
|
---|
166 | DEBUG_INFO2(LOG_RES_INIT,"Residual[%d] : $_lambda * ($dummy - $_start($dummy)) = %f",i,initialResiduals[i-1]);
|
---|
167 | initialResiduals[i++] = ((1.0 - $P$_lambda) * ($Pm$Pn - $P$START$Pm$Pn));
|
---|
168 | DEBUG_INFO2(LOG_RES_INIT,"Residual[%d] : (1.0 - $_lambda) * (m.n - $_start(m.n)) = %f",i,initialResiduals[i-1]);
|
---|
169 | restore_memory_state(mem_state);
|
---|
170 |
|
---|
171 | return 0;
|
---|
172 | }
|
---|
173 |
|
---|
174 |
|
---|
175 | void eqFunction_0(DATA *data, _OMC_SEED_HACK) {
|
---|
176 | /*#modelicaLine [/opt/local/lib/omlibrary/msl31/../Modelica 3.1/Blocks/Sources.mo:442:9-443:26]*/#
|
---|
177 | if (!($Prp$Pduration >= 1e-60)) {
|
---|
178 | FILE_INFO info = {"/opt/local/lib/omlibrary/msl31/../Modelica 3.1/Blocks/Sources.mo",442,9,443,26,1};
|
---|
179 | MODELICA_ASSERT(info, "Variable rp.duration out of limit");
|
---|
180 | }
|
---|
181 | /*#endModelicaLine*/
|
---|
182 | }
|
---|
183 |
|
---|
184 | int updateBoundParameters(DATA *data)
|
---|
185 | {
|
---|
186 | state mem_state;
|
---|
187 |
|
---|
188 | mem_state = get_memory_state();
|
---|
189 | eqFunction_0(data, _OMC_SEED_HACK_2);
|
---|
190 | restore_memory_state(mem_state);
|
---|
191 |
|
---|
192 | return 0;
|
---|
193 | }
|
---|
194 |
|
---|
195 |
|
---|
196 | void eqFunction_1(DATA *data, _OMC_SEED_HACK) {
|
---|
197 | /* Dummy Line */
|
---|
198 | $P$DER$P$dummy = 0.0;
|
---|
199 | /*#endModelicaLine*/
|
---|
200 | }
|
---|
201 |
|
---|
202 | static void functionODE_system0(DATA *data,int omc_thread_number)
|
---|
203 | {
|
---|
204 | eqFunction_1(data, _OMC_SEED_HACK_2);
|
---|
205 | }
|
---|
206 | static void (*functionODE_systems[1])(DATA *, int) = {
|
---|
207 | functionODE_system0
|
---|
208 | };
|
---|
209 |
|
---|
210 | void function_initMemoryState()
|
---|
211 | {
|
---|
212 | push_memory_states(1);
|
---|
213 | }
|
---|
214 |
|
---|
215 | int functionODE(DATA *data)
|
---|
216 | {
|
---|
217 | int id,th_id;
|
---|
218 | state mem_state; /* We need to have separate memory pools for separate systems... */
|
---|
219 | mem_state = get_memory_state();
|
---|
220 | for (id=0; id<1; id++) {
|
---|
221 | th_id = omp_get_thread_num();
|
---|
222 | functionODE_systems[id](data,th_id);
|
---|
223 | }
|
---|
224 | restore_memory_state(mem_state);
|
---|
225 |
|
---|
226 | return 0;
|
---|
227 | }
|
---|
228 | #include <simulation_inline_solver.h>
|
---|
229 | const char *_omc_force_solver=_OMC_FORCE_SOLVER;
|
---|
230 | const int inline_work_states_ndims=_OMC_SOLVER_WORK_STATES_NDIMS;
|
---|
231 | int functionODE_inline(DATA* data, double stepSize)
|
---|
232 | {
|
---|
233 | return 0;
|
---|
234 | }
|
---|
235 |
|
---|
236 |
|
---|
237 | void eqFunction_2(DATA *data, _OMC_SEED_HACK) {
|
---|
238 | modelica_boolean tmp0;
|
---|
239 | modelica_boolean tmp1;
|
---|
240 | modelica_real tmp2;
|
---|
241 | modelica_boolean tmp3;
|
---|
242 | modelica_real tmp4;
|
---|
243 | modelica_boolean tmp5;
|
---|
244 | modelica_real tmp6;
|
---|
245 | /*#modelicaLine [/opt/local/lib/omlibrary/msl31/../Modelica 3.1/Blocks/Sources.mo:450:9-451:73]*/
|
---|
246 | RELATIONTOZC(tmp0, time, $Prp$PstartTime, 0,Less,<);
|
---|
247 | tmp5 = (modelica_boolean)tmp0;
|
---|
248 | if (tmp5) {
|
---|
249 | tmp6 = (modelica_real)0.0;
|
---|
250 | } else {
|
---|
251 | RELATIONTOZC(tmp1, time, ($Prp$PstartTime + $Prp$Pduration), 1,Less,<);
|
---|
252 | tmp3 = (modelica_boolean)tmp1;
|
---|
253 | if (tmp3) {
|
---|
254 | tmp2 = DIVISION(((time - $Prp$PstartTime) * $Prp$Pheight), $Prp$Pduration, _OMC_LIT3);
|
---|
255 | tmp4 = (modelica_real)tmp2;
|
---|
256 | } else {
|
---|
257 | tmp4 = (modelica_real)$Prp$Pheight;
|
---|
258 | }
|
---|
259 | tmp6 = (modelica_real)tmp4;
|
---|
260 | }
|
---|
261 | $Prp$Py = ($Prp$Poffset + tmp6);
|
---|
262 | /*#endModelicaLine*/
|
---|
263 | }
|
---|
264 |
|
---|
265 |
|
---|
266 | void eqFunction_3(DATA *data, _OMC_SEED_HACK) {
|
---|
267 | state tmp7;
|
---|
268 | modelica_real tmp11;
|
---|
269 | integer_array tmp12;
|
---|
270 | real_array tmp13;
|
---|
271 | Test_F1_rettype tmp14;
|
---|
272 | /*#modelicaLine [test.mo:13:2-13:34]*/#
|
---|
273 | {
|
---|
274 | integer_array tmp8;
|
---|
275 | int tmp9;
|
---|
276 | integer_array tmp10;
|
---|
277 | modelica_real _$reductionFoldTmpB;
|
---|
278 | modelica_real _$reductionFoldTmpA;
|
---|
279 | integer_array_create(&tmp10, ((modelica_integer*)&($Pm$Pt1)), 1, :);
|
---|
280 | tmp8 = tmp10;
|
---|
281 | tmp9 = 1;
|
---|
282 | _$reductionFoldTmpB = 0.0; /* defaultValue */
|
---|
283 | while (tmp9 <= size_of_dimension_integer_array(tmp8, 1)) {
|
---|
284 | modelica_integer $Pi;
|
---|
285 | $Pi = *(integer_array_element_addr1(&tmp8, 1, tmp9++));
|
---|
286 | tmp7 = get_memory_state();
|
---|
287 | if (1) {
|
---|
288 | _$reductionFoldTmpA = (&$Pm$Pt2)[(((modelica_integer)$Pi))];
|
---|
289 | _$reductionFoldTmpB = ($P$reductionFoldTmpA + $P$reductionFoldTmpB);
|
---|
290 | }
|
---|
291 | restore_memory_state(tmp7);
|
---|
292 | }
|
---|
293 | tmp11 = _$reductionFoldTmpB;
|
---|
294 | }
|
---|
295 | $Pm$Ps = tmp11;
|
---|
296 | /*#endModelicaLine*/
|
---|
297 | /*#modelicaLine [test.mo:14:2-14:22]*/#
|
---|
298 | integer_array_create(&tmp12, ((modelica_integer*)&($Pm$Pt1)), 1, 7);
|
---|
299 | real_array_create(&tmp13, ((modelica_real*)&($Pm$Pt2)), 1, 7);
|
---|
300 | #ifdef _OMC_MEASURE_TIME
|
---|
301 | SIM_PROF_TICK_FN(Test_F1_index);
|
---|
302 | #endif
|
---|
303 | tmp14 = _Test_F1((modelica_integer)$Pm$Pn, $Prp$Py, $Pm$Ps, tmp12, tmp13);
|
---|
304 | #ifdef _OMC_MEASURE_TIME
|
---|
305 | SIM_PROF_ACC_FN(Test_F1_index);
|
---|
306 | #endif
|
---|
307 | $Pm$Pn = tmp14.Test_F1_rettype_1;
|
---|
308 | /*#endModelicaLine*/
|
---|
309 | }
|
---|
310 |
|
---|
311 | /* for continuous time variables */
|
---|
312 | int functionAlgebraics(DATA *data)
|
---|
313 | {
|
---|
314 | state mem_state;
|
---|
315 |
|
---|
316 | mem_state = get_memory_state();
|
---|
317 | eqFunction_2(data, _OMC_SEED_HACK_2);
|
---|
318 | eqFunction_3(data, _OMC_SEED_HACK_2);
|
---|
319 | restore_memory_state(mem_state);
|
---|
320 |
|
---|
321 | return 0;
|
---|
322 | }
|
---|
323 |
|
---|
324 | /* for continuous time variables */
|
---|
325 | int functionAliasEquations(DATA *data)
|
---|
326 | {
|
---|
327 | state mem_state;
|
---|
328 |
|
---|
329 | mem_state = get_memory_state();
|
---|
330 | restore_memory_state(mem_state);
|
---|
331 |
|
---|
332 | return 0;
|
---|
333 | }
|
---|
334 |
|
---|
335 |
|
---|
336 | void eqFunction_4(DATA *data, _OMC_SEED_HACK) {
|
---|
337 | /* Dummy Line */
|
---|
338 | $P$DER$P$dummy = 0.0;
|
---|
339 | /*#endModelicaLine*/
|
---|
340 | }
|
---|
341 |
|
---|
342 |
|
---|
343 | void eqFunction_5(DATA *data, _OMC_SEED_HACK) {
|
---|
344 | modelica_boolean tmp15;
|
---|
345 | modelica_boolean tmp16;
|
---|
346 | modelica_real tmp17;
|
---|
347 | modelica_boolean tmp18;
|
---|
348 | modelica_real tmp19;
|
---|
349 | modelica_boolean tmp20;
|
---|
350 | modelica_real tmp21;
|
---|
351 | /*#modelicaLine [/opt/local/lib/omlibrary/msl31/../Modelica 3.1/Blocks/Sources.mo:450:9-451:73]*/
|
---|
352 | SAVEZEROCROSS(tmp15, time, $Prp$PstartTime, 0,Less,<);
|
---|
353 | tmp20 = (modelica_boolean)tmp15;
|
---|
354 | if (tmp20) {
|
---|
355 | tmp21 = (modelica_real)0.0;
|
---|
356 | } else {
|
---|
357 | SAVEZEROCROSS(tmp16, time, ($Prp$PstartTime + $Prp$Pduration), 1,Less,<);
|
---|
358 | tmp18 = (modelica_boolean)tmp16;
|
---|
359 | if (tmp18) {
|
---|
360 | tmp17 = DIVISION(((time - $Prp$PstartTime) * $Prp$Pheight), $Prp$Pduration, _OMC_LIT3);
|
---|
361 | tmp19 = (modelica_real)tmp17;
|
---|
362 | } else {
|
---|
363 | tmp19 = (modelica_real)$Prp$Pheight;
|
---|
364 | }
|
---|
365 | tmp21 = (modelica_real)tmp19;
|
---|
366 | }
|
---|
367 | $Prp$Py = ($Prp$Poffset + tmp21);
|
---|
368 | /*#endModelicaLine*/
|
---|
369 | }
|
---|
370 |
|
---|
371 |
|
---|
372 | void eqFunction_6(DATA *data, _OMC_SEED_HACK) {
|
---|
373 | state tmp22;
|
---|
374 | modelica_real tmp26;
|
---|
375 | integer_array tmp27;
|
---|
376 | real_array tmp28;
|
---|
377 | Test_F1_rettype tmp29;
|
---|
378 | /*#modelicaLine [test.mo:13:2-13:34]*/#
|
---|
379 | {
|
---|
380 | integer_array tmp23;
|
---|
381 | int tmp24;
|
---|
382 | integer_array tmp25;
|
---|
383 | modelica_real _$reductionFoldTmpB;
|
---|
384 | modelica_real _$reductionFoldTmpA;
|
---|
385 | integer_array_create(&tmp25, ((modelica_integer*)&($Pm$Pt1)), 1, :);
|
---|
386 | tmp23 = tmp25;
|
---|
387 | tmp24 = 1;
|
---|
388 | _$reductionFoldTmpB = 0.0; /* defaultValue */
|
---|
389 | while (tmp24 <= size_of_dimension_integer_array(tmp23, 1)) {
|
---|
390 | modelica_integer $Pi;
|
---|
391 | $Pi = *(integer_array_element_addr1(&tmp23, 1, tmp24++));
|
---|
392 | tmp22 = get_memory_state();
|
---|
393 | if (1) {
|
---|
394 | _$reductionFoldTmpA = (&$Pm$Pt2)[(((modelica_integer)$Pi))];
|
---|
395 | _$reductionFoldTmpB = ($P$reductionFoldTmpA + $P$reductionFoldTmpB);
|
---|
396 | }
|
---|
397 | restore_memory_state(tmp22);
|
---|
398 | }
|
---|
399 | tmp26 = _$reductionFoldTmpB;
|
---|
400 | }
|
---|
401 | $Pm$Ps = tmp26;
|
---|
402 | /*#endModelicaLine*/
|
---|
403 | /*#modelicaLine [test.mo:14:2-14:22]*/#
|
---|
404 | integer_array_create(&tmp27, ((modelica_integer*)&($Pm$Pt1)), 1, 7);
|
---|
405 | real_array_create(&tmp28, ((modelica_real*)&($Pm$Pt2)), 1, 7);
|
---|
406 | #ifdef _OMC_MEASURE_TIME
|
---|
407 | SIM_PROF_TICK_FN(Test_F1_index);
|
---|
408 | #endif
|
---|
409 | tmp29 = _Test_F1((modelica_integer)$Pm$Pn, $Prp$Py, $Pm$Ps, tmp27, tmp28);
|
---|
410 | #ifdef _OMC_MEASURE_TIME
|
---|
411 | SIM_PROF_ACC_FN(Test_F1_index);
|
---|
412 | #endif
|
---|
413 | $Pm$Pn = tmp29.Test_F1_rettype_1;
|
---|
414 | /*#endModelicaLine*/
|
---|
415 | }
|
---|
416 |
|
---|
417 | int functionDAE(DATA *data, int *needToIterate)
|
---|
418 | {
|
---|
419 | state mem_state;
|
---|
420 | *needToIterate = 0;
|
---|
421 |
|
---|
422 | mem_state = get_memory_state();
|
---|
423 | eqFunction_4(data, _OMC_SEED_HACK_2);
|
---|
424 | eqFunction_5(data, _OMC_SEED_HACK_2);
|
---|
425 | eqFunction_6(data, _OMC_SEED_HACK_2);
|
---|
426 | restore_memory_state(mem_state);
|
---|
427 |
|
---|
428 | return 0;
|
---|
429 | }
|
---|
430 |
|
---|
431 | int function_onlyZeroCrossings(DATA *data, double *gout,double *t)
|
---|
432 | {
|
---|
433 | state mem_state;
|
---|
434 |
|
---|
435 | mem_state = get_memory_state();
|
---|
436 | ZEROCROSSING(0, Less(time, $Prp$PstartTime));
|
---|
437 | ZEROCROSSING(1, Less(time, ($Prp$PstartTime + $Prp$Pduration)));
|
---|
438 | restore_memory_state(mem_state);
|
---|
439 |
|
---|
440 | return 0;
|
---|
441 | }
|
---|
442 |
|
---|
443 | int checkForDiscreteChanges(DATA *data)
|
---|
444 | {
|
---|
445 | int needToIterate = 0;
|
---|
446 |
|
---|
447 | if ($Pm$Pn != $P$PRE$Pm$Pn) { DEBUG_INFO2(LOG_EVENTS,"Discrete Var m.n : %ld to %ld", $P$PRE$Pm$Pn, $Pm$Pn); needToIterate=1; }
|
---|
448 |
|
---|
449 | return needToIterate;
|
---|
450 | }
|
---|
451 |
|
---|
452 | /* for continuous time variables */
|
---|
453 | int checkForAsserts(DATA *data)
|
---|
454 | {
|
---|
455 |
|
---|
456 |
|
---|
457 | return 0;
|
---|
458 | }
|
---|
459 |
|
---|
460 | int functionJacA(DATA* data, double* jac){
|
---|
461 | return 0;
|
---|
462 | }
|
---|
463 |
|
---|
464 | int functionJacB(DATA* data, double* jac){
|
---|
465 | return 0;
|
---|
466 | }
|
---|
467 |
|
---|
468 | int functionJacC(DATA* data, double* jac){
|
---|
469 | return 0;
|
---|
470 | }
|
---|
471 |
|
---|
472 | int functionJacD(DATA* data, double* jac){
|
---|
473 | return 0;
|
---|
474 | }
|
---|
475 |
|
---|
476 | const char *linear_model_frame =
|
---|
477 | "model linear_Test.Test1\n parameter Integer n = 1; // states \n parameter Integer k = 0; // top-level inputs \n parameter Integer l = 0; // top-level outputs \n"
|
---|
478 | " parameter Real x0[1] = {%s};\n"
|
---|
479 | " parameter Real u0[0] = {%s};\n"
|
---|
480 | " parameter Real A[1,1] = [%s];\n"
|
---|
481 | " parameter Real B[1,0] = zeros(1,0);%s\n"
|
---|
482 | " parameter Real C[0,1] = zeros(0,1);%s\n"
|
---|
483 | " parameter Real D[0,0] = zeros(0,0);%s\n"
|
---|
484 | " Real x[1](start=x0);\n"
|
---|
485 | " input Real u[0];\n"
|
---|
486 | " output Real y[0];\n"
|
---|
487 | "\n Real x_P$dummy = x[1];\n \n"
|
---|
488 | "equation\n der(x) = A * x + B * u;\n y = C * x + D * u;\nend linear_Test.Test1;\n"
|
---|
489 | ;
|
---|
490 |
|
---|
491 | #ifdef __cplusplus
|
---|
492 | }
|
---|
493 | #endif
|
---|
494 |
|
---|
495 | /* forward the main in the simulation runtime */
|
---|
496 | extern int _main_SimulationRuntime(int argc, char**argv, DATA *data);
|
---|
497 |
|
---|
498 | /* call the simulation runtime main from our main! */
|
---|
499 | int main(int argc, char**argv)
|
---|
500 | {
|
---|
501 | DATA data;
|
---|
502 | initializeDataStruc_X_(&data);
|
---|
503 | return _main_SimulationRuntime(argc, argv, &data);
|
---|
504 | }
|
---|
505 |
|
---|