3998
|
1 CLASS = "LSODE" |
|
2 |
4044
|
3 INCLUDE = "ODE.h" |
|
4 |
3998
|
5 OPTION |
|
6 NAME = "absolute tolerance" |
|
7 TYPE = "Array<double>" |
|
8 SET_ARG_TYPE = "const $TYPE&" |
|
9 INIT_BODY |
|
10 $OPTVAR.resize (1); |
|
11 $OPTVAR(0) = ::sqrt (DBL_EPSILON); |
|
12 END_INIT_BODY |
|
13 SET_CODE |
|
14 void set_$OPT (double val) |
|
15 { |
|
16 $OPTVAR.resize (1); |
|
17 $OPTVAR(0) = (val > 0.0) ? val : ::sqrt (DBL_EPSILON); |
4049
|
18 reset = true; |
3998
|
19 } |
|
20 |
|
21 void set_$OPT (const $TYPE& val) |
4049
|
22 { $OPTVAR = val; reset = true; } |
3998
|
23 END_SET_CODE |
|
24 END_OPTION |
|
25 |
|
26 OPTION |
|
27 NAME = "integration method" |
|
28 TYPE = "std::string" |
|
29 SET_ARG_TYPE = "const $TYPE&" |
|
30 INIT_VALUE = ""stiff"" |
|
31 SET_BODY |
|
32 if (val == "stiff" || val == "bdf") |
|
33 $OPTVAR = "stiff"; |
|
34 else if (val == "non-stiff" || val == "adams") |
|
35 $OPTVAR = "non-stiff"; |
|
36 else |
|
37 (*current_liboctave_error_handler) |
|
38 ("lsode_options: method must be \"stiff\", \"bdf\", \"non-stiff\", or \"adams\""); |
|
39 END_SET_BODY |
|
40 END_OPTION |
|
41 |
|
42 OPTION |
|
43 NAME = "initial step size" |
|
44 TYPE = "double" |
|
45 INIT_VALUE = "-1.0" |
|
46 SET_EXPR = "(val >= 0.0) ? val : -1.0" |
|
47 END_OPTION |
|
48 |
|
49 OPTION |
|
50 NAME = "maximum step size" |
|
51 TYPE = "double" |
|
52 INIT_VALUE = "-1.0" |
|
53 SET_EXPR = "(val >= 0.0) ? val : -1.0" |
|
54 END_OPTION |
|
55 |
|
56 OPTION |
|
57 NAME = "minimum step size" |
|
58 TYPE = "double" |
|
59 INIT_VALUE = "0.0" |
|
60 SET_EXPR = "(val >= 0.0) ? val : 0.0" |
|
61 END_OPTION |
|
62 |
|
63 OPTION |
|
64 NAME = "relative tolerance" |
|
65 TYPE = "double" |
|
66 INIT_VALUE = "::sqrt (DBL_EPSILON)" |
|
67 SET_EXPR = "(val > 0.0) ? val : ::sqrt (DBL_EPSILON)" |
|
68 END_OPTION |
|
69 |
|
70 OPTION |
|
71 NAME = "step limit" |
|
72 TYPE = "int" |
|
73 INIT_VALUE = "100000" |
|
74 SET_EXPR = "val" |
|
75 END_OPTION |