diff --git a/Cantera/python/Cantera/ThermoPhase.py b/Cantera/python/Cantera/ThermoPhase.py index c082721b6..6f6685c35 100644 --- a/Cantera/python/Cantera/ThermoPhase.py +++ b/Cantera/python/Cantera/ThermoPhase.py @@ -24,7 +24,7 @@ class ThermoPhase(Phase): """Create a new object representing a phase of matter, or wrap an existing kernel instance.""" - Phase.__init__(self) + #Phase.__init__(self) self._phase_id = 0 self._owner = 0 self.idtag = "" diff --git a/Cantera/python/Cantera/__init__.py b/Cantera/python/Cantera/__init__.py index 6812ed27e..b864b9d14 100755 --- a/Cantera/python/Cantera/__init__.py +++ b/Cantera/python/Cantera/__init__.py @@ -55,3 +55,6 @@ def getCanteraError(): import _cantera return _cantera.get_Cantera_Error() +def refCount(a): +# import _cantera + return _cantera.ct_refcnt(a) diff --git a/Cantera/python/Cantera/ctml_writer.py b/Cantera/python/Cantera/ctml_writer.py index e9f9d9c98..ba1f77b9a 100644 --- a/Cantera/python/Cantera/ctml_writer.py +++ b/Cantera/python/Cantera/ctml_writer.py @@ -557,7 +557,6 @@ class reaction(writer): mdim += nm*ns ldim += nl*ns - print s, ns, nm, nl, mdim, ldim p.addComment(" reaction "+id+" ") r = p.addChild('reaction') @@ -590,12 +589,9 @@ class reaction(writer): if self._type == 'surface': mdim += -1 ldim += 2 - print 'surf: mdim, ldim: ',mdim, ldim else: mdim += -1 ldim += 3 - print 'not surf: mdim, ldim: ',mdim, ldim - # add the reaction type as an attribute if it has been specified. if self._type: @@ -620,7 +616,6 @@ class reaction(writer): unit_fctr = (math.pow(_length[_ulen], -ldim) * math.pow(_moles[_umol], -mdim) / _time[_utime]) - print 'unit_fctr = ',unit_fctr # compute the pre-exponential units string, and if it begins with a # dash, remove it. @@ -1200,7 +1195,10 @@ if __name__ == "__main__": # $Revision$ # $Date$ # $Log$ -# Revision 1.16 2003-08-19 22:02:01 hkmoffa +# Revision 1.17 2003-08-20 15:35:32 dggoodwin +# *** empty log message *** +# +# Revision 1.16 2003/08/19 22:02:01 hkmoffa # Fixed an error in an argument list # # Revision 1.15 2003/08/18 05:05:02 dggoodwin diff --git a/Cantera/python/Cantera/importFromFile.py b/Cantera/python/Cantera/importFromFile.py index 658fc3ae0..58307cedc 100755 --- a/Cantera/python/Cantera/importFromFile.py +++ b/Cantera/python/Cantera/importFromFile.py @@ -27,18 +27,18 @@ def importPhases(file = '', names = []): the preprocessor and CTML parser only need to run once. """ s = [] - root = XML.XML_Node(name = 'doc', src = file, preprocess = 1) + #root = XML.XML_Node(name = 'doc', src = file, preprocess = 1) for nm in names: - src = '#'+nm - s.append(solution.Solution(src, root = root)) + src = file+'#'+nm + s.append(solution.Solution(src)) return s def importInterface(file = '', name = '', phases = []): #file = preprocess(file) - root = XML.XML_Node(name = 'doc', src = file, preprocess = 1) + #root = XML.XML_Node(name = 'doc', src = file, preprocess = 1) if name: src = file+'#'+name else: src = file - return Interface.Interface(src = src, root = root, phases = phases) + return Interface.Interface(src = src, phases = phases) diff --git a/Cantera/src/ctml.cpp b/Cantera/src/ctml.cpp index 0c3b0434e..c9dde004b 100755 --- a/Cantera/src/ctml.cpp +++ b/Cantera/src/ctml.cpp @@ -120,7 +120,7 @@ namespace ctml { else return 0; } - string getString(XML_Node& parent, string name) { + string getString(const XML_Node& parent, string name) { if (!parent.hasChild(name)) return ""; return parent(name); } @@ -138,14 +138,14 @@ namespace ctml { } } - void getIntegers(XML_Node& node, map& v) { + void getIntegers(const XML_Node& node, map& v) { vector f; node.getChildren("integer",f); int n = f.size(); integer x, x0, x1; string typ, title, vmin, vmax; for (int i = 0; i < n; i++) { - XML_Node& fi = *(f[i]); + const XML_Node& fi = *(f[i]); x = atoi(fi().c_str()); title = fi["title"]; vmin = fi["min"]; @@ -159,27 +159,27 @@ namespace ctml { } - void getStrings(XML_Node& node, map& v) { + void getStrings(const XML_Node& node, map& v) { vector f; node.getChildren("string",f); int n = f.size(); string typ, title; for (int i = 0; i < n; i++) { - XML_Node& fi = *(f[i]); + const XML_Node& fi = *(f[i]); title = fi["title"]; v[title] = fi(); } } - void getFloats(XML_Node& node, map& v, bool convert) { + void getFloats(const XML_Node& node, map& v, bool convert) { vector f; node.getChildren("float",f); int n = f.size(); doublereal x, x0, x1, fctr; string typ, title, units, vmin, vmax; for (int i = 0; i < n; i++) { - XML_Node& fi = *(f[i]); + const XML_Node& fi = *(f[i]); x = atof(fi().c_str()); x0 = Undef; x1 = Undef; @@ -215,12 +215,12 @@ namespace ctml { * conversion to SI will be done if the child element has an attribute * 'units'. */ - doublereal getFloat(XML_Node& parent, string name, string type) { + doublereal getFloat(const XML_Node& parent, string name, string type) { if (!parent.hasChild(name)) throw CanteraError("getFloat (called from XML Node \"" + parent.name() + "\"): ", "no child XML element named " + name); - XML_Node& node = parent.child(name); + const XML_Node& node = parent.child(name); doublereal x, x0, x1, fctr = 1.0; string units, vmin, vmax; x = atof(node().c_str()); @@ -251,7 +251,7 @@ namespace ctml { } - void getFloatArray(XML_Node& node, vector_fp& v, bool convert) { + void getFloatArray(const XML_Node& node, vector_fp& v, bool convert) { int icom; string numstr; if (node.name() != "floatArray") @@ -300,7 +300,7 @@ namespace ctml { } } - void getMap(XML_Node& node, map& m) { + void getMap(const XML_Node& node, map& m) { vector v; getStringArray(node, v); string key, val; @@ -318,7 +318,7 @@ namespace ctml { } } - void getPairs(XML_Node& node, vector& key, vector& val) { + void getPairs(const XML_Node& node, vector& key, vector& val) { vector v; getStringArray(node, v); int n = v.size(); @@ -334,7 +334,7 @@ namespace ctml { } } - void getStringArray(XML_Node& node, vector& v) { + void getStringArray(const XML_Node& node, vector& v) { int ibegin, iend; v.clear(); @@ -359,9 +359,9 @@ namespace ctml { } } - void getFunction(XML_Node& node, string& type, doublereal& xmin, + void getFunction(const XML_Node& node, string& type, doublereal& xmin, doublereal& xmax, vector_fp& coeffs) { - XML_Node& c = node.child("floatArray"); + const XML_Node& c = node.child("floatArray"); coeffs.clear(); getFloatArray(c,coeffs); xmin = Undef; diff --git a/Cantera/src/importCTML.cpp b/Cantera/src/importCTML.cpp index 803f937d4..adcb447db 100755 --- a/Cantera/src/importCTML.cpp +++ b/Cantera/src/importCTML.cpp @@ -61,18 +61,45 @@ namespace Cantera { * First we define a coule of typedef's which will * be used throught this file */ - typedef vector nodeset_t; + typedef const vector nodeset_t; typedef XML_Node node_t; const doublereal DefaultPref = 1.01325e5; // one atm + static void split(const string& src, string& file, string& id) { + int ipound = src.find('#'); + + if (ipound >= 0) { + id = src.substr(ipound+1,src.size()); + file = src.substr(0,ipound); + } + else { + id = ""; + file = src; + } + } + + XML_Node* get_XML_Node(const string& src, XML_Node* root) { + string fname, idstr; + XML_Node *db, *doc; + split(src,fname,idstr); + if (fname == "") { + db = root->findID(idstr,3); + } + else { + doc = get_XML_File(fname); + db = doc->findID(idstr,3); + } + return db; + } + /** * Install a NASA polynomial thermodynamic property * parameterization for species k. */ - static void installNasaThermo(SpeciesThermo& sp, int k, XML_Node& f0, - XML_Node& f1) { + static void installNasaThermo(SpeciesThermo& sp, int k, const XML_Node& f0, + const XML_Node& f1) { doublereal tmin0, tmax0, tmin1, tmax1, tmin, tmid, tmax; tmin0 = fpValue(f0["Tmin"]); @@ -116,7 +143,7 @@ namespace Cantera { * Install a Shomate polynomial thermodynamic property * parameterization for species k. */ - static void installShomateThermo(SpeciesThermo& sp, int k, XML_Node& f) { + static void installShomateThermo(SpeciesThermo& sp, int k, const XML_Node& f) { doublereal tmin, tmid, tmax; tmin = fpValue(f["Tmin"]); tmid = fpValue(f["Tmid"]); @@ -146,7 +173,7 @@ namespace Cantera { * Install a constant-cp thermodynamic property * parameterization for species k. */ - static void installSimpleThermo(SpeciesThermo& sp, int k, XML_Node& f) { + static void installSimpleThermo(SpeciesThermo& sp, int k, const XML_Node& f) { doublereal tmin, tmax; tmin = fpValue(f["Tmin"]); tmax = fpValue(f["Tmax"]); @@ -166,11 +193,11 @@ namespace Cantera { * Install a species into a ThermoPhase object, which defines * the phase thermodynamics and speciation */ - static bool installSpecies(int k, XML_Node& s, thermo_t& p, + static bool installSpecies(int k, const XML_Node& s, thermo_t& p, SpeciesThermo& spthermo, int rule) { // get the composition of the species - XML_Node& a = s.child("atomArray"); + const XML_Node& a = s.child("atomArray"); map comp; getMap(a, comp); @@ -209,11 +236,11 @@ namespace Cantera { // get thermo. We currently only support single-range Shomate // and const_cp, and dual-range NASA - XML_Node& thermo = s.child("thermo"); - vector tp = thermo.children(); + const XML_Node& thermo = s.child("thermo"); + const vector& tp = thermo.children(); int nc = tp.size(); if (nc == 1) { - XML_Node& f = *tp[0]; + const XML_Node& f = *tp[0]; if (f.name() == "Shomate") { installShomateThermo(spthermo, k, f); } @@ -226,8 +253,8 @@ namespace Cantera { " for species "+s["name"]+": "+f.name()); } else if (nc == 2) { - XML_Node& f0 = *tp[0]; - XML_Node& f1 = *tp[1]; + const XML_Node& f0 = *tp[0]; + const XML_Node& f1 = *tp[1]; if (f0.name() == "NASA" && f1.name() == "NASA") { installNasaThermo(spthermo, k, f0, f1); } @@ -270,7 +297,7 @@ namespace Cantera { * allowing the calling routine to skip this reaction * and continue. */ - static bool getReagents(XML_Node& rxn, kinetics_t& kin, int rp, + static bool getReagents(const XML_Node& rxn, kinetics_t& kin, int rp, string default_phase, vector_int& spnum, vector_int& stoich, vector_fp& order, int rule) { @@ -285,7 +312,7 @@ namespace Cantera { */ if (rp == 1) rptype = "reactants"; else rptype = "products"; - XML_Node& rg = rxn.child(rptype); + const XML_Node& rg = rxn.child(rptype); /* * The species and stoichiometric coefficient for the species @@ -351,7 +378,7 @@ namespace Cantera { int loc; doublereal forder; for (int nn = 0; nn < norder; nn++) { - XML_Node& oo = *ord[nn]; + const XML_Node& oo = *ord[nn]; string sp = oo["species"]; loc = speciesMap[sp]; if (loc == 0) @@ -378,7 +405,7 @@ namespace Cantera { * The Arrhenius expression is * \f[ k = A T^(b) exp (-E_a / RT). \f] */ - static void getArrhenius(XML_Node& node, int& highlow, + static void getArrhenius(const XML_Node& node, int& highlow, doublereal& A, doublereal& b, doublereal& E) { if (node["name"] == "k0") @@ -397,7 +424,7 @@ namespace Cantera { * getStick() processes the element called Stick that specifies * sticking coefficients. */ - static void getStick(XML_Node& node, Kinetics& kin, + static void getStick(const XML_Node& node, Kinetics& kin, ReactionData& r, doublereal& A, doublereal& b, doublereal& E) { int nr = r.reactants.size(); int k, klocal, not_surf = 0; @@ -447,7 +474,7 @@ namespace Cantera { E /= GasConstant; } - static void getCoverageDependence(node_t& node, + static void getCoverageDependence(const node_t& node, thermo_t& surfphase, ReactionData& rdata) { vector cov; node.getChildren("coverage", cov); @@ -456,7 +483,7 @@ namespace Cantera { string spname; if (nc > 0) { for (int n = 0; n < nc; n++) { - XML_Node& cnode = *cov[n]; + const XML_Node& cnode = *cov[n]; spname = cnode["species"]; k = surfphase.speciesIndex(spname); rdata.cov.push_back(doublereal(k)); @@ -471,7 +498,7 @@ namespace Cantera { /** * Get falloff parameters for a reaction. */ - static void getFalloff(node_t& f, ReactionData& rdata) { + static void getFalloff(const node_t& f, ReactionData& rdata) { string type = f["type"]; vector p; getStringArray(f,p); @@ -496,7 +523,7 @@ namespace Cantera { * reaction mechanism is homogeneous, so that all species belong * to phase(0) of 'kin'. */ - static void getEfficiencies(node_t& eff, kinetics_t& kin, ReactionData& rdata) { + static void getEfficiencies(const node_t& eff, kinetics_t& kin, ReactionData& rdata) { // set the default collision efficiency rdata.default_3b_eff = fpValue(eff["default"]); @@ -521,15 +548,15 @@ namespace Cantera { * This function will fill in more fields in the ReactionData object. * */ - static void getRateCoefficient(node_t& kf, kinetics_t& kin, + static void getRateCoefficient(const node_t& kf, kinetics_t& kin, ReactionData& rdata, int negA) { int nc = kf.nChildren(); - const nodeset_t& kf_children = kf.children(); + nodeset_t& kf_children = kf.children(); vector_fp clow(3,0.0), chigh(3,0.0); // int nr = nReacMolecules(rdata); for (int m = 0; m < nc; m++) { - node_t& c = *kf_children[m]; + const node_t& c = *kf_children[m]; string nm = c.name(); int highlow=0; @@ -591,7 +618,7 @@ namespace Cantera { * parameters from the XML tree. */ ThermoPhase* newPhase(XML_Node& xmlphase) { - XML_Node& th = xmlphase.child("thermo"); + const XML_Node& th = xmlphase.child("thermo"); string model = th["model"]; ThermoPhase* t = newThermoPhase(model); importPhase(xmlphase, t); @@ -602,9 +629,9 @@ namespace Cantera { /** * Set the thermodynamic state. */ - static void setState(XML_Node& phase, ThermoPhase* th) { + static void setState(const XML_Node& phase, ThermoPhase* th) { if (!phase.hasChild("state")) return; - XML_Node state = phase.child("state"); + const XML_Node state = phase.child("state"); doublereal t, p, rho; string comp = getString(state,"moleFractions"); if (comp != "") @@ -662,7 +689,7 @@ namespace Cantera { if (phase.name() != "phase") throw CanteraError("importPhase", - "Current XML_Node is not a phase element."); + "Current const XML_Node is not a phase element."); th->setID(phase.id()); // set the phase id @@ -684,7 +711,7 @@ namespace Cantera { * error condition. */ if (phase.hasChild("thermo")) { - XML_Node& eos = phase.child("thermo"); + const XML_Node& eos = phase.child("thermo"); if (eos["model"] == "Incompressible") { if (th->eosType() == cIncompressible) { //map d; @@ -734,17 +761,17 @@ namespace Cantera { getStringArray(elements, enames); // // element database defaults to elements.xml - string element_database; // = "elements.xml"; + string element_database = "elements.xml"; if (elements.hasAttrib("datasrc")) element_database = elements["datasrc"]; - XML_Node* db = find_XML(element_database,&phase.root(),"","", - "elementData"); + XML_Node* doc = get_XML_File(element_database); + XML_Node* dbe = &doc->child("ctml/elementData"); int nel = enames.size(); int i; string enm; for (i = 0; i < nel; i++) { - XML_Node* e = db->findByAttr("name",enames[i]); + XML_Node* e = dbe->findByAttr("name",enames[i]); if (e) { th->addUniqueElement(*e); } @@ -753,8 +780,8 @@ namespace Cantera { +enames[i]); } } - delete db; - db = 0; + //delete db; + //db = 0; /*************************************************************** @@ -762,6 +789,7 @@ namespace Cantera { * the species database. ***************************************************************/ + XML_Node* db = 0; vector sparrays; phase.getChildren("speciesArray", sparrays); int jsp, nspa = sparrays.size(); @@ -770,17 +798,20 @@ namespace Cantera { for (jsp = 0; jsp < nspa; jsp++) { - XML_Node& species = *sparrays[jsp]; // phase.child("speciesArray"); + const XML_Node& species = *sparrays[jsp]; if (species.hasChild("skip")) { - XML_Node& sk = species.child("skip"); + const XML_Node& sk = species.child("skip"); string eskip = sk["element"]; if (eskip == "undeclared") { sprule[jsp] = 1; } } - db = find_XML(species["datasrc"], &phase.root(), species["idRef"], - "","speciesData"); + string fname, idstr; + + db = get_XML_Node(species["datasrc"], &phase.root()); + //db = find_XML(species["datasrc"], &phase.root(), species["idRef"], + // "","speciesData"); dbases.push_back(db); } @@ -802,7 +833,7 @@ namespace Cantera { int k = 0; for (jsp = 0; jsp < nspa; jsp++) { - XML_Node& species = *sparrays[jsp]; + const XML_Node& species = *sparrays[jsp]; db = dbases[jsp]; /* @@ -906,7 +937,7 @@ next: * rule = Provides a rule for specifying how to handle reactions * which involve missing species. */ - static bool installReaction(int i, XML_Node& r, Kinetics* k, + static bool installReaction(int i, const XML_Node& r, Kinetics* k, string default_phase, int rule, bool check_for_duplicates) { Kinetics& kin = *k; @@ -1089,7 +1120,7 @@ next: * On return, if reaction instantiation goes correctly, return true. * If there is a problem, return false. */ - bool installReactionArrays(XML_Node& p, Kinetics& kin, + bool installReactionArrays(const XML_Node& p, Kinetics& kin, string default_phase, bool check_for_duplicates) { _eqn.clear(); @@ -1117,7 +1148,7 @@ next: * Go get a reference to the current xml element, * reactionArray. We will process this element now. */ - XML_Node& rxns = *rarrays[n]; + const XML_Node& rxns = *rarrays[n]; /* * The reactionArray element has an attribute called, * datasrc. The value of the attribute is the xml @@ -1126,8 +1157,9 @@ next: * Find this datasrc element starting with the root * of the current xml node. */ - XML_Node* rdata = find_XML(rxns["datasrc"],&rxns.root(), - "","","reactionData"); + const XML_Node* rdata = get_XML_Node(rxns["datasrc"], &rxns.root()); + //const XML_Node* rdata = find_XML(rxns["datasrc"],&rxns.root(), + // "","","reactionData"); /* * If the reactionArray element has a child element named * "skip", and if the attribute of skip called "species" has @@ -1139,7 +1171,7 @@ next: */ int rxnrule = 0; if (rxns.hasChild("skip")) { - XML_Node& sk = rxns.child("skip"); + const XML_Node& sk = rxns.child("skip"); string sskip = sk["species"]; if (sskip == "undeclared") { rxnrule = 1; @@ -1161,7 +1193,7 @@ next: // if no 'include' directive, then include all reactions if (ninc == 0) { for (i = 0; i < nrxns; i++) { - XML_Node* r = allrxns[i]; + const XML_Node* r = allrxns[i]; if (r) { if (installReaction(itot, *r, &kin, default_phase, rxnrule, check_for_duplicates)) ++itot; @@ -1170,11 +1202,11 @@ next: } else { for (int nii = 0; nii < ninc; nii++) { - XML_Node& ii = *incl[nii]; + const XML_Node& ii = *incl[nii]; string imin = ii["min"]; string imax = ii["max"]; for (i = 0; i < nrxns; i++) { - XML_Node* r = allrxns[i]; + const XML_Node* r = allrxns[i]; string rxid; if (r) { rxid = (*r)["id"]; @@ -1211,7 +1243,7 @@ next: /** * Import a reaction mechanism for a phase or an interface. */ - bool importKinetics(XML_Node& phase, vector th, + bool importKinetics(const XML_Node& phase, vector th, Kinetics* k) { Kinetics& kin = *k; @@ -1221,7 +1253,7 @@ next: bool check_for_duplicates = false; if (phase.parent()->hasChild("validate")) { - XML_Node& d = phase.parent()->child("validate"); + const XML_Node& d = phase.parent()->child("validate"); if (d["reactions"] == "yes") check_for_duplicates = true; } @@ -1232,7 +1264,7 @@ next: vector phase_ids; if (phase.hasChild("phaseArray")) { - XML_Node& pa = phase.child("phaseArray"); + const XML_Node& pa = phase.child("phaseArray"); getStringArray(pa, phase_ids); } phase_ids.push_back(default_phase); @@ -1286,11 +1318,12 @@ next: bool buildSolutionFromXML(XML_Node& root, string id, string nm, ThermoPhase* th, Kinetics* k) { XML_Node* x; - x = find_XML("", &root, id, "", nm); + x = get_XML_Node(string("#")+id, &root); + //x = find_XML("", &root, id, "", nm); if (!x) return false; /* * Fill in the ThermoPhase object by querying the - * XML_Node tree located at x. + * const XML_Node tree located at x. */ importPhase(*x, th); /* @@ -1301,7 +1334,7 @@ next: phases[0] = th; /* * Fill in the kinetics object k, by querying the - * XML_Node tree located by x. The source terms and + * const XML_Node tree located by x. The source terms and * eventually the source term vector will be constructed * from the list of ThermoPhases in the vector, phases. */ diff --git a/Cantera/src/importCTML.h b/Cantera/src/importCTML.h index 8bd23a0bc..a6dc35b71 100755 --- a/Cantera/src/importCTML.h +++ b/Cantera/src/importCTML.h @@ -27,10 +27,11 @@ namespace Cantera { class XML_Node; bool isCTMLFile(string infile); + XML_Node* get_XML_Node(const string& src, XML_Node* root); bool importPhase(XML_Node& phase, ThermoPhase* th); - bool importKinetics(XML_Node& phase, vector th, + bool importKinetics(const XML_Node& phase, vector th, Kinetics* kin); - bool installReactionArrays(XML_Node& parent, Kinetics& kin, + bool installReactionArrays(const XML_Node& parent, Kinetics& kin, string default_phase, bool check_for_duplicates = false); ThermoPhase* newPhase(XML_Node& phase); bool buildSolutionFromXML(XML_Node& root, string id, string nm, diff --git a/Cantera/src/misc.cpp b/Cantera/src/misc.cpp index a9236a333..f46c96d18 100755 --- a/Cantera/src/misc.cpp +++ b/Cantera/src/misc.cpp @@ -20,8 +20,6 @@ #include using namespace std; -//int writeToMatlab(const char* buf); - namespace Cantera { /** diff --git a/Cantera/src/oneD/Domain1D.h b/Cantera/src/oneD/Domain1D.h index 6ecdde204..d6ac73a20 100644 --- a/Cantera/src/oneD/Domain1D.h +++ b/Cantera/src/oneD/Domain1D.h @@ -351,7 +351,7 @@ namespace Cantera { virtual void showSolution(ostream& s, const doublereal* x) {} virtual void showSolution(const doublereal* x) {} - virtual void restore(XML_Node& dom, doublereal* soln) {} + virtual void restore(const XML_Node& dom, doublereal* soln) {} doublereal z(int jlocal) const { return m_z[jlocal]; diff --git a/Cantera/src/oneD/OneDim.cpp b/Cantera/src/oneD/OneDim.cpp index 97ba02ae6..410886e54 100644 --- a/Cantera/src/oneD/OneDim.cpp +++ b/Cantera/src/oneD/OneDim.cpp @@ -413,7 +413,7 @@ namespace Cantera { XML_Node* ct; if (fin) { root.build(fin); - XML_Node* same_ID = root.findID(id); + const XML_Node* same_ID = root.findID(id); int jid = 1; string idnew = id; while (same_ID != 0) { diff --git a/Cantera/src/transport/TransportFactory.cpp b/Cantera/src/transport/TransportFactory.cpp index d628051e3..94825a891 100755 --- a/Cantera/src/transport/TransportFactory.cpp +++ b/Cantera/src/transport/TransportFactory.cpp @@ -285,7 +285,7 @@ namespace Cantera { * collision integrals. */ void TransportFactory::setupMM(ostream& flog, - XML_Node* transport_database, + const XML_Node* transport_database, thermo_t* thermo, int mode, int log_level, TransportParams& tr) { // constant mixture attributes @@ -404,7 +404,7 @@ namespace Cantera { void TransportFactory::initTransport(Transport* tran, thermo_t* thermo, int mode, int log_level) { - XML_Node* transport_database = thermo->speciesData(); + const XML_Node* transport_database = thermo->speciesData(); TransportParams tr; ofstream flog("transport_log.xml"); @@ -660,7 +660,7 @@ namespace Cantera { * instance of TransportParams containing the transport data for * these species read from the file. */ - void TransportFactory::getTransportData(XML_Node* transport_database, + void TransportFactory::getTransportData(const XML_Node* transport_database, XML_Node& log, const vector& names, TransportParams& tr) { string name; @@ -685,7 +685,7 @@ namespace Cantera { int linenum = 0; int i; for (i = 0; i < nsp; i++) { - XML_Node& sp = *xspecies[i]; + const XML_Node& sp = *xspecies[i]; name = sp["name"]; XML_Node& tr = sp.child("transport"); getString(tr, "geometry", val, type); diff --git a/Cantera/src/transport/TransportFactory.h b/Cantera/src/transport/TransportFactory.h index 6544de21d..651eda512 100755 --- a/Cantera/src/transport/TransportFactory.h +++ b/Cantera/src/transport/TransportFactory.h @@ -125,7 +125,7 @@ namespace Cantera { // const vector& names, // TransportParams& tr); - void getTransportData(XML_Node* db, + void getTransportData(const XML_Node* db, XML_Node& log, const vector& names, TransportParams& tr); @@ -139,7 +139,7 @@ namespace Cantera { MMCollisionInt* m_integrals; - void setupMM(ostream& flog, XML_Node* transport_database, + void setupMM(ostream& flog, const XML_Node* transport_database, thermo_t* thermo, int mode, int log_level, TransportParams& tr); diff --git a/Cantera/src/xml.cpp b/Cantera/src/xml.cpp index 0d6815183..1dc606f89 100755 --- a/Cantera/src/xml.cpp +++ b/Cantera/src/xml.cpp @@ -17,18 +17,6 @@ using namespace std; namespace Cantera { - static void split(const string& src, string& file, string& id) { - int ipound = src.find('#'); - - if (ipound >= 0) { - id = src.substr(ipound+1,src.size()); - file = src.substr(0,ipound); - } - else { - id = ""; - file = src; - } - } ////////////////////// exceptions //////////////////////////// @@ -353,7 +341,8 @@ namespace Cantera { return 0; } - XML_Node* XML_Node::findByAttr(const string& attr, const string& val) { + XML_Node* XML_Node::findByAttr(const string& attr, + const string& val) { if (hasAttrib(attr)) { if (attrib(attr) == val) { return this; @@ -491,7 +480,7 @@ namespace Cantera { node_dest->addAttribute(b->first, b->second); } } - vector &vsc = node_dest->children(); + const vector &vsc = node_dest->children(); for (int n = 0; n < m_nchildren; n++) { sc = m_children[n]; ndc = node_dest->nChildren(); @@ -533,7 +522,7 @@ namespace Cantera { for (; b != m_attribs.end(); ++b) { node_dest->addAttribute(b->first, b->second); } - vector &vsc = node_dest->children(); + const vector &vsc = node_dest->children(); #ifdef DEBUG_HKM //cout << "*** dest: " << node_dest->name() // << ", value = \"" << node_dest->value(); @@ -681,12 +670,13 @@ namespace Cantera { s << endl; } - XML_Node* XML_Node::getRef() { - if (!hasAttrib("idRef")) return this; - XML_Node& node = *this; - return find_XML(node["src"], &root(), node["idRef"]); - } + //const XML_Node* XML_Node::getRef() const { + // if (!hasAttrib("idRef")) return this; + // XML_Node& node = *this; + // return find_XML(node["src"], &root(), node["idRef"]); + //} +#ifdef FIND_XML /* * Find a particular XML element by a fairly complicated hierarchal * search objective. @@ -761,9 +751,11 @@ namespace Cantera { } } } +#endif - XML_Node* findXMLPhase(XML_Node *root, string idtarget) { - XML_Node *scResult = 0; + + const XML_Node* findXMLPhase(XML_Node *root, string idtarget) { + const XML_Node *scResult = 0; XML_Node *sc; if (!root) return 0; string idattrib; @@ -775,7 +767,7 @@ namespace Cantera { else return 0; } - vector &vsc = root->children(); + const vector &vsc = root->children(); for (int n = 0; n < root->nChildren(); n++) { sc = vsc[n]; if (sc->name() == "phase") { diff --git a/Cantera/src/xml.h b/Cantera/src/xml.h index fda71020e..bff2e6547 100755 --- a/Cantera/src/xml.h +++ b/Cantera/src/xml.h @@ -96,10 +96,10 @@ namespace Cantera { } map& attribs() { return m_attribs; } - XML_Node* parent() { return m_parent; } + XML_Node* parent() const { return m_parent; } XML_Node* setParent(XML_Node* p) { m_parent = p; return p; } - bool hasChild(string ch) { + bool hasChild(string ch) const { return (m_childindex.find(ch) != m_childindex.end()); //return (m_childindex[ch] != 0); } @@ -113,15 +113,17 @@ namespace Cantera { } - string name() { return m_name; } - string id() { + string name() const { return m_name; } + string id() const { if (hasAttrib("id")) return attrib("id"); else return ""; } - int number() { return m_n; } + int number() const { return m_n; } XML_Node& child(int n) const { return *m_children[n]; } - vector &children() { return m_children; } + //const XML_Node& child(int n) const { return *m_children[n]; } + vector& children() { return m_children; } + const vector& children() const { return m_children; } int nChildren() const { return m_nchildren; } void build(istream& f); @@ -132,8 +134,8 @@ namespace Cantera { void getChildren(string name, vector& children) const; XML_Node& child(string loc) const; void write(ostream& s, int level = 0); - XML_Node* getRef(); - XML_Node& root() { return *m_root; } + //const XML_Node* getRef() const; + XML_Node& root() const { return *m_root; } void setRoot(XML_Node& root) { m_root = &root; } void copyUnion(XML_Node *node_dest); void copy(XML_Node *node_dest); @@ -249,10 +251,10 @@ namespace Cantera { }; - XML_Node* find_XML(string src, XML_Node* root=0, - string id="", string loc="", string name=""); + //XML_Node* find_XML(string src, XML_Node* root=0, + // string id="", string loc="", string name=""); - XML_Node* findXMLPhase(XML_Node* root, string id); + const XML_Node* findXMLPhase(XML_Node* root, string id); } #endif