| 444 | } |
| 445 | |
| 446 | void ReactorNet::eval(double t, double* y, double* ydot, double* p) |
| 447 | { |
| 448 | m_time = t; |
| 449 | updateState(y); |
| 450 | m_LHS.assign(m_nv, 1); |
| 451 | m_RHS.assign(m_nv, 0); |
| 452 | for (size_t n = 0; n < m_reactors.size(); n++) { |
| 453 | m_reactors[n]->applySensitivity(p); |
| 454 | m_reactors[n]->eval(t, m_LHS.data() + m_start[n], m_RHS.data() + m_start[n]); |
| 455 | size_t yEnd = 0; |
| 456 | if (n == m_reactors.size() - 1) { |
| 457 | yEnd = m_RHS.size(); |
| 458 | } else { |
| 459 | yEnd = m_start[n + 1]; |
| 460 | } |
| 461 | for (size_t i = m_start[n]; i < yEnd; i++) { |
| 462 | ydot[i] = m_RHS[i] / m_LHS[i]; |
| 463 | } |
| 464 | m_reactors[n]->resetSensitivity(p); |
| 465 | } |
| 466 | checkFinite("ydot", ydot, m_nv); |
| 467 | } |
| 468 | |
| 469 | void ReactorNet::evalDae(double t, double* y, double* ydot, double* p, double* residual) |
| 470 | { |
nothing calls this directly
no test coverage detected