Typo fixes
[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 // Copyright (C) 2012 - 2016 - Scilab Enterprises
6 //
7 // This file is hereby licensed under the terms of the GNU GPL v2.0,
8 // pursuant to article 5.3.4 of the CeCILL v.2.1.
9 // This file was originally licensed under the terms of the CeCILL v2.1,
10 // and continues to be available under such terms.
11 // For more information, see the COPYING file which you should have received
12 // along with this program.
13
14 function [%ODEOPTIONS] = odeoptions(%ODEOPTIONS)
15
16     //%ODEOPTIONS=[itask,tcrit,h0,hmax,hmin,jactyp,mxstep,..
17     //             maxordn,maxords,ixpr, ml,mu]
18     // This function displays the command line
19     // %ODEOPTIONS=[...] to be executed
20     // for defining the variable %ODEOPTIONS
21     // This variables sets a number of optional parameters
22     // for the lsod* fortran routines.
23
24     //** This function can be (ab)used from the Scilab command line and
25     //** inside a Scicos "context". In order to handle the different situations,
26     //** the required libraries are loaded if not already present in the
27     //** "semiglobal-local-environment".
28
29     if exists("scicos_scicoslib")==0 then
30         load("SCI/modules/scicos/macros/scicos_scicos/lib") ;
31     end
32
33     if exists("scicos_autolib")==0 then
34         load("SCI/modules/scicos/macros/scicos_auto/lib") ;
35     end
36
37     if exists("scicos_utilslib")==0 then
38         load("SCI/modules/scicos/macros/scicos_utils/lib") ;
39     end
40
41     options = [1,0,0,%inf,0,2,500,12,5,0,-1,-1];
42     default = [string(options(1:10)),sci2exp(options(11:12))]
43     default(find(default=="Inf"))="%inf"
44
45     if argn(2)>0 then
46         options=%ODEOPTIONS
47     end
48
49     lab_=[string(options(1:10)),sci2exp(options(11:12))]
50     lab_(find(lab_=="Inf"))="%inf"
51
52
53     chapeau=[gettext("Defining %ODEOPTIONS variable");
54     "*****************************";
55     gettext("Meaning of itask and tcrit:");
56     gettext("1 : normal computation at specified times");
57     gettext("2 : computation at mesh points (given in first row of output of ode)");
58     gettext("3 : one step at one internal mesh point and return");
59     gettext("4 : normal computation without overshooting tcrit");
60     gettext("5 : one step, without passing tcrit, and return");
61     " ";
62     gettext("Meaning of jactype:");
63     gettext("0 : functional iterations (no jacobian used (''adams'' or ''stiff'' only))");
64     gettext("1 : user-supplied full jacobian");
65     gettext("2 : internally generated full jacobian");
66     gettext("3 : internally generated diagonal jacobian (''adams'' or ''stiff'' only)");
67     gettext("4 : user-supplied banded jacobian (see ml,mu)");
68     gettext("5 : internally generated banded jacobian (see ml,mu)");
69     " ";
70     gettext("Meaning of ml,mu:");
71     gettext("If jactype = 4 or 5 ml and mu are the lower and upper half-bandwidths");
72     gettext("of the banded jacobian: the band is the i,j''s with i-ml <= j <= ny-1");
73     gettext("If jactype = 4 the jacobian function must return");
74     gettext("a matrix J which is  ml+mu+1 x ny (where ny=dim of y in ydot=f(t,y))");
75     gettext("such that column 1 of J is made of mu zeros followed by");
76     gettext("df1/dy1, df2/dy1, df3/dy1,... (1+ml possibly non-zero entries)");
77     gettext("column 2 is made of mu-1 zeros followed by df1/dx2, df2/dx2,etc");
78     " ";
79     gettext("Default values are given in square brackets");
80     gettext("If the function is called without argument, default values are used");
81     ]
82
83     dims = list("vec",1,"vec",1,"vec",1,"vec",1,"vec",1,..
84     "vec",1,"vec",1,"vec",1,"vec",1,"vec",1,"vec",2);
85
86
87     labels = ["itask (1,2,3,4,5) ",gettext("tcrit (assumes itask=4 or 5)"),...
88     gettext("h0 (first step tried)"),...
89     gettext( "hmax (max step size)"),...
90     gettext("hmin (min step size)"),...
91     "jactype (0,1,2,3,4,5)",...
92     gettext("mxstep (max number of steps allowed)"),...
93     gettext("maxordn (maximum non-stiff order allowed, at most 12)"),...
94     gettext("maxords (maximum stiff order allowed, at most 5)"),...
95     gettext("ixpr (print level 0 or 1)"),"[ml,mu]"] +"    ["+default+"]";
96
97     [ok,itask,tcrit,h0,hmax,hmin,jactyp,mxstep,maxordn,maxords,ixpr,mlmu] = getvalue(chapeau,labels,dims,lab_);
98     ml = mlmu(1);
99     mu = mlmu(2);
100     ODEOPTIONS = [itask,tcrit,h0,hmax,hmin,jactyp,mxstep,maxordn,maxords,ixpr,ml,mu];
101
102     if ODEOPTIONS<>[] then
103         %ODEOPTIONS=ODEOPTIONS
104     else
105         %ODEOPTIONS=options
106     end
107
108 endfunction