00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #if !defined (octave_LSODE_h)
00025 #define octave_LSODE_h 1
00026
00027 #include <cfloat>
00028
00029 #include "LSODE-opts.h"
00030 #include "lo-math.h"
00031
00032 class
00033 OCTAVE_API
00034 LSODE : public ODE, public LSODE_options
00035 {
00036 public:
00037
00038 LSODE (void) : ODE (), LSODE_options (), initialized (false) { }
00039
00040 LSODE (const ColumnVector& s, double tm, const ODEFunc& f)
00041 : ODE (s, tm, f), LSODE_options (), initialized (false) { }
00042
00043 ~LSODE (void) { }
00044
00045 ColumnVector do_integrate (double t);
00046
00047 Matrix do_integrate (const ColumnVector& tout);
00048
00049 Matrix do_integrate (const ColumnVector& tout, const ColumnVector& tcrit);
00050
00051 std::string error_message (void) const;
00052
00053 private:
00054
00055 bool initialized;
00056
00057 octave_idx_type method_flag;
00058 octave_idx_type maxord;
00059 octave_idx_type itask;
00060 octave_idx_type iopt;
00061 octave_idx_type itol;
00062
00063 octave_idx_type liw;
00064 octave_idx_type lrw;
00065
00066 Array<octave_idx_type> iwork;
00067 Array<double> rwork;
00068
00069 double rel_tol;
00070
00071 Array<double> abs_tol;
00072
00073 double *px;
00074 double *pabs_tol;
00075 octave_idx_type *piwork;
00076 double *prwork;
00077 };
00078
00079 #endif
00080
00081
00082
00083
00084
00085