Mercurial > repos > public > sbplib
annotate +noname/animate.m @ 1198:2924b3a9b921 feature/d2_compatible
Add OpSet for fully compatible D2Variable, created from regular D2Variable by replacing d1 by first row of D1. Formal reduction by one order of accuracy at the boundary point.
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Fri, 16 Aug 2019 14:30:28 -0700 |
parents | 082c7bf3192e |
children | c9147e05d228 |
rev | line source |
---|---|
604 | 1 % noname.animate(discretization, time_modifier, Tend, dirname, opt) |
0 | 2 % |
3 % Example: | |
134
08d7bb7c8ac4
Improved some comments in noname.animate
Jonatan Werpers <jonatan@werpers.com>
parents:
132
diff
changeset
|
4 % noname.animate(discr,timemodifier,tend) |
08d7bb7c8ac4
Improved some comments in noname.animate
Jonatan Werpers <jonatan@werpers.com>
parents:
132
diff
changeset
|
5 % noname.animate(discr,1, [tstart tend],'my_mov', opt) |
0 | 6 |
604 | 7 function animate(discretization, time_modifier, Tend, dirname, opt) |
305
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
8 default_arg('time_modifier', 1); |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
9 default_arg('Tend', Inf); |
305
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
10 default_arg('dirname', ''); |
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
11 |
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
12 optDefault.plotType = 'animation'; |
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
13 optDefault.time = []; |
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
14 |
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
15 default_struct('opt', optDefault); |
0 | 16 |
17 | |
57
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
18 if time_modifier < 0 |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
19 do_pause = true; |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
20 time_modifier = -time_modifier; |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
21 else |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
22 do_pause = false; |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
23 end |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
24 |
112
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
25 if isinf(time_modifier) |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
26 do_step = true; |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
27 else |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
28 do_step = false; |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
29 end |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
30 |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
31 makemovies = ~strcmp(dirname,''); |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
32 if makemovies |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
33 dirname = ['mov/' dirname]; |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
34 end |
0 | 35 |
36 fprintf('Animating: %s\n',discretization.name); | |
37 fprintf('order : %d\n',discretization.order); | |
38 fprintf('m : %d\n',size(discretization)); | |
39 | |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
40 |
305
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
41 ts = discretization.getTimestepper(opt.time); |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
42 |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
43 if numel(Tend) == 2 |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
44 Tstart = Tend(1); |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
45 Tend = Tend(2); |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
46 |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
47 |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
48 fprintf('Evolving to starting time: '); |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
49 ts.evolve(Tstart,'true'); |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
50 fprintf(' - Done\n'); |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
51 start_solution = discretization.getTimeSnapshot(ts); |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
52 else |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
53 start_solution = discretization.getTimeSnapshot(0); |
114
1035c190e8de
noname.animate: Updated documentation. Fixed bug with start time. Added pause before starting.
Jonatan Werpers <jonatan@werpers.com>
parents:
112
diff
changeset
|
54 Tstart = start_solution.t; |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
55 end |
0 | 56 |
305
dfa4455033db
Made opt more useful.
Jonatan Werpers <jonatan@werpers.com>
parents:
134
diff
changeset
|
57 [update, figure_handle] = discretization.setupPlot(opt.plotType); |
0 | 58 if makemovies |
59 save_frame = anim.setup_fig_mov(figure_handle,dirname); | |
60 end | |
61 | |
62 % Initialize loop | |
63 str = ''; | |
64 % Loop function | |
65 function next_t = G(next_t) | |
66 ts.evolve(next_t); | |
20
c7efff913935
Decoupled plotting and timesteppers. Added possibility of different plot_types. Added functions for printing and plotting solution file content.
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
67 sol = discretization.getTimeSnapshot(ts); |
c7efff913935
Decoupled plotting and timesteppers. Added possibility of different plot_types. Added functions for printing and plotting solution file content.
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
68 update(sol); |
69
f87003695677
Moved drawno out of plot update functions for huge performance boost.
Jonatan Werpers <jonatan@werpers.com>
parents:
57
diff
changeset
|
69 drawnow |
0 | 70 % waitforbuttonpress |
71 if makemovies | |
72 save_frame(); | |
73 end | |
57
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
74 |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
75 if do_pause |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
76 pause |
9a647dcccbdd
Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents:
53
diff
changeset
|
77 end |
0 | 78 end |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
79 update(start_solution); |
0 | 80 |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
81 fprintf('Using time step k = %.6f\n',ts.k); |
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
82 fprintf('System size: %d\n',size(discretization)); |
69
f87003695677
Moved drawno out of plot update functions for huge performance boost.
Jonatan Werpers <jonatan@werpers.com>
parents:
57
diff
changeset
|
83 % waitforbuttonpress |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
84 |
112
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
85 |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
86 if ~do_step |
114
1035c190e8de
noname.animate: Updated documentation. Fixed bug with start time. Added pause before starting.
Jonatan Werpers <jonatan@werpers.com>
parents:
112
diff
changeset
|
87 pause |
112
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
88 anim.animate(@G, Tstart, Tend, time_modifier); |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
89 else |
600
0da1c913a611
Add missing pause command in noname.Animate
Jonatan Werpers <jonatan@werpers.com>
parents:
305
diff
changeset
|
90 pause |
603
d196b7cdc626
Respect end time in step mode
Jonatan Werpers <jonatan@werpers.com>
parents:
600
diff
changeset
|
91 while ts.t < Tend |
112
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
92 ts.step(); |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
93 sol = discretization.getTimeSnapshot(ts); |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
94 update(sol); |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
95 drawnow |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
96 |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
97 if do_pause |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
98 pause |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
99 end |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
100 end |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
101 end |
80
14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents:
71
diff
changeset
|
102 |
71
1edee9e1ea41
Updated printing stuff for animation functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
69
diff
changeset
|
103 % str = util.replace_string(str,''); |
0 | 104 |
105 % if makemovies | |
106 % fprintf('Generating movies...\n') | |
107 % system(sprintf('bash make_movie.sh %s',dirname)); | |
108 % end | |
109 end |