diff +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
line wrap: on
line diff
--- a/+sbp/D1Nonequidistant.m	Wed Jul 01 11:15:57 2020 +0200
+++ b/+sbp/D1Nonequidistant.m	Wed Jul 01 13:43:32 2020 +0200
@@ -27,50 +27,50 @@
             switch option
 
                 case {'Accurate','accurate','A'}
-
+                    [x,h] = sbp.util.accurateBoundaryOptimizedGrid(L,m,order);
                     if order == 4
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_4(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_4(m,h);
                     elseif order == 6
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_6(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_6(m,h);
                     elseif order == 8
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_8(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_8(m,h);
                     elseif order == 10
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_10(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_10(m,h);
                     elseif order == 12
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_12(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_12(m,h);
                     else
                         error('Invalid operator order %d.',order);
                     end
 
                 case {'Minimal','minimal','M'}
-
+                    [x,h] = sbp.util.minimalBoundaryOptimizedGrid(L,m,order);
                     if order == 4
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_minimal_4(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_minimal_4(m,h);
                     elseif order == 6
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_minimal_6(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_minimal_6(m,h);
                     elseif order == 8
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_minimal_8(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_minimal_8(m,h);
                     elseif order == 10
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_minimal_10(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_minimal_10(m,h);
                     elseif order == 12
-                        [obj.D1,obj.H,obj.x,obj.h] = ...
-                            sbp.implementations.d1_noneq_minimal_12(m,L);
+                        [obj.D1,obj.H] = ...
+                            sbp.implementations.d1_noneq_minimal_12(m,h);
                     else
                         error('Invalid operator order %d.',order);
                     end
 
             end
-
-            obj.x = obj.x + x_l;
+            obj.h = h;
+            obj.x = x + x_l;
 
             obj.e_l = sparse(m,1);
             obj.e_r = sparse(m,1);