From 11b665b00aeb9521173aa02ec942abc994421c94 Mon Sep 17 00:00:00 2001 From: Ray Speth Date: Sun, 28 Feb 2016 11:15:48 -0500 Subject: [PATCH] [1D] Keep track of number of time steps taken before each steady-state solve --- include/cantera/oneD/OneDim.h | 8 ++++++++ src/oneD/OneDim.cpp | 19 ++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/include/cantera/oneD/OneDim.h b/include/cantera/oneD/OneDim.h index 016fb4038..9ea717fe8 100644 --- a/include/cantera/oneD/OneDim.h +++ b/include/cantera/oneD/OneDim.h @@ -243,6 +243,7 @@ public: * - CPU time spent evaluating Jacobians * - number of non-Jacobian function evaluations * - CPU time spent evaluating functions + * - number of time steps */ void saveStats(); @@ -297,6 +298,13 @@ private: vector_fp m_jacElapsed; vector_int m_funcEvals; vector_fp m_funcElapsed; + + //! Number of time steps taken in the current call to solve() + int m_nsteps; + + //! Number of time steps taken in each call to solve() (e.g. for each + //! successive grid refinement) + vector_int m_timeSteps; }; } diff --git a/src/oneD/OneDim.cpp b/src/oneD/OneDim.cpp index 58dd015a9..90ffd646c 100644 --- a/src/oneD/OneDim.cpp +++ b/src/oneD/OneDim.cpp @@ -18,7 +18,7 @@ OneDim::OneDim() m_bw(0), m_size(0), m_init(false), m_pts(0), m_solve_time(0.0), m_ss_jac_age(10), m_ts_jac_age(20), - m_interrupt(0), m_nevals(0), m_evaltime(0.0) + m_interrupt(0), m_nevals(0), m_evaltime(0.0), m_nsteps(0) { m_newt.reset(new MultiNewton(1)); } @@ -29,7 +29,7 @@ OneDim::OneDim(vector domains) : m_bw(0), m_size(0), m_init(false), m_solve_time(0.0), m_ss_jac_age(10), m_ts_jac_age(20), - m_interrupt(0), m_nevals(0), m_evaltime(0.0) + m_interrupt(0), m_nevals(0), m_evaltime(0.0), m_nsteps(0) { // create a Newton iterator, and add each domain. m_newt.reset(new MultiNewton(1)); @@ -102,16 +102,16 @@ MultiNewton& OneDim::newton() void OneDim::writeStats(int printTime) { saveStats(); - writelog("\nStatistics:\n\n Grid Functions Time Jacobians Time \n"); + writelog("\nStatistics:\n\n Grid Timesteps Functions Time Jacobians Time\n"); size_t n = m_gridpts.size(); for (size_t i = 0; i < n; i++) { if (printTime) { - writelog("{:5d} {:5d} {:9.4f} {:5d} {:9.4f}\n", - m_gridpts[i], m_funcEvals[i], m_funcElapsed[i], + writelog("{:5d} {:5d} {:6d} {:9.4f} {:5d} {:9.4f}\n", + m_gridpts[i], m_timeSteps[i], m_funcEvals[i], m_funcElapsed[i], m_jacEvals[i], m_jacElapsed[i]); } else { - writelog("{:5d} {:5d} NA {:5d} NA\n", - m_gridpts[i], m_funcEvals[i], m_jacEvals[i]); + writelog("{:5d} {:5d} {:6d} NA {:5d} NA\n", + m_gridpts[i], m_timeSteps[i], m_funcEvals[i], m_jacEvals[i]); } } } @@ -128,6 +128,8 @@ void OneDim::saveStats() m_nevals = 0; m_funcElapsed.push_back(m_evaltime); m_evaltime = 0.0; + m_timeSteps.push_back(m_nsteps); + m_nsteps = 0; } } } @@ -139,8 +141,10 @@ void OneDim::clearStats() m_jacElapsed.clear(); m_funcEvals.clear(); m_funcElapsed.clear(); + m_timeSteps.clear(); m_nevals = 0; m_evaltime = 0.0; + m_nsteps = 0; } void OneDim::resize() @@ -346,6 +350,7 @@ doublereal OneDim::timeStep(int nsteps, doublereal dt, doublereal* x, // the current solution in x. if (m >= 0) { successiveFailures = 0; + m_nsteps++; n += 1; debuglog("\n", loglevel); copy(r, r + m_size, x);