void Cvode::maxstate(bool b, NrnThread* nt) { if (!maxstate_) { return; } if (!nt) { if (nrn_nthread > 1) { maxstate_cv = this; maxstate_b = b; nrn_multithread_job(maxstate_thread); return; } nt = nrn_threads; } CvodeThreadData& z = ctd_[nt->id]; int i; double x; double* y = n_vector_data(y_, nt->id); double* m = n_vector_data(maxstate_, nt->id); for (i=0; i < z.nvsize_; ++i) { x = Math::abs(y[i]); if (m[i] < x) { m[i] = x; } } if (b) { y = n_vector_data(acorvec(), nt->id); m = n_vector_data(maxacor_, nt->id); for (i=0; i < z.nvsize_; ++i) { x = Math::abs(y[i]); if (m[i] < x) { m[i] = x; } } } }
void Cvode::acor(double* pd) { int i, id; NrnThread* nt; for (id=0; id < nctd_; ++id) { CvodeThreadData& z = ctd_[id]; double* s = n_vector_data(acorvec(), id); for (i=0; i < z.nvsize_; ++i) { pd[i + z.nvoffset_] = s[i]; } } }