/[ascend]/trunk/models/set_intervals.tcl
ViewVC logotype

Contents of /trunk/models/set_intervals.tcl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Fri Oct 29 20:54:12 2004 UTC (19 years, 7 months ago) by aw0a
File MIME type: text/x-tcl
File size: 2375 byte(s)
Setting up web subdirectory in repository
1 # $Revision: 1.1 $
2 # $Date: 1997/09/26 16:40:22 $
3 # $Author: ballan $
4 # Interval list creation functions
5 # Copyright 1996 Benjamin Allan (ballan@edrc.cmu.edu)
6 #
7 # This file defines several functions for creating lists of
8 # numbers and passing them to the integration interface in
9 # ASCEND 4. These lists are the sample points at which we
10 # wish to record values during integration.
11 #
12 # We have functions for:
13 # - evenly spaced intervals starting at 0.0
14 # (set_int)
15 # - evenly spaced intervals starting at 0.0 with
16 # intermediate sample points at the 2nd order lagrange locations
17 # (set_lagrangeint)
18 #
19 # These functions should take a starting point instead of assuming 0 but don't.
20 #
21 # We want functions for:
22 # logarithmically spaced points, starting at some number and ending
23 # at some much larger number, for sampling growing functions.
24 #
25 # points spaced at multiple frequencies
26 #
27 # building lists of sample times
28 #
29 # taking a list, inserting a small initial sample to trick the
30 # integrator into thinking the problem stiff, and then generating
31 # whatever the desired sampling schedule is after that.
32 #
33 # Bugs:
34 # Poor design. There should be a suite of commands for building
35 # sample lists up, then a single command that takes such a list
36 # and sends it to the integrator.
37 #
38 # proc set_int {nsteps step units}
39 #-------------------------------------------------------------------------
40 # this proc sets intervals incrementally for blsode
41 #-------------------------------------------------------------------------
42 proc set_int {nsteps step units} {
43 set SetIntervals "integrate_set_samples $units";
44 for {set i 0} {$i < $nsteps} {incr i} {
45 lappend SetIntervals [expr $i*$step];
46 }
47 eval $SetIntervals;
48 }
49
50 #
51 # proc set_lagrangeint {nsteps step units}
52 #-------------------------------------------------------------------------
53 # this proc sets intervals incrementally for blsode
54 # adding the lagrange nodes within each regularly spaced step
55 #-------------------------------------------------------------------------
56 proc set_lagrangeint {nsteps step units} {
57 set SetIntervals "integrate_set_samples $units";
58 for {set i 0} {$i < $nsteps} {incr i} {
59 lappend SetIntervals [expr $i*$step];
60 lappend SetIntervals [expr $i*$step+0.21132486*$step];
61 lappend SetIntervals [expr $i*$step+0.7886751*$step];
62 }
63 eval $SetIntervals;
64 }
65

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22