Added CeCILL headers
[scilab.git] / scilab / modules / differential_equations / macros / odeoptions.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // ...
4 // 
5 // This file must be used under the terms of the CeCILL.
6 // This source file is licensed as described in the file COPYING, which
7 // you should have received as part of this distribution.  The terms
8 // are also available at    
9 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10
11 function [%ODEOPTIONS]=odeoptions(%ODEOPTIONS)
12
13   options=[1,0,0,%inf,0,2,500,12,5,0,-1,-1];
14   default=[string(options(1:10)),sci2exp(options(11:12))]
15   default(find(default=='Inf'))="%inf"
16   if argn(2)>0 then
17     options=%ODEOPTIONS
18   end
19   lab_=[string(options(1:10)),sci2exp(options(11:12))]
20   lab_(find(lab_=='Inf'))="%inf"
21 //%ODEOPTIONS=[itask,tcrit,h0,hmax,hmin,jactyp,mxstep,..
22 //             maxordn,maxords,ixpr, ml,mu]
23 // This function displays the command line 
24 // %ODEOPTIONS=[...] to be executed 
25 // for defining the variable %ODEOPTIONS
26 // This variables sets a number of optional parameters 
27 // for the lsod* fortran routines.
28 load(SCI+'/macros/scicos/lib')
29 chapeau=["Defining %ODEOPTIONS variable";
30          "*****************************";
31          'Meaning of itask and tcrit:';
32          '1 : normal computation at specified times';
33          '2 : computation at mesh points (given in first row of output of ode)';
34          '3 : one step at one internal mesh point and return';
35          '4 : normal computation without overshooting tcrit';
36          '5 : one step, without passing tcrit, and return';
37          ' ';
38          'Meaning of jactype:';
39          '0 : functional iterations (no jacobian used (''adams'' or ''stiff'' only))';
40          '1 : user-supplied full jacobian';
41          '2 : internally generated full jacobian';
42          '3 : internally generated diagonal jacobian (''adams'' or ''stiff'' only))';
43          '4 : user-supplied banded jacobian (see ml,mu)';
44          '5 : internally generated banded jacobian (see ml,mu)';
45          ' ';
46          'Meaning of ml,mu:';
47          'If jactype = 4 or 5 ml and mu are the lower and upper half-banwidths';
48          'of the banded jacobian: the band is the i,j''s with i-ml <= j <= ny-1';
49          'If jactype = 4 the jacobian function must return';
50          'a matrix J which is  ml+mu+1 x ny (where ny=dim of y in ydot=f(t,y));'
51          'such that column 1 of J is made of mu zeros followed by';
52          'df1/dy1, df2/dy1, df3/dy1,... (1+ml possibly non-zero entries)';
53          'column 2 is made of mu-1 zeros followed by df1/dx2, df2/dx2,etc';
54          ' '
55          'Default values are given in square brackets'
56          'If the function is called without argument, default values"+...
57          " are used"
58         ]
59
60 dims=list("vec",1,"vec",1,"vec",1,"vec",1,"vec",1,..
61           "vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",2);
62
63
64 labels=["itask (1,2,3,4,5) ","tcrit (assumes itask=4 or 5)",...
65     "h0 (first step tried)",...
66     "hmax (max step size)","hmin (min step size)",...
67     "jactype (0,1,2,3,4,5)","mxstep (max number of steps allowed)",...
68     "maxordn (maximum non-stiff order allowed, at most 12)",...
69     "maxords(maximum stiff order allowed, at most 5) ",...
70     "ixpr (print level 0 or 1)","[ml,mu]"] +'    ['+default+']';
71
72 [ok,itask,tcrit,h0,hmax,hmin,jactyp,mxstep,maxordn,maxords,ixpr,mlmu]=..
73     tk_getvalue(chapeau,labels,dims,lab_);
74 ml=mlmu(1);mu=mlmu(2);
75 ODEOPTIONS=[itask,tcrit,h0,hmax,hmin,jactyp,mxstep,maxordn,maxords,ixpr, ...
76          ml,mu];
77 if ODEOPTIONS<>[] then
78   %ODEOPTIONS=ODEOPTIONS
79 else
80   %ODEOPTIONS=options
81 end
82 endfunction