Parent Directory
|
Revision Log
Merged changes from DAE branch (revisions 702 to 819) back into trunk. This adds the Integration API to the ASCEND solver (in base/generic). Also provides pre-alpha support for 'IDA' from the SUNDIALS suite, a DAE solver. Many other minor code clean-ups, including adoption of new 'ASC_NEW' and friends (to replace 'ascmalloc') Added some very sketchy stuff providing 'DIFF(...)' syntax, although it is anticipated that this will be removed.
| 1 | REQUIRE "ivpsystem.a4l"; |
| 2 | REQUIRE "atoms.a4l"; |
| 3 | |
| 4 | (* spring oscillation model. Intended to demonstrate second-order ODE *) |
| 5 | MODEL spring; |
| 6 | x IS_A distance; |
| 7 | v_x IS_A speed; |
| 8 | a_x IS_A acceleration; |
| 9 | |
| 10 | t IS_A time; |
| 11 | |
| 12 | (* equations of motion *) |
| 13 | F IS_A force; |
| 14 | k IS_A stiffness; |
| 15 | m IS_A mass; |
| 16 | F = -k*x; |
| 17 | F = m*a_x; |
| 18 | DIFF(v_x) = a_x; |
| 19 | METHODS |
| 20 | METHOD specify; |
| 21 | FIX m, k; |
| 22 | END specify; |
| 23 | |
| 24 | METHOD default_self; (* dynamic vals *) |
| 25 | x := 1 {m}; |
| 26 | v_x := 0 {m/s}; |
| 27 | a_x := -1 {m/s^2}; |
| 28 | END default_self; |
| 29 | |
| 30 | METHOD values; (* fixed vals *) |
| 31 | m := 1 {kg}; |
| 32 | k := 5 {N/kg}; |
| 33 | t := 0 {s}; |
| 34 | x := 1 {m}; |
| 35 | v := 0 {m/s}; |
| 36 | END values; |
| 37 | |
| 38 | METHOD set_ode; (* this is where the current implementation sux *) |
| 39 | x.ode_id := 1; x.ode_type := 1; |
| 40 | v_x.ode_id := 1; v_x.ode_type := 2; |
| 41 | a_x.ode_id := 1; a_x.ode_type := 3; |
| 42 | |
| 43 | t.ode_type :=-1; |
| 44 | END set_ode; |
| 45 | |
| 46 | METHOD set_obs; (* this sux also *) |
| 47 | x.obs_id := 1; |
| 48 | v_x.obs_id := 2; |
| 49 | a_x.obs_id := 3; |
| 50 | END set_obs; |
| 51 | |
| 52 | METHOD on_load; |
| 53 | RUN default_self; |
| 54 | RUN reset; |
| 55 | RUN specify; |
| 56 | RUN set_obs; |
| 57 | RUN set_ode; |
| 58 | END on_load; |
| 59 | |
| 60 | END spring; |
| Name | Value |
|---|---|
| svn:executable | * |
| john.pye@anu.edu.au | ViewVC Help |
| Powered by ViewVC 1.1.22 |