1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
CLASS = "LSODE"
INCLUDE = "ODE.h"
OPTION
NAME = "absolute tolerance"
DOC_ITEM
Absolute tolerance. May be either vector or scalar. If a vector, it
must match the dimension of the state vector.
END_DOC_ITEM
TYPE = "Array<double>"
SET_ARG_TYPE = "const $TYPE&"
INIT_BODY
$OPTVAR.resize (1);
$OPTVAR(0) = ::sqrt (DBL_EPSILON);
END_INIT_BODY
SET_CODE
void set_$OPT (double val)
{
$OPTVAR.resize (1);
$OPTVAR(0) = (val > 0.0) ? val : ::sqrt (DBL_EPSILON);
reset = true;
}
void set_$OPT (const $TYPE& val)
{ $OPTVAR = val; reset = true; }
END_SET_CODE
END_OPTION
OPTION
NAME = "relative tolerance"
DOC_ITEM
Relative tolerance parameter. Unlike the absolute tolerance, this
parameter may only be a scalar.
The local error test applied at each integration step is
@example
abs (local error in x(i)) <= rtol * abs (y(i)) + atol(i)
@end example
END_DOC_ITEM
TYPE = "double"
INIT_VALUE = "::sqrt (DBL_EPSILON)"
SET_EXPR = "(val > 0.0) ? val : ::sqrt (DBL_EPSILON)"
END_OPTION
OPTION
NAME = "integration method"
DOC_ITEM
A string specifing the method of integration to use to solve the ODE
system. Valid values are
@table @asis
@item \"adams\"
@itemx \"non-stiff\"
No Jacobian used (even if it is available).
@item \"bdf\"
@item \"stiff\"
Use stiff backward differentiation formula (BDF) method. If a
function to compute the Jacobian is not supplied, @code{lsode} will
compute a finite difference approximation of the Jacobian matrix.
@end table
END_DOC_ITEM
TYPE = "std::string"
SET_ARG_TYPE = "const $TYPE&"
INIT_VALUE = ""stiff""
SET_BODY
if (val == "stiff" || val == "bdf")
$OPTVAR = "stiff";
else if (val == "non-stiff" || val == "adams")
$OPTVAR = "non-stiff";
else
(*current_liboctave_error_handler)
("lsode_options: method must be \"stiff\", \"bdf\", \"non-stiff\", or \"adams\"");
END_SET_BODY
END_OPTION
OPTION
NAME = "initial step size"
DOC_ITEM
The step size to be attempted on the first step (default is determined
automatically).
END_DOC_ITEM
TYPE = "double"
INIT_VALUE = "-1.0"
SET_EXPR = "(val >= 0.0) ? val : -1.0"
END_OPTION
OPTION
NAME = "maximum order"
DOC_ITEM
Restrict the maximum order of the solution method. If using the Adams
method, this option must be between 1 and 12. Otherwise, it must be
between 1 and 5, inclusive.
END_DOC_ITEM
TYPE = "int"
INIT_VALUE = "-1"
SET_EXPR = "val"
END_OPTION
OPTION
NAME = "maximum step size"
DOC_ITEM
Setting the maximum stepsize will avoid passing over very large
regions (default is not specified).
END_DOC_ITEM
TYPE = "double"
INIT_VALUE = "-1.0"
SET_EXPR = "(val >= 0.0) ? val : -1.0"
END_OPTION
OPTION
NAME = "minimum step size"
DOC_ITEM
The minimum absolute step size allowed (default is 0).
END_DOC_ITEM
TYPE = "double"
INIT_VALUE = "0.0"
SET_EXPR = "(val >= 0.0) ? val : 0.0"
END_OPTION
OPTION
NAME = "step limit"
DOC_ITEM
Maximum number of steps allowed (default is 100000).
END_DOC_ITEM
TYPE = "int"
INIT_VALUE = "100000"
SET_EXPR = "val"
END_OPTION
|