changeset 266:bfa130b7abf6 operator_remake

Added error message for too few grid points to all implementation files.
author Martin Almquist <martin.almquist@it.uu.se>
date Fri, 09 Sep 2016 11:03:13 +0200
parents 3e0432b3cb68
children f7ac3cd6eeaa
files +sbp/+implementations/d1_noneq_10.m +sbp/+implementations/d1_noneq_12.m +sbp/+implementations/d1_noneq_4.m +sbp/+implementations/d1_noneq_6.m +sbp/+implementations/d1_noneq_8.m +sbp/+implementations/d1_noneq_minimal_10.m +sbp/+implementations/d1_noneq_minimal_12.m +sbp/+implementations/d1_noneq_minimal_4.m +sbp/+implementations/d1_noneq_minimal_6.m +sbp/+implementations/d1_noneq_minimal_8.m +sbp/+implementations/d1_upwind_2.m +sbp/+implementations/d1_upwind_3.m +sbp/+implementations/d1_upwind_4.m +sbp/+implementations/d1_upwind_5.m +sbp/+implementations/d1_upwind_6.m +sbp/+implementations/d1_upwind_7.m +sbp/+implementations/d1_upwind_8.m +sbp/+implementations/d1_upwind_9.m +sbp/+implementations/d2_10.m +sbp/+implementations/d2_12.m +sbp/+implementations/d2_2.m +sbp/+implementations/d2_4.m +sbp/+implementations/d2_6.m +sbp/+implementations/d2_8.m +sbp/+implementations/d2_blocknorm_10.m +sbp/+implementations/d2_blocknorm_4.m +sbp/+implementations/d2_blocknorm_6.m +sbp/+implementations/d2_blocknorm_8.m +sbp/+implementations/d2_variable_4.m +sbp/+implementations/d4_4.m +sbp/+implementations/d4_6.m +sbp/+implementations/d4_compatible_2.m +sbp/+implementations/d4_compatible_4.m +sbp/+implementations/d4_compatible_6.m +sbp/+implementations/d4_compatible_halfvariable_2.m +sbp/+implementations/d4_compatible_halfvariable_4.m +sbp/+implementations/d4_compatible_halfvariable_6.m
diffstat 37 files changed, 185 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/+sbp/+implementations/d1_noneq_10.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_10.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<20)
+    error('Operator requires at least 20 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_12.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_12.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<24)
+    error('Operator requires at least 24 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<8)
+    error('Operator requires at least 8 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_6.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_6.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<12)
+    error('Operator requires at least 12 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_8.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_8.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<16)
+    error('Operator requires at least 16 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_minimal_10.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_minimal_10.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<16)
+    error('Operator requires at least 16 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_minimal_12.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_minimal_12.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<20)
+    error('Operator requires at least 20 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_minimal_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_minimal_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<6)
+    error('Operator requires at least 6 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_minimal_6.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_minimal_6.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<10)
+    error('Operator requires at least 10 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_noneq_minimal_8.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_noneq_minimal_8.m	Fri Sep 09 11:03:13 2016 +0200
@@ -6,6 +6,10 @@
     L = 1;
 end
 
+if(N<12)
+    error('Operator requires at least 12 grid points');
+end
+
 % BP: Number of boundary points
 % m:  Number of nonequidistant spacings
 % order: Accuracy of interior stencil
--- a/+sbp/+implementations/d1_upwind_2.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_upwind_2.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,9 @@
 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_2(m,h)
+    
+    if(m<4)
+        error('Operator requires at least 4 grid points');
+    end
+
     Hv=ones(m,1);
     Hv(1:2)=[0.1e1/0.4e1; 0.5e1/0.4e1;];
     Hv(m-1:m)=rot90(Hv(1:2),2);
--- a/+sbp/+implementations/d1_upwind_3.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_upwind_3.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,9 @@
 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_3(m,h)
+    
+    if(m<6)
+        error('Operator requires at least 6 grid points');
+    end
+
     Hv = ones(m,1);
     Hv(1:3) = [3/8; 7/6; 23/24];
     Hv(m-2:m) = rot90(Hv(1:3),2);
--- a/+sbp/+implementations/d1_upwind_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_upwind_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,5 +1,9 @@
 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_4(m,h)
 
+    if(m<8)
+        error('Operator requires at least 8 grid points');
+    end
+
     Hv=ones(m,1);
     Hv(1:4)=[49/144 61/48 41/48 149/144];
     Hv(m-3:m)=rot90(Hv(1:4),2);
--- a/+sbp/+implementations/d1_upwind_5.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_upwind_5.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,9 @@
 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_5(m,h)
+    
+    if(m<8)
+        error('Operator requires at least 8 grid points');
+    end
+
     Hv=ones(m,1);
     Hv(1:4)=[0.251e3/0.720e3; 0.299e3/0.240e3; 0.211e3/0.240e3; 0.739e3/0.720e3;];
     Hv(m-3:m)=rot90(Hv(1:4),2);
--- a/+sbp/+implementations/d1_upwind_6.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_upwind_6.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,9 @@
 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_6(m,h)
+    
+    if(m<12)
+        error('Operator requires at least 12 grid points');
+    end
+
     Hv = ones(m,1);
     Hv(1:6)=[0.13613e5/0.43200e5; 0.12049e5/0.8640e4 ; 0.535e3/0.864e3 ; 0.1079e4/0.864e3 ;  0.7841e4/0.8640e4 ; 0.43837e5/0.43200e5];
     Hv(m-5:m)=rot90(Hv(1:6),2);
--- a/+sbp/+implementations/d1_upwind_7.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_upwind_7.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,5 +1,10 @@
 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_7(m,h)
 
+    BP = 6;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     Hv=ones(m,1);
     Hv(1:6) = [0.19087e5/0.60480e5; 0.84199e5/0.60480e5; 0.18869e5/0.30240e5; 0.37621e5/0.30240e5; 0.55031e5/0.60480e5; 0.61343e5/0.60480e5; ];
     Hv(m-5:m)=rot90(Hv(1:6),2);
--- a/+sbp/+implementations/d1_upwind_8.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_upwind_8.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,10 @@
 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_8(m,h)
+    
+    BP = 8;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     Hv=ones(m,1);
     Hv(1:8) = [0.7489399e7/0.25401600e8; 0.5537831e7/0.3628800e7; 0.103373e6/0.403200e6; 0.261259e6/0.145152e6; 0.298231e6/0.725760e6; 0.515917e6/0.403200e6; 0.3349159e7/0.3628800e7; 0.25639991e8/0.25401600e8];
     Hv(m-7:m)=rot90(Hv(1:8),2);
--- a/+sbp/+implementations/d1_upwind_9.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d1_upwind_9.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,5 +1,10 @@
 function [H, HI, Dp, Dm, e_1, e_m] = d1_upwind_9(m,h)
 
+    BP = 8;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     Hv=ones(m,1);
     Hv(1:8) = [0.1070017e7/0.3628800e7; 0.5537111e7/0.3628800e7; 0.103613e6/0.403200e6; 0.261115e6/0.145152e6; 0.298951e6/0.725760e6; 0.515677e6/0.403200e6; 0.3349879e7/0.3628800e7; 0.3662753e7/0.3628800e7;];
     Hv(m-7:m)=rot90(Hv(1:8),2);
--- a/+sbp/+implementations/d2_10.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_10.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,5 +1,10 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_10(m,h)
 
+    BP = 11;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     H_U = [0.5261271563e10 / 0.18289152000e11 0 0 0 0 0 0 0 0 0 0; 0 0.2881040311e10 / 0.1828915200e10 0 0 0 0 0 0 0 0 0; 0 0 0.52175551e8 / 0.406425600e9 0 0 0 0 0 0 0 0; 0 0 0 0.11662993e8 / 0.6096384e7 0 0 0 0 0 0 0; 0 0 0 0 0.50124587e8 / 0.87091200e8 0 0 0 0 0 0; 0 0 0 0 0 0.50124587e8 / 0.72576000e8 0 0 0 0 0; 0 0 0 0 0 0 0.148333439e9 / 0.87091200e8 0 0 0 0; 0 0 0 0 0 0 0 0.63867949e8 / 0.152409600e9 0 0 0; 0 0 0 0 0 0 0 0 0.20608675e8 / 0.16257024e8 0 0; 0 0 0 0 0 0 0 0 0 0.1704508063e10 / 0.1828915200e10 0; 0 0 0 0 0 0 0 0 0 0 0.18425967263e11 / 0.18289152000e11;];
 
     H=eye(m);
--- a/+sbp/+implementations/d2_12.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_12.m	Fri Sep 09 11:03:13 2016 +0200
@@ -2,6 +2,11 @@
 
 % D2 = D1*D1, wide!
 
+BP = 15;
+if(m<2*BP)
+    error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+end
+
 H=diag(ones(m,1),0);
 H(1:15,1:15)=diag([2.880607858916397e-01,...
     1.560376162339675e+00,...
--- a/+sbp/+implementations/d2_2.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_2.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,10 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_2(m,h)
+    
+    BP = 1;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     e_1=zeros(m,1);e_1(1)=1;
     e_m=zeros(m,1);e_m(m)=1;
 
--- a/+sbp/+implementations/d2_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,10 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_4(m,h)
+    
+    BP = 4;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     e_1=zeros(m,1);e_1(1)=1;
     e_m=zeros(m,1);e_m(m)=1;
 
--- a/+sbp/+implementations/d2_6.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_6.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,10 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_6(m,h)
+    
+    BP = 6;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     e_1=zeros(m,1);e_1(1)=1;
     e_m=zeros(m,1);e_m(m)=1;
 
--- a/+sbp/+implementations/d2_8.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_8.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,11 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_8(m,h)
+    
+
+    BP = 8;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     H=diag(ones(m,1),0);
     H(1:8,1:8)=diag([1498139/5080320, 1107307/725760, 20761/80640, 1304999/725760, 299527/725760, 103097/80640, 670091/725760, 5127739/5080320]);
     H(m-7:m,m-7:m)=fliplr(flipud(diag([1498139/5080320, 1107307/725760, 20761/80640, 1304999/725760, 299527/725760, 103097/80640, 670091/725760, 5127739/5080320])));
--- a/+sbp/+implementations/d2_blocknorm_10.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_blocknorm_10.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,10 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_blocknorm_10(m,h)
+
+    BP = 9;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     H_U=[0.428081020217e12 / 0.2633637888000e13 0.779032713983e12 / 0.2633637888000e13 -0.1187642619571e13 / 0.2633637888000e13 0.1642279196603e13 / 0.2633637888000e13 -0.339289243121e12 / 0.526727577600e12 0.1261055176253e13 / 0.2633637888000e13 -0.658216413073e12 / 0.2633637888000e13 0.33968779823e11 / 0.376233984000e12 -0.764998e6 / 0.40186125e8; 0.779032713983e12 / 0.2633637888000e13 0.317907052061e12 / 0.164602368000e12 -0.1082918052397e13 / 0.658409472000e12 0.176473501369e12 / 0.82301184000e11 -0.521625191587e12 / 0.263363788800e12 0.200523313337e12 / 0.164602368000e12 -0.279496000009e12 / 0.658409472000e12 -0.832e3 / 0.40186125e8 0.129794760887e12 / 0.2633637888000e13; -0.1187642619571e13 / 0.2633637888000e13 -0.1082918052397e13 / 0.658409472000e12 0.1304108863849e13 / 0.329204736000e12 -0.533093695961e12 / 0.131681894400e12 0.213949854133e12 / 0.52672757760e11 -0.1883976009151e13 / 0.658409472000e12 0.51084128e8 / 0.40186125e8 -0.92763684343e11 / 0.658409472000e12 -0.59058717923e11 / 0.526727577600e12; 0.1642279196603e13 / 0.2633637888000e13 0.176473501369e12 / 0.82301184000e11 -0.533093695961e12 / 0.131681894400e12 0.217677310051e12 / 0.32920473600e11 -0.1509120465127e13 / 0.263363788800e12 0.170839232e9 / 0.40186125e8 -0.1404096707137e13 / 0.658409472000e12 0.11789520859e11 / 0.32920473600e11 0.85652315431e11 / 0.526727577600e12; -0.339289243121e12 / 0.526727577600e12 -0.521625191587e12 / 0.263363788800e12 0.213949854133e12 / 0.52672757760e11 -0.1509120465127e13 / 0.263363788800e12 0.21849109e8 / 0.3214890e7 -0.1134422468377e13 / 0.263363788800e12 0.602448430967e12 / 0.263363788800e12 -0.4910542309e10 / 0.10534551552e11 -0.83039945231e11 / 0.526727577600e12; 0.1261055176253e13 / 0.2633637888000e13 0.200523313337e12 / 0.164602368000e12 -0.1883976009151e13 / 0.658409472000e12 0.170839232e9 / 0.40186125e8 -0.1134422468377e13 / 0.263363788800e12 0.681437038097e12 / 0.164602368000e12 -0.1108257453763e13 / 0.658409472000e12 0.31631872327e11 / 0.82301184000e11 0.37820115539e11 / 0.376233984000e12; -0.658216413073e12 / 0.2633637888000e13 -0.279496000009e12 / 0.658409472000e12 0.51084128e8 / 0.40186125e8 -0.1404096707137e13 / 0.658409472000e12 0.602448430967e12 / 0.263363788800e12 -0.1108257453763e13 / 0.658409472000e12 0.623491124887e12 / 0.329204736000e12 -0.146643738067e12 / 0.658409472000e12 -0.98874149197e11 / 0.2633637888000e13; 0.33968779823e11 / 0.376233984000e12 -0.832e3 / 0.40186125e8 -0.92763684343e11 / 0.658409472000e12 0.11789520859e11 / 0.32920473600e11 -0.4910542309e10 / 0.10534551552e11 0.31631872327e11 / 0.82301184000e11 -0.146643738067e12 / 0.658409472000e12 0.174599973347e12 / 0.164602368000e12 0.4625165773e10 / 0.526727577600e12; -0.764998e6 / 0.40186125e8 0.129794760887e12 / 0.2633637888000e13 -0.59058717923e11 / 0.526727577600e12 0.85652315431e11 / 0.526727577600e12 -0.83039945231e11 / 0.526727577600e12 0.37820115539e11 / 0.376233984000e12 -0.98874149197e11 / 0.2633637888000e13 0.4625165773e10 / 0.526727577600e12 0.525286231387e12 / 0.526727577600e12;];
 
 
--- a/+sbp/+implementations/d2_blocknorm_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_blocknorm_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,10 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_blocknorm_4(m,h)
+    
+    BP = 4;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     H_U=[0.751e3 / 0.3456e4 0.661e3 / 0.3456e4 -0.515e3 / 0.3456e4 0.5e1 / 0.128e3; 0.661e3 / 0.3456e4 0.1405e4 / 0.1152e4 -0.3e1 / 0.128e3 0.29e2 / 0.3456e4; -0.515e3 / 0.3456e4 -0.3e1 / 0.128e3 0.989e3 / 0.1152e4 0.149e3 / 0.3456e4; 0.5e1 / 0.128e3 0.29e2 / 0.3456e4 0.149e3 / 0.3456e4 0.3407e4 / 0.3456e4;];
 
 
--- a/+sbp/+implementations/d2_blocknorm_6.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_blocknorm_6.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,10 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_blocknorm_6(m,h)
+    
+    BP = 6;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     H_U=[0.8489084265971e13 / 0.45952647390720e14 0.24636450459943e14 / 0.98469958694400e14 -0.2796787072531e13 / 0.12308744836800e14 0.2793599068823e13 / 0.14360202309600e14 -0.66344569931569e14 / 0.689289710860800e15 0.3784697867191e13 / 0.137857942172160e15; 0.24636450459943e14 / 0.98469958694400e14 0.27815394775103e14 / 0.19693991738880e14 -0.445601472229e12 / 0.861612138576e12 0.3896159037731e13 / 0.17232242771520e14 -0.866505556741e12 / 0.27571588434432e14 -0.25625418493681e14 / 0.689289710860800e15; -0.2796787072531e13 / 0.12308744836800e14 -0.445601472229e12 / 0.861612138576e12 0.31409405327129e14 / 0.17232242771520e14 -0.1595539040819e13 / 0.3446448554304e13 0.2651608170899e13 / 0.17232242771520e14 0.1434714163381e13 / 0.43080606928800e14; 0.2793599068823e13 / 0.14360202309600e14 0.3896159037731e13 / 0.17232242771520e14 -0.1595539040819e13 / 0.3446448554304e13 0.6984350202787e13 / 0.5744080923840e13 -0.62662743973e11 / 0.861612138576e12 -0.435331581619e12 / 0.12308744836800e14; -0.66344569931569e14 / 0.689289710860800e15 -0.866505556741e12 / 0.27571588434432e14 0.2651608170899e13 / 0.17232242771520e14 -0.62662743973e11 / 0.861612138576e12 0.20320736807807e14 / 0.19693991738880e14 0.1368363924007e13 / 0.98469958694400e14; 0.3784697867191e13 / 0.137857942172160e15 -0.25625418493681e14 / 0.689289710860800e15 0.1434714163381e13 / 0.43080606928800e14 -0.435331581619e12 / 0.12308744836800e14 0.1368363924007e13 / 0.98469958694400e14 0.27414523542149e14 / 0.27571588434432e14;];
 
 
--- a/+sbp/+implementations/d2_blocknorm_8.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_blocknorm_8.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,5 +1,11 @@
 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_blocknorm_8(m,h)
     % Eighth order
+    
+    BP = 8;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+    
     e_1=zeros(m,1);e_1(1)=1;
     e_m=zeros(m,1);e_m(m)=1;
 
--- a/+sbp/+implementations/d2_variable_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d2_variable_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -1,4 +1,10 @@
 function [H, HI, D1, D2, e_l, e_r, d_l, d_r] = d2_variable_4(m,h)
+    
+    BP = 4;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
     N = m;
 
     H = speye(N);
--- a/+sbp/+implementations/d4_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d4_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -27,6 +27,11 @@
 
     % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
     % vilket ?r n?dv?ndigt f?r stabilitet
+    
+    BP = 6;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
 
     H=diag(ones(m,1),0);
     H_U=[0.35809e5 / 0.100800e6 0 0 0 0 0; 0 0.13297e5 / 0.11200e5 0 0 0 0; 0 0 0.5701e4 / 0.5600e4 0 0 0; 0 0 0 0.45109e5 / 0.50400e5 0 0; 0 0 0 0 0.35191e5 / 0.33600e5 0; 0 0 0 0 0 0.33503e5 / 0.33600e5;];
--- a/+sbp/+implementations/d4_6.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d4_6.m	Fri Sep 09 11:03:13 2016 +0200
@@ -25,6 +25,11 @@
 
     % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
     % vilket ?r n?dv?ndigt f?r stabilitet
+    
+    BP = 8;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
 
     H=diag(ones(m,1),0);
     H_U=[0.318365e6 / 0.1016064e7 0 0 0 0 0 0 0; 0 0.145979e6 / 0.103680e6 0 0 0 0 0 0; 0 0 0.139177e6 / 0.241920e6 0 0 0 0 0; 0 0 0 0.964969e6 / 0.725760e6 0 0 0 0; 0 0 0 0 0.593477e6 / 0.725760e6 0 0 0; 0 0 0 0 0 0.52009e5 / 0.48384e5 0 0; 0 0 0 0 0 0 0.141893e6 / 0.145152e6 0; 0 0 0 0 0 0 0 0.1019713e7 / 0.1016064e7;];
--- a/+sbp/+implementations/d4_compatible_2.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d4_compatible_2.m	Fri Sep 09 11:03:13 2016 +0200
@@ -25,6 +25,11 @@
 
     % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
     % vilket ?r n?dv?ndigt f?r stabilitet
+    
+    BP = 1;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
 
     H=diag(ones(m,1),0);H(1,1)=1/2;H(m,m)=1/2;
 
--- a/+sbp/+implementations/d4_compatible_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d4_compatible_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -25,6 +25,11 @@
 
     % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
     % vilket ?r n?dv?ndigt f?r stabilitet
+    
+    BP = 6;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
 
     H=diag(ones(m,1),0);
     H_U=[0.3e1 / 0.11e2 0 0 0 0 0; 0 0.2125516311e10 / 0.1311004640e10 0 0 0 0; 0 0 0.278735189e9 / 0.1966506960e10 0 0 0; 0 0 0 0.285925927e9 / 0.163875580e9 0 0; 0 0 0 0 0.1284335339e10 / 0.1966506960e10 0; 0 0 0 0 0 0.4194024163e10 / 0.3933013920e10;];
--- a/+sbp/+implementations/d4_compatible_6.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d4_compatible_6.m	Fri Sep 09 11:03:13 2016 +0200
@@ -25,6 +25,11 @@
 
     % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
     % vilket ?r n?dv?ndigt f?r stabilitet
+    
+    BP = 8;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
 
     H=diag(ones(m,1),0);
     H_U=[0.7493827e7 / 0.25401600e8 0 0 0 0 0 0 0; 0 0.5534051e7 / 0.3628800e7 0 0 0 0 0 0; 0 0 0.104561e6 / 0.403200e6 0 0 0 0 0; 0 0 0 0.260503e6 / 0.145152e6 0 0 0 0; 0 0 0 0 0.43237e5 / 0.103680e6 0 0 0; 0 0 0 0 0 0.514081e6 / 0.403200e6 0 0; 0 0 0 0 0 0 0.3356179e7 / 0.3628800e7 0; 0 0 0 0 0 0 0 0.25631027e8 / 0.25401600e8;];
--- a/+sbp/+implementations/d4_compatible_halfvariable_2.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d4_compatible_halfvariable_2.m	Fri Sep 09 11:03:13 2016 +0200
@@ -26,6 +26,11 @@
 
     % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
     % vilket ?r n?dv?ndigt f?r stabilitet
+    
+    BP = 1;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
 
     H=diag(ones(m,1),0);H(1,1)=1/2;H(m,m)=1/2;
 
--- a/+sbp/+implementations/d4_compatible_halfvariable_4.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d4_compatible_halfvariable_4.m	Fri Sep 09 11:03:13 2016 +0200
@@ -12,6 +12,11 @@
     %m=20; %problemstorlek
     %h=1/(m-1);
     %h=1;
+    
+    BP = 4;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
 
     c=ones(m,1);
 
--- a/+sbp/+implementations/d4_compatible_halfvariable_6.m	Fri Sep 09 10:41:31 2016 +0200
+++ b/+sbp/+implementations/d4_compatible_halfvariable_6.m	Fri Sep 09 11:03:13 2016 +0200
@@ -25,6 +25,11 @@
     % with the unknown stored as c(1), c(2), ..., c_m
     % x=1:h:m*h;x=x';
     % c=x.^0;
+    
+    BP = 6;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
 
 
     H=diag(ones(m,1),0);