| 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 |