Skip to content

Commit

Permalink
- fix for cvode initialization in cpp runtime
Browse files Browse the repository at this point in the history
git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@12920 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
niklwors committed Sep 13, 2012
1 parent 0efc288 commit f448d75
Showing 1 changed file with 14 additions and 17 deletions.
31 changes: 14 additions & 17 deletions SimulationRuntime/cpp/Source/Solver/CVode/Implementation/CVode.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,21 +85,10 @@ void Cvode::init()
// 1) System assemblen und updaten, alles für Nullstellsuche anlegen
// 2) Spezielle Dimensionen bestimmen (muss wg. ODE/DAE im Solver stattfinden)
// 3) Zustandsvektor anlegen
_dimSys = continous_system->getDimVars(IContinous::ALL_STATES);
_dimZeroFunc = event_system->getDimZeroFunc();
_CV_y0 = N_VMake_Serial(_dimSys, _zInit);
_CV_y = N_VMake_Serial(_dimSys, _z);
_CV_yWrite = N_VMake_Serial(_dimSys, _zWrite);
// Allocate memory for the solver
_cvodeMem = CVodeCreate(CV_BDF, CV_NEWTON);
if(check_flag((void*)_cvodeMem, "CVodeCreate", 0))
{
_idid = -5;
throw std::invalid_argument(/*_idid,_tCurrent,*/"Cvode::init()");
}
SolverDefaultImplementation::init();



_dimSys = continous_system->getDimVars(IContinous::ALL_STATES);
_dimZeroFunc = event_system->getDimZeroFunc();

int dimAEq = continous_system->getDimVars(IContinous::DIFF_INDEX3);

Expand Down Expand Up @@ -156,7 +145,13 @@ void Cvode::init()

}


// Allocate memory for the solver
_cvodeMem = CVodeCreate(CV_BDF, CV_NEWTON);
if(check_flag((void*)_cvodeMem, "CVodeCreate", 0))
{
_idid = -5;
throw std::invalid_argument(/*_idid,_tCurrent,*/"Cvode::init()");
}

//
// Make Cvode ready for integration
Expand All @@ -170,7 +165,9 @@ void Cvode::init()
continous_system->giveVars(_zInit);
memcpy(_z,_zInit,_dimSys*sizeof(double));


_CV_y0 = N_VMake_Serial(_dimSys, _zInit);
_CV_y = N_VMake_Serial(_dimSys, _z);
_CV_yWrite = N_VMake_Serial(_dimSys, _zWrite);
if(check_flag((void*)_CV_y0, "N_VMake_Serial", 0))
{
_idid = -5;
Expand Down Expand Up @@ -224,7 +221,7 @@ void Cvode::init()
//
// CVODE is ready for integration
//

SolverDefaultImplementation::init();
}
}

Expand Down

0 comments on commit f448d75

Please sign in to comment.