Mercurial > hg > octave-nkf
annotate liboctave/numeric/base-de.h @ 17296:3a9efb68272d ss-3-7-6
snapshot 3.7.6
* configure.ac (OCTAVE_VERSION): Bump to 3.7.6.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 20 Aug 2013 15:17:54 -0400 |
parents | 648dabbb4c6b |
children | d63878346099 |
rev | line source |
---|---|
1843 | 1 /* |
2 | |
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
11586
diff
changeset
|
3 Copyright (C) 1996-2012 John W. Eaton |
1843 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
1843 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
1843 | 20 |
21 */ | |
22 | |
23 #if !defined (octave_base_de_h) | |
24 #define octave_base_de_h 1 | |
25 | |
3995 | 26 #include <string> |
27 | |
1843 | 28 #include "dColVector.h" |
29 #include "dMatrix.h" | |
30 | |
1879 | 31 class |
32 base_diff_eqn | |
1843 | 33 { |
34 public: | |
35 | |
3995 | 36 base_diff_eqn (void) |
37 : x (), t (0.0), stop_time (0.0), stop_time_set (false), | |
11586
12df7854fa7c
strip trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
38 restart (true), integration_error (false), istate (0) { } |
1843 | 39 |
3995 | 40 base_diff_eqn (const ColumnVector& xx, double tt) |
41 : x (xx), t (tt), stop_time (0.0), stop_time_set (false), | |
3997 | 42 restart (true), integration_error (false), istate (0) { } |
1843 | 43 |
3995 | 44 base_diff_eqn (const base_diff_eqn& a) |
45 : x (a.x), t (a.t), stop_time (0.0), stop_time_set (false), | |
3997 | 46 restart (true), integration_error (false), istate (0) { } |
1843 | 47 |
48 virtual ~base_diff_eqn (void) { } | |
49 | |
50 base_diff_eqn& operator = (const base_diff_eqn& a) | |
51 { | |
1958 | 52 if (this != &a) |
10312
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
53 { |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
54 x = a.x; |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
55 t = a.t; |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
56 stop_time = a.stop_time; |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
57 stop_time_set = a.stop_time_set; |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
58 restart = a.restart; |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
59 integration_error = a.integration_error; |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
60 istate = a.istate; |
cbc402e64d83
untabify liboctave header files
John W. Eaton <jwe@octave.org>
parents:
10158
diff
changeset
|
61 } |
3995 | 62 |
1843 | 63 return *this; |
64 } | |
65 | |
3984 | 66 void initialize (const ColumnVector& x0, double t0) |
1843 | 67 { |
68 x = x0; | |
69 t = t0; | |
3995 | 70 integration_error = false; |
3997 | 71 istate = 0; |
1843 | 72 force_restart (); |
73 } | |
74 | |
5275 | 75 octave_idx_type size (void) const { return x.capacity (); } |
1843 | 76 |
77 ColumnVector state (void) const { return x; } | |
78 | |
79 double time (void) const { return t; } | |
80 | |
4277 | 81 void set_stop_time (double tt) |
3995 | 82 { |
83 stop_time_set = true; | |
4277 | 84 stop_time = tt; |
4049 | 85 force_restart (); |
3995 | 86 } |
87 | |
4049 | 88 void clear_stop_time (void) |
89 { | |
90 stop_time_set = false; | |
91 force_restart (); | |
92 } | |
3995 | 93 |
94 virtual void force_restart (void) { restart = true; } | |
95 | |
96 bool integration_ok (void) const { return ! integration_error; } | |
97 | |
5275 | 98 octave_idx_type integration_state (void) const { return istate; } |
3997 | 99 |
3995 | 100 virtual std::string error_message (void) const = 0; |
101 | |
1843 | 102 protected: |
103 | |
104 ColumnVector x; | |
3995 | 105 |
1843 | 106 double t; |
3995 | 107 |
108 double stop_time; | |
109 | |
110 bool stop_time_set; | |
111 | |
112 bool restart; | |
113 | |
114 bool integration_error; | |
3997 | 115 |
5275 | 116 octave_idx_type istate; |
1843 | 117 }; |
118 | |
119 #endif |