diff liboctave/LSODE.h @ 3998:f6df65db67f9

[project @ 2002-07-24 18:10:39 by jwe]
author jwe
date Wed, 24 Jul 2002 18:10:40 +0000
parents d4091aff6468
children 9678c5526190
line wrap: on
line diff
--- a/liboctave/LSODE.h
+++ b/liboctave/LSODE.h
@@ -32,113 +32,7 @@
 
 #include "ODE.h"
 
-class
-LSODE_options
-{
-public:
-
-  LSODE_options (void) { init (); }
-
-  LSODE_options (const LSODE_options& opt) { copy (opt); }
-
-  LSODE_options& operator = (const LSODE_options& opt)
-    {
-      if (this != &opt)
-	copy (opt);
-
-      return *this;
-    }
-
-  ~LSODE_options (void) { }
-
-  void init (void)
-    {
-      double sqrt_eps = ::sqrt (DBL_EPSILON);
-      x_absolute_tolerance.resize (1);
-      x_absolute_tolerance(0) = sqrt_eps;
-      x_initial_step_size = -1.0;
-      x_integration_method = "stiff";
-      x_maximum_step_size = -1.0;
-      x_minimum_step_size = 0.0;
-      x_relative_tolerance = sqrt_eps;
-
-      // This is consistent with earlier versions of Octave, and is
-      // much larger than the default of 500 specified in the LSODE
-      // sources.
-      x_step_limit = 100000;
-    }
-
-  void copy (const LSODE_options& opt)
-    {
-      x_absolute_tolerance = opt.x_absolute_tolerance;
-      x_initial_step_size = opt.x_initial_step_size;
-      x_integration_method = opt.x_integration_method;
-      x_maximum_step_size = opt.x_maximum_step_size;
-      x_minimum_step_size = opt.x_minimum_step_size;
-      x_relative_tolerance = opt.x_relative_tolerance;
-      x_step_limit = opt.x_step_limit;
-    }
-
-  void set_default_options (void) { init (); }
-
-  void set_absolute_tolerance (double val)
-    {
-      x_absolute_tolerance.resize (1);
-      x_absolute_tolerance(0) = (val > 0.0) ? val : ::sqrt (DBL_EPSILON);
-    }
-
-  void set_absolute_tolerance (const Array<double>& val)
-    { x_absolute_tolerance = val; }
-
-  void set_initial_step_size (double val)
-    { x_initial_step_size = (val >= 0.0) ? val : -1.0; }
-
-  void set_integration_method (const std::string& val);
-
-  void set_maximum_step_size (double val)
-    { x_maximum_step_size = (val >= 0.0) ? val : -1.0; }
-
-  void set_minimum_step_size (double val)
-    { x_minimum_step_size = (val >= 0.0) ? val : 0.0; }
-
-  void set_relative_tolerance (double val)
-    { x_relative_tolerance = (val > 0.0) ? val : ::sqrt (DBL_EPSILON); }
-
-  void set_step_limit (int val)
-    { x_step_limit = val; }
-
-  Array<double> absolute_tolerance (void) const
-    { return x_absolute_tolerance; }
-
-  double initial_step_size (void) const
-    { return x_initial_step_size; }
-
-  std::string integration_method (void) const
-    { return x_integration_method; }
-
-  double maximum_step_size (void) const
-    { return x_maximum_step_size; }
-
-  double minimum_step_size (void) const
-    { return x_minimum_step_size; }
-
-  double relative_tolerance (void) const
-    {  return x_relative_tolerance; }
-
-  int step_limit (void) const
-    { return x_step_limit; }
-
-private:
-
-  Array<double> x_absolute_tolerance;
-  double x_initial_step_size;
-  std::string x_integration_method;
-  double x_maximum_step_size;
-  double x_minimum_step_size;
-  double x_relative_tolerance;
-
-  int x_step_limit;
-};
+#include "LSODE-opts.h"
 
 class
 LSODE : public ODE, public LSODE_options