1 |
#ifndef ASC_IDAANALYSE_H |
2 |
#define ASC_IDAANALYSE_H |
3 |
|
4 |
#include "integrator.h" |
5 |
|
6 |
IntegratorAnalyseFn integrator_ida_analyse; /* for new approach -- JP Jan 2007 */ |
7 |
|
8 |
/** |
9 |
Given a derivative variable, return the index of its corresponding differential |
10 |
variable in the y vector (and equivalently the var_sindex of the diff var) |
11 |
*/ |
12 |
int integrator_ida_diffindex(const IntegratorSystem *sys, const struct var_variable *deriv); |
13 |
|
14 |
/** |
15 |
Same as integrator_ida_diffindex but returns -1 instead of aborting |
16 |
*/ |
17 |
int integrator_ida_diffindex1(const IntegratorSystem *sys, const struct var_variable *deriv); |
18 |
|
19 |
/** |
20 |
Lots of helpful advice to help you mend your evil inclinations. |
21 |
*/ |
22 |
int integrator_ida_analyse_debug(const IntegratorSystem *sys,FILE *fp); |
23 |
|
24 |
/** |
25 |
Filter that will match all our 'y' variables (and only those) |
26 |
*/ |
27 |
const var_filter_t integrator_ida_filter_nonderiv; |
28 |
|
29 |
/* |
30 |
Filter that will match all our 'ydot' variables (and only those) |
31 |
*/ |
32 |
const var_filter_t integrator_ida_filter_deriv; |
33 |
|
34 |
/** |
35 |
Some filters that will generally be useful for IDA systems. |
36 |
|
37 |
A var can be non-incident. If it *is* non incident and we're going to |
38 |
keep it, it will have to have derivative that *is* incident, and that |
39 |
meets the following filter. |
40 |
|
41 |
If it doesn't have a valid derivative (eg the derivative is fixed, or |
42 |
the variable doesn't HAVE a derivative), we will mark the non-deriv |
43 |
var non-ACTIVE, so anyway it will end up meeting this filter after we've |
44 |
run integrator_ida_check_vars. |
45 |
*/ |
46 |
extern const var_filter_t integrator_ida_nonderiv; |
47 |
extern const var_filter_t integrator_ida_deriv; |
48 |
extern const rel_filter_t integrator_ida_rel; |
49 |
|
50 |
#endif |