diff --git a/include/cantera/thermo/IdealSolidSolnPhase.h b/include/cantera/thermo/IdealSolidSolnPhase.h
index 61512c1a4..50e8d23fa 100644
--- a/include/cantera/thermo/IdealSolidSolnPhase.h
+++ b/include/cantera/thermo/IdealSolidSolnPhase.h
@@ -888,51 +888,6 @@ public:
/// @name Utility Functions -----------------------------------------------
//@{
-
-
- /**
- * Initialization of an IdealSolidSolnPhase phase using an
- * xml file
- *
- * 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 constructPhaseFile(std::string infile, std::string id="");
-
- /**
- * Import and initialize an IdealSolidSolnPhase 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.
- * This routine calls importPhase() to do most of its work.
- * Then, importPhase() calls initThermoXML() to finish
- * off the work.
- *
-
- * @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="");
-
/**
* Initialization of an IdealSolidSolnPhase phase:
* Note this function is pretty much useless because it doesn't
diff --git a/src/thermo/IdealSolidSolnPhase.cpp b/src/thermo/IdealSolidSolnPhase.cpp
index 47d48ab98..15078c83b 100644
--- a/src/thermo/IdealSolidSolnPhase.cpp
+++ b/src/thermo/IdealSolidSolnPhase.cpp
@@ -57,7 +57,7 @@ IdealSolidSolnPhase::IdealSolidSolnPhase(std::string inputFile, std::string id,
throw CanteraError(" IdealSolidSolnPhase Constructor",
" Illegal value of formGC");
}
- constructPhaseFile(inputFile, id);
+ initThermoFile(inputFile, id);
}
//====================================================================================================================
IdealSolidSolnPhase::IdealSolidSolnPhase(XML_Node& root, std::string id,
@@ -75,7 +75,7 @@ IdealSolidSolnPhase::IdealSolidSolnPhase(XML_Node& root, std::string id,
throw CanteraError(" IdealSolidSolnPhase Constructor",
" Illegal value of formGC");
}
- constructPhaseXML(root, id);
+ importPhase(*findXMLPhase(&root, id), this);
}
//====================================================================================================================
IdealSolidSolnPhase::IdealSolidSolnPhase(const IdealSolidSolnPhase& b)
@@ -1074,18 +1074,19 @@ void IdealSolidSolnPhase::initThermo()
}
/*
- * Import and initialize an IdealSolidSolnPhase 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.
- *
- * This routine calls importPhase() to do most of its work.
- * Then, importPhase() calls initThermoXML() to finish
- * off the work.
+ * @internal
+ * Import and initialize a ThermoPhase object
+ * using an XML tree.
+ * Here we read extra information about the XML description
+ * of a phase. Regular information about elements and species
+ * and their reference state thermodynamic information
+ * have already been read at this point.
+ * For example, we do not need to call this function for
+ * ideal gas equations of state.
+ * This function is called from importPhase()
+ * after the elements and the
+ * species are initialized with default ideal solution
+ * level data.
*
* @param phaseNode This object must be the phase node of a
* complete XML tree
@@ -1098,10 +1099,9 @@ void IdealSolidSolnPhase::initThermo()
* to see if phaseNode is pointing to the phase
* with the correct id.
*/
-void IdealSolidSolnPhase::
-constructPhaseXML(XML_Node& phaseNode, std::string id)
+void IdealSolidSolnPhase::initThermoXML(XML_Node& phaseNode, std::string id)
{
- string subname = "IdealSolidSolnPhase::constructPhaseXML";
+ string subname = "IdealSolidSolnPhase::initThermoXML";
if (id.size() > 0) {
string idp = phaseNode.id();
if (idp != id) {
@@ -1153,129 +1153,6 @@ constructPhaseXML(XML_Node& phaseNode, std::string id)
"Unspecified standardConc model");
}
- bool m_ok = importPhase(phaseNode, this);
- if (!m_ok) {
- throw CanteraError(subname.c_str(),"importPhase failed ");
- }
-}
-
-/*
- * Initialization of an IdealSolidSolnPhase phase using an
- * xml file
- *
- * This routine is a precursor to constructPhaseFile(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 IdealSolidSolnPhase::
-constructPhaseFile(std::string inputFile, std::string id)
-{
- if (inputFile.size() == 0) {
- throw CanteraError("IdealSolidSolnPhase::constructPhaseFile",
- "input file is null");
- }
- string path = findInputFile(inputFile);
- ifstream fin(path.c_str());
- if (!fin) {
- throw CanteraError("IdealSolidSolnPhase::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("IdealSolidSolnPhase::constructPhaseFile",
- "ERROR: Can not find phase named " +
- id + " in file named " + inputFile);
- }
- fxml_phase->copy(&phaseNode_XML);
-
- constructPhaseXML(*fxml_phase, id);
- delete fxml;
-}
-
-/*
- * @internal
- * Import and initialize a ThermoPhase object
- * using an XML tree.
- * Here we read extra information about the XML description
- * of a phase. Regular information about elements and species
- * and their reference state thermodynamic information
- * have already been read at this point.
- * For example, we do not need to call this function for
- * ideal gas equations of state.
- * This function is called from importPhase()
- * after the elements and the
- * species are initialized with default ideal solution
- * level data.
- *
- * @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 IdealSolidSolnPhase::initThermoXML(XML_Node& phaseNode, std::string id)
-{
- string subname = "IdealSolidSolnPhase::initThermoXML";
- /*
- * Check on the thermo field. Must have:
- *
- */
- if (phaseNode.hasChild("thermo")) {
- XML_Node& thNode = phaseNode.child("thermo");
- string mStringa = thNode.attrib("model");
- string mString = lowercase(mStringa);
- if (mString != "idealsolidsolution") {
- throw CanteraError(subname.c_str(),
- "Unknown thermo model: " + mStringa);
- }
- } else {
- throw CanteraError(subname.c_str(),
- "Unspecified thermo model");
- }
-
- /*
- * Form of the standard concentrations. Must have one of:
- *
- *
- *
- *
- */
- if (phaseNode.hasChild("standardConc")) {
- XML_Node& scNode = phaseNode.child("standardConc");
- string formStringa = scNode.attrib("model");
- string formString = lowercase(formStringa);
- if (formString == "unity") {
- m_formGC = 0;
- } else if (formString == "molar_volume") {
- m_formGC = 1;
- } else if (formString == "solvent_volume") {
- m_formGC = 2;
- } else {
- throw CanteraError(subname.c_str(),
- "Unknown standardConc model: " + formStringa);
- }
- } else {
- throw CanteraError(subname.c_str(), "Unspecified standardConc model");
- }
-
/*
* Initialize all of the lengths now that we know how many species
* there are in the phase.