103 lines
1.9 KiB
C++
103 lines
1.9 KiB
C++
//! @file ReactorBase.cpp
|
|
|
|
// Copyright 2001 California Institute of Technology
|
|
|
|
#include "cantera/zeroD/ReactorBase.h"
|
|
#include "cantera/zeroD/FlowDevice.h"
|
|
#include "cantera/zeroD/ReactorNet.h"
|
|
|
|
using namespace std;
|
|
namespace Cantera
|
|
{
|
|
|
|
ReactorBase::ReactorBase(const string& name) : m_nsp(0),
|
|
m_thermo(0),
|
|
m_vol(1.0),
|
|
m_enthalpy(0.0),
|
|
m_intEnergy(0.0),
|
|
m_pressure(0.0),
|
|
m_net(0)
|
|
{
|
|
m_name = name;
|
|
}
|
|
|
|
void ReactorBase::setThermoMgr(thermo_t& thermo)
|
|
{
|
|
m_thermo = &thermo;
|
|
m_nsp = m_thermo->nSpecies();
|
|
m_thermo->saveState(m_state);
|
|
m_enthalpy = m_thermo->enthalpy_mass();
|
|
m_intEnergy = m_thermo->intEnergy_mass();
|
|
m_pressure = m_thermo->pressure();
|
|
}
|
|
|
|
void ReactorBase::syncState()
|
|
{
|
|
m_thermo->saveState(m_state);
|
|
m_enthalpy = m_thermo->enthalpy_mass();
|
|
m_intEnergy = m_thermo->intEnergy_mass();
|
|
m_pressure = m_thermo->pressure();
|
|
if (m_net) {
|
|
m_net->setNeedsReinit();
|
|
}
|
|
}
|
|
|
|
void ReactorBase::addInlet(FlowDevice& inlet)
|
|
{
|
|
m_inlet.push_back(&inlet);
|
|
}
|
|
|
|
void ReactorBase::addOutlet(FlowDevice& outlet)
|
|
{
|
|
m_outlet.push_back(&outlet);
|
|
}
|
|
|
|
void ReactorBase::addWall(Wall& w, int lr)
|
|
{
|
|
m_wall.push_back(&w);
|
|
if (lr == 0) {
|
|
m_lr.push_back(0);
|
|
} else {
|
|
m_lr.push_back(1);
|
|
}
|
|
}
|
|
|
|
Wall& ReactorBase::wall(size_t n)
|
|
{
|
|
return *m_wall[n];
|
|
}
|
|
|
|
ReactorNet& ReactorBase::network()
|
|
{
|
|
if (m_net) {
|
|
return *m_net;
|
|
} else {
|
|
throw CanteraError("ReactorBase::network",
|
|
"Reactor is not part of a ReactorNet");
|
|
}
|
|
}
|
|
|
|
void ReactorBase::setNetwork(ReactorNet* net)
|
|
{
|
|
m_net = net;
|
|
}
|
|
|
|
doublereal ReactorBase::residenceTime()
|
|
{
|
|
doublereal mout = 0.0;
|
|
for (size_t i = 0; i < m_outlet.size(); i++) {
|
|
mout += m_outlet[i]->massFlowRate();
|
|
}
|
|
return mass()/mout;
|
|
}
|
|
|
|
FlowDevice& ReactorBase::inlet(size_t n)
|
|
{
|
|
return *m_inlet[n];
|
|
}
|
|
FlowDevice& ReactorBase::outlet(size_t n)
|
|
{
|
|
return *m_outlet[n];
|
|
}
|
|
|
|
}
|