Mercurial > repos > public > sbplib
view +noname/animate.m @ 1198:2924b3a9b921 feature/d2_compatible
Add OpSet for fully compatible D2Variable, created from regular D2Variable by replacing d1 by first row of D1. Formal reduction by one order of accuracy at the boundary point.
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Fri, 16 Aug 2019 14:30:28 -0700 |
parents | 082c7bf3192e |
children | c9147e05d228 |
line wrap: on
line source
% noname.animate(discretization, time_modifier, Tend, dirname, opt) % % Example: % noname.animate(discr,timemodifier,tend) % noname.animate(discr,1, [tstart tend],'my_mov', opt) function animate(discretization, time_modifier, Tend, dirname, opt) default_arg('time_modifier', 1); default_arg('Tend', Inf); default_arg('dirname', ''); optDefault.plotType = 'animation'; optDefault.time = []; default_struct('opt', optDefault); if time_modifier < 0 do_pause = true; time_modifier = -time_modifier; else do_pause = false; end if isinf(time_modifier) do_step = true; else do_step = false; end makemovies = ~strcmp(dirname,''); if makemovies dirname = ['mov/' dirname]; end fprintf('Animating: %s\n',discretization.name); fprintf('order : %d\n',discretization.order); fprintf('m : %d\n',size(discretization)); ts = discretization.getTimestepper(opt.time); 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 start_solution = discretization.getTimeSnapshot(0); Tstart = start_solution.t; end [update, figure_handle] = discretization.setupPlot(opt.plotType); if makemovies save_frame = anim.setup_fig_mov(figure_handle,dirname); end % Initialize loop str = ''; % Loop function function next_t = G(next_t) ts.evolve(next_t); sol = discretization.getTimeSnapshot(ts); update(sol); drawnow % waitforbuttonpress if makemovies save_frame(); end if do_pause pause end end update(start_solution); fprintf('Using time step k = %.6f\n',ts.k); fprintf('System size: %d\n',size(discretization)); % waitforbuttonpress if ~do_step pause anim.animate(@G, Tstart, Tend, time_modifier); else pause while ts.t < Tend ts.step(); sol = discretization.getTimeSnapshot(ts); update(sol); drawnow if do_pause pause end end end % str = util.replace_string(str,''); % if makemovies % fprintf('Generating movies...\n') % system(sprintf('bash make_movie.sh %s',dirname)); % end end