1 |
johnpye |
1239 |
#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 |
johnpye |
1309 |
/** |
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 |
johnpye |
1239 |
int integrator_ida_diffindex(const IntegratorSystem *sys, const struct var_variable *deriv); |
13 |
|
|
|
14 |
|
|
int integrator_ida_analyse_debug(const IntegratorSystem *sys,FILE *fp); |
15 |
|
|
|
16 |
johnpye |
1240 |
/** |
17 |
|
|
Filter that will match all our 'y' variables (and only those) |
18 |
|
|
*/ |
19 |
|
|
const var_filter_t integrator_ida_filter_nonderiv; |
20 |
|
|
|
21 |
|
|
/* |
22 |
|
|
Filter that will match all our 'ydot' variables (and only those) |
23 |
|
|
*/ |
24 |
|
|
const var_filter_t integrator_ida_filter_deriv; |
25 |
|
|
|
26 |
johnpye |
1309 |
/** |
27 |
|
|
Some filters that will generally be useful for IDA systems. |
28 |
|
|
|
29 |
|
|
A var can be non-incident. If it *is* non incident and we're going to |
30 |
|
|
keep it, it will have to have derivative that *is* incident, and that |
31 |
|
|
meets the following filter. |
32 |
|
|
|
33 |
|
|
If it doesn't have a valid derivative (eg the derivative is fixed, or |
34 |
|
|
the variable doesn't HAVE a derivative), we will mark the non-deriv |
35 |
|
|
var non-ACTIVE, so anyway it will end up meeting this filter after we've |
36 |
|
|
run integrator_ida_check_vars. |
37 |
|
|
*/ |
38 |
|
|
extern const var_filter_t integrator_ida_nonderiv; |
39 |
|
|
extern const var_filter_t integrator_ida_deriv; |
40 |
|
|
extern const rel_filter_t integrator_ida_rel; |
41 |
|
|
|
42 |
johnpye |
1239 |
#endif |