annotate +noname/animate.m @ 1301:8978521b0f06 default

Fix incorrect package name.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Wed, 08 Jul 2020 19:11:04 +0200
parents 082c7bf3192e
children c9147e05d228
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
604
082c7bf3192e Remove unused output
Jonatan Werpers <jonatan@werpers.com>
parents: 603
diff changeset
1 % noname.animate(discretization, time_modifier, Tend, dirname, opt)
0
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:
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6
604
082c7bf3192e Remove unused output
Jonatan Werpers <jonatan@werpers.com>
parents: 603
diff changeset
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 fprintf('Animating: %s\n',discretization.name);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 fprintf('order : %d\n',discretization.order);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 fprintf('m : %d\n',size(discretization));
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
58 if makemovies
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 save_frame = anim.setup_fig_mov(figure_handle,dirname);
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 % Initialize loop
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63 str = '';
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 % Loop function
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 function next_t = G(next_t)
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70 % waitforbuttonpress
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
71 if makemovies
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 save_frame();
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
104
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105 % if makemovies
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106 % fprintf('Generating movies...\n')
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
107 % system(sprintf('bash make_movie.sh %s',dirname));
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
108 % end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109 end