Fixed indexing problems when evaluating Jacobian for 1D simulations

This commit is contained in:
Ray Speth 2012-03-01 16:56:36 +00:00
parent c3398e7a3e
commit 38322d720a
2 changed files with 7 additions and 10 deletions

View file

@ -56,8 +56,7 @@ void MultiJac::eval(doublereal* x0, doublereal* resid0, doublereal rdt)
m_nevals++;
clock_t t0 = clock();
bfill(0.0);
size_t n, m, ipt=0, i, j, nv, mv, iloc;
size_t n, m, ipt=0, j, nv, mv, iloc;
doublereal rdx, dx, xsave;
for (j = 0; j < m_points; j++) {
@ -75,7 +74,7 @@ void MultiJac::eval(doublereal* x0, doublereal* resid0, doublereal rdt)
m_resid->eval(j, x0, DATA_PTR(m_r1), rdt, 0);
// compute nth column of Jacobian
for (i = j - 1; i <= j+1; i++) {
for (size_t i = j - 1; i != j+2; i++) {
if (i != npos && i < m_points) {
mv = m_resid->nVars(i);
iloc = m_resid->loc(i);

View file

@ -666,32 +666,30 @@ void FreeFlame::eval(size_t jg, doublereal* xg,
doublereal* rsd = rg + loc();
integer* diag = diagg + loc();
size_t jmin, jmax, jpt;
jpt = jg - firstPoint();
size_t jmin, jmax;
if (jg == npos) { // evaluate all points
jmin = 0;
jmax = m_points - 1;
} else { // evaluate points for Jacobian
jmin = std::max<size_t>(jpt-1, 0);
size_t jpt = (jg == 0) ? 0 : jg - firstPoint();
jmin = std::max<size_t>(jpt, 1) - 1;
jmax = std::min(jpt+1,m_points-1);
}
// properties are computed for grid points from j0 to j1
size_t j0 = std::max<size_t>(jmin-1,0);
size_t j0 = std::max<size_t>(jmin, 1) - 1;
size_t j1 = std::min(jmax+1,m_points-1);
size_t j, k;
//-----------------------------------------------------
// update properties
//-----------------------------------------------------
// update thermodynamic properties only if a Jacobian is not
// being evaluated
if (jpt == npos) {
if (jg == npos) {
updateThermo(x, j0, j1);
updateTransport(x, j0, j1);
}