annotate +noname/convergence.m @ 215:7bb2ef637142 feature/beams

Fixed some typos in noname.
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 22 Jun 2016 14:42:49 +0200
parents c6eb3af205c0
children fc07ebc49412
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 % Reference is either a key or a function handle
215
7bb2ef637142 Fixed some typos in noname.
Jonatan Werpers <jonatan@werpers.com>
parents: 36
diff changeset
2 function [q, e, h, runtime] = convergence(filename, errorFunc, reference, name, order, m, T)
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 default_arg('errorFunc', @scheme.error1d);
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 sf = SolutionFile(filename);
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8 % Generate convergence, error, and efficiency plots for each search key with more than one entry.
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 for i = 1:length(m)
215
7bb2ef637142 Fixed some typos in noname.
Jonatan Werpers <jonatan@werpers.com>
parents: 36
diff changeset
10 key.name = name;
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 key.order = order;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 key.m = m(i);
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 key.T = T;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 entry = sf.get(key);
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 [e(i),h(i)] = errorForEntry(key, entry, errorFunc, reference,T);
36
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
18 runtime(i) = entry.runtime;
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 end
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21 q = convergence(e,h);
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 end
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 function [e, h] = errorForEntry(key,entry, errorFunc, reference,T)
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 v_repr = entry.repr;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 discr = entry.discr;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 % Get the solution to be compared
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 v = v_repr.v;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 % Get the reference solution vector
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 if isa(reference,'function_handle');
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 x = v_repr.x;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34 v_ref = reference(x,T);
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 else
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 % Downsample the reference solution
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37 x = v_repr.x;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 x_ref = reference.x;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 [~,I] = ismember(x,x_ref,'rows');
36
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
41 if any(I == 0)
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
42 error('Solution and reference solution seem to be on different grids.');
c6eb3af205c0 Better error handeling in noname.convergence. Better handeling of T=0 in noname.calculateSolution
Jonatan Werpers <jonatan@werpers.com>
parents: 32
diff changeset
43 end
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44 v_ref = reference.v(I);
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
45 end
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
46
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
47 e = errorFunc(discr,v, v_ref);
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
48 h = discr.h;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
49 end