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_DASSL_h)
00025 #define octave_DASSL_h 1
00026
00027 #include <cfloat>
00028
00029 #include "DASSL-opts.h"
00030 #include "lo-math.h"
00031
00032 class
00033 OCTAVE_API
00034 DASSL : public DAE, public DASSL_options
00035 {
00036 public:
00037
00038 DASSL (void) : DAE (), DASSL_options (), initialized (false) { }
00039
00040 DASSL (const ColumnVector& s, double tm, DAEFunc& f)
00041 : DAE (s, tm, f), DASSL_options (), initialized (false) { }
00042
00043 DASSL (const ColumnVector& s, const ColumnVector& deriv,
00044 double tm, DAEFunc& f)
00045 : DAE (s, deriv, tm, f), DASSL_options (), initialized (false) { }
00046
00047 ~DASSL (void) { }
00048
00049 ColumnVector do_integrate (double t);
00050
00051 Matrix do_integrate (const ColumnVector& tout);
00052
00053 Matrix do_integrate (const ColumnVector& tout, const ColumnVector& tcrit);
00054
00055 Matrix integrate (const ColumnVector& tout, Matrix& xdot_out);
00056
00057 Matrix integrate (const ColumnVector& tout, Matrix& xdot_out,
00058 const ColumnVector& tcrit);
00059
00060 std::string error_message (void) const;
00061
00062 private:
00063
00064 bool initialized;
00065
00066 octave_idx_type liw;
00067 octave_idx_type lrw;
00068
00069 Array<octave_idx_type> info;
00070 Array<octave_idx_type> iwork;
00071
00072 Array<double> rwork;
00073
00074 Array<double> abs_tol;
00075 Array<double> rel_tol;
00076
00077 double *px;
00078 double *pxdot;
00079 double *pabs_tol;
00080 double *prel_tol;
00081 octave_idx_type *pinfo;
00082 octave_idx_type *piwork;
00083 double *prwork;
00084 };
00085
00086 #endif
00087
00088
00089
00090
00091
00092