diff liboctave/LSODE-opts.in @ 3998:f6df65db67f9

[project @ 2002-07-24 18:10:39 by jwe]
author jwe
date Wed, 24 Jul 2002 18:10:40 +0000
parents
children 9678c5526190
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/liboctave/LSODE-opts.in
@@ -0,0 +1,72 @@
+CLASS = "LSODE"
+
+OPTION
+  NAME = "absolute tolerance"
+  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);
+      }
+
+    void set_$OPT (const $TYPE& val)
+      { $OPTVAR = val; }
+  END_SET_CODE
+END_OPTION
+
+OPTION
+  NAME = "integration method"
+  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"
+  TYPE = "double"
+  INIT_VALUE = "-1.0"
+  SET_EXPR = "(val >= 0.0) ? val : -1.0"
+END_OPTION
+
+OPTION
+  NAME = "maximum step size"
+  TYPE = "double"
+  INIT_VALUE = "-1.0"
+  SET_EXPR = "(val >= 0.0) ? val : -1.0"
+END_OPTION
+
+OPTION
+  NAME = "minimum step size"
+  TYPE = "double"
+  INIT_VALUE = "0.0"
+  SET_EXPR = "(val >= 0.0) ? val : 0.0"
+END_OPTION
+
+OPTION
+  NAME = "relative tolerance"
+  TYPE = "double"
+  INIT_VALUE = "::sqrt (DBL_EPSILON)"
+  SET_EXPR = "(val > 0.0) ? val : ::sqrt (DBL_EPSILON)"
+END_OPTION
+
+OPTION
+  NAME = "step limit"
+  TYPE = "int"
+  INIT_VALUE = "100000"
+  SET_EXPR = "val"
+END_OPTION