Mercurial > repos > public > sbplib
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 |
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 |