Mercurial > repos > public > sbplib
comparison +sbp/D1Nonequidistant.m @ 1287:38653d26225c feature/boundary_optimized_grids
Make accurate/minimalBoundaryOptimizedGrid take the domain limits as input
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 01 Jul 2020 14:54:21 +0200 |
parents | 4cb627c7fb90 |
children | 8978521b0f06 |
comparison
equal
deleted
inserted
replaced
1286:4cb627c7fb90 | 1287:38653d26225c |
---|---|
17 | 17 |
18 default_arg('option','Accurate'); | 18 default_arg('option','Accurate'); |
19 % 'Accurate' operators are optimized for accuracy | 19 % 'Accurate' operators are optimized for accuracy |
20 % 'Minimal' operators have the smallest possible boundary | 20 % 'Minimal' operators have the smallest possible boundary |
21 % closure | 21 % closure |
22 | |
23 x_l = lim{1}; | |
24 x_r = lim{2}; | |
25 L = x_r-x_l; | |
26 | |
27 switch option | 22 switch option |
28 | 23 |
29 case {'Accurate','accurate','A'} | 24 case {'Accurate','accurate','A'} |
30 [x,h] = sbp.util.accurateBoundaryOptimizedGrid(L,m,order); | 25 [x,h] = sbp.util.accurateBoundaryOptimizedGrid(lim,m,order); |
31 if order == 4 | 26 if order == 4 |
32 [obj.D1,obj.H] = ... | 27 [obj.D1,obj.H] = ... |
33 sbp.implementations.d1_noneq_4(m,h); | 28 sbp.implementations.d1_noneq_4(m,h); |
34 elseif order == 6 | 29 elseif order == 6 |
35 [obj.D1,obj.H] = ... | 30 [obj.D1,obj.H] = ... |
46 else | 41 else |
47 error('Invalid operator order %d.',order); | 42 error('Invalid operator order %d.',order); |
48 end | 43 end |
49 | 44 |
50 case {'Minimal','minimal','M'} | 45 case {'Minimal','minimal','M'} |
51 [x,h] = sbp.util.minimalBoundaryOptimizedGrid(L,m,order); | 46 [x,h] = sbp.util.minimalBoundaryOptimizedGrid(lim,m,order); |
52 if order == 4 | 47 if order == 4 |
53 [obj.D1,obj.H] = ... | 48 [obj.D1,obj.H] = ... |
54 sbp.implementations.d1_noneq_minimal_4(m,h); | 49 sbp.implementations.d1_noneq_minimal_4(m,h); |
55 elseif order == 6 | 50 elseif order == 6 |
56 [obj.D1,obj.H] = ... | 51 [obj.D1,obj.H] = ... |
68 error('Invalid operator order %d.',order); | 63 error('Invalid operator order %d.',order); |
69 end | 64 end |
70 | 65 |
71 end | 66 end |
72 obj.h = h; | 67 obj.h = h; |
73 obj.x = x + x_l; | 68 obj.x = x; |
74 | 69 |
75 obj.e_l = sparse(m,1); | 70 obj.e_l = sparse(m,1); |
76 obj.e_r = sparse(m,1); | 71 obj.e_r = sparse(m,1); |
77 obj.e_l(1) = 1; | 72 obj.e_l(1) = 1; |
78 obj.e_r(m) = 1; | 73 obj.e_r(m) = 1; |