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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
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
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
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
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
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
103
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
104 % if makemovies
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105 % fprintf('Generating movies...\n')
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106 % system(sprintf('bash make_movie.sh %s',dirname));
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
107 % end
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
108 end