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