Mercurial > hg > octave-lyh
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