Fixed an error in a calling routine.
Fixed an error involving passing a pointer through an integer array, when the length of the pointer is longer than the length of a single integer. Basically, you have to cast first to the longer variable, before assigning.
This commit is contained in:
parent
84fc02996b
commit
2d43407eeb
1 changed files with 7 additions and 3 deletions
|
|
@ -42,9 +42,11 @@ extern "C" {
|
||||||
const doublereal* y, const doublereal* yprime,
|
const doublereal* y, const doublereal* yprime,
|
||||||
const doublereal* cj, doublereal* delta,
|
const doublereal* cj, doublereal* delta,
|
||||||
integer* ires, doublereal* rpar, integer* ipar) {
|
integer* ires, doublereal* rpar, integer* ipar) {
|
||||||
void* hndl = (void*)ipar[0];
|
void **iddres_res = reinterpret_cast<void **>(&(ipar[0]));
|
||||||
|
void *hndl = *iddres_res;
|
||||||
Cantera::ResidEval* f = (Cantera::ResidEval*)hndl;
|
Cantera::ResidEval* f = (Cantera::ResidEval*)hndl;
|
||||||
f->evalResid(*t, y, yprime, delta);
|
double delta_t = 0.0;
|
||||||
|
f->evalResid(*t, delta_t, y, yprime, delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ddaspk_jac() {}
|
static void ddaspk_jac() {}
|
||||||
|
|
@ -84,7 +86,9 @@ namespace Cantera {
|
||||||
m_iwork.resize(20); // "
|
m_iwork.resize(20); // "
|
||||||
m_ipar.resize(2);
|
m_ipar.resize(2);
|
||||||
m_rpar.resize(2);
|
m_rpar.resize(2);
|
||||||
m_ipar[0] = integer((void*)(&m_resid));
|
void *iddr = static_cast<void *>(&m_resid);
|
||||||
|
void **iddr_ipar = reinterpret_cast<void **>(&(m_ipar[0]));
|
||||||
|
*iddr_ipar = iddr;
|
||||||
setTolerances(1.e-7, 1.e-15);
|
setTolerances(1.e-7, 1.e-15);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue