comparison +noname/convergence.m @ 886:8894e9c49e40 feature/timesteppers

Merge with default for latest changes
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 15 Nov 2018 16:36:21 -0800
parents 3e1d8051e68e
children
comparison
equal deleted inserted replaced
816:b5e5b195da1e 886:8894e9c49e40
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, runtime] = convergence(filename, errorFunc, reference, method, order, m, T) 2 function [q, e, h, runtime] = convergence(filename, errorFunc, reference, name, 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 6
7 7
8 % 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.
9 for i = 1:length(m) 9 for i = 1:length(m)
10 key.method = method; 10 key.name = name;
11 key.order = order; 11 key.order = order;
12 key.m = m(i); 12 key.m = m(i);
13 key.T = T; 13 key.T = T;
14 14
15 entry = sf.get(key); 15 entry = sf.get(key);
28 % Get the solution to be compared 28 % Get the solution to be compared
29 v = v_repr.v; 29 v = v_repr.v;
30 30
31 % Get the reference solution vector 31 % Get the reference solution vector
32 if isa(reference,'function_handle'); 32 if isa(reference,'function_handle');
33 x = v_repr.x; 33 x = v_repr.grid.points();
34 v_ref = reference(x,T); 34 v_ref = reference(x,T);
35 else 35 else
36 % Downsample the reference solution 36 % Downsample the reference solution
37 x = v_repr.x; 37 v_ref = reference.grid.restrictFunc(reference.v, v_repr.grid);
38 x_ref = reference.x;
39
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
44 v_ref = reference.v(I);
45 end 38 end
46 39
47 e = errorFunc(discr,v, v_ref); 40 e = errorFunc(discr,v, v_ref);
48 h = discr.h; 41 h = discr.h;
49 end 42 end