annotate +noname/animate.m @ 112:b7f40a0c6476

Added ability to see every timestep.
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 09 Dec 2015 15:49:25 +0100
parents 14bf01b7a068
children 1035c190e8de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 % animate(dirname,discretization,Tend, time_modifier,time_method)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 %
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 % Example:
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 % animate('',discr,tend)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 % animate('my_mov',discr,tend,time_mod,time_method)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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)
14bf01b7a068 Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents: 71
diff changeset
8 default_arg('time_modifier',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
9 default_arg('Tend', Inf);
14bf01b7a068 Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents: 71
diff changeset
10 default_arg('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
11 default_arg('opt', []);
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13
57
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
14 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
15 do_pause = true;
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
16 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
17 else
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
18 do_pause = false;
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
19 end
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
20
112
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
21 if isinf(time_modifier)
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
22 do_step = true;
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
23 else
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
24 do_step = false;
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
25 end
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
26
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
27 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
28 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
29 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
30 end
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 fprintf('Animating: %s\n',discretization.name);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 fprintf('order : %d\n',discretization.order);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34 fprintf('m : %d\n',size(discretization));
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35
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
36
14bf01b7a068 Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents: 71
diff changeset
37 ts = discretization.getTimestepper(opt);
14bf01b7a068 Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents: 71
diff changeset
38
14bf01b7a068 Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
Jonatan Werpers <jonatan@werpers.com>
parents: 71
diff changeset
39 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
40 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
41 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
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
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 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
45 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
46 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
47 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
48 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
49 Tstart = 0;
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 start_solution = discretization.getTimeSnapshot(0);
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 end
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
52
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
53 [update, figure_handle] = discretization.setupPlot('animation');
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
54 if makemovies
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
55 save_frame = anim.setup_fig_mov(figure_handle,dirname);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
56 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
57
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 % Initialize loop
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 str = '';
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 % Loop function
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 function next_t = G(next_t)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 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
63 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
64 update(sol);
69
f87003695677 Moved drawno out of plot update functions for huge performance boost.
Jonatan Werpers <jonatan@werpers.com>
parents: 57
diff changeset
65 drawnow
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 % waitforbuttonpress
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
67 if makemovies
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68 save_frame();
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70 % pause(0.1)
57
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
71 str = util.replace_string(str,'t = %.5f',ts.t);
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
72
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
73 if do_pause
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
74 pause
9a647dcccbdd Added pausing option to noname.animate. Added characteristic bc to Euler1d.
Jonatan Werpers <jonatan@werpers.com>
parents: 53
diff changeset
75 end
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
76 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
77 update(start_solution);
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78
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 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
80 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
81 % 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
82
112
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
83
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
84 if ~do_step
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
85 anim.animate(@G, Tstart, Tend, time_modifier);
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
86 else
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
87 while true
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
88 ts.step();
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
89 sol = discretization.getTimeSnapshot(ts);
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
90 update(sol);
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
91 drawnow
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
92
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
93 if do_pause
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
94 pause
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
95 end
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
96 end
b7f40a0c6476 Added ability to see every timestep.
Jonatan Werpers <jonatan@werpers.com>
parents: 80
diff changeset
97 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
98
71
1edee9e1ea41 Updated printing stuff for animation functions.
Jonatan Werpers <jonatan@werpers.com>
parents: 69
diff changeset
99 % str = util.replace_string(str,'');
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
100
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
101 % if makemovies
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
102 % fprintf('Generating movies...\n')
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
103 % system(sprintf('bash make_movie.sh %s',dirname));
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
104 % end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105 end