comparison +sbp/D1Nonequidistant.m @ 1286:4cb627c7fb90 feature/boundary_optimized_grids

Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Wed, 01 Jul 2020 13:43:32 +0200
parents bc78157c89cb
children 38653d26225c
comparison
equal deleted inserted replaced
1285:6b68f939d023 1286:4cb627c7fb90
25 L = x_r-x_l; 25 L = x_r-x_l;
26 26
27 switch option 27 switch option
28 28
29 case {'Accurate','accurate','A'} 29 case {'Accurate','accurate','A'}
30 30 [x,h] = sbp.util.accurateBoundaryOptimizedGrid(L,m,order);
31 if order == 4 31 if order == 4
32 [obj.D1,obj.H,obj.x,obj.h] = ... 32 [obj.D1,obj.H] = ...
33 sbp.implementations.d1_noneq_4(m,L); 33 sbp.implementations.d1_noneq_4(m,h);
34 elseif order == 6 34 elseif order == 6
35 [obj.D1,obj.H,obj.x,obj.h] = ... 35 [obj.D1,obj.H] = ...
36 sbp.implementations.d1_noneq_6(m,L); 36 sbp.implementations.d1_noneq_6(m,h);
37 elseif order == 8 37 elseif order == 8
38 [obj.D1,obj.H,obj.x,obj.h] = ... 38 [obj.D1,obj.H] = ...
39 sbp.implementations.d1_noneq_8(m,L); 39 sbp.implementations.d1_noneq_8(m,h);
40 elseif order == 10 40 elseif order == 10
41 [obj.D1,obj.H,obj.x,obj.h] = ... 41 [obj.D1,obj.H] = ...
42 sbp.implementations.d1_noneq_10(m,L); 42 sbp.implementations.d1_noneq_10(m,h);
43 elseif order == 12 43 elseif order == 12
44 [obj.D1,obj.H,obj.x,obj.h] = ... 44 [obj.D1,obj.H] = ...
45 sbp.implementations.d1_noneq_12(m,L); 45 sbp.implementations.d1_noneq_12(m,h);
46 else 46 else
47 error('Invalid operator order %d.',order); 47 error('Invalid operator order %d.',order);
48 end 48 end
49 49
50 case {'Minimal','minimal','M'} 50 case {'Minimal','minimal','M'}
51 51 [x,h] = sbp.util.minimalBoundaryOptimizedGrid(L,m,order);
52 if order == 4 52 if order == 4
53 [obj.D1,obj.H,obj.x,obj.h] = ... 53 [obj.D1,obj.H] = ...
54 sbp.implementations.d1_noneq_minimal_4(m,L); 54 sbp.implementations.d1_noneq_minimal_4(m,h);
55 elseif order == 6 55 elseif order == 6
56 [obj.D1,obj.H,obj.x,obj.h] = ... 56 [obj.D1,obj.H] = ...
57 sbp.implementations.d1_noneq_minimal_6(m,L); 57 sbp.implementations.d1_noneq_minimal_6(m,h);
58 elseif order == 8 58 elseif order == 8
59 [obj.D1,obj.H,obj.x,obj.h] = ... 59 [obj.D1,obj.H] = ...
60 sbp.implementations.d1_noneq_minimal_8(m,L); 60 sbp.implementations.d1_noneq_minimal_8(m,h);
61 elseif order == 10 61 elseif order == 10
62 [obj.D1,obj.H,obj.x,obj.h] = ... 62 [obj.D1,obj.H] = ...
63 sbp.implementations.d1_noneq_minimal_10(m,L); 63 sbp.implementations.d1_noneq_minimal_10(m,h);
64 elseif order == 12 64 elseif order == 12
65 [obj.D1,obj.H,obj.x,obj.h] = ... 65 [obj.D1,obj.H] = ...
66 sbp.implementations.d1_noneq_minimal_12(m,L); 66 sbp.implementations.d1_noneq_minimal_12(m,h);
67 else 67 else
68 error('Invalid operator order %d.',order); 68 error('Invalid operator order %d.',order);
69 end 69 end
70 70
71 end 71 end
72 72 obj.h = h;
73 obj.x = obj.x + x_l; 73 obj.x = x + x_l;
74 74
75 obj.e_l = sparse(m,1); 75 obj.e_l = sparse(m,1);
76 obj.e_r = sparse(m,1); 76 obj.e_r = sparse(m,1);
77 obj.e_l(1) = 1; 77 obj.e_l(1) = 1;
78 obj.e_r(m) = 1; 78 obj.e_r(m) = 1;