Skip to content

Commit

Permalink
Fixed memory error in initialitation after rev6171
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@6177 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Willi Braun committed Sep 22, 2010
1 parent 9cdf036 commit d20f9f9
Showing 1 changed file with 25 additions and 9 deletions.
34 changes: 25 additions & 9 deletions c_runtime/simulation_init.cpp
Expand Up @@ -201,8 +201,7 @@ int initialize(const std::string*method)

int startIndPar = 2*globalData->nStates+globalData->nAlgebraic+globalData->intVariables.nAlgebraic+globalData->boolVariables.nAlgebraic+globalData->stringVariables.nAlgebraic;
int endIndPar = startIndPar+globalData->nParameters+globalData->intVariables.nParameters+globalData->boolVariables.nParameters+globalData->stringVariables.nParameters;
for (ind=startIndPar;
ind<endIndPar; ind++){
for (ind=startIndPar;ind<endIndPar; ind++){
if (globalData->initFixed[ind]==0)
nz++;
}
Expand All @@ -228,18 +227,35 @@ int initialize(const std::string*method)
double *z= new double[nz];
if(z == NULL) {return -1;}
/* Fill z with the non-fixed variables from x and p*/
for (ind=0, indAct=0, indz=0; ind<globalData->nStates; ind++)
{
if (globalData->initFixed[indAct++]==0)
{
z[indz++] = globalData->states[ind];
}
for (ind=0, indAct=0, indz=0; ind<globalData->nStates; ind++){
if (globalData->initFixed[indAct++]==0)
z[indz++] = globalData->states[ind];
}
for (ind=0,indAct=2*globalData->nStates+globalData->nAlgebraic; ind<globalData->nParameters; ind++) {
// for real parameters
for (ind=0,indAct=startIndPar; ind<globalData->nParameters; ind++) {
if (globalData->initFixed[indAct++]==0)
z[indz++] = globalData->parameters[ind];
}

// for int parameters
for (ind=0,indAct=startIndPar+globalData->nParameters; ind<globalData->intVariables.nParameters; ind++) {
if (globalData->initFixed[indAct++]==0)
z[indz++] = globalData->intVariables.parameters[ind];
}

// for bool parameters
for (ind=0,indAct=startIndPar+globalData->nParameters+globalData->intVariables.nParameters; ind<globalData->boolVariables.nParameters; ind++) {
if (globalData->initFixed[indAct++]==0)
z[indz++] = globalData->boolVariables.parameters[ind];
}

// for string parameters
for (ind=0,indAct=startIndPar+globalData->nParameters+globalData->intVariables.nParameters+globalData->boolVariables.nParameters; ind<globalData->stringVariables.nParameters; ind++) {
if (globalData->initFixed[indAct++]==0)
z[indz++] = globalData->stringVariables.parameters[ind];
}


int retVal=0;
if (init_method == std::string("simplex")) {
retVal = simplex_initialization(nz,z);
Expand Down

0 comments on commit d20f9f9

Please sign in to comment.