Mercurial > repos > public > sbplib
diff +noname/animate.m @ 80:14bf01b7a068
Changed noname.animate and noname.Discretization to use a opt struct for timestepper options.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 25 Nov 2015 18:33:49 +0100 |
parents | 1edee9e1ea41 |
children | b7f40a0c6476 |
line wrap: on
line diff
--- a/+noname/animate.m Wed Nov 25 18:32:29 2015 +0100 +++ b/+noname/animate.m Wed Nov 25 18:33:49 2015 +0100 @@ -4,15 +4,12 @@ % animate('',discr,tend) % animate('my_mov',discr,tend,time_mod,time_method) -function hand = animate(dirname,discretization,Tend, time_modifier,time_method) - makemovies = ~strcmp(dirname,''); - if makemovies - dirname = ['mov/' dirname]; - end +function hand = animate(discretization, time_modifier, Tend, dirname, opt) + default_arg('time_modifier',1); + default_arg('Tend', Inf); + default_arg('dirname',''); + default_arg('opt', []); - default_arg('Tend',Inf); - default_arg('time_modifier',1); - default_arg('time_method',[]); if time_modifier < 0 do_pause = true; @@ -21,24 +18,37 @@ do_pause = false; end + makemovies = ~strcmp(dirname,''); + if makemovies + dirname = ['mov/' dirname]; + end fprintf('Animating: %s\n',discretization.name); - fprintf('Tend : %.2f\n',Tend); fprintf('order : %d\n',discretization.order); fprintf('m : %d\n',size(discretization)); - fprintf('Creating time discretization'); - tic - ts = discretization.getTimestepper(time_method); - fprintf(' - done %fs\n', toc()) + + ts = discretization.getTimestepper(opt); + + if numel(Tend) == 2 + Tstart = Tend(1); + Tend = Tend(2); + + + fprintf('Evolving to starting time: '); + ts.evolve(Tstart,'true'); + fprintf(' - Done\n'); + start_solution = discretization.getTimeSnapshot(ts); + else + Tstart = 0; + start_solution = discretization.getTimeSnapshot(0); + end [update, figure_handle] = discretization.setupPlot('animation'); - if makemovies save_frame = anim.setup_fig_mov(figure_handle,dirname); end - % Initialize loop str = ''; % Loop function @@ -57,15 +67,15 @@ if do_pause pause end - end - sol = discretization.getTimeSnapshot(0); - update(sol); + update(start_solution); - fprintf('Using time step k = %.6f\n',ts.k) - fprintf('System size: %d\n',size(discretization)) + fprintf('Using time step k = %.6f\n',ts.k); + fprintf('System size: %d\n',size(discretization)); % waitforbuttonpress - anim.animate(@G,0,Tend,time_modifier) + + anim.animate(@G, Tstart, Tend, time_modifier); + % str = util.replace_string(str,''); % if makemovies