Skip to content

Commit

Permalink
- fixed constraints size
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@18808 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Vitalij Ruge committed Jan 27, 2014
1 parent d535f31 commit 7bde9cb
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 19 deletions.
29 changes: 13 additions & 16 deletions Compiler/Template/CodegenC.tpl
Expand Up @@ -10417,9 +10417,8 @@ template optimizationComponents1(ClassAttributes classAttribute, SimCode simCode
<<
*res = $P$TMP_lagrangeTerm;
return 0;
>>
let listConstraintsLength = match simCode case SIMCODE(modelInfo = MODELINFO(__)) then listLength(constraints)

>>

let constraints = match simCode case SIMCODE(modelInfo = MODELINFO(__)) then pathConstraints(constraints)
<<
/* objectiveFunction */
Expand All @@ -10444,12 +10443,7 @@ template optimizationComponents1(ClassAttributes classAttribute, SimCode simCode
/* constraints */
int <%symbolName(modelNamePrefixStr,"pathConstraints")%>(DATA* data, modelica_real* res, long int* N)
{
if(*N < 0)
{
*N = <%listConstraintsLength%>;
return 1;
}
<%constraints%>
<%constraints%>
return 0;
}
>>
Expand All @@ -10473,14 +10467,17 @@ template pathConstraint(Constraint cons)
let constrain = (constraintLst |> constraint =>
daeExp(constraint, contextOptimization, &preExp /*BUFC*/, &varDecls /*BUFD*/)
;separator="\n")
let listConstraintsLength = listLength(constraintLst)
<<
else
{
int i = 0;
<%varDecls%>
<%preExp%>
<%constrain%>
}
if(*N < 0){
*N = <%listConstraintsLength%>;
return 1;
}else{
int i = 0;
<%varDecls%>
<%preExp%>
<%constrain%>
}
>>
else error(sourceInfo(), 'Unknown Constraint List')
end pathConstraint;
Expand Down
Expand Up @@ -460,12 +460,14 @@ static int local_jac_struct(IPOPT_DATA_ *iData, int * nng)

iData->nlocalJac = 0;
iData->knowedJ = (int**) malloc( nJ* sizeof(int*));
for(i = 0; i < nJ; i++)

for(i = 0; i < nJ; i++){
iData->knowedJ[i] = (int*) calloc(iData->nv, sizeof(int));
}

iData->Hg = (short**) malloc(iData->nv * sizeof(int*));
iData->Hg = (short**) malloc(iData->nv * sizeof(short*));
for(i = 0; i < iData->nv; i++)
iData->Hg[i] = (short*) calloc(iData->nv, sizeof(int));
iData->Hg[i] = (short*) calloc(iData->nv, sizeof(short));

J = iData->knowedJ;
Hg = iData->Hg;
Expand Down

0 comments on commit 7bde9cb

Please sign in to comment.