annotate liboctave/base-de.h @ 6021:60f9ced8ab53 ss-2-9-9

[project @ 2006-10-02 20:02:20 by jwe]
author jwe
date Mon, 02 Oct 2006 20:02:21 +0000
parents 4c8a2e4e0717
children 93c65f2a5668
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
1 /*
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
2
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 1993
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
4
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
6
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
10 later version.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
11
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
15 for more details.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
16
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
5307
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 5275
diff changeset
19 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 5275
diff changeset
20 02110-1301, USA.
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
21
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
22 */
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
23
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
24 #if !defined (octave_base_de_h)
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
25 #define octave_base_de_h 1
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
26
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
27 #include <string>
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
28
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
29 #include "dColVector.h"
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
30 #include "dMatrix.h"
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
31
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1843
diff changeset
32 class
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1843
diff changeset
33 base_diff_eqn
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
34 {
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
35 public:
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
36
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
37 base_diff_eqn (void)
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
38 : x (), t (0.0), stop_time (0.0), stop_time_set (false),
3997
d4091aff6468 [project @ 2002-07-17 18:00:06 by jwe]
jwe
parents: 3995
diff changeset
39 restart (true), integration_error (false), istate (0) { }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
40
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
41 base_diff_eqn (const ColumnVector& xx, double tt)
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
42 : x (xx), t (tt), stop_time (0.0), stop_time_set (false),
3997
d4091aff6468 [project @ 2002-07-17 18:00:06 by jwe]
jwe
parents: 3995
diff changeset
43 restart (true), integration_error (false), istate (0) { }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
44
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
45 base_diff_eqn (const base_diff_eqn& a)
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
46 : x (a.x), t (a.t), stop_time (0.0), stop_time_set (false),
3997
d4091aff6468 [project @ 2002-07-17 18:00:06 by jwe]
jwe
parents: 3995
diff changeset
47 restart (true), integration_error (false), istate (0) { }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
48
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
49 virtual ~base_diff_eqn (void) { }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
50
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
51 base_diff_eqn& operator = (const base_diff_eqn& a)
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
52 {
1958
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
53 if (this != &a)
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
54 {
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
55 x = a.x;
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
56 t = a.t;
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
57 stop_time = a.stop_time;
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
58 stop_time_set = a.stop_time_set;
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
59 restart = a.restart;
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
60 integration_error = a.integration_error;
3997
d4091aff6468 [project @ 2002-07-17 18:00:06 by jwe]
jwe
parents: 3995
diff changeset
61 istate = a.istate;
1958
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
62 }
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
63
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
64 return *this;
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
65 }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
66
3984
addebffd4961 [project @ 2002-07-11 03:39:33 by jwe]
jwe
parents: 3511
diff changeset
67 void initialize (const ColumnVector& x0, double t0)
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
68 {
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
69 x = x0;
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
70 t = t0;
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
71 integration_error = false;
3997
d4091aff6468 [project @ 2002-07-17 18:00:06 by jwe]
jwe
parents: 3995
diff changeset
72 istate = 0;
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
73 force_restart ();
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
74 }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
75
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 4277
diff changeset
76 octave_idx_type size (void) const { return x.capacity (); }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
77
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
78 ColumnVector state (void) const { return x; }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
79
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
80 double time (void) const { return t; }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
81
4277
5ab4ac522fec [project @ 2003-01-03 23:45:06 by jwe]
jwe
parents: 4049
diff changeset
82 void set_stop_time (double tt)
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
83 {
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
84 stop_time_set = true;
4277
5ab4ac522fec [project @ 2003-01-03 23:45:06 by jwe]
jwe
parents: 4049
diff changeset
85 stop_time = tt;
4049
a35a3c5d4740 [project @ 2002-08-16 08:54:31 by jwe]
jwe
parents: 3997
diff changeset
86 force_restart ();
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
87 }
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
88
4049
a35a3c5d4740 [project @ 2002-08-16 08:54:31 by jwe]
jwe
parents: 3997
diff changeset
89 void clear_stop_time (void)
a35a3c5d4740 [project @ 2002-08-16 08:54:31 by jwe]
jwe
parents: 3997
diff changeset
90 {
a35a3c5d4740 [project @ 2002-08-16 08:54:31 by jwe]
jwe
parents: 3997
diff changeset
91 stop_time_set = false;
a35a3c5d4740 [project @ 2002-08-16 08:54:31 by jwe]
jwe
parents: 3997
diff changeset
92 force_restart ();
a35a3c5d4740 [project @ 2002-08-16 08:54:31 by jwe]
jwe
parents: 3997
diff changeset
93 }
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
94
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
95 virtual void force_restart (void) { restart = true; }
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
96
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
97 bool integration_ok (void) const { return ! integration_error; }
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
98
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 4277
diff changeset
99 octave_idx_type integration_state (void) const { return istate; }
3997
d4091aff6468 [project @ 2002-07-17 18:00:06 by jwe]
jwe
parents: 3995
diff changeset
100
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
101 virtual std::string error_message (void) const = 0;
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
102
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
103 protected:
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
104
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
105 ColumnVector x;
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
106
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
107 double t;
3995
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
108
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
109 double stop_time;
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
110
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
111 bool stop_time_set;
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
112
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
113 bool restart;
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
114
ee0304212be0 [project @ 2002-07-17 04:32:42 by jwe]
jwe
parents: 3984
diff changeset
115 bool integration_error;
3997
d4091aff6468 [project @ 2002-07-17 18:00:06 by jwe]
jwe
parents: 3995
diff changeset
116
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 4277
diff changeset
117 octave_idx_type istate;
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
118 };
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
119
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
120 #endif
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
121
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
122 /*
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
123 ;;; Local Variables: ***
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
124 ;;; mode: C++ ***
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
125 ;;; End: ***
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
126 */