106 lines
2.4 KiB
C++
106 lines
2.4 KiB
C++
//! @file Wall.cpp
|
|
#include "cantera/zeroD/Wall.h"
|
|
#include "cantera/zeroD/ReactorNet.h"
|
|
#include "cantera/numerics/Func1.h"
|
|
#include "cantera/thermo/SurfPhase.h"
|
|
#include "cantera/base/stringUtils.h"
|
|
|
|
namespace Cantera
|
|
{
|
|
Wall::Wall() : m_left(0), m_right(0),
|
|
m_surf(2),
|
|
m_area(1.0), m_k(0.0), m_rrth(0.0), m_emiss(0.0),
|
|
m_vf(0), m_qf(0)
|
|
{
|
|
}
|
|
|
|
bool Wall::install(ReactorBase& rleft, ReactorBase& rright)
|
|
{
|
|
// check if wall is already installed
|
|
if (m_left || m_right) {
|
|
return false;
|
|
}
|
|
m_left = &rleft;
|
|
m_right = &rright;
|
|
m_left->addWall(*this, 0);
|
|
m_right->addWall(*this, 1);
|
|
m_surf[0].setReactor(&rleft);
|
|
m_surf[1].setReactor(&rright);
|
|
return true;
|
|
}
|
|
|
|
void Wall::setKinetics(Kinetics* left, Kinetics* right)
|
|
{
|
|
warn_deprecated("Wall::setKinetics", "Use class ReactorSurface instead. "
|
|
"To be removed after Cantera 2.3.");
|
|
m_surf[0].setKinetics(left);
|
|
m_surf[1].setKinetics(right);
|
|
}
|
|
|
|
doublereal Wall::vdot(doublereal t)
|
|
{
|
|
double rate1 = m_k * m_area * (m_left->pressure() - m_right->pressure());
|
|
if (m_vf) {
|
|
rate1 += m_area * m_vf->eval(t);
|
|
}
|
|
return rate1;
|
|
}
|
|
|
|
doublereal Wall::Q(doublereal t)
|
|
{
|
|
double q1 = (m_area * m_rrth) *
|
|
(m_left->temperature() - m_right->temperature());
|
|
if (m_emiss > 0.0) {
|
|
double tl = m_left->temperature();
|
|
double tr = m_right->temperature();
|
|
q1 += m_emiss * m_area * StefanBoltz * (tl*tl*tl*tl - tr*tr*tr*tr);
|
|
}
|
|
if (m_qf) {
|
|
q1 += m_area * m_qf->eval(t);
|
|
}
|
|
return q1;
|
|
}
|
|
|
|
void Wall::setCoverages(int leftright, const doublereal* cov)
|
|
{
|
|
m_surf[leftright].setCoverages(cov);
|
|
}
|
|
|
|
void Wall::setCoverages(int leftright, const compositionMap& cov)
|
|
{
|
|
m_surf[leftright].setCoverages(cov);
|
|
}
|
|
|
|
void Wall::setCoverages(int leftright, const std::string& cov)
|
|
{
|
|
m_surf[leftright].setCoverages(cov);
|
|
}
|
|
|
|
void Wall::getCoverages(int leftright, doublereal* cov)
|
|
{
|
|
m_surf[leftright].getCoverages(cov);
|
|
}
|
|
|
|
void Wall::syncCoverages(int leftright)
|
|
{
|
|
m_surf[leftright].syncCoverages();
|
|
}
|
|
|
|
void Wall::addSensitivityReaction(int leftright, size_t rxn)
|
|
{
|
|
m_surf[leftright].addSensitivityReaction(rxn);
|
|
}
|
|
|
|
void Wall::setSensitivityParameters(double* params)
|
|
{
|
|
m_surf[0].setSensitivityParameters(params);
|
|
m_surf[1].setSensitivityParameters(params);
|
|
}
|
|
|
|
void Wall::resetSensitivityParameters()
|
|
{
|
|
m_surf[0].resetSensitivityParameters();
|
|
m_surf[1].resetSensitivityParameters();
|
|
}
|
|
|
|
}
|