/* * Add a phase to the kinetics manager object. This must * be done before the function init() is called or * before any reactions are input. * The following fields are updated: * m_start -> vector of integers, containing the * starting position of the species for * each phase in the kinetics mechanism. * m_surfphase -> index of the surface phase. * m_thermo -> vector of pointers to ThermoPhase phases * that participate in the kinetics * mechanism. * m_phaseindex -> map containing the string id of each * ThermoPhase phase as a key and the * index of the phase within the kinetics * manager object as the value. */ void Kinetics::addPhase(thermo_t& thermo) { // if not the first thermo object, set the start position // to that of the last object added + the number of its species if (m_thermo.size() > 0) { m_start.push_back(m_start.back() + m_thermo.back()->nSpecies()); } // otherwise start at 0 else { m_start.push_back(0); } // the phase with lowest dimensionality is assumed to be the // phase/interface at which reactions take place if (thermo.nDim() <= m_mindim) { m_mindim = thermo.nDim(); m_rxnphase = nPhases(); } // there should only be one surface phase int ptype = -100; if (type() == cEdgeKinetics) ptype = cEdge; else if (type() == cInterfaceKinetics) ptype = cSurf; if (thermo.eosType() == ptype) { // if (m_surfphase >= 0) { // throw CanteraError("Kinetics::addPhase", // "cannot add more than one surface phase"); // } m_surfphase = nPhases(); m_rxnphase = nPhases(); } m_thermo.push_back(&thermo); m_phaseindex[m_thermo.back()->id()] = nPhases(); }
void Kinetics::addPhase(thermo_t& thermo) { // the phase with lowest dimensionality is assumed to be the // phase/interface at which reactions take place if (thermo.nDim() <= m_mindim) { m_mindim = thermo.nDim(); m_rxnphase = nPhases(); } // there should only be one surface phase int ptype = -100; if (type() == cEdgeKinetics) { ptype = cEdge; } else if (type() == cInterfaceKinetics) { ptype = cSurf; } if (thermo.eosType() == ptype) { m_surfphase = nPhases(); m_rxnphase = nPhases(); } m_thermo.push_back(&thermo); m_phaseindex[m_thermo.back()->id()] = nPhases(); resizeSpecies(); }