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