comparison +noname/convergence.m @ 36:c6eb3af205c0

Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 06 Oct 2015 09:51:52 +0200
parents ddfb98209aa2
children 7bb2ef637142
comparison
equal deleted inserted replaced
35:61367018c46f 36:c6eb3af205c0
1 % Reference is either a key or a function handle 1 % Reference is either a key or a function handle
2 function [q, e, h] = convergence(filename, errorFunc, reference, method, order, m, T) 2 function [q, e, h, runtime] = convergence(filename, errorFunc, reference, method, order, m, T)
3 default_arg('errorFunc', @scheme.error1d); 3 default_arg('errorFunc', @scheme.error1d);
4 4
5 sf = SolutionFile(filename); 5 sf = SolutionFile(filename);
6
7 analytical_ref = isa(reference,'function_handle');
8 if ~analytical_ref
9 reference = sf.get(reference);
10 end
11 6
12 7
13 % Generate convergence, error, and efficiency plots for each search key with more than one entry. 8 % Generate convergence, error, and efficiency plots for each search key with more than one entry.
14 for i = 1:length(m) 9 for i = 1:length(m)
15 key.method = method; 10 key.method = method;
18 key.T = T; 13 key.T = T;
19 14
20 entry = sf.get(key); 15 entry = sf.get(key);
21 16
22 [e(i),h(i)] = errorForEntry(key, entry, errorFunc, reference,T); 17 [e(i),h(i)] = errorForEntry(key, entry, errorFunc, reference,T);
18 runtime(i) = entry.runtime;
23 19
24 end 20 end
25 q = convergence(e,h); 21 q = convergence(e,h);
26 end 22 end
27 23
40 % Downsample the reference solution 36 % Downsample the reference solution
41 x = v_repr.x; 37 x = v_repr.x;
42 x_ref = reference.x; 38 x_ref = reference.x;
43 39
44 [~,I] = ismember(x,x_ref,'rows'); 40 [~,I] = ismember(x,x_ref,'rows');
41 if any(I == 0)
42 error('Solution and reference solution seem to be on different grids.');
43 end
45 v_ref = reference.v(I); 44 v_ref = reference.v(I);
46 end 45 end
47 46
48 e = errorFunc(discr,v, v_ref); 47 e = errorFunc(discr,v, v_ref);
49 h = discr.h; 48 h = discr.h;