made some log message writing optional

This commit is contained in:
Dave Goodwin 2007-07-27 03:37:48 +00:00
parent 077cfaa54f
commit a5ade5036f
3 changed files with 123 additions and 115 deletions

View file

@ -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);

View file

@ -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");
}
}
}

View file

@ -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,