Skip to content

Commit 3cf1f11

Browse files
author
Vitalij Ruge
committed
-updated and added new tests for the dyn. optimization
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@21991 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
1 parent 6844d5b commit 3cf1f11

File tree

1 file changed

+18
-18
lines changed
  • SimulationRuntime/c/optimization/eval_all

1 file changed

+18
-18
lines changed

SimulationRuntime/c/optimization/eval_all/EvalG.c

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ Bool evalfG(Index n, double * vopt, Bool new_x, int m, Number *g, void * useData
8080
const int index_con = optData->dim.index_con;
8181

8282
modelica_real ***v;
83-
long double *a[np];
83+
long double a[5][5];
8484
long double *sdt;
8585
double * vv[np+1];
8686
int i, j, k, shift;
@@ -89,21 +89,17 @@ Bool evalfG(Index n, double * vopt, Bool new_x, int m, Number *g, void * useData
8989
optData2ModelData(optData, vopt, 1);
9090

9191
v = optData->v;
92-
93-
for(j = 0; j< np; ++j)
94-
a[j] = optData->rk.a[j];
92+
memcpy(a ,optData->rk.a, sizeof(optData->rk.a));
9593

9694
vv[0] = optData->sv0;
97-
for(j = 0; j < np; ++j){
98-
vv[j + 1] = vopt + j*nv;
95+
vv[1] = vopt;
96+
for(j = 1; j < np; ++j){
97+
vv[j + 1] = vv[j] + nv;
9998
}
10099

101-
for(i = 0, shift = 0; i <nsi; ++i){
102-
103-
sdt = optData->bounds.scaldt[i];
104-
105-
if(np == 3){
106-
100+
if(np == 3){
101+
for(i = 0, shift = 0; i <nsi; ++i){
102+
sdt = optData->bounds.scaldt[i];
107103
/*1*/
108104
for(k=0; k< nx; ++k){
109105
g[shift++] = (a[0][0]*vv[0][k] + a[0][3]*vv[3][k] + sdt[k]*v[i][0][k+nx])
@@ -127,18 +123,22 @@ Bool evalfG(Index n, double * vopt, Bool new_x, int m, Number *g, void * useData
127123
}
128124
memcpy(g + shift, &v[i][2][index_con], nc*sizeof(double));
129125
shift +=nc;
130-
131-
}else if(np == 1){
126+
vv[0] = vv[np];
127+
for(j = 0; j < np; ++j)
128+
vv[j + 1] = vv[j] + nv;
129+
}
130+
}else if(np == 1){
131+
for(i = 0, shift = 0; i <nsi; ++i){
132+
sdt = optData->bounds.scaldt[i];
132133
for(k = 0; k < nx; ++k)
133134
g[shift++] = vv[0][k] + (sdt[k]*v[i][0][k+nx] - vv[1][k]);
134135

135136
memcpy(g + shift, &v[i][0][index_con], nc*sizeof(double));
136137
shift += nc;
138+
vv[0] = vv[np];
139+
for(j = 0; j < np; ++j)
140+
vv[j + 1] = vv[j] + nv;
137141
}
138-
139-
vv[0] = vv[np];
140-
for(j = 0; j < np; ++j)
141-
vv[j + 1] = vv[j] + nv;
142142
}
143143
if(ACTIVE_STREAM(LOG_IPOPT_ERROR)){
144144
const int nJ = optData->dim.nJ;

0 commit comments

Comments
 (0)