Mercurial > repos > public > sbplib
annotate +noname/animate.m @ 577:e45c9b56d50d feature/grids
Add an Empty grid class
The need turned up for the flexural code when we may or may not have a grid for the open water and want to plot that solution.
In case there is no open water we need an empty grid to plot the empty gridfunction against to avoid errors.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 07 Sep 2017 09:16:12 +0200 |
parents | dfa4455033db |
children | 0da1c913a611 |
rev | line source |
---|---|
134
08d7bb7c8ac4
Improved some comments in noname.animate
Jonatan Werpers <jonatan@werpers.com>
parents:
132
diff
changeset
|
1 % hand = 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 |
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
|
7 function hand = 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 |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
90 while true |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
91 ts.step(); |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
92 sol = discretization.getTimeSnapshot(ts); |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
93 update(sol); |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
94 drawnow |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
95 |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
96 if do_pause |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
97 pause |
b7f40a0c6476
Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents:
80
diff
changeset
|
98 end |
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 |
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
|
101 |
71
1edee9e1ea41
Updated printing stuff for animation functions.
Jonatan Werpers <jonatan@werpers.com>
parents:
69
diff
changeset
|
102 % str = util.replace_string(str,''); |
0 | 103 |
104 % if makemovies | |
105 % fprintf('Generating movies...\n') | |
106 % system(sprintf('bash make_movie.sh %s',dirname)); | |
107 % end | |
108 end |