Skip to content

Commit e4dbe3b

Browse files
committed
- return something in SimulationRuntime/c/util/integer_array.c
- hopefully fix condition in SimulationRuntime/c/simulation/solver/initialization/initialization.c - try to use proper data types in function interfaces - get rid of some of the warnings - transform to char* where needed git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@23747 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent 44803ec commit e4dbe3b

File tree

14 files changed

+65
-61
lines changed

14 files changed

+65
-61
lines changed

SimulationRuntime/c/meta/meta_modelica_builtin.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ modelica_metatype boxptr_stringGetStringChar(threadData_t *threadData,metamodeli
355355
MMC_CHECK_STRING(str);
356356
if (ix < 1 || ix > (long) MMC_STRLEN(str))
357357
MMC_THROW_INTERNAL();
358-
return mmc_strings_len1[MMC_STRINGDATA(str)[ix-1]];
358+
return mmc_strings_len1[(size_t)MMC_STRINGDATA(str)[ix-1]];
359359
}
360360

361361
modelica_integer nobox_stringGet(threadData_t *threadData,metamodelica_string str, modelica_integer ix)

SimulationRuntime/c/simulation/results/simulation_result_wall.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,19 +144,19 @@ static void write_aliases(std::ofstream &fp, MODEL_DATA *modelData, int include[
144144
msgpack_str(fp, "als");
145145
int na = 0; // Number of aliases (include time) for this request
146146
for(long i=0;i<modelData->nAliasReal;i++)
147-
na += include[modelData->realAlias[i].aliasType];
147+
na += include[(int)modelData->realAlias[i].aliasType];
148148
for(long i=0;i<modelData->nAliasInteger;i++)
149-
na += include[modelData->integerAlias[i].aliasType];
149+
na += include[(int)modelData->integerAlias[i].aliasType];
150150
for(long i=0;i<modelData->nAliasBoolean;i++)
151-
na += include[modelData->booleanAlias[i].aliasType];
151+
na += include[(int)modelData->booleanAlias[i].aliasType];
152152
for(long i=0;i<modelData->nAliasString;i++)
153-
na += include[modelData->stringAlias[i].aliasType];
153+
na += include[(int)modelData->stringAlias[i].aliasType];
154154

155155
msgpack_obj_header(fp, na);
156156

157157
for(long i=0;i<modelData->nAliasReal;i++) {
158158
DATA_REAL_ALIAS *alias = &modelData->realAlias[i];
159-
if (include[alias->aliasType]==0) continue;
159+
if (include[(int)alias->aliasType]==0) continue;
160160
if (alias->aliasType==2) sig = "time";
161161
if (alias->aliasType==1) sig = modelData->realParameterData[alias->nameID].info.name;
162162
if (alias->aliasType==0) sig = modelData->realVarsData[alias->nameID].info.name;
@@ -165,7 +165,7 @@ static void write_aliases(std::ofstream &fp, MODEL_DATA *modelData, int include[
165165

166166
for(long i=0;i<modelData->nAliasInteger;i++) {
167167
DATA_INTEGER_ALIAS *alias = &modelData->integerAlias[i];
168-
if (include[alias->aliasType]==0) continue;
168+
if (include[(int)alias->aliasType]==0) continue;
169169
if (alias->aliasType==2) sig = "time";
170170
if (alias->aliasType==1) sig = modelData->integerParameterData[alias->nameID].info.name;
171171
if (alias->aliasType==0) sig = modelData->integerVarsData[alias->nameID].info.name;
@@ -174,7 +174,7 @@ static void write_aliases(std::ofstream &fp, MODEL_DATA *modelData, int include[
174174

175175
for(long i=0;i<modelData->nAliasBoolean;i++) {
176176
DATA_BOOLEAN_ALIAS *alias = &modelData->booleanAlias[i];
177-
if (include[alias->aliasType]==0) continue;
177+
if (include[(int)alias->aliasType]==0) continue;
178178
if (alias->aliasType==2) sig = "time";
179179
if (alias->aliasType==1) sig = modelData->booleanParameterData[alias->nameID].info.name;
180180
if (alias->aliasType==0) sig = modelData->booleanVarsData[alias->nameID].info.name;
@@ -183,7 +183,7 @@ static void write_aliases(std::ofstream &fp, MODEL_DATA *modelData, int include[
183183

184184
for(long i=0;i<modelData->nAliasString;i++) {
185185
DATA_STRING_ALIAS *alias = &modelData->stringAlias[i];
186-
if (include[alias->aliasType]==0) continue;
186+
if (include[(int)alias->aliasType]==0) continue;
187187
if (alias->aliasType==2) sig = "time";
188188
if (alias->aliasType==1) sig = modelData->stringParameterData[alias->nameID].info.name;
189189
if (alias->aliasType==0) sig = modelData->stringVarsData[alias->nameID].info.name;

SimulationRuntime/c/simulation/simulation_input_xml.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -389,13 +389,13 @@ void read_input_xml(MODEL_DATA* modelData,
389389
infoStreamPrint(LOG_SIMULATION, 0, "tolerance = %g", simulationInfo->tolerance);
390390

391391
read_value_mm(mi.de["solver"], &simulationInfo->solverMethod);
392-
infoStreamPrint(LOG_SIMULATION, 0, "solver method: %s", simulationInfo->solverMethod);
392+
infoStreamPrint(LOG_SIMULATION, 0, "solver method: %s", MMC_STRINGDATA(simulationInfo->solverMethod));
393393

394394
read_value_mm(mi.de["outputFormat"], &(simulationInfo->outputFormat));
395-
infoStreamPrint(LOG_SIMULATION, 0, "output format: %s", simulationInfo->outputFormat);
395+
infoStreamPrint(LOG_SIMULATION, 0, "output format: %s", MMC_STRINGDATA(simulationInfo->outputFormat));
396396

397397
read_value_mm(mi.de["variableFilter"], &(simulationInfo->variableFilter));
398-
infoStreamPrint(LOG_SIMULATION, 0, "variable filter: %s", simulationInfo->variableFilter);
398+
infoStreamPrint(LOG_SIMULATION, 0, "variable filter: %s", MMC_STRINGDATA(simulationInfo->variableFilter));
399399

400400
read_value(mi.md["OPENMODELICAHOME"], &simulationInfo->OPENMODELICAHOME);
401401
infoStreamPrint(LOG_SIMULATION, 0, "OPENMODELICAHOME: %s", simulationInfo->OPENMODELICAHOME);

SimulationRuntime/c/simulation/solver/dassl.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ int dassl_step(DATA* data, SOLVER_INFO* solverInfo)
547547
externalInputUpdate(data);
548548
data->callback->input_function(data);
549549

550-
DDASKR(functionODE_residual, &mData->nStates,
550+
DDASKR(functionODE_residual, (int*) &mData->nStates,
551551
&solverInfo->currentTime, sData->realVars, stateDer, &tout,
552552
dasslData->info, dasslData->rtol, dasslData->atol, &dasslData->idid,
553553
dasslData->rwork, &dasslData->lrw, dasslData->iwork, &dasslData->liw,

SimulationRuntime/c/simulation/solver/initialization/initialization.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -884,7 +884,9 @@ static int importStartValues(DATA *data, const char *pInitFile, double initTime)
884884
omc_matlab4_val(&(mData->realVarsData[i].attribute.start), &reader, pVar, initTime);
885885
infoStreamPrint(LOG_INIT, 0, "| %s(start=%g)", mData->realVarsData[i].info.name, mData->realVarsData[i].attribute.start);
886886
}
887-
else if(strlen(mData->realVarsData[i].info.name) > 0 && mData->realVarsData[i].info.name[0] != '$' != 0 && strncmp(mData->realVarsData[i].info.name, "der($", 5) != 0)
887+
else if((strlen(mData->realVarsData[i].info.name) > 0) &&
888+
(mData->realVarsData[i].info.name[0] != '$') &&
889+
(strncmp(mData->realVarsData[i].info.name, "der($", 5) != 0))
888890
{
889891
/* skip warnings about self-generated variables */
890892
warningStreamPrint(LOG_INIT, 0, "unable to import real variable %s from given file", mData->realVarsData[i].info.name);

SimulationRuntime/c/simulation/solver/linearSolverTotalPivot.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ int getAnalyticalJacobianTotalPivot(DATA* data, double* jac, int sysNumber)
353353
static int wrapper_fvec_totalpivot(double* x, double* f, void* data, int sysNumber)
354354
{
355355
int currentSys = sysNumber;
356-
int iflag;
356+
int iflag = 0;
357357
/* NONLINEAR_SYSTEM_DATA* systemData = &(((DATA*)data)->simulationInfo.nonlinearSystemData[currentSys]); */
358358
/* DATA_NEWTON* solverData = (DATA_NEWTON*)(systemData->solverData); */
359359

SimulationRuntime/c/simulation/solver/nonlinearSolverHomotopy.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ static int getNumericalJacobianHomotopy(DATA_HOMOTOPY* solverData, double *x, do
802802
*/
803803
static int wrapper_fvec(DATA_HOMOTOPY* solverData, double* x, double* f)
804804
{
805-
int iflag=0;
805+
int iflag = 0;
806806

807807
/*TODO: change input to residualFunc from data to systemData */
808808
(solverData->data)->simulationInfo.nonlinearSystemData[solverData->sysNumber].residualFunc(solverData->data, x, f, &iflag);
@@ -1371,9 +1371,9 @@ static int homotopyAlgorithm(DATA_HOMOTOPY* solverData, double *x)
13711371
int numSteps = 0;
13721372
int stepAccept = 0;
13731373
int runHomotopy = 0;
1374-
double bend;
1374+
double bend = 0;
13751375
double sProd, detJac;
1376-
double tau=0.2, tauMax = 10.0, tauMin = 1e-4, hEps = 1e-3, adaptBend = 0.05;
1376+
double tau = 0.2, tauMax = 10.0, tauMin = 1e-4, hEps = 1e-3, adaptBend = 0.05;
13771377
int m = solverData->m;
13781378
int n = solverData->n;
13791379
int initialStep = 1;
@@ -1878,4 +1878,4 @@ int solveHomotopy(DATA *data, int sysNumber)
18781878
debugString(LOG_NLS_V,"Homotopy solver did not converge!");
18791879
}
18801880
return success;
1881-
}
1881+
}

SimulationRuntime/c/simulation/solver/nonlinearSolverHybrd.c

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
#include "nonlinearSystem.h"
4646
#include "nonlinearSolverHybrd.h"
47-
extern double enorm_(int *n, double *x);
47+
extern double enorm_(integer *n, double *x);
4848

4949
typedef struct DATA_HYBRD
5050
{
@@ -91,7 +91,7 @@ struct dataAndSys {
9191
int sysNumber;
9292
};
9393

94-
static int wrapper_fvec_hybrj(const int* n, const double* x, double* f, double* fjac, const int* ldjac, const int* iflag, void* data);
94+
static int wrapper_fvec_hybrj(const integer* n, const double* x, double* f, double* fjac, const integer* ldjac, const integer* iflag, void* data);
9595

9696
/*! \fn allocate memory for nonlinear system solver hybrd
9797
*
@@ -181,7 +181,7 @@ int freeHybrdData(void **voiddata)
181181
*
182182
* \author wbraun
183183
*/
184-
static void printVector(const double *vector, const int *size, const int logLevel, const char *name)
184+
static void printVector(const double *vector, const integer *size, const int logLevel, const char *name)
185185
{
186186
int i;
187187
if (!ACTIVE_STREAM(logLevel)) return;
@@ -249,7 +249,7 @@ static int getNumericalJacobian(struct dataAndSys* dataAndSysNum, double* jac, c
249249

250250
double delta_h = sqrt(solverData->epsfcn);
251251
double delta_hh, delta_hhh, deltaInv;
252-
int iflag = 1;
252+
integer iflag = 1;
253253
int i, j, l;
254254

255255
memcpy(solverData->xSave, x, solverData->n*sizeof(double));
@@ -338,7 +338,7 @@ static int getAnalyticalJacobian(struct dataAndSys* dataSys, double* jac)
338338
*
339339
*
340340
*/
341-
static int wrapper_fvec_hybrj(const int* n, const double* x, double* f, double* fjac, const int* ldjac, const int* iflag, void* dataAndSysNum)
341+
static int wrapper_fvec_hybrj(const integer* n, const double* x, double* f, double* fjac, const integer* ldjac, const integer* iflag, void* dataAndSysNum)
342342
{
343343
int i,j;
344344
struct dataAndSys *dataSys = (struct dataAndSys*) dataAndSysNum;
@@ -357,22 +357,22 @@ static int wrapper_fvec_hybrj(const int* n, const double* x, double* f, double*
357357

358358
/* debug output */
359359
if(ACTIVE_STREAM(LOG_NLS_RES)) {
360-
infoStreamPrint(LOG_NLS_RES, 0, "-- residual function call %d -- scaling = %d", solverData->nfev, solverData->useXScaling);
360+
infoStreamPrint(LOG_NLS_RES, 0, "-- residual function call %d -- scaling = %d", (int)solverData->nfev, solverData->useXScaling);
361361
printVector(x, n, LOG_NLS_RES, "x vector (scaled)");
362362
printVector(solverData->xScaled, n, LOG_NLS_RES, "x vector");
363363
}
364364

365365
/* call residual function */
366366
if(solverData->useXScaling){
367-
(systemData->residualFunc)(data, (const double*) solverData->xScaled, f, iflag);
367+
(systemData->residualFunc)(data, (const double*) solverData->xScaled, f, (const int*)iflag);
368368
} else {
369-
(systemData->residualFunc)(data, x, f, iflag);
369+
(systemData->residualFunc)(data, x, f, (const int*)iflag);
370370
}
371371

372372
/* debug output */
373373
if(ACTIVE_STREAM(LOG_NLS_RES)) {
374374
printVector(f, n, LOG_NLS_RES, "residuals");
375-
infoStreamPrint(LOG_NLS_RES, 0, "-- end of residual function call %d --", solverData->nfev);
375+
infoStreamPrint(LOG_NLS_RES, 0, "-- end of residual function call %d --", (int)solverData->nfev);
376376
}
377377

378378
break;
@@ -386,7 +386,7 @@ static int wrapper_fvec_hybrj(const int* n, const double* x, double* f, double*
386386

387387
/* call apropreated jacobain function */
388388
if(systemData->jacobianIndex != -1){
389-
int iflagtmp = 1;
389+
integer iflagtmp = 1;
390390
wrapper_fvec_hybrj(n, x, f, fjac, ldjac, &iflagtmp, dataSys);
391391

392392
getAnalyticalJacobian(dataSys, fjac);
@@ -402,7 +402,7 @@ static int wrapper_fvec_hybrj(const int* n, const double* x, double* f, double*
402402
if(ACTIVE_STREAM(LOG_NLS_JAC))
403403
{
404404
char buffer[16384];
405-
infoStreamPrint(LOG_NLS_JAC, 1, "jacobian matrix [%dx%d]", *n, *n);
405+
infoStreamPrint(LOG_NLS_JAC, 1, "jacobian matrix [%dx%d]", (int)*n, (int)*n);
406406
for(i=0; i<*n; i++)
407407
{
408408
buffer[0] = 0;
@@ -419,7 +419,7 @@ static int wrapper_fvec_hybrj(const int* n, const double* x, double* f, double*
419419
break;
420420

421421
default:
422-
throwStreamPrint(data->threadData, "Well, this is embarrasing. The non-linear solver should never call this case.%d", *iflag);
422+
throwStreamPrint(data->threadData, "Well, this is embarrasing. The non-linear solver should never call this case.%d", (int)*iflag);
423423
break;
424424
}
425425

@@ -445,7 +445,7 @@ int solveHybrd(DATA *data, int sysNumber)
445445
threadData_t *threadData = data->threadData;
446446

447447
int i, j;
448-
int iflag = 1;
448+
integer iflag = 1;
449449
double xerror, xerror_scaled;
450450
int success = 0;
451451
double local_tol = 1e-12;

SimulationRuntime/c/simulation/solver/nonlinearSolverHybrd.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ extern "C" {
4545
#endif
4646

4747
extern
48-
int hybrj_( int(*) (const int*, const double*, double*, double *, const int*, const int*, void*), const int *n, double *x, double *fvec, double *fjac, const int *ldfjac,
49-
const double *xtol, const int *axfev, double *diag, const int *mode,
50-
const double *factor, const int *nprint, int *info, int *nfev, int *njev,
51-
double *r, int *lr, double *qtf, double *wa1, double *wa2,
48+
int hybrj_( int(*) (const integer*, const double*, double*, double *, const integer*, const integer*, void*), const integer *n, double *x, double *fvec, double *fjac, const integer *ldfjac,
49+
const double *xtol, const integer *axfev, double *diag, const integer *mode,
50+
const double *factor, const integer *nprint, integer *info, integer *nfev, integer *njev,
51+
double *r, integer *lr, double *qtf, double *wa1, double *wa2,
5252
double *wa3, double *wa4, void* user_data);
5353

5454
#ifdef __cplusplus

SimulationRuntime/c/simulation/solver/nonlinearSystem.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ int solve_nonlinear_system(DATA *data, int sysNumber)
295295
#endif
296296

297297
((DATA*)data)->simulationInfo.solveContinuous = 0;
298-
nonlinsys->residualFunc((void*) data, nonlinsys->nlsx, fvec, &nonlinsys->size);
298+
nonlinsys->residualFunc((void*) data, nonlinsys->nlsx, fvec, (int*)&nonlinsys->size);
299299
((DATA*)data)->simulationInfo.solveContinuous = 1;
300300

301301
success = 1;

0 commit comments

Comments
 (0)