From 577f3c28f7d0ba73e588546c21bf748f88b4db1b Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Wed, 8 Aug 2012 22:16:33 +0000 Subject: [PATCH] Removed constructPhaseFile and constructPhaseXML methods from MargulesVPSSTP --- include/cantera/thermo/MargulesVPSSTP.h | 41 ------ src/thermo/MargulesVPSSTP.cpp | 161 ++++-------------------- 2 files changed, 26 insertions(+), 176 deletions(-) diff --git a/include/cantera/thermo/MargulesVPSSTP.h b/include/cantera/thermo/MargulesVPSSTP.h index c70d07e85..24b5038d4 100644 --- a/include/cantera/thermo/MargulesVPSSTP.h +++ b/include/cantera/thermo/MargulesVPSSTP.h @@ -405,47 +405,6 @@ public: */ virtual int eosType() const; - //! Initialization of a phase using an xml file - /*! - * This routine is a precursor to - * routine, which does most of the work. - * - * @param inputFile XML file containing the description of the - * phase - * - * @param id Optional parameter identifying the name of the - * phase. If none is given, the first XML - * phase element will be used. - */ - void constructPhaseFile(std::string inputFile, std::string id); - - //! Import and initialize a phase - //! specification in an XML tree into the current object. - /*! - * Here we read an XML description of the phase. - * We import descriptions of the elements that make up the - * species in a phase. - * We import information about the species, including their - * reference state thermodynamic polynomials. We then freeze - * the state of the species. - * - * Then, we read the species molar volumes from the xml - * tree to finish the initialization. - * - * @param phaseNode This object must be the phase node of a - * complete XML tree - * description of the phase, including all of the - * species data. In other words while "phase" must - * point to an XML phase object, it must have - * sibling nodes "speciesData" that describe - * the species in the phase. - * - * @param id ID of the phase. If nonnull, a check is done - * to see if phaseNode is pointing to the phase - * with the correct id. - */ - void constructPhaseXML(XML_Node& phaseNode, std::string id); - /** * @} * @name Molar Thermodynamic Properties diff --git a/src/thermo/MargulesVPSSTP.cpp b/src/thermo/MargulesVPSSTP.cpp index c6bd7c4a9..d2aa3966f 100644 --- a/src/thermo/MargulesVPSSTP.cpp +++ b/src/thermo/MargulesVPSSTP.cpp @@ -51,7 +51,7 @@ MargulesVPSSTP::MargulesVPSSTP(std::string inputFile, std::string id) : formMargules_(0), formTempModel_(0) { - constructPhaseFile(inputFile, id); + initThermoFile(inputFile, id); } MargulesVPSSTP::MargulesVPSSTP(XML_Node& phaseRoot, std::string id) : @@ -60,7 +60,7 @@ MargulesVPSSTP::MargulesVPSSTP(XML_Node& phaseRoot, std::string id) : formMargules_(0), formTempModel_(0) { - constructPhaseXML(phaseRoot, id); + importPhase(*findXMLPhase(&phaseRoot, id), this); } @@ -148,8 +148,7 @@ MargulesVPSSTP::MargulesVPSSTP(int testProb) : formTempModel_(0) { - - constructPhaseFile("LiKCl_liquid.xml", ""); + initThermoFile("LiKCl_liquid.xml", ""); numBinaryInteractions_ = 1; @@ -219,122 +218,6 @@ int MargulesVPSSTP::eosType() const return 0; } -/* - * Import, construct, and initialize a phase - * specification from an XML tree into the current object. - * - * This routine is a precursor to constructPhaseXML(XML_Node*) - * routine, which does most of the work. - * - * @param infile XML file containing the description of the - * phase - * - * @param id Optional parameter identifying the name of the - * phase. If none is given, the first XML - * phase element will be used. - */ -void MargulesVPSSTP::constructPhaseFile(std::string inputFile, std::string id) -{ - - if ((int) inputFile.size() == 0) { - throw CanteraError("MargulesVPSSTP:constructPhaseFile", - "input file is null"); - } - string path = findInputFile(inputFile); - std::ifstream fin(path.c_str()); - if (!fin) { - throw CanteraError("MargulesVPSSTP:constructPhaseFile","could not open " - +path+" for reading."); - } - /* - * The phase object automatically constructs an XML object. - * Use this object to store information. - */ - XML_Node& phaseNode_XML = xml(); - XML_Node* fxml = new XML_Node(); - fxml->build(fin); - XML_Node* fxml_phase = findXMLPhase(fxml, id); - if (!fxml_phase) { - throw CanteraError("MargulesVPSSTP:constructPhaseFile", - "ERROR: Can not find phase named " + - id + " in file named " + inputFile); - } - fxml_phase->copy(&phaseNode_XML); - constructPhaseXML(*fxml_phase, id); - delete fxml; -} - -/* - * Import, construct, and initialize a HMWSoln phase - * specification from an XML tree into the current object. - * - * Most of the work is carried out by the cantera base - * routine, importPhase(). That routine imports all of the - * species and element data, including the standard states - * of the species. - * - * Then, In this routine, we read the information - * particular to the specification of the activity - * coefficient model for the Pitzer parameterization. - * - * We also read information about the molar volumes of the - * standard states if present in the XML file. - * - * @param phaseNode This object must be the phase node of a - * complete XML tree - * description of the phase, including all of the - * species data. In other words while "phase" must - * point to an XML phase object, it must have - * sibling nodes "speciesData" that describe - * the species in the phase. - * @param id ID of the phase. If nonnull, a check is done - * to see if phaseNode is pointing to the phase - * with the correct id. - */ -void MargulesVPSSTP::constructPhaseXML(XML_Node& phaseNode, std::string id) -{ - string stemp; - if ((int) id.size() > 0) { - string idp = phaseNode.id(); - if (idp != id) { - throw CanteraError("MargulesVPSSTP::constructPhaseXML", - "phasenode and Id are incompatible"); - } - } - - /* - * Find the Thermo XML node - */ - if (!phaseNode.hasChild("thermo")) { - throw CanteraError("MargulesVPSSTP::constructPhaseXML", - "no thermo XML node"); - } - XML_Node& thermoNode = phaseNode.child("thermo"); - - /* - * Make sure that the thermo model is Margules - */ - stemp = thermoNode.attrib("model"); - string formString = lowercase(stemp); - if (formString != "margules") { - throw CanteraError("MargulesVPSSTP::constructPhaseXML", - "model name isn't Margules: " + formString); - - } - - /* - * Call the Cantera importPhase() function. This will import - * all of the species into the phase. This will also handle - * all of the solvent and solute standard states - */ - bool m_ok = importPhase(phaseNode, this); - if (!m_ok) { - throw CanteraError("MargulesVPSSTP::constructPhaseXML","importPhase failed "); - } - -} - - /* * ------------ Molar Thermodynamic Properties ---------------------- */ @@ -672,27 +555,35 @@ void MargulesVPSSTP::initLengths() */ void MargulesVPSSTP::initThermoXML(XML_Node& phaseNode, std::string id) { - string subname = "MargulesVPSSTP::initThermoXML"; string stemp; - - /* - * Check on the thermo field. Must have: - * - */ - - XML_Node& thermoNode = phaseNode.child("thermo"); - string mStringa = thermoNode.attrib("model"); - string mString = lowercase(mStringa); - if (mString != "margules") { - throw CanteraError(subname.c_str(), - "Unknown thermo model: " + mStringa); + string subname = "MargulesVPSSTP::initThermoXML"; + if ((int) id.size() > 0) { + string idp = phaseNode.id(); + if (idp != id) { + throw CanteraError(subname, "phasenode and Id are incompatible"); + } } + /* + * Find the Thermo XML node + */ + if (!phaseNode.hasChild("thermo")) { + throw CanteraError(subname, + "no thermo XML node"); + } + XML_Node& thermoNode = phaseNode.child("thermo"); /* - * Go get all of the coefficients and factors in the - * activityCoefficients XML block + * Make sure that the thermo model is Margules */ + stemp = thermoNode.attrib("model"); + string formString = lowercase(stemp); + if (formString != "margules") { + throw CanteraError(subname, + "model name isn't Margules: " + formString); + + } + /* * Go get all of the coefficients and factors in the * activityCoefficients XML block