16static int RHSF(
double t, N_Vector y, N_Vector ydot,
void* f_data);
45 for(
int i=0, k=0; i<
domn->
v.size(); i++)
46 if(
domn->
v.at(i)->L_transported)
57 cvode_mem = CVodeCreate(CV_BDF, CV_NEWTON);
60 cout << endl <<
"ERROR INITIALIZING CVODE MEMORY" << endl;
72 flag = CVodeSetMaxNumSteps(
cvode_mem, 2000);
80 N_VDestroy_Serial(
var);
97 for(
int k=0; k<
neq; k++)
113 for(
int k=0; k<
neq; k++)
128static int RHSF(
double t, N_Vector y, N_Vector ydot,
void* f_data) {
133 for(
int k=0; k<cvd->
neq; k++)
134 cvd->
tVarMap[k]->d.at(cvd->
iC) = NV_Ith_S(y,k);
138 for(
int k=0; k<cvd->
neq; k++)
141 for(
int k=0; k < cvd->
neq; k++) {
142 NV_Ith_S(ydot,k) = cvd->
tVarMap[k]->rhsSrc.at(cvd->
iC);
144 NV_Ith_S(ydot,k) += cvd->
tVarMap.at(k)->rhsMix.at(cvd->
iC);
157 if(flag != CV_SUCCESS) {
158 cout << endl <<
"ERROR in " << func << endl;
bool LincludeRhsMix
if true, mixing term is included in integration
void init(domain *p_domn, const bool p_LincludeRhsMix)
domain * domn
pointer to main domain object
bool Ldestruct
true if we setup cvode and can therefore destruct
void testCVflag(int flag, string func)
void * cvode_mem
CVode memory.
map< int, dv * > tVarMap
map to transported variables. (Domain vars in any order, but here, solve transported).
void integrateCell(int p_iC, double tres)
int iC
which cell are we integrating
int neq
number of eqns solved
N_Vector var
vector of variables being solved for CVode
domaincase * domc
domaincase class: set specific vars...
int nTrans
number of transported variables on the domain.
vector< dv * > v
All domain variables are stored in here.
param * pram
pointer to the parameters object
virtual void setCaseSpecificVars_cvode(const int &ipt)
double cvode_atol
absolute tolerace atol for cvode
string Lsolver
EXPLICIT, SEMI-IMPLICIT, or STRANG.
double cvode_rtol
relative tolerace rtol for cvode
Header file for class cvodeDriver.h.
Header file for class domain.