Skip to content

Commit

Permalink
- add missing try catch block
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@8662 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
Jens Frenkel committed Apr 15, 2011
1 parent 6fd9b09 commit 20c8860
Showing 1 changed file with 52 additions and 26 deletions.
78 changes: 52 additions & 26 deletions c_runtime/solver_main.cpp
Expand Up @@ -349,23 +349,36 @@ solver_main(int argc, char** argv, double &start, double &stop, double &step,
{
sim_result->emit();
}
do
{
if (IterationNum > IterationMax)
{
throw TerminateSimulationException(globalData->timeValue, string(
"ERROR: Too many Iteration while the initialization. System is not consistent!\n"));
}
if (initialize(init_method))
{
throw TerminateSimulationException(globalData->timeValue, string(
"Error in initialization. Storing results and exiting.\n"));
try
{
do
{
if (IterationNum > IterationMax)
{
throw TerminateSimulationException(globalData->timeValue, string(
"ERROR: Too many Iteration while the initialization. System is not consistent!\n"));
}
if (initialize(init_method))
{
throw TerminateSimulationException(globalData->timeValue, string(
"Error in initialization. Storing results and exiting.\n"));
}
saveall();
functionDAE(&needToIterate);
functionAliasEquations();
IterationNum++;
} while (checkForDiscreteChanges() || needToIterate);
}
catch (TerminateSimulationException &e)
{
cout << e.getMessage() << endl;
if (modelTermination)
{ // terminated from assert, etc.
cout << "Simulation terminated at time " << globalData->timeValue
<< endl;
return -1;
}
saveall();
functionDAE(&needToIterate);
functionAliasEquations();
IterationNum++;
} while (checkForDiscreteChanges() || needToIterate);
}
SaveZeroCrossings();
saveall();
if (sim_verbose >= LOG_SOLVER)
Expand All @@ -388,17 +401,30 @@ solver_main(int argc, char** argv, double &start, double &stop, double &step,
{
sim_result->emit();
}
while (checkForDiscreteChanges() || needToIterate)
{
saveall();
functionDAE(&needToIterate);
IterationNum++;
if (IterationNum > IterationMax)
{
throw TerminateSimulationException(globalData->timeValue, string(
"ERROR: Too many Iteration. System is not consistent!\n"));
try
{
while (checkForDiscreteChanges() || needToIterate)
{
saveall();
functionDAE(&needToIterate);
IterationNum++;
if (IterationNum > IterationMax)
{
throw TerminateSimulationException(globalData->timeValue, string(
"ERROR: Too many Iteration. System is not consistent!\n"));
}
}
}
catch (TerminateSimulationException &e)
{
cout << e.getMessage() << endl;
if (modelTermination)
{ // terminated from assert, etc.
cout << "Simulation terminated at time " << globalData->timeValue
<< endl;
return -1;
}
}
}
functionAliasEquations();
SaveZeroCrossings();
if (sampleEvent_actived)
Expand Down

0 comments on commit 20c8860

Please sign in to comment.