Mercurial > hg > octave-nkf
annotate scripts/ode/odeset.m @ 20830:b65888ec820e draft default tip gccjit
dmalcom gcc jit import
author | Stefan Mahr <dac922@gmx.de> |
---|---|
date | Fri, 27 Feb 2015 16:59:36 +0100 |
parents | e5f36a7854a5 |
children |
rev | line source |
---|---|
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
1 ## Copyright (C) 2013, Roberto Porcu' <roberto.porcu@polimi.it> |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
2 ## Copyright (C) 2006-2012, Thomas Treichl <treichl@users.sourceforge.net> |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
3 ## |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
4 ## This file is part of Octave. |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
5 ## |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
6 ## Octave is free software; you can redistribute it and/or modify it |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
7 ## under the terms of the GNU General Public License as published by |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
8 ## the Free Software Foundation; either version 3 of the License, or (at |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
9 ## your option) any later version. |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
10 ## |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
11 ## Octave is distributed in the hope that it will be useful, but |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
14 ## General Public License for more details. |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
15 ## |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
16 ## You should have received a copy of the GNU General Public License |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
17 ## along with Octave; see the file COPYING. If not, see |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
18 ## <http://www.gnu.org/licenses/>. |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
19 |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
20 ## -*- texinfo -*- |
20755
25623ef2ff4f
doc: Rewrite docstrings for ode* family of functions.
Rik <rik@octave.org>
parents:
20743
diff
changeset
|
21 ## @deftypefn {Function File} {} odeset () |
25623ef2ff4f
doc: Rewrite docstrings for ode* family of functions.
Rik <rik@octave.org>
parents:
20743
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{odestruct} =} odeset (@var{"field1"}, @var{value1}, @var{"field2"}, @var{value2}, @dots{}) |
25623ef2ff4f
doc: Rewrite docstrings for ode* family of functions.
Rik <rik@octave.org>
parents:
20743
diff
changeset
|
23 ## @deftypefnx {Function File} {@var{odestruct} =} odeset (@var{oldstruct}, @var{"field1"}, @var{value1}, @var{"field2"}, @var{value2}, @dots{}) |
25623ef2ff4f
doc: Rewrite docstrings for ode* family of functions.
Rik <rik@octave.org>
parents:
20743
diff
changeset
|
24 ## @deftypefnx {Function File} {@var{odestruct} =} odeset (@var{oldstruct}, @var{newstruct}) |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
25 ## |
20755
25623ef2ff4f
doc: Rewrite docstrings for ode* family of functions.
Rik <rik@octave.org>
parents:
20743
diff
changeset
|
26 ## Create or modify an ODE options structure. |
25623ef2ff4f
doc: Rewrite docstrings for ode* family of functions.
Rik <rik@octave.org>
parents:
20743
diff
changeset
|
27 ## |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
28 ## When called without an input argument, return a new ODE options structure |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
29 ## that contains all possible fields initialized to their default values. |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
30 ## |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
31 ## If called with string input arguments @var{"field1"}, @var{"field2"}, |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
32 ## @dots{} identifying valid ODE options then return a new ODE options |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
33 ## structure with all possible fields initialized @strong{and} set the values |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
34 ## of the fields @var{"field1"}, @var{"field2"}, @dots{} to the values |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
35 ## @var{value1}, @var{value2}, @dots{} |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
36 ## |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
37 ## If called with an input structure @var{oldstruct} then overwrite the values |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
38 ## of the options @var{"field1"}, @var{"field2"}, @dots{} with new values |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
39 ## @var{value1}, @var{value2}, @dots{} and return the modified structure. |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
40 ## |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
41 ## When called with two input ODE options structures @var{oldstruct} and |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
42 ## @var{newstruct} overwrite all values from the structure @var{oldstruct} with |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
43 ## new values from the structure @var{newstruct}. Empty values in |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
44 ## @var{newstruct} will not overwrite values in @var{oldstruct}. |
20755
25623ef2ff4f
doc: Rewrite docstrings for ode* family of functions.
Rik <rik@octave.org>
parents:
20743
diff
changeset
|
45 ## @seealso{odeget} |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
46 ## @end deftypefn |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
47 |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
48 function odestruct = odeset (varargin) |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
49 |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
50 ## Special calling syntax to display defaults |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
51 if (nargin == 0 && nargout == 0) |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
52 print_options (); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
53 return; |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
54 endif |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
55 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
56 ## Column vector of all possible OdePkg options |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
57 persistent options = {"AbsTol"; "Algorithm"; "BDF"; "Choice"; "Eta"; "Events"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
58 "Explicit"; "InexactSolver"; "InitialSlope"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
59 "InitialStep"; "Jacobian"; "JConstant"; "JPattern"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
60 "Mass"; "MassConstant"; "MassSingular"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
61 "MaxNewtonIterations"; "MaxOrder"; "MaxStep"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
62 "MStateDependence"; "MvPattern"; "NewtonTol"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
63 "NonNegative"; "NormControl"; "OutputFcn"; "OutputSave"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
64 "OutputSel"; "PolynomialDegree"; "QuadratureOrder"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
65 "Refine"; "RelTol"; "Restart"; "Stats"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
66 "TimeStepNumber"; "TimeStepSize"; "UseJacobian"; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
67 "Vectorized"}; |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
68 |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
69 ## initialize output |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
70 odestruct = cell2struct (cell (numel (options), 1), options); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
71 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
72 if (nargin == 0) |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
73 return; |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
74 endif |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
75 |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
76 if (isstruct (varargin{1})) |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
77 oldstruct = varargin{1}; |
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
78 ode_struct_value_check (oldstruct); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
79 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
80 oldstruct_fldnames = (fieldnames (oldstruct)).'; |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
81 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
82 ## Copy oldstruct values into output odestruct |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
83 for fldname = oldstruct_fldnames |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
84 name = lower (fldname{1}); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
85 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
86 exactmatch = true; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
87 match = find (strcmpi (name, options)); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
88 if (isempty (match)) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
89 match = find (strncmpi (name, options, length (name))); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
90 exactmatch = false; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
91 endif |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
92 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
93 if (isempty (match)) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
94 error ("odeset: invalid property '%s'", fldname{1}); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
95 elseif (numel (match) == 1) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
96 if (! exactmatch) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
97 warning ("odeset:NoExactMatching", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
98 "no exact match for '%s'. Assuming '%s'.", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
99 name, options{match}); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
100 endif |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
101 odestruct.(options{match}) = oldstruct.(fldname{1}); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
102 else |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
103 error ("odeset: no exact match for '%s'. Possible fields found: %s.", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
104 name, strjoin (options(match), ", ")); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
105 endif |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
106 endfor |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
107 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
108 ## At this point, odestruct has been initialized with default values, |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
109 ## and if oldstruct was present it has overwritten fields in odestruct. |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
110 |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
111 if (nargin == 2 && isstruct (varargin{2})) |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
112 newstruct = varargin{2}; |
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
113 ode_struct_value_check (newstruct); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
114 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
115 newstruct_fldnames = (fieldnames (newstruct)).'; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
116 |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
117 ## Update the first struct with the values from the second one |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
118 for fldname = newstruct_fldnames |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
119 name = lower (fldname{1}); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
120 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
121 exactmatch = true; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
122 match = find (strcmpi (name, options)); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
123 if (isempty (match)) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
124 match = find (strncmpi (name, options, length (name))); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
125 exactmatch = false; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
126 endif |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
127 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
128 if (isempty (match)) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
129 error ("odeset: invalid property '%s'", fldname{1}); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
130 elseif (numel (match) == 1) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
131 if (! exactmatch) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
132 warning ("odeset:NoExactMatching", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
133 "no exact match for '%s'. Assuming '%s'.", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
134 name, options{match}); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
135 endif |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
136 odestruct.(options{match}) = newstruct.(fldname{1}); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
137 else |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
138 error ("odeset: no exact match for '%s'. Possible fields found: %s.", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
139 name, strjoin (options(match), ", ")); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
140 endif |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
141 endfor |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
142 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
143 ## Done copying newstruct to oldstruct |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
144 return; |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
145 endif |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
146 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
147 ## Second argument is not a struct |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
148 if (mod (nargin, 2) != 1) |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
149 error ("odeset: FIELD/VALUE arguments must occur in pairs"); |
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
150 endif |
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
151 if (! all (cellfun ("isclass", varargin(2:2:end), "char"))) |
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
152 error ("odeset: All FIELD names must be strings"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
153 endif |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
154 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
155 ## Write new field/value pairs into odestruct |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
156 for i = 2:2:nargin |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
157 name = lower (varargin{i}); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
158 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
159 exactmatch = true; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
160 match = find (strcmpi (name, options)); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
161 if (isempty (match)) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
162 match = find (strncmpi (name, options, length (name))); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
163 exactmatch = false; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
164 endif |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
165 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
166 if (isempty (match)) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
167 error ("odeset: invalid property '%s'", varargin{i}); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
168 elseif (numel (match) == 1) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
169 if (! exactmatch) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
170 warning ("odeset:NoExactMatching", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
171 "no exact match for '%s'. Assuming '%s'.", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
172 name, options{match}); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
173 endif |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
174 odestruct.(options{match}) = varargin{i+1}; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
175 else |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
176 error ("odeset: no exact match for '%s'. Possible fields found: %s.", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
177 name, strjoin (options(match), ", ")); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
178 endif |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
179 endfor |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
180 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
181 ## Check if all changes have resulted in a valid OdePkg struct |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
182 ode_struct_value_check (odestruct); |
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
183 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
184 else |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
185 ## First input argument was not a struct, must be field/value pairs |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
186 if (mod (nargin, 2) != 0) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
187 error ("odeset: FIELD/VALUE arguments must occur in pairs"); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
188 elseif (! all (cellfun ("isclass", varargin(1:2:end), "char"))) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
189 error ("odeset: All FIELD names must be strings"); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
190 endif |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
191 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
192 for i = 1:2:nargin |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
193 name = lower (varargin{i}); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
194 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
195 exactmatch = true; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
196 match = find (strcmpi (name, options)); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
197 if (isempty (match)) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
198 match = find (strncmpi (name, options, length (name))); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
199 exactmatch = false; |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
200 endif |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
201 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
202 if (isempty (match)) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
203 error ("odeset: invalid property '%s'", varargin{i}); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
204 elseif (numel (match) == 1) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
205 if (! exactmatch) |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
206 warning ("odeset:NoExactMatching", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
207 "no exact match for '%s'. Assuming '%s'.", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
208 name, options{match}); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
209 endif |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
210 odestruct.(options{match}) = varargin{i+1}; |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
211 else |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
212 error ("odeset: no exact match for '%s'. Possible fields found: %s.", |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
213 name, strjoin (options(match), ", ")); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
214 endif |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
215 endfor |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
216 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
217 ## Check if all changes have resulted in a valid OdePkg struct |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
218 ode_struct_value_check (odestruct); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
219 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
220 endif |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
221 |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
222 endfunction |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
223 |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
224 ## function useful to print all the possible options |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
225 function print_options () |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
226 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
227 disp ("List of all possible ODE solver options."); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
228 disp ("Default values are in square brackets."); |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
229 disp (""); |
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
230 disp (" AbsTol: scalar or vector, >0, [1e-6]"); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
231 disp (" Algorithm: string, {['gmres'], 'pcg', 'bicgstab'}"); |
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
232 disp (" BDF: binary, {'on', ['off']}"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
233 disp (" Choice: switch, {[1], 2}"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
234 disp (" Eta: scalar, >=0, <1, [0.5]"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
235 disp (" Events: function_handle, []"); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
236 disp (" Explicit: binary, {'yes', ['no']}"); |
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
237 disp (" InexactSolver: string, {'inexact_newton', 'fsolve', []}"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
238 disp (" InitialSlope: vector, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
239 disp (" InitialStep: scalar, >0, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
240 disp (" Jacobian: matrix or function_handle, []"); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
241 disp (" JConstant: binary, {'on', ['off']}"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
242 disp (" JPattern: sparse matrix, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
243 disp (" Mass: matrix or function_handle, []"); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
244 disp (" MassConstant: binary, {'on', ['off']}"); |
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
245 disp (" MassSingular: switch, {'yes', ['maybe'], 'no'}"); |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
246 disp ("MaxNewtonIterations: scalar, integer, >0, [1e3]"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
247 disp (" MaxOrder: switch, {1, 2, 3, 4, [5]}"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
248 disp (" MaxStep: scalar, >0, []"); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
249 disp (" MStateDependence: switch, {'none', ['weak'], 'strong'}"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
250 disp (" MvPattern: sparse matrix, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
251 disp (" NewtonTol: scalar or vector, >0, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
252 disp (" NonNegative: vector of integers, []"); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
253 disp (" NormControl: binary, {'on', ['off']}"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
254 disp (" OutputFcn: function_handle, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
255 disp (" OutputSave: scalar, integer, >0, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
256 disp (" OutputSel: scalar or vector, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
257 disp (" PolynomialDegree: scalar, integer, >0, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
258 disp (" QuadratureOrder: scalar, integer, >0, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
259 disp (" Refine: scalar, integer, >0, []"); |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
260 disp (" RelTol: scalar, >0, [1e-3]"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
261 disp (" Restart: scalar, integer, >0, [20]"); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
262 disp (" Stats: binary, {'on', ['off']}"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
263 disp (" TimeStepNumber: scalar, integer, >0, []"); |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
264 disp (" TimeStepSize: scalar, >0, []"); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
265 disp (" UseJacobian: binary, {'yes', ['no']}"); |
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
266 disp (" Vectorized: binary, {'on', ['off']}"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
267 |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
268 endfunction |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
269 |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
270 |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
271 %!demo |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
272 %! # A new OdePkg options structure with default values is created. |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
273 %! |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
274 %! odeoptA = odeset (); |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
275 |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
276 %!demo |
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
277 %! # A new OdePkg options structure with manually set options |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
278 %! # for "AbsTol" and "RelTol" is created. |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
279 %! |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
280 %! odeoptB = odeset ("AbsTol", 1e-2, "RelTol", 1e-1); |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
281 |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
282 %!demo |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
283 %! # A new OdePkg options structure is created from odeoptB with |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
284 %! # a modified value for option "NormControl". |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
285 %! |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
286 %! odeoptB = odeset ("AbsTol", 1e-2, "RelTol", 1e-1); |
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
287 %! odeoptC = odeset (odeoptB, "NormControl", "on"); |
20743
fcb792acab9b
Moving ode45, odeset, odeget, and levenshtein from odepkg to core.
jcorno <jacopo.corno@gmail.com>
parents:
diff
changeset
|
288 |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
289 ## All tests that are needed to check if a correct resp. valid option |
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
290 ## has been set are implemented in ode_struct_value_check.m. |
20760
45151de7423f
maint: Clean up implementations of ode45.m, odeget.m, odeset.m.
Rik <rik@octave.org>
parents:
20756
diff
changeset
|
291 %!test |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
292 %! odeoptA = odeset (); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
293 %! assert (isstruct (odeoptA)); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
294 %! fields = fieldnames (odeoptA); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
295 %! assert (numel (fields), 37); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
296 %! assert (all (structfun ("isempty", odeoptA))); |
20756
e368ce72a844
maint: Use Octave coding conventions for ode* functions.
Rik <rik@octave.org>
parents:
20755
diff
changeset
|
297 |
20796
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
298 %!shared odeoptB, odeoptC |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
299 %!test |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
300 %! odeoptB = odeset ("ABSTOL", 1e-2, "reltol", 1e-1); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
301 %! assert (odeoptB.AbsTol, 1e-2); # Check canonicalization of name |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
302 %! assert (odeoptB.RelTol, 1e-1); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
303 |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
304 %!test |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
305 %! odeoptC = odeset (odeoptB, "NormControl", "on"); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
306 %! assert (odeoptC.AbsTol, 1e-2); # check values from first struct copied |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
307 %! assert (odeoptC.NormControl, "on"); # check new values override old ones |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
308 |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
309 %!test |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
310 %! odeoptD = odeset (odeoptB, odeoptC); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
311 %! assert (odeoptD, odeoptC); |
e5f36a7854a5
Remove fuzzy matching from odeset/odeget.
Rik <rik@octave.org>
parents:
20760
diff
changeset
|
312 |