Management of errors in differential equations functions.
[scilab.git] / scilab / modules / differential_equations / includes / scifunctions.h
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2011 - DIGITEO - Cedric DELAMARRE
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 */
12 /*--------------------------------------------------------------------------*/
13
14 #include "dynlib_differential_equations.h"
15
16 // ode / odedc
17 typedef void(*ode_f_t)(int *n, double *t, double *y, double *ydot);
18 typedef void(*func_jac_t)(int *n, double *t, double *y, int *ml, int *mu, double *J, int *nrpd);
19 typedef void(*func_g_t)(int *n, double *t, double *y, int *ng, double *gout);
20
21 extern double C2F(lsoda)(ode_f_t, int*, double*, double*, double*, int*, double*, double*, int*, int*, int*, double*, int*, int*, int*, func_jac_t, int*);
22 extern double C2F(lsode)(ode_f_t, int*, double*, double*, double*, int*, double*, double*, int*, int*, int*, double*, int*, int*, int*, func_jac_t, int*);
23 extern double C2F(lsodar)(ode_f_t, int*, double*, double*, double*, int*, double*, double*, int*, int*, int*, double*, int*, int*, int*, func_jac_t, int*, func_g_t, int*, int*);
24 extern double C2F(lsdisc)(ode_f_t f, int* neq, double* y, double* t, double* tout, double* rwork, int* lrw, int* istate);
25 extern double C2F(lsrgk)(ode_f_t, int*, double*, double*, double*, int*, double*, double*, int*, int*, int*, double*, int*, int*, int*, func_jac_t, int*);
26 extern double C2F(rkf45)(ode_f_t, int*, double*, double*, double*, int*, double*, double*, int*, int*, int*, double*, int*, int*, int*, func_jac_t, int*);
27 extern double C2F(rksimp)(ode_f_t, int*, double*, double*, double*, int*, double*, double*, int*, int*, int*, double*, int*, int*, int*, func_jac_t, int*);
28
29 DIFFERENTIAL_EQUATIONS_IMPEXP void ode_f(int* n, double* t, double* y, double* ydot);
30 DIFFERENTIAL_EQUATIONS_IMPEXP void ode_jac(int *n, double *t, double *y, int *ml, int *mu, double *J, int *nrpd);
31 DIFFERENTIAL_EQUATIONS_IMPEXP void ode_g(int *n, double *t, double *y, int *ng, double *gout);
32
33 // intg
34 typedef double(*intg_f_t)(double*);
35
36 extern double C2F(dqags)(intg_f_t f, double* a, double* b, double* epsabs, double* epsrel, double* result, double* abserr, int* neval, int* ier, int* limit, int* lenw, int* last, int* iwork, double* dwork);
37
38 DIFFERENTIAL_EQUATIONS_IMPEXP double intg_f(double*);
39
40 // int2d
41 typedef double(*int2d_f_t)(double*, double*);
42
43 extern double C2F(twodq)(int2d_f_t, int*, double*, double*, double*, int*, int*, int*, double*, double*, int*, int*, int*, int*, double*, int*);
44
45 DIFFERENTIAL_EQUATIONS_IMPEXP double int2d_f(double*, double*);
46
47 // int3d
48 typedef void(*int3d_f_t)(double*, int*, double*);
49
50 extern double C2F(dcutet)(int3d_f_t, int*, double*, int*, int*, int*, double*, double*, int*, int*, int*, double*, double*, int*, int*, double*, int*);
51
52 DIFFERENTIAL_EQUATIONS_IMPEXP void int3d_f(double*, int*, double*);
53
54 // feval
55 typedef void(*feval_f_t)(int*, double*, double*, double*, int*);
56
57 // bvode
58 typedef void(*bvode_idd_t)(int*, double*, double*);
59 typedef void(*bvode_ddd_t)(double*, double*, double*);
60
61 extern double C2F(colnew)(int*, int*, double*, double*, double*, int*, int*, double*, double*, int*, double*, int*, bvode_ddd_t, bvode_ddd_t, bvode_idd_t, bvode_idd_t, bvode_ddd_t);
62
63 extern double C2F(appsln)(double*, double*, double*, int*);
64
65 DIFFERENTIAL_EQUATIONS_IMPEXP void bvode_gsub(int*, double*, double*);
66 DIFFERENTIAL_EQUATIONS_IMPEXP void bvode_dgsub(int*, double*, double*);
67 DIFFERENTIAL_EQUATIONS_IMPEXP void bvode_fsub(double*, double*, double*);
68 DIFFERENTIAL_EQUATIONS_IMPEXP void bvode_dfsub(double*, double*, double*);
69 DIFFERENTIAL_EQUATIONS_IMPEXP void bvode_guess(double*, double*, double*);
70
71 // impl
72 typedef void(*impl_f_t)(int*, double*, double*, double*, double*, int*);
73 typedef void(*impl_g_t)(int*, double*, double*, double*, double*, double*, int*);
74 typedef void(*impl_jac_t)(int*, double*, double*, double*, double*, double*, double*, int*);
75
76 DIFFERENTIAL_EQUATIONS_IMPEXP extern double C2F(lsodi)(impl_f_t, impl_g_t, impl_jac_t, int*, double*, double*, double*, double*, int*, double*, double*, int*, int*, int*, double*, int*, int*, int*, int*);
77
78 DIFFERENTIAL_EQUATIONS_IMPEXP void impl_f(int*, double*, double*, double*, double*, int*);
79 DIFFERENTIAL_EQUATIONS_IMPEXP void impl_g(int*, double*, double*, double*, double*, double*, int*);
80 DIFFERENTIAL_EQUATIONS_IMPEXP void impl_jac(int*, double*, double*, double*, double*, double*, double*, int*);
81
82 //dassl dasrt daskr
83 typedef void(*dassl_f_t)(double*, double*, double*, double*, int*, double*, int*);
84 typedef void(*dassl_jac_t)(double*, double*, double*, double*, double*, double*, int*);
85
86 extern void C2F(dassl)(dassl_f_t, int*, double*, double*, double*, double*, int*, double*, double*, int*, double*, int*, int*, int*, double*, int*, dassl_jac_t);
87
88 DIFFERENTIAL_EQUATIONS_IMPEXP void dassl_f(double*, double*, double*, double*, int*, double*, int*);
89 DIFFERENTIAL_EQUATIONS_IMPEXP void dassl_jac(double*, double*, double*, double*, double*, double*, int*);
90
91 //dasrt
92 typedef void(*dasrt_g_t)(int*, double*, double*, int*, double*, double*, int*);
93 extern void C2F(ddasrt)(dassl_f_t, int*, double*, double*, double*, double*, int*, double*, double*, int*, double*, int*, int*, int*, double*, int*, dassl_jac_t, dasrt_g_t, int*, int*);
94 DIFFERENTIAL_EQUATIONS_IMPEXP void dasrt_g(int*, double*, double*, int*, double*, double*, int*);
95
96 //daskr
97 typedef void(*daskr_psol_t)(int*, double*, double*, double*, double*, double*, double*, double*, double*, int*, double*, double*, int*, double*, int*);
98 typedef void(*daskr_pjac_t)(double*, int*, int*, double*, double*, double*, double*, double*, double*, double*, double*, double*, int*, int*, double*, int*);
99 extern void C2F(ddaskr)(dassl_f_t, int*, double*, double*, double*, double*, int*, double*, double*, int*, double*, int*, int*, int*, double*, int*, void*/*dassl_jac_t or daskr_pjac_t*/, daskr_psol_t, dasrt_g_t, int*, int*);
100 DIFFERENTIAL_EQUATIONS_IMPEXP void daskr_psol(int*, double*, double*, double*, double*, double*, double*, double*, double*, int*, double*, double*, int*, double*, int*);
101 DIFFERENTIAL_EQUATIONS_IMPEXP void daskr_pjac(double*, int*, int*, double*, double*, double*, double*, double*, double*, double*, double*, double*, int*, int*, double*, int*);
102