annotate +noname/convergence.m @ 1031:2ef20d00b386 feature/advectionRV

For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 17 Jan 2019 10:25:06 +0100
parents 3e1d8051e68e
children
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');
221
3e1d8051e68e Fixed typo.
Jonatan Werpers <jonatan@werpers.com>
parents: 217
diff changeset
33 x = v_repr.grid.points();
32
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
217
fc07ebc49412 noname: Changed convergence to use grids in the representation of the solutions.
Jonatan Werpers <jonatan@werpers.com>
parents: 215
diff changeset
37 v_ref = reference.grid.restrictFunc(reference.v, v_repr.grid);
32
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 end
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 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
41 h = discr.h;
ddfb98209aa2 Fixed a bunch of problems regarding convergence and saving solutions
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
42 end