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