Parent Directory
|
Revision Log
Implemented ATOLVECT, ATOL, RTOL parameters for the IDA integrator.
1 | REQUIRE "ivpsystem.a4l"; |
2 | REQUIRE "atoms.a4l"; |
3 | |
4 | IMPORT "johnpye/extpy/extpy"; |
5 | IMPORT "johnpye/solve"; |
6 | |
7 | (* ASCEND model based on the 'idadenx.c' example problem that accomanpanies IDA *) |
8 | MODEL idadenx; |
9 | y1, y2, y3 IS_A factor; |
10 | dy1_dt IS_A factor; |
11 | dy2_dt IS_A factor; |
12 | |
13 | eq1: dy1_dt = -0.04 * y1 + 1e4 * y2*y3; |
14 | eq2: dy2_dt = +0.04 * y1 - 1e4 * y2*y3 - 3e7*y2^2; |
15 | eq3: 0 = y1 + y2 + y3 - 1; |
16 | |
17 | t IS_A time; |
18 | METHODS |
19 | |
20 | METHOD values; (* initial values *) |
21 | y1 := 1; |
22 | y2 := 0; |
23 | y3 := 0; |
24 | t := 0 {s}; |
25 | END values; |
26 | |
27 | METHOD specify; |
28 | FIX y1, y2; |
29 | END specify; |
30 | |
31 | METHOD ode_init; |
32 | FREE y1, y2; |
33 | t.ode_type := -1; t := 0 {s}; |
34 | dy1_dt.ode_id := 1; dy1_dt.ode_type := 2; |
35 | y1.ode_id := 1; y1.ode_type := 1; |
36 | |
37 | dy2_dt.ode_id := 2; dy2_dt.ode_type := 2; |
38 | y2.ode_id := 2; y2.ode_type := 1; |
39 | |
40 | y3.ode_id := 3; |
41 | |
42 | t.obs_id := 1; |
43 | y1.obs_id := 2; |
44 | y2.obs_id := 3; |
45 | y3.obs_id := 4; |
46 | dy1_dt.obs_id := 5; |
47 | dy2_dt.obs_id := 6; |
48 | |
49 | y1.ode_atol := 1e-8; |
50 | y2.ode_atol := 1e-14; |
51 | y3.ode_atol := 1e-6; |
52 | END ode_init; |
53 | |
54 | METHOD on_load; |
55 | RUN reset; RUN values; |
56 | EXTERNAL solve(SELF); |
57 | RUN ode_init; |
58 | END on_load; |
59 | |
60 | END idadenx; |
john.pye@anu.edu.au | ViewVC Help |
Powered by ViewVC 1.1.22 |