00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined (octave_DASRT_h)
00024 #define octave_DASRT_h 1
00025
00026 #include <cfloat>
00027
00028 #include "DASRT-opts.h"
00029 #include "lo-math.h"
00030
00031 class
00032 DASRT_result
00033 {
00034 public:
00035
00036 DASRT_result (void) { }
00037
00038 DASRT_result (const Matrix& xx, const Matrix& xxdot, const ColumnVector& tt)
00039 : x (xx), xdot (xxdot), t (tt) { }
00040
00041 DASRT_result (const DASRT_result& r)
00042 : x (r.x), xdot (r.xdot), t (r.t) { }
00043
00044 DASRT_result& operator = (const DASRT_result& r)
00045 {
00046 if (this != &r)
00047 {
00048 x = r.x;
00049 xdot = r.xdot;
00050 t = r.t;
00051 }
00052 return *this;
00053 }
00054
00055 ~DASRT_result (void) { }
00056
00057 Matrix state (void) const { return x; }
00058 Matrix deriv (void) const { return xdot; }
00059 ColumnVector times (void) const { return t; }
00060
00061 private:
00062
00063 Matrix x;
00064 Matrix xdot;
00065 ColumnVector t;
00066 };
00067
00068 class
00069 OCTAVE_API
00070 DASRT : public DAERT, public DASRT_options
00071 {
00072 public:
00073
00074 DASRT (void) : DAERT (), DASRT_options (), initialized (false) { }
00075
00076 DASRT (const ColumnVector& s, double tm, DAERTFunc& f)
00077 : DAERT (s, tm, f), DASRT_options (), initialized (false) { }
00078
00079 DASRT (const ColumnVector& s, const ColumnVector& deriv,
00080 double tm, DAERTFunc& f)
00081 : DAERT (s, deriv, tm, f), DASRT_options (), initialized (false) { }
00082
00083 ~DASRT (void) { }
00084
00085 DASRT_result integrate (const ColumnVector& tout);
00086
00087 DASRT_result integrate (const ColumnVector& tout,
00088 const ColumnVector& tcrit);
00089
00090 std::string error_message (void) const;
00091
00092 private:
00093
00094 bool initialized;
00095
00096 octave_idx_type liw;
00097 octave_idx_type lrw;
00098
00099 octave_idx_type ng;
00100
00101 Array<octave_idx_type> info;
00102 Array<octave_idx_type> iwork;
00103 Array<octave_idx_type> jroot;
00104
00105 Array<double> rwork;
00106
00107 Array<double> abs_tol;
00108 Array<double> rel_tol;
00109
00110 double *px;
00111 double *pxdot;
00112 double *pabs_tol;
00113 double *prel_tol;
00114 octave_idx_type *pinfo;
00115 octave_idx_type *piwork;
00116 double *prwork;
00117 octave_idx_type *pjroot;
00118
00119 void integrate (double t);
00120 };
00121
00122 #endif
00123
00124
00125
00126
00127
00128