[1D] Refactored Domain1D::save and Domain1D::restore
Derived class implementations now call the parent class method to save/restore information represented in the parent class.
This commit is contained in:
parent
65fbb10bda
commit
01bc55e1bb
6 changed files with 70 additions and 57 deletions
|
|
@ -389,18 +389,30 @@ public:
|
|||
|
||||
//! Save the current solution for this domain into an XML_Node
|
||||
/*!
|
||||
* Base class version of the general domain1D save function. This
|
||||
* base class version will throw an error condition. Inherited classes
|
||||
* will know how to save the solution vector.
|
||||
* Base class version of the general domain1D save function. Derived
|
||||
* classes should call the base class method in addition to saving their
|
||||
* own data.
|
||||
*
|
||||
* @param o XML_Node to save the solution to.
|
||||
* @param sol Current value of the solution vector.
|
||||
* The object will pick out which part of the solution
|
||||
* vector pertains to this object.
|
||||
* @return XML_Node created to represent this domain
|
||||
*/
|
||||
virtual void save(XML_Node& o, const doublereal* const sol) {
|
||||
throw CanteraError("Domain1D::save","base class method called");
|
||||
}
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const sol);
|
||||
|
||||
//! Restore the solution for this domain from an XML_Node
|
||||
/*!
|
||||
* Base class version of the general Domain1D restore function. Derived
|
||||
* classes should call the base class method in addition to restoring
|
||||
* their own data.
|
||||
*
|
||||
* @param o XML_Node for this domain
|
||||
* @param soln Current value of the solution vector, local to this object.
|
||||
* @param loglevel 0 to suppress all output; 1 to show warnings; 2 for
|
||||
* verbose output
|
||||
*/
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel);
|
||||
|
||||
size_t size() const {
|
||||
return m_nv*m_points;
|
||||
|
|
@ -531,8 +543,6 @@ public:
|
|||
virtual void showSolution_s(std::ostream& s, const doublereal* x) {}
|
||||
virtual void showSolution(const doublereal* x);
|
||||
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel) {}
|
||||
|
||||
doublereal z(size_t jlocal) const {
|
||||
return m_z[jlocal];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ public:
|
|||
virtual void init();
|
||||
virtual void eval(size_t jg, doublereal* xg, doublereal* rg,
|
||||
integer* diagg, doublereal rdt);
|
||||
virtual void save(XML_Node& o, const doublereal* const soln);
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const soln);
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel);
|
||||
|
||||
protected:
|
||||
|
|
@ -221,7 +221,7 @@ public:
|
|||
virtual void eval(size_t jg, doublereal* xg, doublereal* rg,
|
||||
integer* diagg, doublereal rdt);
|
||||
|
||||
virtual void save(XML_Node& o, const doublereal* const soln);
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const soln);
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel);
|
||||
virtual void _finalize(const doublereal* x) {}
|
||||
virtual void _getInitialSoln(doublereal* x) {
|
||||
|
|
@ -253,7 +253,7 @@ public:
|
|||
virtual void eval(size_t jg, doublereal* xg, doublereal* rg,
|
||||
integer* diagg, doublereal rdt);
|
||||
|
||||
virtual void save(XML_Node& o, const doublereal* const soln);
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const soln);
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel);
|
||||
virtual void _finalize(const doublereal* x) {
|
||||
; //m_temp = x[0];
|
||||
|
|
@ -286,7 +286,7 @@ public:
|
|||
virtual void eval(size_t jg, doublereal* xg, doublereal* rg,
|
||||
integer* diagg, doublereal rdt);
|
||||
|
||||
virtual void save(XML_Node& o, const doublereal* const soln);
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const soln);
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel);
|
||||
virtual void _finalize(const doublereal* x) {
|
||||
; //m_temp = x[0];
|
||||
|
|
@ -340,7 +340,7 @@ public:
|
|||
virtual void init();
|
||||
virtual void eval(size_t jg, doublereal* xg, doublereal* rg,
|
||||
integer* diagg, doublereal rdt);
|
||||
virtual void save(XML_Node& o, const doublereal* const soln);
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const soln);
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel);
|
||||
|
||||
protected:
|
||||
|
|
@ -375,7 +375,7 @@ public:
|
|||
virtual void eval(size_t jg, doublereal* xg, doublereal* rg,
|
||||
integer* diagg, doublereal rdt);
|
||||
|
||||
virtual void save(XML_Node& o, const doublereal* const soln);
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const soln);
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel);
|
||||
|
||||
virtual void _getInitialSoln(doublereal* x) {
|
||||
|
|
@ -438,7 +438,7 @@ public:
|
|||
virtual void eval(size_t jg, doublereal* xg, doublereal* rg,
|
||||
integer* diagg, doublereal rdt);
|
||||
|
||||
virtual void save(XML_Node& o, const doublereal* const soln);
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const soln);
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln, int loglevel);
|
||||
|
||||
virtual void _getInitialSoln(doublereal* x) {
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ public:
|
|||
* The object will pick out which part of the solution
|
||||
* vector pertains to this object.
|
||||
*/
|
||||
virtual void save(XML_Node& o, const doublereal* const sol);
|
||||
virtual XML_Node& save(XML_Node& o, const doublereal* const sol);
|
||||
|
||||
virtual void restore(const XML_Node& dom, doublereal* soln,
|
||||
int loglevel);
|
||||
|
|
|
|||
|
|
@ -122,6 +122,18 @@ eval(size_t jg, doublereal* xg, doublereal* rg,
|
|||
}
|
||||
}
|
||||
|
||||
XML_Node& Domain1D::save(XML_Node& o, const doublereal* const sol)
|
||||
{
|
||||
XML_Node& d = o.addChild("domain");
|
||||
d.addAttribute("points", nPoints());
|
||||
d.addAttribute("components", nComponents());
|
||||
d.addAttribute("id", id());
|
||||
return d;
|
||||
}
|
||||
|
||||
void Domain1D::restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
}
|
||||
|
||||
// called to set up initial grid, and after grid refinement
|
||||
void Domain1D::setupGrid(size_t n, const doublereal* z)
|
||||
|
|
|
|||
|
|
@ -754,7 +754,7 @@ size_t StFlow::componentIndex(const std::string& name) const
|
|||
|
||||
void StFlow::restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
|
||||
Domain1D::restore(dom, soln, loglevel);
|
||||
vector<string> ignored;
|
||||
size_t nsp = m_thermo->nSpecies();
|
||||
vector_int did_species(nsp, 0);
|
||||
|
|
@ -891,17 +891,14 @@ void StFlow::restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
|||
|
||||
|
||||
|
||||
void StFlow::save(XML_Node& o, const doublereal* const sol)
|
||||
XML_Node& StFlow::save(XML_Node& o, const doublereal* const sol)
|
||||
{
|
||||
size_t k;
|
||||
|
||||
Array2D soln(m_nv, m_points, sol + loc());
|
||||
|
||||
XML_Node& flow = (XML_Node&)o.addChild("domain");
|
||||
XML_Node& flow = Domain1D::save(o, sol);
|
||||
flow.addAttribute("type",flowType());
|
||||
flow.addAttribute("id",m_id);
|
||||
flow.addAttribute("points", double(m_points));
|
||||
flow.addAttribute("components", double(m_nv));
|
||||
|
||||
if (m_desc != "") {
|
||||
addString(flow,"description",m_desc);
|
||||
|
|
@ -936,6 +933,7 @@ void StFlow::save(XML_Node& o, const doublereal* const sol)
|
|||
addFloatArray(gv,m_thermo->speciesName(k),
|
||||
x.size(),DATA_PTR(x),"","massFraction",0.0,1.0);
|
||||
}
|
||||
return flow;
|
||||
}
|
||||
|
||||
void StFlow::setJac(MultiJac* jac)
|
||||
|
|
|
|||
|
|
@ -238,15 +238,12 @@ eval(size_t jg, doublereal* xg, doublereal* rg,
|
|||
|
||||
}
|
||||
|
||||
void Inlet1D::
|
||||
XML_Node& Inlet1D::
|
||||
save(XML_Node& o, const doublereal* const soln)
|
||||
{
|
||||
const doublereal* s = soln + loc();
|
||||
XML_Node& inlt = o.addChild("domain");
|
||||
inlt.addAttribute("id",id());
|
||||
inlt.addAttribute("points",1);
|
||||
XML_Node& inlt = Domain1D::save(o, soln);
|
||||
inlt.addAttribute("type","inlet");
|
||||
inlt.addAttribute("components", double(nComponents()));
|
||||
for (size_t k = 0; k < nComponents(); k++) {
|
||||
ctml::addFloat(inlt, componentName(k), s[k], "", "",lowerBound(k), upperBound(k));
|
||||
}
|
||||
|
|
@ -254,11 +251,13 @@ save(XML_Node& o, const doublereal* const soln)
|
|||
ctml::addFloat(inlt, "massFraction", m_yin[k], "",
|
||||
m_flow->phase().speciesName(k));
|
||||
}
|
||||
return inlt;
|
||||
}
|
||||
|
||||
void Inlet1D::
|
||||
restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
Domain1D::restore(dom, soln, loglevel);
|
||||
soln[0] = m_mdot = ctml::getFloat(dom, "mdot", "massflowrate");
|
||||
soln[1] = m_temp = ctml::getFloat(dom, "temperature", "temperature");
|
||||
|
||||
|
|
@ -325,19 +324,18 @@ eval(size_t jg, doublereal* xg, doublereal* rg,
|
|||
diag[0] = 0;
|
||||
}
|
||||
|
||||
void Empty1D::
|
||||
XML_Node& Empty1D::
|
||||
save(XML_Node& o, const doublereal* const soln)
|
||||
{
|
||||
XML_Node& symm = o.addChild("domain");
|
||||
symm.addAttribute("id",id());
|
||||
symm.addAttribute("points",1);
|
||||
XML_Node& symm = Domain1D::save(o, soln);
|
||||
symm.addAttribute("type","empty");
|
||||
symm.addAttribute("components", double(nComponents()));
|
||||
return symm;
|
||||
}
|
||||
|
||||
void Empty1D::
|
||||
restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
Domain1D::restore(dom, soln, loglevel);
|
||||
resize(1,1);
|
||||
}
|
||||
|
||||
|
|
@ -416,19 +414,18 @@ eval(size_t jg, doublereal* xg, doublereal* rg,
|
|||
}
|
||||
|
||||
|
||||
void Symm1D::
|
||||
XML_Node& Symm1D::
|
||||
save(XML_Node& o, const doublereal* const soln)
|
||||
{
|
||||
XML_Node& symm = o.addChild("domain");
|
||||
symm.addAttribute("id",id());
|
||||
symm.addAttribute("points",1);
|
||||
XML_Node& symm = Domain1D::save(o, soln);
|
||||
symm.addAttribute("type","symmetry");
|
||||
symm.addAttribute("components", double(nComponents()));
|
||||
return symm;
|
||||
}
|
||||
|
||||
void Symm1D::
|
||||
restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
Domain1D::restore(dom, soln, loglevel);
|
||||
resize(1,1);
|
||||
}
|
||||
|
||||
|
|
@ -526,19 +523,18 @@ eval(size_t jg, doublereal* xg, doublereal* rg,
|
|||
}
|
||||
|
||||
|
||||
void Outlet1D::
|
||||
XML_Node& Outlet1D::
|
||||
save(XML_Node& o, const doublereal* const soln)
|
||||
{
|
||||
XML_Node& outlt = o.addChild("domain");
|
||||
outlt.addAttribute("id",id());
|
||||
outlt.addAttribute("points",1);
|
||||
XML_Node& outlt = Domain1D::save(o, soln);
|
||||
outlt.addAttribute("type","outlet");
|
||||
outlt.addAttribute("components", double(nComponents()));
|
||||
return outlt;
|
||||
}
|
||||
|
||||
void Outlet1D::
|
||||
restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
Domain1D::restore(dom, soln, loglevel);
|
||||
resize(1,1);
|
||||
}
|
||||
|
||||
|
|
@ -675,24 +671,23 @@ eval(size_t jg, doublereal* xg, doublereal* rg,
|
|||
}
|
||||
|
||||
|
||||
void OutletRes1D::
|
||||
XML_Node& OutletRes1D::
|
||||
save(XML_Node& o, const doublereal* const soln)
|
||||
{
|
||||
XML_Node& outlt = o.addChild("domain");
|
||||
outlt.addAttribute("id",id());
|
||||
outlt.addAttribute("points",1);
|
||||
XML_Node& outlt = Domain1D::save(o, soln);
|
||||
outlt.addAttribute("type","outletres");
|
||||
outlt.addAttribute("components", double(nComponents()));
|
||||
ctml::addFloat(outlt, "temperature", m_temp, "K");
|
||||
for (size_t k=0; k < m_nsp; k++) {
|
||||
ctml::addFloat(outlt, "massFraction", m_yres[k], "",
|
||||
m_flow->phase().speciesName(k));
|
||||
}
|
||||
return outlt;
|
||||
}
|
||||
|
||||
void OutletRes1D::
|
||||
restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
Domain1D::restore(dom, soln, loglevel);
|
||||
m_temp = ctml::getFloat(dom, "temperature");
|
||||
|
||||
m_yres.assign(m_nsp, 0.0);
|
||||
|
|
@ -777,24 +772,23 @@ eval(size_t jg, doublereal* xg, doublereal* rg,
|
|||
}
|
||||
}
|
||||
|
||||
void Surf1D::
|
||||
XML_Node& Surf1D::
|
||||
save(XML_Node& o, const doublereal* const soln)
|
||||
{
|
||||
const doublereal* s = soln + loc();
|
||||
//XML_Node& inlt = o.addChild("inlet");
|
||||
XML_Node& inlt = o.addChild("domain");
|
||||
inlt.addAttribute("id",id());
|
||||
inlt.addAttribute("points",1);
|
||||
XML_Node& inlt = Domain1D::save(o, soln);
|
||||
inlt.addAttribute("type","surface");
|
||||
inlt.addAttribute("components", double(nComponents()));
|
||||
for (size_t k = 0; k < nComponents(); k++) {
|
||||
ctml::addFloat(inlt, componentName(k), s[k], "", "",0.0, 1.0);
|
||||
}
|
||||
return inlt;
|
||||
}
|
||||
|
||||
void Surf1D::
|
||||
restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
Domain1D::restore(dom, soln, loglevel);
|
||||
soln[0] = m_temp = ctml::getFloat(dom, "temperature", "temperature");
|
||||
resize(1,1);
|
||||
}
|
||||
|
|
@ -938,25 +932,24 @@ eval(size_t jg, doublereal* xg, doublereal* rg,
|
|||
}
|
||||
}
|
||||
|
||||
void ReactingSurf1D::
|
||||
XML_Node& ReactingSurf1D::
|
||||
save(XML_Node& o, const doublereal* const soln)
|
||||
{
|
||||
const doublereal* s = soln + loc();
|
||||
XML_Node& dom = o.addChild("domain");
|
||||
dom.addAttribute("id",id());
|
||||
dom.addAttribute("points",1);
|
||||
XML_Node& dom = Domain1D::save(o, soln);
|
||||
dom.addAttribute("type","surface");
|
||||
dom.addAttribute("components", double(nComponents()));
|
||||
ctml::addFloat(dom, "temperature", s[0], "K");
|
||||
for (size_t k=0; k < m_nsp; k++) {
|
||||
ctml::addFloat(dom, "coverage", s[k+1], "",
|
||||
m_sphase->speciesName(k));
|
||||
}
|
||||
return dom;
|
||||
}
|
||||
|
||||
void ReactingSurf1D::
|
||||
restore(const XML_Node& dom, doublereal* soln, int loglevel)
|
||||
{
|
||||
Domain1D::restore(dom, soln, loglevel);
|
||||
soln[0] = m_temp = ctml::getFloat(dom, "temperature");
|
||||
|
||||
m_fixed_cov.assign(m_nsp, 0.0);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue