Skip to content

Commit d229500

Browse files
authored
Use DATA* data as input instead of void* (#9262)
* Use DATA* data as input instead of void* * Use LINEAR_SYSTEM_DATA* instead of void* * Fix typo in `initSparsePattern`
1 parent ed4524f commit d229500

File tree

5 files changed

+67
-93
lines changed

5 files changed

+67
-93
lines changed

OMCompiler/Compiler/Template/CodegenC.tpl

Lines changed: 25 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ end translateModel;
193193
extern int <%symbolName(modelNamePrefixStr,"inputNames")%>(DATA* data, char ** names);
194194
extern int <%symbolName(modelNamePrefixStr,"dataReconciliationInputNames")%>(DATA* data, char ** names);
195195
extern int <%symbolName(modelNamePrefixStr,"initializeDAEmodeData")%>(DATA *data, DAEMODE_DATA*);
196-
extern int <%symbolName(modelNamePrefixStr,"functionLocalKnownVars")%>(DATA*, threadData_t*);
197-
extern int <%symbolName(modelNamePrefixStr,"symbolicInlineSystem")%>(DATA*, threadData_t*);
196+
extern int <%symbolName(modelNamePrefixStr,"functionLocalKnownVars")%>(DATA* data, threadData_t* threadData);
197+
extern int <%symbolName(modelNamePrefixStr,"symbolicInlineSystem")%>(DATA* data, threadData_t* threadData);
198198
199199
#include "<%fileNamePrefix%>_literals.h"
200200
@@ -1061,7 +1061,7 @@ template simulationFile_dae(SimCode simCode)
10611061
case SOME(JAC_MATRIX(sparsity=sparse, coloredCols=colorList, maxColorCols=maxColor)) then
10621062
'<%initializeDAEmodeData(listLength(residualVars), algebraicVars, listLength(auxiliaryVars), sparse, colorList, maxColor, modelNamePrefixStr)%>'
10631063
case NONE() then
1064-
'int <%symbolName(modelNamePrefixStr,"initializeDAEmodeData")%>(DATA *inData, DAEMODE_DATA* daeModeData){ return -1; }'
1064+
'int <%symbolName(modelNamePrefixStr,"initializeDAEmodeData")%>(DATA* data, DAEMODE_DATA* daeModeData){ return -1; }'
10651065
end match
10661066
<<
10671067
/* DAE residuals */
@@ -1089,7 +1089,7 @@ template simulationFile_dae(SimCode simCode)
10891089
#ifdef __cplusplus
10901090
extern "C" {
10911091
#endif
1092-
int <%symbolName(modelNamePrefixStr,"initializeDAEmodeData")%>(DATA *inData, DAEMODE_DATA* daeModeData){ return -1; }
1092+
int <%symbolName(modelNamePrefixStr,"initializeDAEmodeData")%>(DATA* data, DAEMODE_DATA* daeModeData){ return -1; }
10931093
#ifdef __cplusplus
10941094
}
10951095
#endif<%\n%>
@@ -2103,19 +2103,17 @@ let &sub = buffer ""
21032103
<%cref(cref, &sub)%> = <%expPart%>;
21042104
>>
21052105
;separator="\n")
2106-
let &header += 'void updateContinuousPart<%index%>(void *);<%\n%>void updateIterationExpMixedSystem<%index%>(void *);<%\n%>'
2106+
let &header += 'void updateContinuousPart<%index%>(DATA* data);<%\n%>void updateIterationExpMixedSystem<%index%>(DATA* data);<%\n%>'
21072107
<<
21082108
<%auxFunction%>
2109-
void updateContinuousPart<%index%>(void *inData)
2109+
void updateContinuousPart<%index%>(DATA* data)
21102110
{
2111-
DATA* data = (DATA*) inData;
21122111
<%symbolName(modelNamePrefixStr,"eqFunction")%>_<%contEqsIndex%>(data, threadData);
21132112
data->simulationInfo->mixedSystemData[<%indexMixedSystem%>].continuous_solution = <%solvedContinuous%>;
21142113
}
21152114

2116-
void updateIterationExpMixedSystem<%index%>(void *inData)
2115+
void updateIterationExpMixedSystem<%index%>(DATA* data)
21172116
{
2118-
DATA* data = (DATA*) inData;
21192117
<%varDecls%>
21202118
21212119
<%preDisc%>
@@ -2356,9 +2354,8 @@ template functionSetupLinearSystemsTemp(list<SimEqSystem> linearSystems, String
23562354
TRACE_POP
23572355
}
23582356
OMC_DISABLE_OPT
2359-
void initializeStaticLSData<%ls.index%>(DATA* data, threadData_t *threadData, void *systemData, modelica_boolean initSparsPattern)
2357+
void initializeStaticLSData<%ls.index%>(DATA* data, threadData_t* threadData, LINEAR_SYSTEM_DATA* linearSystemData, modelica_boolean initSparsePattern)
23602358
{
2361-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
23622359
int i=0;
23632360
<%body_initializeStaticLSData%>
23642361
}
@@ -2388,29 +2385,24 @@ template functionSetupLinearSystemsTemp(list<SimEqSystem> linearSystems, String
23882385
<<
23892386
<%auxFunction%>
23902387
OMC_DISABLE_OPT
2391-
void setLinearMatrixA<%ls.index%>(void *inData, threadData_t *threadData, void *systemData)
2388+
void setLinearMatrixA<%ls.index%>(DATA* data, threadData_t* threadData, LINEAR_SYSTEM_DATA* linearSystemData)
23922389
{
23932390
const int equationIndexes[2] = {1,<%ls.index%>};
2394-
DATA* data = (DATA*) inData;
2395-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
23962391
<% if ls.partOfJac then 'ANALYTIC_JACOBIAN* parentJacobian = linearSystemData->parDynamicData[omc_get_thread_num()].parentJacobian;'%>
23972392
<%varDecls%>
23982393
<%MatrixA%>
23992394
}
24002395
OMC_DISABLE_OPT
2401-
void setLinearVectorb<%ls.index%>(void *inData, threadData_t *threadData, void *systemData)
2396+
void setLinearVectorb<%ls.index%>(DATA* data, threadData_t* threadData, LINEAR_SYSTEM_DATA* linearSystemData)
24022397
{
24032398
const int equationIndexes[2] = {1,<%ls.index%>};
2404-
DATA* data = (DATA*) inData;
2405-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
24062399
<% if ls.partOfJac then 'ANALYTIC_JACOBIAN* parentJacobian = linearSystemData->parDynamicData[omc_get_thread_num()].parentJacobian;'%>
24072400
<%varDecls2%>
24082401
<%vectorb%>
24092402
}
24102403
OMC_DISABLE_OPT
2411-
void initializeStaticLSData<%ls.index%>(DATA* data, threadData_t *threadData, void *systemData, modelica_boolean initSparsPattern)
2404+
void initializeStaticLSData<%ls.index%>(DATA* data, threadData_t* threadData, LINEAR_SYSTEM_DATA* linearSystemData, modelica_boolean initSparsePattern)
24122405
{
2413-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
24142406
int i=0;
24152407
<%body_initializeStaticLSData%>
24162408
}
@@ -2495,9 +2487,8 @@ template functionSetupLinearSystemsTemp(list<SimEqSystem> linearSystems, String
24952487
TRACE_POP
24962488
}
24972489
OMC_DISABLE_OPT
2498-
void initializeStaticLSData<%ls.index%>(DATA* data, threadData_t *threadData, void *systemData, modelica_boolean initSparsPattern)
2490+
void initializeStaticLSData<%ls.index%>(DATA* data, threadData_t* threadData, LINEAR_SYSTEM_DATA* linearSystemData, modelica_boolean initSparsePattern)
24992491
{
2500-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
25012492
int i=0;
25022493
<%body_initializeStaticLSData%>
25032494
}
@@ -2525,9 +2516,8 @@ template functionSetupLinearSystemsTemp(list<SimEqSystem> linearSystems, String
25252516
TRACE_POP
25262517
}
25272518
OMC_DISABLE_OPT
2528-
void initializeStaticLSData<%at.index%>(DATA* data, threadData_t *threadData, void *systemData, modelica_boolean initSparsPattern)
2519+
void initializeStaticLSData<%at.index%>(DATA* data, threadData_t* threadData, LINEAR_SYSTEM_DATA* linearSystemData, modelica_boolean initSparsePattern)
25292520
{
2530-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
25312521
int i=0;
25322522
<%body_initializeStaticLSData2%>
25332523
}
@@ -2581,58 +2571,48 @@ template functionSetupLinearSystemsTemp(list<SimEqSystem> linearSystems, String
25812571
<<
25822572
<%auxFunction%>
25832573
OMC_DISABLE_OPT
2584-
void setLinearMatrixA<%ls.index%>(void *inData, void *systemData)
2574+
void setLinearMatrixA<%ls.index%>(DATA* data, LINEAR_SYSTEM_DATA *linearSystemData)
25852575
{
25862576
const int equationIndexes[2] = {1,<%ls.index%>};
2587-
DATA* data = (DATA*) inData;
2588-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
25892577
<% if ls.partOfJac then 'ANALYTIC_JACOBIAN* parentJacobian = linearSystemData->parDynamicData[omc_get_thread_num()].parentJacobian;'%>
25902578
<%varDecls%>
25912579
<%MatrixA%>
25922580
}
25932581
OMC_DISABLE_OPT
2594-
void setLinearVectorb<%ls.index%>(void *inData, void *systemData)
2582+
void setLinearVectorb<%ls.index%>(DATA* data, LINEAR_SYSTEM_DATA* linearSystemData)
25952583
{
25962584
const int equationIndexes[2] = {1,<%ls.index%>};
2597-
DATA* data = (DATA*) inData;
2598-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
25992585
<% if ls.partOfJac then 'ANALYTIC_JACOBIAN* parentJacobian = linearSystemData->parDynamicData[omc_get_thread_num()].parentJacobian;'%>
26002586
<%varDecls2%>
26012587
<%vectorb%>
26022588
}
26032589
OMC_DISABLE_OPT
2604-
void initializeStaticLSData<%ls.index%>(DATA* data, threadData_t *threadData, void *systemData, modelica_boolean initSparsPattern)
2590+
void initializeStaticLSData<%ls.index%>(DATA* data, threadData_t* threadData, LINEAR_SYSTEM_DATA* linearSystemData, modelica_boolean initSparsePattern)
26052591
{
2606-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
26072592
int i=0;
26082593
<%body_initializeStaticLSData%>
26092594
}
26102595

26112596
<%auxFunction2%>
26122597
OMC_DISABLE_OPT
2613-
void setLinearMatrixA<%at.index%>(void *inData, void *systemData)
2598+
void setLinearMatrixA<%at.index%>(DATA* data, LINEAR_SYSTEM_DATA* linearSystemData)
26142599
{
26152600
const int equationIndexes[2] = {1,<%at.index%>};
2616-
DATA* data = (DATA*) inData;
2617-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
26182601
<% if ls.partOfJac then 'ANALYTIC_JACOBIAN* parentJacobian = linearSystemData->parDynamicData[omc_get_thread_num()].parentJacobian;'%>
26192602
<%varDecls3%>
26202603
<%MatrixA2%>
26212604
}
26222605
OMC_DISABLE_OPT
2623-
void setLinearVectorb<%at.index%>(void *inData, void *systemData)
2606+
void setLinearVectorb<%at.index%>(DATA* data, LINEAR_SYSTEM_DATA* linearSystemData)
26242607
{
26252608
const int equationIndexes[2] = {1,<%at.index%>};
2626-
DATA* data = (DATA*) inData;
2627-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
26282609
<% if ls.partOfJac then 'ANALYTIC_JACOBIAN* parentJacobian = linearSystemData->parDynamicData[omc_get_thread_num()].parentJacobian;'%>
26292610
<%varDecls4%>
26302611
<%vectorb2%>
26312612
}
26322613
OMC_DISABLE_OPT
2633-
void initializeStaticLSData<%at.index%>(DATA* data, threadData_t *threadData, void *systemData, modelica_boolean initSparsPattern)
2614+
void initializeStaticLSData<%at.index%>(DATA* data, threadData_t *threadData, LINEAR_SYSTEM_DATA* linearSystemData, modelica_boolean initSparsePattern)
26342615
{
2635-
LINEAR_SYSTEM_DATA* linearSystemData = (LINEAR_SYSTEM_DATA*) systemData;
26362616
int i=0;
26372617
<%body_initializeStaticLSData2%>
26382618
}
@@ -2881,8 +2861,8 @@ template getNLSPrototypes(Integer index)
28812861
::=
28822862
<<
28832863
void residualFunc<%index%>(RESIDUAL_USERDATA* userData, const double* xloc, double* res, const int* iflag);
2884-
void initializeStaticDataNLS<%index%>(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA *inSystemData, modelica_boolean initSparsPattern);
2885-
void getIterationVarsNLS<%index%>(struct DATA *inData, double *array);
2864+
void initializeStaticDataNLS<%index%>(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA *inSystemData, modelica_boolean initSparsePattern);
2865+
void getIterationVarsNLS<%index%>(DATA* data, double *array);
28862866
>>
28872867
end getNLSPrototypes;
28882868
@@ -3165,12 +3145,12 @@ template generateStaticInitialData(list<ComponentRef> crefs, String indexName)
31653145
<<
31663146
31673147
OMC_DISABLE_OPT
3168-
void initializeStaticData<%indexName%>(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA *sysData, modelica_boolean initSparsPattern)
3148+
void initializeStaticData<%indexName%>(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA *sysData, modelica_boolean initSparsePattern)
31693149
{
31703150
int i=0;
31713151
<%bodyStaticData%>
31723152
/* initial sparse pattern */
3173-
if (initSparsPattern) {
3153+
if (initSparsePattern) {
31743154
initializeSparsePattern<%indexName%>(sysData);
31753155
}
31763156
}
@@ -3187,9 +3167,8 @@ template getIterationVars(list<ComponentRef> crefs, String indexName)
31873167
<<
31883168
31893169
OMC_DISABLE_OPT
3190-
void getIterationVars<%indexName%>(struct DATA *inData, double *array)
3170+
void getIterationVars<%indexName%>(DATA* data, double *array)
31913171
{
3192-
DATA* data = (DATA*) inData;
31933172
<%vars%>
31943173
}
31953174
>>
@@ -4478,10 +4457,9 @@ template initializeDAEmodeData(Integer nResVars, list<SimVar> algVars, Integer n
44784457
<<
44794458
/* initialize the daeMode variables */
44804459
OMC_DISABLE_OPT
4481-
int <%symbolName(modelNamePrefix,"initializeDAEmodeData")%>(DATA *inData, DAEMODE_DATA* daeModeData)
4460+
int <%symbolName(modelNamePrefix,"initializeDAEmodeData")%>(DATA* data, DAEMODE_DATA* daeModeData)
44824461
{
44834462
TRACE_PUSH
4484-
DATA* data = ((DATA*)inData);
44854463
/* sparse patterns */
44864464
<%colPtr%>
44874465
<%rowIndex%>

OMCompiler/SimulationRuntime/c/simulation/solver/gbode_nls.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void GB_KINErrHandler(int error_code, const char *module, const char *function,
7272
* @param threadData Thread data for error handling
7373
* @param nonlinsys Non-linear system data.
7474
*/
75-
void initializeStaticNLSData_SR(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA* nonlinsys, modelica_boolean initSparsPattern) {
75+
void initializeStaticNLSData_SR(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA* nonlinsys, modelica_boolean initSparsePattern) {
7676
for(int i=0; i<nonlinsys->size; i++) {
7777
// Get the nominal values of the states
7878
nonlinsys->nominal[i] = fmax(fabs(data->modelData->realVarsData[i].attribute.nominal), 1e-32);
@@ -81,7 +81,7 @@ void initializeStaticNLSData_SR(DATA* data, threadData_t *threadData, NONLINEAR_
8181
}
8282

8383
/* Initialize sparsity pattern */
84-
if (initSparsPattern) {
84+
if (initSparsePattern) {
8585
nonlinsys->sparsePattern = initializeSparsePattern_SR(data, nonlinsys);
8686
nonlinsys->isPatternAvailable = TRUE;
8787
}
@@ -98,7 +98,7 @@ void initializeStaticNLSData_SR(DATA* data, threadData_t *threadData, NONLINEAR_
9898
* @param threadData Thread data for error handling
9999
* @param nonlinsys Non-linear system data.
100100
*/
101-
void initializeStaticNLSData_MR(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA* nonlinsys, modelica_boolean initSparsPattern) {
101+
void initializeStaticNLSData_MR(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA* nonlinsys, modelica_boolean initSparsePattern) {
102102

103103
// This needs to be done each time, the fast states change!
104104
for(int i=0; i<nonlinsys->size; i++) {
@@ -109,7 +109,7 @@ void initializeStaticNLSData_MR(DATA* data, threadData_t *threadData, NONLINEAR_
109109
}
110110

111111
/* Initialize sparsity pattern, First guess (all states are fast states) */
112-
if (initSparsPattern) {
112+
if (initSparsePattern) {
113113
nonlinsys->sparsePattern = initializeSparsePattern_SR(data, nonlinsys);
114114
nonlinsys->isPatternAvailable = TRUE;
115115
}
@@ -126,7 +126,7 @@ void initializeStaticNLSData_MR(DATA* data, threadData_t *threadData, NONLINEAR_
126126
* @param threadData Thread data for error handling
127127
* @param nonlinsys Non-linear system data.
128128
*/
129-
void initializeStaticNLSData_IRK(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA* nonlinsys, modelica_boolean initSparsPattern) {
129+
void initializeStaticNLSData_IRK(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA* nonlinsys, modelica_boolean initSparsePattern) {
130130
for(int i=0; i<nonlinsys->size; i++) {
131131
// Get the nominal values of the states, the non-linear system has size stages*nStates, i.e. [states, states, ...]
132132
int ii = i % data->modelData->nStates;
@@ -136,7 +136,7 @@ void initializeStaticNLSData_IRK(DATA* data, threadData_t *threadData, NONLINEAR
136136
}
137137

138138
/* Initialize sparsity pattern */
139-
if (initSparsPattern) {
139+
if (initSparsePattern) {
140140
nonlinsys->sparsePattern = initializeSparsePattern_IRK(data, nonlinsys);
141141
nonlinsys->isPatternAvailable = TRUE;
142142
}

OMCompiler/SimulationRuntime/c/simulation/solver/gbode_nls.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
extern "C" {
4444
#endif
4545

46-
void initializeStaticNLSData_SR(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA* nonlinsys, modelica_boolean initSparsPattern);
46+
void initializeStaticNLSData_SR(DATA* data, threadData_t *threadData, NONLINEAR_SYSTEM_DATA* nonlinsys, modelica_boolean initSparsePattern);
4747

4848
NONLINEAR_SYSTEM_DATA* initRK_NLS_DATA(DATA* data, threadData_t* threadData, DATA_GBODE* gbData);
4949
NONLINEAR_SYSTEM_DATA* initRK_NLS_DATA_MR(DATA* data, threadData_t* threadData, DATA_GBODEF* gbfData);

0 commit comments

Comments
 (0)