Mercurial > hg > octave-nkf
diff liboctave/DASPK.cc @ 3991:48d2bc4a3729
[project @ 2002-07-16 17:46:50 by jwe]
author | jwe |
---|---|
date | Tue, 16 Jul 2002 17:46:51 +0000 |
parents | 46388d6a4e44 |
children | ee0304212be0 |
line wrap: on
line diff
--- a/liboctave/DASPK.cc +++ b/liboctave/DASPK.cc @@ -175,31 +175,27 @@ return 0; } + int -ddaspk_j (const double& time, const double *, const double *, double *pd, - const double& cj, double *, int *) +ddaspk_j (const double& time, const double *state, const double *deriv, + double *pd, const double& cj, double *, int *) { + // XXX FIXME XXX -- would be nice to avoid copying the data. + ColumnVector tmp_state (nn); ColumnVector tmp_deriv (nn); - // XXX FIXME XXX - - Matrix tmp_dfdxdot (nn, nn); - Matrix tmp_dfdx (nn, nn); + for (int i = 0; i < nn; i++) + { + tmp_deriv.elem (i) = deriv [i]; + tmp_state.elem (i) = state [i]; + } - DAEFunc::DAEJac tmp_jac; - tmp_jac.dfdxdot = &tmp_dfdxdot; - tmp_jac.dfdx = &tmp_dfdx; - - tmp_jac = user_jac (tmp_state, tmp_deriv, time); - - // Fix up the matrix of partial derivatives for daspk. - - tmp_dfdx = tmp_dfdx + cj * tmp_dfdxdot; + Matrix tmp_pd = user_jac (tmp_state, tmp_deriv, time, cj); for (int j = 0; j < nn; j++) for (int i = 0; i < nn; i++) - pd [nn * j + i] = tmp_dfdx.elem (i, j); + pd [nn * j + i] = tmp_pd.elem (i, j); return 0; }