annotate liboctave/DASSL.h @ 1841:fc5667a20dd2

[project @ 1996-02-03 11:44:02 by jwe] Initial revision
author jwe
date Sat, 03 Feb 1996 11:44:02 +0000
parents
children 6822f1ccec47
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1841
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
1 // DASSL.h -*- C++ -*-
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
2 /*
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
3
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
4 Copyright (C) 1996 John W. Eaton
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
5
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
6 This file is part of Octave.
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
7
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
8 Octave is free software; you can redistribute it and/or modify it
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
11 later version.
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
12
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
13 Octave is distributed in the hope that it will be useful, but WITHOUT
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
16 for more details.
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
17
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
19 along with Octave; see the file COPYING. If not, write to the Free
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
20 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
21
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
22 */
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
23
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
24 #if !defined (octave_DASSL_h)
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
25 #define octave_DASSL_h 1
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
26
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
27 #if defined (__GNUG__)
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
28 #pragma interface
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
29 #endif
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
30
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
31 #include "DAE.h"
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
32
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
33 class DASSL_options
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
34 {
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
35 public:
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
36
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
37 DASSL_options (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
38 DASSL_options (const DASSL_options& opt);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
39
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
40 DASSL_options& operator = (const DASSL_options& opt);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
41
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
42 ~DASSL_options (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
43
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
44 void init (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
45 void copy (const DASSL_options& opt);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
46
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
47 void set_default_options (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
48
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
49 void set_absolute_tolerance (double);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
50 void set_initial_step_size (double);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
51 void set_maximum_step_size (double);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
52 void set_minimum_step_size (double);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
53 void set_relative_tolerance (double);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
54
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
55 double absolute_tolerance (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
56 double initial_step_size (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
57 double maximum_step_size (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
58 double minimum_step_size (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
59 double relative_tolerance (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
60
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
61 private:
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
62
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
63 double x_absolute_tolerance;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
64 double x_initial_step_size;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
65 double x_maximum_step_size;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
66 double x_minimum_step_size;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
67 double x_relative_tolerance;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
68 };
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
69
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
70 class DASSL : public DAE, public DASSL_options
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
71 {
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
72 public:
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
73
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
74 DASSL (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
75
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
76 DASSL (const ColumnVector& x, double time, DAEFunc& f);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
77
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
78 DASSL (const ColumnVector& x, const ColumnVector& xdot,
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
79 double time, DAEFunc& f);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
80
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
81 ~DASSL (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
82
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
83 void force_restart (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
84
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
85 void set_stop_time (double t);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
86 void clear_stop_time (void);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
87
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
88 ColumnVector do_integrate (double t);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
89
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
90 Matrix do_integrate (const ColumnVector& tout);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
91
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
92 Matrix integrate (const ColumnVector& tout, Matrix& xdot_out);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
93
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
94 Matrix integrate (const ColumnVector& tout, Matrix& xdot_out,
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
95 const ColumnVector& tcrit);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
96
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
97 private:
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
98
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
99 double stop_time;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
100 int stop_time_set;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
101
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
102 int n;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
103 int integration_error;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
104 int restart;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
105 int liw;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
106 int lrw;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
107 int idid;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
108 int *info;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
109 int *iwork;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
110 double *rwork;
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
111
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
112 friend int ddassl_j (double *time, double *state, double *deriv,
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
113 double *pd, double *cj, double *rpar, int *ipar);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
114
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
115 friend int ddassl_f (double *time, double *state, double *deriv,
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
116 double *delta, int *ires, double *rpar, int *ipar);
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
117
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
118 };
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
119
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
120 #endif
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
121
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
122 /*
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
123 ;;; Local Variables: ***
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
124 ;;; mode: C++ ***
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
125 ;;; page-delimiter: "^/\\*" ***
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
126 ;;; End: ***
fc5667a20dd2 [project @ 1996-02-03 11:44:02 by jwe]
jwe
parents:
diff changeset
127 */