changa 3.5
Loading...
Searching...
No Matches
stiff.h
1#ifndef STIFF_HINCLUDED
2#define STIFF_HINCLUDED
3
6typedef struct StiffContextStructure {
7 double epsmin; /* relative accuracy criterion */
8 double sqreps; /* parameter to calculate initial timestep */
9 double epscl; /* 1/epsmin */
10 double epsmax; /* repeat timestep if correction is
11 greater than epsmax*epsmin*y(i) */
12 double dtmin; /* minimum timestep allowed */
13 int itermax; /* number of corrector iterations */
14 int nv; /* number of dependent variables */
15 double *ymin; /* minimum value for y */
16 double *y0; /* initial y for global timestep */
17 double *y1; /* predicted value */
18 double *q; /* scratch for creation rate */
19 double *d; /* scratch for destruction rate */
20 double *rtau; /* ratio of timestep to timescale */
21 double *ys; /* initial y for individual timesteps */
22 double *qs; /* initial production rate */
23 double *rtaus; /* initial rtau */
24 double *scrarray;
25 void *Data; /* Pointer to fixed data used by derivs */
26 void (*derivs)(double, const double [], double [], double [], void *Data);
27} STIFF;
28
29/*
30 * Integrator Step Headers
31 */
32
33STIFF *StiffInit(double eps, /* relative accuracy parameter */
34 int nv, /* number of dependent variables */
35 void *Data, /* pointer to extra data */
36 void (*derivs)(double t, const double yin[], /* input */
37 double yheat[], /* heating or creation
38 rate */
39 double ycool[], /* cooling or
40 destruction rate */
41 void *Data)
42 );
43
44void StiffFinalize( STIFF *s );
45void StiffStep(STIFF *s, double y[], double tstart, double htry) ;
46void StiffSetYMin(STIFF *s, const double *ymin);
47
48#ifndef TESTCHEMEQ
49/*
50 * Root Finder Header
51 */
52
53double RootFind(double (*func)(void *Data, double), void *Data,
54 double x1, double x2, double tol);
55
56#endif
57#endif
58
Context for stiff integration.
Definition stiff.h:6