diff liboctave/ODE.h @ 1842:0574a1f3a273

[project @ 1996-02-03 11:44:02 by jwe]
author jwe
date Sat, 03 Feb 1996 11:44:02 +0000
parents a6994c934a50
children 620a65533630
line wrap: on
line diff
--- a/liboctave/ODE.h	Sat Feb 03 11:44:02 1996 +0000
+++ b/liboctave/ODE.h	Sat Feb 03 11:44:02 1996 +0000
@@ -1,7 +1,7 @@
 // ODE.h                                                -*- C++ -*-
 /*
 
-Copyright (C) 1992, 1993, 1994, 1995 John W. Eaton
+Copyright (C) 1996 John W. Eaton
 
 This file is part of Octave.
 
@@ -24,112 +24,33 @@
 #if !defined (octave_ODE_h)
 #define octave_ODE_h 1
 
-#if defined (__GNUG__)
-#pragma interface
-#endif
-
-class ostream;
-
-#include "dMatrix.h"
-#include "dColVector.h"
 #include "ODEFunc.h"
-
-class ODE_options
-{
- public:
-
-  ODE_options (void);
-  ODE_options (const ODE_options& opt);
-
-  ODE_options& operator = (const ODE_options& opt);
-
-  ~ODE_options (void);
-
-  void init (void);
-  void copy (const ODE_options& opt);
+#include "base-de.h"
 
-  void set_default_options (void);
-
-  void set_absolute_tolerance (double);
-  void set_initial_step_size (double);
-  void set_maximum_step_size (double);
-  void set_minimum_step_size (double);
-  void set_relative_tolerance (double);
-
-  double absolute_tolerance (void);
-  double initial_step_size (void);
-  double maximum_step_size (void);
-  double minimum_step_size (void);
-  double relative_tolerance (void);
-
- private:
-
-  double x_absolute_tolerance;
-  double x_initial_step_size;
-  double x_maximum_step_size;
-  double x_minimum_step_size;
-  double x_relative_tolerance;
-};
-
-class ODE : public ODEFunc, public ODE_options
+class ODE : public base_diff_eqn, public ODEFunc
 {
 public:
 
-  ODE (void);
-
-  ODE (int n);
-  
-  ODE (const ColumnVector& state, double time, const ODEFunc& f);
-
-  virtual ~ODE (void);
-
-  virtual int size (void) const;
-  virtual ColumnVector state (void) const;
-  virtual double time (void) const;
+  ODE (void)
+    : base_diff_eqn (), ODEFunc () { }
 
-  virtual void force_restart (void);
-  virtual void initialize (const ColumnVector& x, double t);
-  virtual void set_stop_time (double t);
-  virtual void clear_stop_time (void);
-
-  virtual ColumnVector integrate (double t);
+  ODE (const ColumnVector& state, double time, const ODEFunc& f)
+    : base_diff_eqn (state, time), ODEFunc (f) { }
 
-  void integrate (int nsteps, double tstep, ostream& s);
-
-  Matrix integrate (const ColumnVector& tout);
-  Matrix integrate (const ColumnVector& tout, const ColumnVector& tcrit);
-
-protected:
+  ODE (const ODE& a)
+    : base_diff_eqn (a), ODEFunc (a) { }
 
-  // Some of this is probably too closely related to LSODE, but hey,
-  // this is just a first attempt...
-
-  int n;
-  double t;
-  ColumnVector x;
-
-  double stop_time;
-  int stop_time_set;
-
-private:
+  ODE& operator = (const ODE& a)
+    {
+      if (this != &a)
+	{
+	  base_diff_eqn::operator = (a);
+	  ODEFunc::operator = (a);
+	}
+      return *this;
+    }
 
-  int integration_error;
-  int restart;
-  int method_flag;
-  int *iwork;
-  double *rwork;
-  int istate;
-  int itol;
-  int itask;
-  int iopt;
-  int liw;
-  int lrw;
-
-  friend int lsode_f (int *neq, double *t, double *y, double *ydot);
-
-  friend int lsode_j (int *neq, double *t, double *y, int *ml, int *mu,
-		      double *pd, int *nrowpd);
-
+  ~ODE (void) { }
 };
 
 #endif