/* * Create a new ThermoPhase object and initializes it according to * the XML tree database. This routine first looks up the * identity of the model for the solution thermodynamics in the * model attribute of the thermo child of the xml phase * node. Then, it does a string lookup on the model to figure out * what ThermoPhase derived class is assigned. It creates a new * instance of that class, and then calls importPhase() to * populate that class with the correct parameters from the XML * tree. */ ThermoPhase* newPhase(XML_Node& xmlphase) { const XML_Node& th = xmlphase.child("thermo"); string model = th["model"]; ThermoPhase* t = newThermoPhase(model); #ifdef WITH_ELECTROLYTES if (model == "HMW") { HMWSoln* p = (HMWSoln*)t; p->constructPhaseXML(xmlphase,""); } else #endif importPhase(xmlphase, t); return t; }
ThermoPhase* newPhase(XML_Node& xmlphase) { string model = xmlphase.child("thermo")["model"]; ThermoPhase* t = newThermoPhase(model); if (model == "singing cows") { throw CanteraError("ThermoPhase::newPhase", "Cows don't sing"); } else if (model == "HMW") { HMWSoln* p = dynamic_cast<HMWSoln*>(t); p->constructPhaseXML(xmlphase,""); } else if (model == "IonsFromNeutralMolecule") { IonsFromNeutralVPSSTP* p = dynamic_cast<IonsFromNeutralVPSSTP*>(t); p->constructPhaseXML(xmlphase,""); } else { importPhase(xmlphase, t); } return t; }
/* * Create a new ThermoPhase object and initializes it according to * the XML tree database. This routine first looks up the * identity of the model for the solution thermodynamics in the * model attribute of the thermo child of the xml phase * node. Then, it does a string lookup on the model to figure out * what ThermoPhase derived class is assigned. It creates a new * instance of that class, and then calls importPhase() to * populate that class with the correct parameters from the XML * tree. */ ThermoPhase* newPhase(XML_Node& xmlphase) { const XML_Node& th = xmlphase.child("thermo"); string model = th["model"]; ThermoPhase* t = newThermoPhase(model); if (model == "singing cows") { throw CanteraError(" newPhase", "Cows don't sing"); } #ifdef WITH_ELECTROLYTES else if (model == "HMW") { HMWSoln* p = dynamic_cast<HMWSoln*>(t); p->constructPhaseXML(xmlphase,""); } #endif #ifdef WITH_IDEAL_SOLUTIONS else if (model == "IonsFromNeutralMolecule") { IonsFromNeutralVPSSTP* p = dynamic_cast<IonsFromNeutralVPSSTP*>(t); p->constructPhaseXML(xmlphase,""); } #endif else { importPhase(xmlphase, t); } return t; }