diff --git a/Cantera/src/CVode.cpp b/Cantera/src/CVode.cpp index e15a1d74a..14ec47083 100755 --- a/Cantera/src/CVode.cpp +++ b/Cantera/src/CVode.cpp @@ -100,7 +100,8 @@ namespace Cantera { m_reltol(1.e-9), m_abstols(1.e-15), m_nabs(0), - m_hmax(0.0) + m_hmax(0.0), + m_maxsteps(20000) { m_ropt.resize(OPT_SIZE,0.0); m_iopt = new long[OPT_SIZE]; @@ -152,16 +153,21 @@ namespace Cantera { throw CVodeErr("unknown method"); } - void CVodeInt::setMaxStep(doublereal hmax) { + void CVodeInt::setMaxStepSize(doublereal hmax) { m_hmax = hmax; m_ropt[HMAX] = hmax; } - void CVodeInt::setMinStep(doublereal hmin) { + void CVodeInt::setMinStepSize(doublereal hmin) { m_hmin = hmin; m_ropt[HMIN] = hmin; } + void CVodeInt::setMaxSteps(int nmax) { + m_maxsteps = nmax; + m_iopt[MXSTEP] = m_maxsteps; + } + void CVodeInt::setIterator(IterType t) { if (t == Newton_Iter) m_iter = NEWTON; @@ -186,7 +192,7 @@ namespace Cantera { func.getInitialConditions(m_t0, m_neq, N_VDATA(nv(m_y))); // set options - m_iopt[MXSTEP] = 20000; + m_iopt[MXSTEP] = m_maxsteps; m_iopt[MAXORD] = m_maxord; m_ropt[HMAX] = m_hmax; @@ -235,7 +241,7 @@ namespace Cantera { func.getInitialConditions(m_t0, m_neq, N_VDATA(nv(m_y))); // set options - m_iopt[MXSTEP] = 20000; + m_iopt[MXSTEP] = m_maxsteps; m_iopt[MAXORD] = m_maxord; m_ropt[HMAX] = m_hmax; diff --git a/Cantera/src/CVode.h b/Cantera/src/CVode.h index 9c6f35b31..335f08375 100755 --- a/Cantera/src/CVode.h +++ b/Cantera/src/CVode.h @@ -62,8 +62,9 @@ namespace Cantera { virtual void setMaxOrder(int n) { m_maxord = n; } virtual void setMethod(MethodType t); virtual void setIterator(IterType t); - virtual void setMaxStep(double hmax); - virtual void setMinStep(double hmin); + virtual void setMaxStepSize(double hmax); + virtual void setMinStepSize(double hmin); + virtual void setMaxSteps(int nmax); private: @@ -80,6 +81,7 @@ namespace Cantera { double m_abstols; int m_nabs; double m_hmax, m_hmin; + int m_maxsteps; vector_fp m_ropt; long int* m_iopt; diff --git a/Cantera/src/Integrator.h b/Cantera/src/Integrator.h index 4cbb75ae6..6a0413520 100755 --- a/Cantera/src/Integrator.h +++ b/Cantera/src/Integrator.h @@ -25,6 +25,7 @@ #include "FuncEval.h" #include "ct_defs.h" +#include "global.h" #define DIAG 1 #define DENSE 2 @@ -146,19 +147,22 @@ namespace Cantera { { warn("setInterator"); } /** Set the maximum step size */ - virtual void setMaxStep(double hmax) - { warn("setMaxStep"); } + virtual void setMaxStepSize(double hmax) + { warn("setMaxStepSize"); } /** Set the minimum step size */ - virtual void setMinStep(double hmin) - { warn("setMinStep"); } + virtual void setMinStepSize(double hmin) + { warn("setMinStepSize"); } + + virtual void setMaxSteps(int nmax) + { warn("setMaxStep"); } private: doublereal m_dummy; void warn(string msg) const { - cerr << ">>>> Warning: method " << msg << " of base class " - << "Integrator called. Nothing done." << endl; + writelog(">>>> Warning: method "+msg+" of base class " + +"Integrator called. Nothing done.\n"); } };