本文整理汇总了C++中Kinetics::skipUndeclaredThirdBodies方法的典型用法代码示例。如果您正苦于以下问题:C++ Kinetics::skipUndeclaredThirdBodies方法的具体用法?C++ Kinetics::skipUndeclaredThirdBodies怎么用?C++ Kinetics::skipUndeclaredThirdBodies使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Kinetics
的用法示例。
在下文中一共展示了Kinetics::skipUndeclaredThirdBodies方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: installReactionArrays
bool installReactionArrays(const XML_Node& p, Kinetics& kin,
std::string default_phase, bool check_for_duplicates)
{
int itot = 0;
// Search the children of the phase element for the XML element named
// reactionArray. If we can't find it, then return signaling having not
// found any reactions. Apparently, we allow multiple reactionArray elements
// here Each one will be processed sequentially, with the end result being
// purely additive.
vector<XML_Node*> rarrays = p.getChildren("reactionArray");
if (rarrays.empty()) {
return false;
}
for (size_t n = 0; n < rarrays.size(); n++) {
// Go get a reference to the current XML element, reactionArray. We will
// process this element now.
const XML_Node& rxns = *rarrays[n];
// The reactionArray element has an attribute called, datasrc. The value
// of the attribute is the XML element comprising the top of the tree of
// reactions for the phase. Find this datasrc element starting with the
// root of the current XML node.
const XML_Node* rdata = get_XML_Node(rxns["datasrc"], &rxns.root());
// If the reactionArray element has a child element named "skip", and if
// the attribute of skip called "species" has a value of "undeclared",
// we will set rxnrule.skipUndeclaredSpecies to 'true'. rxnrule is
// passed to the routine that parses each individual reaction so that
// the parser will skip all reactions containing an undefined species
// without throwing an error.
//
// Similarly, an attribute named "third_bodies" with the value of
// "undeclared" will skip undeclared third body efficiencies (while
// retaining the reaction and any other efficiencies).
if (rxns.hasChild("skip")) {
const XML_Node& sk = rxns.child("skip");
if (sk["species"] == "undeclared") {
kin.skipUndeclaredSpecies(true);
}
if (sk["third_bodies"] == "undeclared") {
kin.skipUndeclaredThirdBodies(true);
}
}
// Search for child elements called include. We only include a reaction
// if it's tagged by one of the include fields. Or, we include all
// reactions if there are no include fields.
vector<XML_Node*> incl = rxns.getChildren("include");
vector<XML_Node*> allrxns = rdata->getChildren("reaction");
// if no 'include' directive, then include all reactions
if (incl.empty()) {
for (size_t i = 0; i < allrxns.size(); i++) {
checkElectrochemReaction(p,kin,*allrxns[i]);
kin.addReaction(newReaction(*allrxns[i]));
++itot;
}
} else {
for (size_t nii = 0; nii < incl.size(); nii++) {
const XML_Node& ii = *incl[nii];
string imin = ii["min"];
string imax = ii["max"];
string::size_type iwild = string::npos;
if (imax == imin) {
iwild = imin.find("*");
if (iwild != string::npos) {
imin = imin.substr(0,iwild);
imax = imin;
}
}
for (size_t i = 0; i < allrxns.size(); i++) {
const XML_Node* r = allrxns[i];
string rxid;
if (r) {
rxid = r->attrib("id");
if (iwild != string::npos) {
rxid = rxid.substr(0,iwild);
}
// To decide whether the reaction is included or not we
// do a lexical min max and operation. This sometimes
// has surprising results.
if ((rxid >= imin) && (rxid <= imax)) {
checkElectrochemReaction(p,kin,*r);
kin.addReaction(newReaction(*r));
++itot;
}
}
}
}
}
}
if (check_for_duplicates) {
kin.checkDuplicates();
}
return true;
//.........这里部分代码省略.........