made some log message writing optional
This commit is contained in:
parent
077cfaa54f
commit
a5ade5036f
3 changed files with 123 additions and 115 deletions
|
|
@ -227,10 +227,12 @@ namespace Cantera {
|
|||
|
||||
void MMCollisionInt::init(XML_Writer* xml,
|
||||
doublereal tsmin, doublereal tsmax, int log_level) {
|
||||
|
||||
ostream& logfile = xml->output();
|
||||
m_xml = xml;
|
||||
m_loglevel = log_level;
|
||||
m_xml->XML_comment(logfile, "Collision Integral Polynomial Fits");
|
||||
if (m_loglevel > 0)
|
||||
m_xml->XML_comment(logfile, "Collision Integral Polynomial Fits");
|
||||
m_nmin = -1;
|
||||
m_nmax = -1;
|
||||
char p[200];
|
||||
|
|
@ -242,20 +244,24 @@ namespace Cantera {
|
|||
m_nmin = 0;
|
||||
m_nmax = 36;
|
||||
}
|
||||
m_xml->XML_item(logfile, "Tstar_min", tstar[m_nmin + 1]);
|
||||
m_xml->XML_item(logfile, "Tstar_max", tstar[m_nmax + 1]);
|
||||
if (m_loglevel > 0) {
|
||||
m_xml->XML_item(logfile, "Tstar_min", tstar[m_nmin + 1]);
|
||||
m_xml->XML_item(logfile, "Tstar_max", tstar[m_nmax + 1]);
|
||||
}
|
||||
m_logTemp.resize(37);
|
||||
doublereal rmserr, e22 = 0.0, ea = 0.0, eb = 0.0, ec = 0.0;
|
||||
|
||||
m_xml->XML_open(logfile, "dstar_fits");
|
||||
m_xml->XML_comment(logfile, "Collision integral fits at each "
|
||||
"tabulated T* vs. delta*.\n"
|
||||
"These polynomial fits are used to interpolate between "
|
||||
"columns (delta*)\n in the Monchick and Mason tables."
|
||||
" They are only used for nonzero delta*.");
|
||||
if (log_level < 4) {
|
||||
m_xml->XML_comment(logfile,
|
||||
"polynomial coefficients not printed (log_level < 4)");
|
||||
if (m_loglevel > 0) {
|
||||
m_xml->XML_open(logfile, "dstar_fits");
|
||||
m_xml->XML_comment(logfile, "Collision integral fits at each "
|
||||
"tabulated T* vs. delta*.\n"
|
||||
"These polynomial fits are used to interpolate between "
|
||||
"columns (delta*)\n in the Monchick and Mason tables."
|
||||
" They are only used for nonzero delta*.");
|
||||
if (log_level < 4) {
|
||||
m_xml->XML_comment(logfile,
|
||||
"polynomial coefficients not printed (log_level < 4)");
|
||||
}
|
||||
}
|
||||
|
||||
string indent = " ";
|
||||
|
|
@ -270,7 +276,7 @@ namespace Cantera {
|
|||
m_xml->XML_open(logfile, "dstar_fit", p);
|
||||
m_xml->XML_item(logfile, "Tstar", tstar[i+1]);
|
||||
m_xml->XML_writeVector(logfile, indent, "omega22",
|
||||
c.size(), DATA_PTR(c));
|
||||
c.size(), DATA_PTR(c));
|
||||
}
|
||||
m_o22poly.push_back(c);
|
||||
if (rmserr > e22) e22 = rmserr;
|
||||
|
|
@ -298,15 +304,19 @@ namespace Cantera {
|
|||
|
||||
if (log_level > 3)
|
||||
m_xml->XML_close(logfile, "dstar_fit");
|
||||
|
||||
|
||||
if (log_level > 0) {
|
||||
sprintf(p,
|
||||
"max RMS errors in fits vs. delta*:\n"
|
||||
" omega_22 = %12.6g \n"
|
||||
" A* = %12.6g \n"
|
||||
" B* = %12.6g \n"
|
||||
" C* = %12.6g \n", e22, ea, eb, ec);
|
||||
m_xml->XML_comment(logfile, p);
|
||||
m_xml->XML_close(logfile, "dstar_fits");
|
||||
}
|
||||
}
|
||||
sprintf(p,
|
||||
"max RMS errors in fits vs. delta*:\n"
|
||||
" omega_22 = %12.6g \n"
|
||||
" A* = %12.6g \n"
|
||||
" B* = %12.6g \n"
|
||||
" C* = %12.6g \n", e22, ea, eb, ec);
|
||||
m_xml->XML_comment(logfile, p);
|
||||
m_xml->XML_close(logfile, "dstar_fits");
|
||||
}
|
||||
|
||||
MMCollisionInt::~MMCollisionInt() {}
|
||||
|
|
@ -434,7 +444,7 @@ namespace Cantera {
|
|||
w[0]= -1.0;
|
||||
rmserr = polyfit(n, logT, DATA_PTR(values),
|
||||
DATA_PTR(w), degree, ndeg, 0.0, o22);
|
||||
if (rmserr > 0.01) {
|
||||
if (m_loglevel > 0 && rmserr > 0.01) {
|
||||
char p[100];
|
||||
sprintf(p, "Warning: RMS error = %12.6g in omega_22 fit with delta* = %12.6g\n", rmserr, deltastar);
|
||||
m_xml->XML_comment(logfile, p);
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ namespace Cantera {
|
|||
* m_models[], a mapping between the string name
|
||||
* for a transport model and the integer name.
|
||||
*/
|
||||
TransportFactory::TransportFactory() : m_integrals(0) {
|
||||
TransportFactory::TransportFactory() : m_integrals(0), m_verbose(false) {
|
||||
m_models["Mix"] = cMixtureAveraged;
|
||||
m_models["Multi"] = cMulticomponent;
|
||||
m_models["Solid"] = cSolidTransport;
|
||||
|
|
@ -428,25 +428,28 @@ namespace Cantera {
|
|||
// Chemkin fits the entire T* range in the Monchick and Mason tables,
|
||||
// so modify tstar_min and tstar_max if in Chemkin compatibility mode
|
||||
|
||||
// NOTE: the 'if' was commented out DGG 11/12/03
|
||||
if (mode == CK_Mode) { // uncommented
|
||||
if (mode == CK_Mode) {
|
||||
tstar_min = 0.101;
|
||||
tstar_max = 99.9;
|
||||
} // uncommented
|
||||
}
|
||||
|
||||
|
||||
// initialize the collision integral calculator for the desired
|
||||
// T* range
|
||||
tr.xml->XML_open(flog, "collision_integrals");
|
||||
if (m_verbose)
|
||||
tr.xml->XML_open(flog, "collision_integrals");
|
||||
m_integrals = new MMCollisionInt;
|
||||
m_integrals->init(tr.xml, tstar_min, tstar_max, log_level);
|
||||
fitCollisionIntegrals(flog, tr);
|
||||
tr.xml->XML_close(flog, "collision_integrals");
|
||||
if (m_verbose)
|
||||
tr.xml->XML_close(flog, "collision_integrals");
|
||||
|
||||
// make polynomial fits
|
||||
tr.xml->XML_open(flog, "property fits");
|
||||
if (m_verbose)
|
||||
tr.xml->XML_open(flog, "property fits");
|
||||
fitProperties(tr,flog);
|
||||
tr.xml->XML_close(flog, "property fits");
|
||||
if (m_verbose)
|
||||
tr.xml->XML_close(flog, "property fits");
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -457,17 +460,19 @@ namespace Cantera {
|
|||
|
||||
TransportParams tr;
|
||||
ofstream flog("transport_log.xml");
|
||||
|
||||
tr.xml = new XML_Writer(flog);
|
||||
tr.xml->XML_open(flog, "transport");
|
||||
if (m_verbose) {
|
||||
tr.xml->XML_open(flog, "transport");
|
||||
}
|
||||
|
||||
// set up Monchick and Mason collision integrals
|
||||
setupMM(flog, transport_database, thermo, mode, log_level, tr);
|
||||
|
||||
// do model-specific initialization
|
||||
tran->init(tr);
|
||||
|
||||
tr.xml->XML_close(flog, "transport");
|
||||
flog.close();
|
||||
if (m_verbose)
|
||||
tr.xml->XML_close(flog, "transport");
|
||||
|
||||
// finished with log file
|
||||
flog.close();
|
||||
|
|
@ -498,12 +503,13 @@ namespace Cantera {
|
|||
// Chemkin fits to sixth order polynomials
|
||||
int degree = (mode == CK_Mode ? 6 : COLL_INT_POLY_DEGREE);
|
||||
|
||||
tr.xml->XML_open(logfile, "tstar_fits");
|
||||
tr.xml->XML_comment(logfile, "fits to A*, B*, and C* vs. log(T*).\n"
|
||||
"These are done only for the required dstar(j,k) values.");
|
||||
if (tr.log_level < 3)
|
||||
tr.xml->XML_comment(logfile, "*** polynomial coefficients not printed (log_level < 3) ***");
|
||||
|
||||
if (m_verbose) {
|
||||
tr.xml->XML_open(logfile, "tstar_fits");
|
||||
tr.xml->XML_comment(logfile, "fits to A*, B*, and C* vs. log(T*).\n"
|
||||
"These are done only for the required dstar(j,k) values.");
|
||||
if (tr.log_level < 3)
|
||||
tr.xml->XML_comment(logfile, "*** polynomial coefficients not printed (log_level < 3) ***");
|
||||
}
|
||||
for (i = 0; i < nsp; i++)
|
||||
{
|
||||
for (j = i; j < nsp; j++)
|
||||
|
|
@ -545,7 +551,8 @@ namespace Cantera {
|
|||
tr.poly[j][i] = tr.poly[i][j];
|
||||
}
|
||||
}
|
||||
tr.xml->XML_close(logfile, "tstar_fits");
|
||||
if (m_verbose)
|
||||
tr.xml->XML_close(logfile, "tstar_fits");
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -742,23 +749,26 @@ namespace Cantera {
|
|||
// fit the pure-species viscosity and thermal conductivity for
|
||||
// each species
|
||||
|
||||
if (tr.log_level < 2)
|
||||
if (tr.log_level < 2 && m_verbose)
|
||||
tr.xml->XML_comment(logfile,
|
||||
"*** polynomial coefficients not printed (log_level < 3) ***");
|
||||
"*** polynomial coefficients not printed (log_level < 2) ***");
|
||||
|
||||
int ipoly;
|
||||
doublereal sqrt_T, visc, err, relerr,
|
||||
mxerr = 0.0, mxrelerr = 0.0, mxerr_cond = 0.0, mxrelerr_cond = 0.0;
|
||||
tr.xml->XML_open(logfile, "viscosity");
|
||||
tr.xml->XML_comment(logfile,"Polynomial fits for viscosity");
|
||||
if (mode == CK_Mode) {
|
||||
tr.xml->XML_comment(logfile,"log(viscosity) fit to cubic "
|
||||
"polynomial in log(T)");
|
||||
}
|
||||
else {
|
||||
sprintf(s, "viscosity/sqrt(T) fit to "
|
||||
"polynomial of degree %d in log(T)",degree);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
|
||||
if (m_verbose) {
|
||||
tr.xml->XML_open(logfile, "viscosity");
|
||||
tr.xml->XML_comment(logfile,"Polynomial fits for viscosity");
|
||||
if (mode == CK_Mode) {
|
||||
tr.xml->XML_comment(logfile,"log(viscosity) fit to cubic "
|
||||
"polynomial in log(T)");
|
||||
}
|
||||
else {
|
||||
sprintf(s, "viscosity/sqrt(T) fit to "
|
||||
"polynomial of degree %d in log(T)",degree);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -876,52 +886,55 @@ namespace Cantera {
|
|||
tr.visccoeffs.push_back(c);
|
||||
tr.condcoeffs.push_back(c2);
|
||||
|
||||
if (tr.log_level >= 2) {
|
||||
if (tr.log_level >= 2 && m_verbose) {
|
||||
tr.xml->XML_writeVector(logfile, " ", tr.thermo->speciesName(k),
|
||||
c.size(), DATA_PTR(c));
|
||||
}
|
||||
}
|
||||
|
||||
sprintf(s, "Maximum viscosity absolute error: %12.6g", mxerr);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
sprintf(s, "Maximum viscosity relative error: %12.6g", mxrelerr);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
tr.xml->XML_close(logfile, "viscosity");
|
||||
|
||||
|
||||
tr.xml->XML_open(logfile, "conductivity");
|
||||
tr.xml->XML_comment(logfile,"Polynomial fits for conductivity");
|
||||
if (mode == CK_Mode)
|
||||
tr.xml->XML_comment(logfile,"log(conductivity) fit to cubic "
|
||||
"polynomial in log(T)");
|
||||
else {
|
||||
sprintf(s, "conductivity/sqrt(T) fit to "
|
||||
"polynomial of degree %d in log(T)",degree);
|
||||
if (m_verbose) {
|
||||
sprintf(s, "Maximum viscosity absolute error: %12.6g", mxerr);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
}
|
||||
if (tr.log_level >= 2)
|
||||
for (k = 0; k < tr.nsp; k++) {
|
||||
tr.xml->XML_writeVector(logfile, " ", tr.thermo->speciesName(k),
|
||||
degree+1, DATA_PTR(tr.condcoeffs[k]));
|
||||
}
|
||||
sprintf(s, "Maximum conductivity absolute error: %12.6g", mxerr_cond);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
sprintf(s, "Maximum conductivity relative error: %12.6g", mxrelerr_cond);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
tr.xml->XML_close(logfile, "conductivity");
|
||||
sprintf(s, "Maximum viscosity relative error: %12.6g", mxrelerr);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
tr.xml->XML_close(logfile, "viscosity");
|
||||
|
||||
// fit the binary diffusion coefficients for each species pair
|
||||
|
||||
tr.xml->XML_open(logfile, "binary_diffusion_coefficients");
|
||||
tr.xml->XML_comment(logfile, "binary diffusion coefficients");
|
||||
if (mode == CK_Mode)
|
||||
tr.xml->XML_comment(logfile,"log(D) fit to cubic "
|
||||
"polynomial in log(T)");
|
||||
else {
|
||||
sprintf(s, "D/T**(3/2) fit to "
|
||||
"polynomial of degree %d in log(T)",degree);
|
||||
tr.xml->XML_open(logfile, "conductivity");
|
||||
tr.xml->XML_comment(logfile,"Polynomial fits for conductivity");
|
||||
if (mode == CK_Mode)
|
||||
tr.xml->XML_comment(logfile,"log(conductivity) fit to cubic "
|
||||
"polynomial in log(T)");
|
||||
else {
|
||||
sprintf(s, "conductivity/sqrt(T) fit to "
|
||||
"polynomial of degree %d in log(T)",degree);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
}
|
||||
if (tr.log_level >= 2)
|
||||
for (k = 0; k < tr.nsp; k++) {
|
||||
tr.xml->XML_writeVector(logfile, " ", tr.thermo->speciesName(k),
|
||||
degree+1, DATA_PTR(tr.condcoeffs[k]));
|
||||
}
|
||||
sprintf(s, "Maximum conductivity absolute error: %12.6g", mxerr_cond);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
sprintf(s, "Maximum conductivity relative error: %12.6g", mxrelerr_cond);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
tr.xml->XML_close(logfile, "conductivity");
|
||||
|
||||
// fit the binary diffusion coefficients for each species pair
|
||||
|
||||
tr.xml->XML_open(logfile, "binary_diffusion_coefficients");
|
||||
tr.xml->XML_comment(logfile, "binary diffusion coefficients");
|
||||
if (mode == CK_Mode)
|
||||
tr.xml->XML_comment(logfile,"log(D) fit to cubic "
|
||||
"polynomial in log(T)");
|
||||
else {
|
||||
sprintf(s, "D/T**(3/2) fit to "
|
||||
"polynomial of degree %d in log(T)",degree);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
}
|
||||
}
|
||||
|
||||
mxerr = 0.0, mxrelerr = 0.0;
|
||||
vector_fp diff(np + 1);
|
||||
doublereal eps, sigma;
|
||||
|
|
@ -982,18 +995,20 @@ namespace Cantera {
|
|||
if (fabs(relerr) > mxrelerr) mxrelerr = fabs(relerr);
|
||||
}
|
||||
tr.diffcoeffs.push_back(c);
|
||||
if (tr.log_level >= 2)
|
||||
if (tr.log_level >= 2 && m_verbose)
|
||||
tr.xml->XML_writeVector(logfile, " ", tr.thermo->speciesName(k)
|
||||
+ "__"+tr.thermo->speciesName(j), c.size(), DATA_PTR(c));
|
||||
}
|
||||
}
|
||||
sprintf(s,"Maximum binary diffusion coefficient absolute error:"
|
||||
" %12.6g", mxerr);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
sprintf(s, "Maximum binary diffusion coefficient relative error:"
|
||||
"%12.6g", mxrelerr);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
tr.xml->XML_close(logfile, "binary_diffusion_coefficients");
|
||||
if (m_verbose) {
|
||||
sprintf(s,"Maximum binary diffusion coefficient absolute error:"
|
||||
" %12.6g", mxerr);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
sprintf(s, "Maximum binary diffusion coefficient relative error:"
|
||||
"%12.6g", mxrelerr);
|
||||
tr.xml->XML_comment(logfile,s);
|
||||
tr.xml->XML_close(logfile, "binary_diffusion_coefficients");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -138,17 +138,12 @@ namespace Cantera {
|
|||
#if defined(THREAD_SAFE_CANTERA)
|
||||
static boost::mutex transport_mutex ;
|
||||
#endif
|
||||
bool m_verbose;
|
||||
|
||||
// The constructor is private; use static method factory() to
|
||||
// get a pointer to a factory instance
|
||||
TransportFactory();
|
||||
|
||||
/// Read in transport parameters from a database
|
||||
//void readTransportDatabase(ostream& logfile,
|
||||
// XML_Node* db,
|
||||
// const vector<string>& names,
|
||||
// TransportParams& tr);
|
||||
|
||||
void getTransportData(const XML_Node* db,
|
||||
XML_Node& log, const std::vector<std::string>& names,
|
||||
TransportParams& tr);
|
||||
|
|
@ -167,18 +162,6 @@ namespace Cantera {
|
|||
thermo_t* thermo, int mode, int log_level,
|
||||
TransportParams& tr);
|
||||
|
||||
/// construct a new power-law transport manager
|
||||
//Transport* newPowerTransport(const string& transport_database,
|
||||
// phase_t* mix);
|
||||
|
||||
/// construct a new multicomponent transport manager
|
||||
// Transport* newMultiTransport(const string& fname,
|
||||
// thermo_t* thermo, int mode = 0, int log_level = 0);
|
||||
|
||||
/// construct a new mixture-averaged transport server
|
||||
//Transport* newMixTransport(const string& fname,
|
||||
// thermo_t* thermo, int mode = 0, int log_level = 0);
|
||||
|
||||
|
||||
/// Second-order correction to the binary diffusion coefficients
|
||||
void getBinDiffCorrection(doublereal t,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue