[Reactor] Make better use of local variables

This commit is contained in:
Ray Speth 2016-06-28 16:58:51 -04:00
parent 4b8f8b692a
commit ce9a17fb76
3 changed files with 9 additions and 16 deletions

View file

@ -72,9 +72,8 @@ public:
throw CanteraError("PressureController::updateMassFlowRate", throw CanteraError("PressureController::updateMassFlowRate",
"Device is not ready; some parameters have not been set."); "Device is not ready; some parameters have not been set.");
} }
doublereal master_mdot = m_master->massFlowRate(time); m_mdot = m_master->massFlowRate(time)
m_mdot = master_mdot + m_coeffs[0]*(in().pressure() - + m_coeffs[0]*(in().pressure() - out().pressure());
out().pressure());
m_mdot = std::max(m_mdot, 0.0); m_mdot = std::max(m_mdot, 0.0);
} }

View file

@ -73,7 +73,6 @@ void ReactorNet::setSensitivityTolerances(double rtol, double atol)
void ReactorNet::initialize() void ReactorNet::initialize()
{ {
size_t n, nv;
m_nv = 0; m_nv = 0;
debuglog("Initializing reactor network.\n", m_verbose); debuglog("Initializing reactor network.\n", m_verbose);
if (m_reactors.empty()) { if (m_reactors.empty()) {
@ -81,10 +80,10 @@ void ReactorNet::initialize()
"no reactors in network!"); "no reactors in network!");
} }
m_start.assign(1, 0); m_start.assign(1, 0);
for (n = 0; n < m_reactors.size(); n++) { for (size_t n = 0; n < m_reactors.size(); n++) {
Reactor& r = *m_reactors[n]; Reactor& r = *m_reactors[n];
r.initialize(m_time); r.initialize(m_time);
nv = r.neq(); size_t nv = r.neq();
m_nv += nv; m_nv += nv;
m_start.push_back(m_nv); m_start.push_back(m_nv);
@ -162,9 +161,8 @@ void ReactorNet::addReactor(Reactor& r)
void ReactorNet::eval(doublereal t, doublereal* y, void ReactorNet::eval(doublereal t, doublereal* y,
doublereal* ydot, doublereal* p) doublereal* ydot, doublereal* p)
{ {
size_t n;
updateState(y); updateState(y);
for (n = 0; n < m_reactors.size(); n++) { for (size_t n = 0; n < m_reactors.size(); n++) {
m_reactors[n]->evalEqs(t, y + m_start[n], ydot + m_start[n], p); m_reactors[n]->evalEqs(t, y + m_start[n], ydot + m_start[n], p);
} }
checkFinite("ydot", ydot, m_nv); checkFinite("ydot", ydot, m_nv);
@ -189,15 +187,12 @@ double ReactorNet::sensitivity(size_t k, size_t p)
void ReactorNet::evalJacobian(doublereal t, doublereal* y, void ReactorNet::evalJacobian(doublereal t, doublereal* y,
doublereal* ydot, doublereal* p, Array2D* j) doublereal* ydot, doublereal* p, Array2D* j)
{ {
doublereal ysave, dy;
Array2D& jac = *j;
//evaluate the unperturbed ydot //evaluate the unperturbed ydot
eval(t, y, ydot, p); eval(t, y, ydot, p);
for (size_t n = 0; n < m_nv; n++) { for (size_t n = 0; n < m_nv; n++) {
// perturb x(n) // perturb x(n)
ysave = y[n]; double ysave = y[n];
dy = m_atol[n] + fabs(ysave)*m_rtol; double dy = m_atol[n] + fabs(ysave)*m_rtol;
y[n] = ysave + dy; y[n] = ysave + dy;
dy = y[n] - ysave; dy = y[n] - ysave;
@ -206,7 +201,7 @@ void ReactorNet::evalJacobian(doublereal t, doublereal* y,
// compute nth column of Jacobian // compute nth column of Jacobian
for (size_t m = 0; m < m_nv; m++) { for (size_t m = 0; m < m_nv; m++) {
jac(m,n) = (m_ydot[m] - ydot[m])/dy; j->value(m,n) = (m_ydot[m] - ydot[m])/dy;
} }
y[n] = ysave; y[n] = ysave;
} }

View file

@ -39,8 +39,7 @@ void Wall::setKinetics(Kinetics* left, Kinetics* right)
doublereal Wall::vdot(doublereal t) doublereal Wall::vdot(doublereal t)
{ {
double rate1 = m_k * m_area * double rate1 = m_k * m_area * (m_left->pressure() - m_right->pressure());
(m_left->pressure() - m_right->pressure());
if (m_vf) { if (m_vf) {
rate1 += m_area * m_vf->eval(t); rate1 += m_area * m_vf->eval(t);
} }