# HG changeset patch # User jwe # Date 949443024 0 # Node ID d921340627837d7cd09368b7306eb746e2bf2d78 # Parent 81a6b40c07696cac9185de88020a7c3c40e64398 [project @ 2000-02-01 22:06:28 by jwe] diff --git a/liboctave/ChangeLog b/liboctave/ChangeLog --- a/liboctave/ChangeLog +++ b/liboctave/ChangeLog @@ -1,6 +1,10 @@ 2000-02-01 John W. Eaton + * Quad.h: Use do_integrate as name of pure virtual function. + * base-de.h: Use tt instead of t as arg names. + Add method with tcrit arg. + * DAE.h, DAE.cc: Likewise, also xx for x. * DASSL.cc (dassl_fcn_ptr, dassl_jac_ptr): New typedefs. diff --git a/liboctave/LSODE.cc b/liboctave/LSODE.cc --- a/liboctave/LSODE.cc +++ b/liboctave/LSODE.cc @@ -305,34 +305,6 @@ return retval; } -#if 0 -void -LSODE::integrate (int nsteps, double tstep, std::ostream& s) -{ - int time_to_quit = 0; - double tout = t; - - s << t << " " << x << "\n"; - - for (int i = 0; i < nsteps; i++) - { - tout += tstep; - if (stop_time_set && tout > stop_time) - { - tout = stop_time; - time_to_quit = 1; - } - - x = integrate (tout); - - s << t << " " << x << "\n"; - - if (time_to_quit) - return; - } -} -#endif - Matrix LSODE::do_integrate (const ColumnVector& tout) { @@ -362,7 +334,7 @@ } Matrix -LSODE::integrate (const ColumnVector& tout, const ColumnVector& tcrit) +LSODE::do_integrate (const ColumnVector& tout, const ColumnVector& tcrit) { Matrix retval; int n_out = tout.capacity (); diff --git a/liboctave/LSODE.h b/liboctave/LSODE.h --- a/liboctave/LSODE.h +++ b/liboctave/LSODE.h @@ -149,14 +149,7 @@ Matrix do_integrate (const ColumnVector& tout); -#if 0 - void integrate (int nsteps, double tstep, std::ostream& s); -#endif - - Matrix integrate (const ColumnVector& tout) - { return do_integrate (tout); } - - Matrix integrate (const ColumnVector& tout, const ColumnVector& tcrit); + Matrix do_integrate (const ColumnVector& tout, const ColumnVector& tcrit); private: diff --git a/liboctave/Quad.cc b/liboctave/Quad.cc --- a/liboctave/Quad.cc +++ b/liboctave/Quad.cc @@ -82,7 +82,7 @@ } double -DefQuad::integrate (int& ier, int& neval, double& abserr) +DefQuad::do_integrate (int& ier, int& neval, double& abserr) { int npts = singularities.capacity () + 2; double *points = singularities.fortran_vec (); @@ -114,7 +114,7 @@ } double -IndefQuad::integrate (int& ier, int& neval, double& abserr) +IndefQuad::do_integrate (int& ier, int& neval, double& abserr) { double result = 0.0; diff --git a/liboctave/Quad.h b/liboctave/Quad.h --- a/liboctave/Quad.h +++ b/liboctave/Quad.h @@ -116,23 +116,28 @@ { int ier, neval; double abserr; - return integrate (ier, neval, abserr); + return do_integrate (ier, neval, abserr); } virtual double integrate (int& ier) { int neval; double abserr; - return integrate (ier, neval, abserr); + return do_integrate (ier, neval, abserr); } virtual double integrate (int& ier, int& neval) { double abserr; - return integrate (ier, neval, abserr); + return do_integrate (ier, neval, abserr); } - virtual double integrate (int& ier, int& neval, double& abserr) = 0; + virtual double integrate (int& ier, int& neval, double& abserr) + { + return do_integrate (ier, neval, abserr); + } + + virtual double do_integrate (int& ier, int& neval, double& abserr) = 0; protected: @@ -176,7 +181,7 @@ ~DefQuad (void) { } - double integrate (int& ier, int& neval, double& abserr); + double do_integrate (int& ier, int& neval, double& abserr); private: @@ -208,7 +213,7 @@ ~IndefQuad (void) { } - double integrate (int& ier, int& neval, double& abserr); + double do_integrate (int& ier, int& neval, double& abserr); private: diff --git a/liboctave/base-de.h b/liboctave/base-de.h --- a/liboctave/base-de.h +++ b/liboctave/base-de.h @@ -60,6 +60,9 @@ // output time. virtual Matrix do_integrate (const ColumnVector& tt) = 0; + virtual Matrix do_integrate (const ColumnVector& tt, + const ColumnVector& ttcrit) = 0; + // There must also be a way for us to force the integration to // restart. virtual void force_restart (void) = 0; @@ -86,12 +89,28 @@ // Set new x0, t0 and integrate to return output at all points // specified by t. virtual Matrix integrate (const ColumnVector& x0, double t0, - const ColumnVector tt) + const ColumnVector& tt) { initialize (x0, t0); return do_integrate (tt); } + // Integrate from current point and return output at all points + // specified by t. + virtual Matrix integrate (const ColumnVector& tt, + const ColumnVector& ttcrit) + { return do_integrate (tt, ttcrit); } + + // Set new x0, t0 and integrate to return output at all points + // specified by t. + virtual Matrix integrate (const ColumnVector& x0, double t0, + const ColumnVector& tt, + const ColumnVector& ttcrit) + { + initialize (x0, t0); + return do_integrate (tt, ttcrit); + } + virtual void initialize (const ColumnVector& x0, double t0) { x = x0;