[1D] Eliminate sprintf-style string formatting

This commit is contained in:
Ray Speth 2015-09-07 00:57:14 -04:00
parent 59b14724ed
commit 1411419b0f
8 changed files with 55 additions and 116 deletions

View file

@ -16,8 +16,6 @@
#include "cantera/kinetics/InterfaceKinetics.h"
#include "StFlow.h"
#include <cstdio>
namespace Cantera
{
@ -129,18 +127,14 @@ public:
}
virtual void showSolution(const doublereal* x) {
char buf[80];
sprintf(buf, " Mass Flux: %10.4g kg/m^2/s \n", m_mdot);
writelog(buf);
sprintf(buf, " Temperature: %10.4g K \n", m_temp);
writelog(buf);
writelog(" Mass Flux: {:10.4g} kg/m^2/s \n", m_mdot);
writelog(" Temperature: {:10.4g} K \n", m_temp);
if (m_flow) {
writelog(" Mass Fractions: \n");
for (size_t k = 0; k < m_flow->phase().nSpecies(); k++) {
if (m_yin[k] != 0.0) {
sprintf(buf, " %16s %10.4g \n",
m_flow->phase().speciesName(k).c_str(), m_yin[k]);
writelog(buf);
writelog(" {:>16s} {:10.4g} \n",
m_flow->phase().speciesName(k), m_yin[k]);
}
}
}
@ -329,10 +323,7 @@ public:
}
virtual void showSolution(const doublereal* x) {
char buf[80];
sprintf(buf, " Temperature: %10.4g K \n", m_temp);
writelog(buf);
writelog("\n");
writelog(" Temperature: {:10.4g} K \n\n", m_temp);
}
};
@ -380,14 +371,10 @@ public:
}
virtual void showSolution(const doublereal* x) {
char buf[80];
sprintf(buf, " Temperature: %10.4g K \n", x[0]);
writelog(buf);
writelog(" Temperature: {:10.4g} K \n", x[0]);
writelog(" Coverages: \n");
for (size_t k = 0; k < m_nsp; k++) {
sprintf(buf, " %20s %10.4g \n", m_sphase->speciesName(k).c_str(),
x[k+1]);
writelog(buf);
writelog(" {:>20s} {:10.4g} \n", m_sphase->speciesName(k), x[k+1]);
}
writelog("\n");
}

View file

@ -84,9 +84,6 @@ protected:
size_t m_n;
doublereal m_elapsed;
private:
char m_buf[100];
};
}

View file

@ -27,7 +27,7 @@ void setLogger(Logger* logwriter)
}
}
void writelog(const std::string& msg)
void writelog_direct(const std::string& msg)
{
app()->writelog(msg);
}
@ -42,7 +42,7 @@ void writeline(char repeat, size_t count, bool endl_after, bool endl_before)
if (endl_before) {
writelogendl();
}
writelog(std::string(count, repeat));
writelog_direct(std::string(count, repeat));
if (endl_after) {
writelogendl();
}

View file

@ -6,8 +6,6 @@
#include "cantera/oneD/MultiJac.h"
#include "cantera/base/ctml.h"
#include <cstdio>
using namespace std;
namespace Cantera
@ -159,44 +157,35 @@ void Domain1D::showSolution(const doublereal* x)
{
size_t nn = m_nv/5;
size_t i, j, n;
char buf[100];
doublereal v;
for (i = 0; i < nn; i++) {
writeline('-', 79, false, true);
sprintf(buf, "\n z ");
writelog(buf);
writelog("\n z ");
for (n = 0; n < 5; n++) {
sprintf(buf, " %10s ",componentName(i*5 + n).c_str());
writelog(buf);
writelog(" {:>10s} ", componentName(i*5 + n));
}
writeline('-', 79, false, true);
for (j = 0; j < m_points; j++) {
sprintf(buf, "\n %10.4g ",m_z[j]);
writelog(buf);
writelog("\n {:10.4g} ", m_z[j]);
for (n = 0; n < 5; n++) {
v = value(x, i*5+n, j);
sprintf(buf, " %10.4g ",v);
writelog(buf);
writelog(" {:10.4g} ", v);
}
}
writelog("\n");
}
size_t nrem = m_nv - 5*nn;
writeline('-', 79, false, true);
sprintf(buf, "\n z ");
writelog(buf);
writelog("\n z ");
for (n = 0; n < nrem; n++) {
sprintf(buf, " %10s ", componentName(nn*5 + n).c_str());
writelog(buf);
writelog(" {:>10s} ", componentName(nn*5 + n));
}
writeline('-', 79, false, true);
for (j = 0; j < m_points; j++) {
sprintf(buf, "\n %10.4g ",m_z[j]);
writelog(buf);
writelog("\n {:10.4g} ", m_z[j]);
for (n = 0; n < nrem; n++) {
v = value(x, nn*5+n, j);
sprintf(buf, " %10.4g ", v);
writelog(buf);
writelog(" {:10.4g} ", v);
}
}
writelog("\n");

View file

@ -9,7 +9,6 @@
#include "cantera/oneD/MultiNewton.h"
#include "cantera/base/utilities.h"
#include <cstdio>
#include <ctime>
using namespace std;
@ -39,7 +38,6 @@ public:
doublereal bound_step(const doublereal* x, const doublereal* step,
Domain1D& r, int loglevel)
{
char buf[100];
size_t np = r.nPoints();
size_t nv = r.nComponents();
Indx index(nv, np);
@ -54,11 +52,9 @@ doublereal bound_step(const doublereal* x, const doublereal* step,
for (j = 0; j < np; j++) {
val = x[index(m,j)];
if (loglevel > 0 && (val > above + 1.0e-12 || val < below - 1.0e-12)) {
sprintf(buf, "domain %s: %20s(%s) = %10.3e (%10.3e, %10.3e)\n",
int2str(r.domainIndex()).c_str(),
r.componentName(m).c_str(), int2str(j).c_str(),
val, below, above);
writelog(string("\nERROR: solution out of bounds.\n")+buf);
writelog("\nERROR: solution out of bounds.\n");
writelog("domain {:d}: {:>20s}({:d}) = {:10.3e} ({:10.3e}, {:10.3e})\n",
r.domainIndex(), r.componentName(m), j, val, below, above);
}
newval = val + step[index(m,j)];
@ -73,16 +69,13 @@ doublereal bound_step(const doublereal* x, const doublereal* step,
if (loglevel > 1 && (newval > above || newval < below)) {
if (!wroteTitle) {
writelog("\nNewton step takes solution out of bounds.\n\n");
sprintf(buf," %12s %12s %4s %10s %10s %10s %10s\n",
"domain","component","pt","value","step","min","max");
writelog(" {:>12s} {:>12s} {:>4s} {:>10s} {:>10s} {:>10s} {:>10s}\n",
"domain","component","pt","value","step","min","max");
wroteTitle = true;
writelog(buf);
}
sprintf(buf, " %4s %12s %4s %10.3e %10.3e %10.3e %10.3e\n",
int2str(r.domainIndex()).c_str(),
r.componentName(m).c_str(), int2str(j).c_str(),
val, step[index(m,j)], below, above);
writelog(buf);
writelog(" {:4d} {:>12s} {:4d} {:10.3e} {:10.3e} {:10.3e} {:10.3e}\n",
r.domainIndex(), r.componentName(m), j,
val, step[index(m,j)], below, above);
}
}
}
@ -235,10 +228,9 @@ int MultiNewton::dampStep(const doublereal* x0, const doublereal* step0,
writelog("\n\nDamped Newton iteration:\n");
writeline('-', 65, false);
sprintf(m_buf,"\n%s %9s %9s %9s %9s %9s %5s %5s\n",
writelog("\n{} {:>9s} {:>9s} {:>9s} {:>9s} {:>9s} {:>5s} {:>5s}\n",
"m","F_damp","F_bound","log10(ss)",
"log10(s0)","log10(s1)","N_jac","Age");
writelog(m_buf);
writeline('-', 65);
}
@ -283,12 +275,10 @@ int MultiNewton::dampStep(const doublereal* x0, const doublereal* step0,
// write log information
if (loglevel > 0) {
doublereal ss = r.ssnorm(x1,step1);
sprintf(m_buf,"\n%s %9.5f %9.5f %9.5f %9.5f %9.5f %4d %d/%d",
int2str(m).c_str(), damp, fbound, log10(ss+SmallNumber),
log10(s0+SmallNumber),
log10(s1+SmallNumber),
jac.nEvals(), jac.age(), m_maxAge);
writelog(m_buf);
writelog("\n{:d} {:9.5f} {:9.5f} {:9.5f} {:9.5f} {:9.5f} {:4d} {:d}/{:d}",
m, damp, fbound, log10(ss+SmallNumber),
log10(s0+SmallNumber), log10(s1+SmallNumber),
jac.nEvals(), jac.age(), m_maxAge);
}
// if the norm of s1 is less than the norm of s0, then
@ -355,16 +345,13 @@ int MultiNewton::solve(doublereal* x0, doublereal* x1,
m = dampStep(&m_x[0], &m_stp[0], x1, &m_stp1[0], s1, r, jac, loglevel-1, frst);
if (loglevel == 1 && m >= 0) {
if (frst) {
sprintf(m_buf,"\n\n %10s %10s %5s ",
"log10(ss)","log10(s1)","N_jac");
writelog(m_buf);
sprintf(m_buf,"\n ------------------------------------");
writelog(m_buf);
writelog("\n\n {:>10s} {:>10s} {:>5s}",
"log10(ss)","log10(s1)","N_jac");
writelog("\n ------------------------------------");
}
doublereal ss = r.ssnorm(&m_x[0], &m_stp[0]);
sprintf(m_buf,"\n %10.4f %10.4f %d ",
log10(ss),log10(s1),jac.nEvals());
writelog(m_buf);
writelog("\n {:10.4f} {:10.4f} {:d}",
log10(ss),log10(s1),jac.nEvals());
}
frst = false;

View file

@ -94,20 +94,17 @@ MultiNewton& OneDim::newton()
void OneDim::writeStats(int printTime)
{
saveStats();
char buf[100];
sprintf(buf,"\nStatistics:\n\n Grid Functions Time Jacobians Time \n");
writelog(buf);
writelog("\nStatistics:\n\n Grid Functions Time Jacobians Time \n");
size_t n = m_gridpts.size();
for (size_t i = 0; i < n; i++) {
if (printTime) {
sprintf(buf,"%5s %5i %9.4f %5i %9.4f \n",
int2str(m_gridpts[i]).c_str(), m_funcEvals[i], m_funcElapsed[i],
m_jacEvals[i], m_jacElapsed[i]);
writelog("{:5d} {:5d} {:9.4f} {:5d} {:9.4f}\n",
m_gridpts[i], m_funcEvals[i], m_funcElapsed[i],
m_jacEvals[i], m_jacElapsed[i]);
} else {
sprintf(buf,"%5s %5i NA %5i NA \n",
int2str(m_gridpts[i]).c_str(), m_funcEvals[i], m_jacEvals[i]);
writelog("{:5d} {:5d} NA {:5d} NA\n",
m_gridpts[i], m_funcEvals[i], m_jacEvals[i]);
}
writelog(buf);
}
}
@ -324,12 +321,10 @@ doublereal OneDim::timeStep(int nsteps, doublereal dt, doublereal* x,
debuglog("===============================\n", loglevel);
int n = 0;
char str[80];
while (n < nsteps) {
if (loglevel > 0) {
doublereal ss = ssnorm(x, r);
sprintf(str, " %4d %10.4g %10.4g" , n,dt,log10(ss));
writelog(str);
writelog(" {:>4d} {:10.4g} {:10.4g}", n, dt, log10(ss));
}
// set up for time stepping with stepsize dt

View file

@ -254,7 +254,6 @@ void Sim1D::solve(int loglevel, bool refine_grid)
ok = true;
soln_number++;
} else {
char buf[100];
debuglog(" failure. \n", loglevel);
if (loglevel > 6) {
save("debug_sim1d.xml", "debug",
@ -276,9 +275,8 @@ void Sim1D::solve(int loglevel, bool refine_grid)
}
if (loglevel == 1) {
sprintf(buf, " %10.4g %10.4g \n", dt,
log10(ssnorm(DATA_PTR(m_x), DATA_PTR(m_xnew))));
writelog(buf);
writelog(" {:10.4g} {:10.4g}\n", dt,
log10(ssnorm(DATA_PTR(m_x), DATA_PTR(m_xnew))));
}
istep++;
if (istep >= m_steps.size()) {

View file

@ -8,8 +8,6 @@
#include "cantera/transport/TransportBase.h"
#include "cantera/numerics/funcs.h"
#include <cstdio>
using namespace std;
namespace Cantera
@ -486,58 +484,46 @@ void StFlow::showSolution(const doublereal* x)
{
size_t nn = m_nv/5;
size_t i, j, n;
char buf[100];
// The mean molecular weight is needed to convert
updateThermo(x, 0, m_points-1);
sprintf(buf, " Pressure: %10.4g Pa \n", m_press);
writelog(buf);
writelog(" Pressure: {:10.4g} Pa\n", m_press);
for (i = 0; i < nn; i++) {
writeline('-', 79, false, true);
sprintf(buf, "\n z ");
writelog(buf);
writelog("\n z ");
for (n = 0; n < 5; n++) {
sprintf(buf, " %10s ",componentName(i*5 + n).c_str());
writelog(buf);
writelog(" {:>10s} ", componentName(i*5 + n));
}
writeline('-', 79, false, true);
for (j = 0; j < m_points; j++) {
sprintf(buf, "\n %10.4g ",m_z[j]);
writelog(buf);
writelog("\n {:10.4g} ", m_z[j]);
for (n = 0; n < 5; n++) {
sprintf(buf, " %10.4g ",component(x, i*5+n,j));
writelog(buf);
writelog(" {:10.4g} ", component(x, i*5+n,j));
}
}
writelog("\n");
}
size_t nrem = m_nv - 5*nn;
writeline('-', 79, false, true);
sprintf(buf, "\n z ");
writelog(buf);
writelog("\n z ");
for (n = 0; n < nrem; n++) {
sprintf(buf, " %10s ", componentName(nn*5 + n).c_str());
writelog(buf);
writelog(" {:>10s} ", componentName(nn*5 + n));
}
writeline('-', 79, false, true);
for (j = 0; j < m_points; j++) {
sprintf(buf, "\n %10.4g ",m_z[j]);
writelog(buf);
writelog("\n {:10.4g} ", m_z[j]);
for (n = 0; n < nrem; n++) {
sprintf(buf, " %10.4g ",component(x, nn*5+n,j));
writelog(buf);
writelog(" {:10.4g} ", component(x, nn*5+n,j));
}
}
writelog("\n");
if (m_do_radiation) {
writeline('-', 79, false, true);
sprintf(buf, "\n z radiative heat loss");
writelog(buf);
writelog("\n z radiative heat loss");
writeline('-', 79, false, true);
for (j = 0; j < m_points; j++) {
sprintf(buf, "\n %10.4g %10.4g", m_z[j], m_qdotRadiation[j]);
writelog(buf);
writelog("\n {:10.4g} {:10.4g}", m_z[j], m_qdotRadiation[j]);
}
writelog("\n");
}