changeset 284:dae8c3a56f5e

Merged in operator_remake (pull request #2) Operator remake
author Jonatan Werpers <jonatan.werpers@it.uu.se>
date Mon, 12 Sep 2016 12:53:02 +0200
parents 18c023aaf3f7 (current diff) 728fdc431212 (diff)
children 70184f6c6cb5
files +sbp/BlockNorm.m +sbp/Higher.m +sbp/HigherCompatible.m +sbp/HigherCompatibleVariable.m +sbp/HigherPeriodic.m +sbp/Ordinary.m +sbp/Upwind.m +sbp/Variable.m +sbp/blocknorm10.m +sbp/blocknorm4.m +sbp/blocknorm6.m +sbp/blocknorm8.m +sbp/higher2_compatible_halfvariable.m +sbp/higher4.m +sbp/higher4_compatible_halfvariable.m +sbp/higher6.m +sbp/higher6_compatible_halfvariable.m +sbp/higher_compatible2.m +sbp/higher_compatible4.m +sbp/higher_compatible6.m +sbp/ordinary10.m +sbp/ordinary2.m +sbp/ordinary4.m +sbp/ordinary6.m +sbp/ordinary8.m +sbp/upwind2.m +sbp/upwind3.m +sbp/upwind4.m +sbp/upwind5.m +sbp/upwind6.m +sbp/upwind7.m +sbp/upwind8.m +sbp/upwind9.m +sbp/variable4.m
diffstat 80 files changed, 5152 insertions(+), 2618 deletions(-) [+]
line wrap: on
line diff
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_10.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_10.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,252 @@
+function [D1,H,x,h] = d1_noneq_10(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 10;
+m = 5;
+order = 10;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  3.5902433622052e-01;
+x2 =  1.1436659188355e+00;
+x3 =  2.2144895894456e+00;
+x4 =  3.3682742337736e+00;
+x5 =  4.4309689056870e+00;
+x6 =  5.4309689056870e+00;
+x7 =  6.4309689056870e+00;
+x8 =  7.4309689056870e+00;
+x9 =  8.4309689056870e+00;
+x10 =  9.4309689056870e+00;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  1.0000000000000e-01;
+P1 =  5.8980851260667e-01;
+P2 =  9.5666820955973e-01;
+P3 =  1.1500297411596e+00;
+P4 =  1.1232986993248e+00;
+P5 =  1.0123020150951e+00;
+P6 =  9.9877122702527e-01;
+P7 =  1.0000873322761e+00;
+P8 =  1.0000045540888e+00;
+P9 =  9.9999861455083e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.7548747038002e-01;
+Q0_2 = -2.6691978151546e-01;
+Q0_3 =  1.4438714982130e-01;
+Q0_4 = -7.7273673750760e-02;
+Q0_5 =  2.5570078343005e-02;
+Q0_6 =  4.2808774693299e-03;
+Q0_7 = -8.2902108933389e-03;
+Q0_8 =  3.2031176427908e-03;
+Q0_9 = -4.4502749689556e-04;
+Q0_10 =  0.0000000000000e+00;
+Q0_11 =  0.0000000000000e+00;
+Q0_12 =  0.0000000000000e+00;
+Q0_13 =  0.0000000000000e+00;
+Q0_14 =  0.0000000000000e+00;
+Q1_0 = -6.7548747038002e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  9.5146052715180e-01;
+Q1_3 = -4.2442349882626e-01;
+Q1_4 =  2.1538865145190e-01;
+Q1_5 = -7.1939778160350e-02;
+Q1_6 = -8.2539187832840e-03;
+Q1_7 =  1.9930661669090e-02;
+Q1_8 = -7.7433256989613e-03;
+Q1_9 =  1.0681515760869e-03;
+Q1_10 =  0.0000000000000e+00;
+Q1_11 =  0.0000000000000e+00;
+Q1_12 =  0.0000000000000e+00;
+Q1_13 =  0.0000000000000e+00;
+Q1_14 =  0.0000000000000e+00;
+Q2_0 =  2.6691978151546e-01;
+Q2_1 = -9.5146052715180e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  9.6073770842387e-01;
+Q2_4 = -3.9378595264609e-01;
+Q2_5 =  1.3302097358959e-01;
+Q2_6 =  8.1200458151489e-05;
+Q2_7 = -2.3849770528789e-02;
+Q2_8 =  9.6600442856829e-03;
+Q2_9 = -1.3234579460680e-03;
+Q2_10 =  0.0000000000000e+00;
+Q2_11 =  0.0000000000000e+00;
+Q2_12 =  0.0000000000000e+00;
+Q2_13 =  0.0000000000000e+00;
+Q2_14 =  0.0000000000000e+00;
+Q3_0 = -1.4438714982130e-01;
+Q3_1 =  4.2442349882626e-01;
+Q3_2 = -9.6073770842387e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  9.1551097634196e-01;
+Q3_5 = -2.8541713079648e-01;
+Q3_6 =  4.1398809121293e-02;
+Q3_7 =  1.7256059167927e-02;
+Q3_8 = -9.4349194803610e-03;
+Q3_9 =  1.3875650645663e-03;
+Q3_10 =  0.0000000000000e+00;
+Q3_11 =  0.0000000000000e+00;
+Q3_12 =  0.0000000000000e+00;
+Q3_13 =  0.0000000000000e+00;
+Q3_14 =  0.0000000000000e+00;
+Q4_0 =  7.7273673750760e-02;
+Q4_1 = -2.1538865145190e-01;
+Q4_2 =  3.9378595264609e-01;
+Q4_3 = -9.1551097634196e-01;
+Q4_4 =  0.0000000000000e+00;
+Q4_5 =  8.3519401865051e-01;
+Q4_6 = -2.0586492924974e-01;
+Q4_7 =  3.1230261235901e-02;
+Q4_8 = -2.0969453466651e-04;
+Q4_9 = -5.0965470499782e-04;
+Q4_10 =  0.0000000000000e+00;
+Q4_11 =  0.0000000000000e+00;
+Q4_12 =  0.0000000000000e+00;
+Q4_13 =  0.0000000000000e+00;
+Q4_14 =  0.0000000000000e+00;
+Q5_0 = -2.5570078343005e-02;
+Q5_1 =  7.1939778160350e-02;
+Q5_2 = -1.3302097358959e-01;
+Q5_3 =  2.8541713079648e-01;
+Q5_4 = -8.3519401865051e-01;
+Q5_5 =  0.0000000000000e+00;
+Q5_6 =  8.1046389580138e-01;
+Q5_7 = -2.1879194972141e-01;
+Q5_8 =  5.2977237804899e-02;
+Q5_9 = -9.0146730522360e-03;
+Q5_10 =  7.9365079365079e-04;
+Q5_11 =  0.0000000000000e+00;
+Q5_12 =  0.0000000000000e+00;
+Q5_13 =  0.0000000000000e+00;
+Q5_14 =  0.0000000000000e+00;
+Q6_0 = -4.2808774693299e-03;
+Q6_1 =  8.2539187832840e-03;
+Q6_2 = -8.1200458151489e-05;
+Q6_3 = -4.1398809121293e-02;
+Q6_4 =  2.0586492924974e-01;
+Q6_5 = -8.1046389580138e-01;
+Q6_6 =  0.0000000000000e+00;
+Q6_7 =  8.2787884456005e-01;
+Q6_8 = -2.3582460382545e-01;
+Q6_9 =  5.9178678209520e-02;
+Q6_10 = -9.9206349206349e-03;
+Q6_11 =  7.9365079365079e-04;
+Q6_12 =  0.0000000000000e+00;
+Q6_13 =  0.0000000000000e+00;
+Q6_14 =  0.0000000000000e+00;
+Q7_0 =  8.2902108933389e-03;
+Q7_1 = -1.9930661669090e-02;
+Q7_2 =  2.3849770528789e-02;
+Q7_3 = -1.7256059167927e-02;
+Q7_4 = -3.1230261235901e-02;
+Q7_5 =  2.1879194972141e-01;
+Q7_6 = -8.2787884456005e-01;
+Q7_7 =  0.0000000000000e+00;
+Q7_8 =  8.3301028859275e-01;
+Q7_9 = -2.3804321850015e-01;
+Q7_10 =  5.9523809523809e-02;
+Q7_11 = -9.9206349206349e-03;
+Q7_12 =  7.9365079365079e-04;
+Q7_13 =  0.0000000000000e+00;
+Q7_14 =  0.0000000000000e+00;
+Q8_0 = -3.2031176427908e-03;
+Q8_1 =  7.7433256989613e-03;
+Q8_2 = -9.6600442856829e-03;
+Q8_3 =  9.4349194803610e-03;
+Q8_4 =  2.0969453466651e-04;
+Q8_5 = -5.2977237804899e-02;
+Q8_6 =  2.3582460382545e-01;
+Q8_7 = -8.3301028859275e-01;
+Q8_8 =  0.0000000000000e+00;
+Q8_9 =  8.3333655748509e-01;
+Q8_10 = -2.3809523809524e-01;
+Q8_11 =  5.9523809523809e-02;
+Q8_12 = -9.9206349206349e-03;
+Q8_13 =  7.9365079365079e-04;
+Q8_14 =  0.0000000000000e+00;
+Q9_0 =  4.4502749689556e-04;
+Q9_1 = -1.0681515760869e-03;
+Q9_2 =  1.3234579460680e-03;
+Q9_3 = -1.3875650645663e-03;
+Q9_4 =  5.0965470499782e-04;
+Q9_5 =  9.0146730522360e-03;
+Q9_6 = -5.9178678209520e-02;
+Q9_7 =  2.3804321850015e-01;
+Q9_8 = -8.3333655748509e-01;
+Q9_9 =  0.0000000000000e+00;
+Q9_10 =  8.3333333333333e-01;
+Q9_11 = -2.3809523809524e-01;
+Q9_12 =  5.9523809523809e-02;
+Q9_13 = -9.9206349206349e-03;
+Q9_14 =  7.9365079365079e-04;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_12.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_12.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,358 @@
+function [D1,H,x,h] = d1_noneq_12(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 12;
+m = 6;
+order = 12;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  3.6098032343909e-01;
+x2 =  1.1634317168086e+00;
+x3 =  2.2975905356987e+00;
+x4 =  3.6057529790929e+00;
+x5 =  4.8918275675510e+00;
+x6 =  6.0000000000000e+00;
+x7 =  7.0000000000000e+00;
+x8 =  8.0000000000000e+00;
+x9 =  9.0000000000000e+00;
+x10 =  1.0000000000000e+01;
+x11 =  1.1000000000000e+01;
+x12 =  1.2000000000000e+01;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  1.0000000000011e-01;
+P1 =  5.9616216757547e-01;
+P2 =  9.9065699844442e-01;
+P3 =  1.2512548713913e+00;
+P4 =  1.3316678989403e+00;
+P5 =  1.2093375037721e+00;
+P6 =  1.0236491595704e+00;
+P7 =  9.9685258909811e-01;
+P8 =  1.0004766563923e+00;
+P9 =  9.9993617879146e-01;
+P10 =  1.0000063122914e+00;
+P11 =  9.9999966373260e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.7597560728423e-01;
+Q0_2 = -2.6859785384416e-01;
+Q0_3 =  1.4850302678903e-01;
+Q0_4 = -8.7976689586154e-02;
+Q0_5 =  4.1833336322613e-02;
+Q0_6 = -2.2216684976993e-03;
+Q0_7 = -1.5910034062022e-02;
+Q0_8 =  1.1296706376589e-02;
+Q0_9 = -3.1823678285130e-03;
+Q0_10 =  2.4843594063649e-04;
+Q0_11 =  3.1501105449828e-05;
+Q0_12 =  0.0000000000000e+00;
+Q0_13 =  0.0000000000000e+00;
+Q0_14 =  0.0000000000000e+00;
+Q0_15 =  0.0000000000000e+00;
+Q0_16 =  0.0000000000000e+00;
+Q0_17 =  0.0000000000000e+00;
+Q1_0 = -6.7597560728423e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  9.5424013647146e-01;
+Q1_3 = -4.3389334603464e-01;
+Q1_4 =  2.4285669347653e-01;
+Q1_5 = -1.1443465137214e-01;
+Q1_6 =  8.5942765682435e-03;
+Q1_7 =  4.0290424215772e-02;
+Q1_8 = -2.9396383714543e-02;
+Q1_9 =  8.5601827834256e-03;
+Q1_10 = -7.8128092862319e-04;
+Q1_11 = -6.0444181254875e-05;
+Q1_12 =  0.0000000000000e+00;
+Q1_13 =  0.0000000000000e+00;
+Q1_14 =  0.0000000000000e+00;
+Q1_15 =  0.0000000000000e+00;
+Q1_16 =  0.0000000000000e+00;
+Q1_17 =  0.0000000000000e+00;
+Q2_0 =  2.6859785384416e-01;
+Q2_1 = -9.5424013647146e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  9.7065114311923e-01;
+Q2_4 = -4.3205328628292e-01;
+Q2_5 =  1.9549970932735e-01;
+Q2_6 = -2.4406885385172e-02;
+Q2_7 = -5.5737279079895e-02;
+Q2_8 =  4.3772338637753e-02;
+Q2_9 = -1.3727655130726e-02;
+Q2_10 =  1.6271304373071e-03;
+Q2_11 =  1.7066984372933e-05;
+Q2_12 =  0.0000000000000e+00;
+Q2_13 =  0.0000000000000e+00;
+Q2_14 =  0.0000000000000e+00;
+Q2_15 =  0.0000000000000e+00;
+Q2_16 =  0.0000000000000e+00;
+Q2_17 =  0.0000000000000e+00;
+Q3_0 = -1.4850302678903e-01;
+Q3_1 =  4.3389334603464e-01;
+Q3_2 = -9.7065114311923e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  9.5375878629204e-01;
+Q3_5 = -3.6113954384951e-01;
+Q3_6 =  6.9749289223875e-02;
+Q3_7 =  6.5161366516465e-02;
+Q3_8 = -6.0325702283960e-02;
+Q3_9 =  2.1188913621662e-02;
+Q3_10 = -3.2632650250470e-03;
+Q3_11 =  1.3097937809499e-04;
+Q3_12 =  0.0000000000000e+00;
+Q3_13 =  0.0000000000000e+00;
+Q3_14 =  0.0000000000000e+00;
+Q3_15 =  0.0000000000000e+00;
+Q3_16 =  0.0000000000000e+00;
+Q3_17 =  0.0000000000000e+00;
+Q4_0 =  8.7976689586154e-02;
+Q4_1 = -2.4285669347653e-01;
+Q4_2 =  4.3205328628292e-01;
+Q4_3 = -9.5375878629204e-01;
+Q4_4 =  0.0000000000000e+00;
+Q4_5 =  8.8676146394834e-01;
+Q4_6 = -2.1292503103800e-01;
+Q4_7 = -4.6037018833218e-02;
+Q4_8 =  7.4338719466734e-02;
+Q4_9 = -3.1217656663809e-02;
+Q4_10 =  6.1239492854797e-03;
+Q4_11 = -4.5892226603067e-04;
+Q4_12 =  0.0000000000000e+00;
+Q4_13 =  0.0000000000000e+00;
+Q4_14 =  0.0000000000000e+00;
+Q4_15 =  0.0000000000000e+00;
+Q4_16 =  0.0000000000000e+00;
+Q4_17 =  0.0000000000000e+00;
+Q5_0 = -4.1833336322613e-02;
+Q5_1 =  1.1443465137214e-01;
+Q5_2 = -1.9549970932735e-01;
+Q5_3 =  3.6113954384951e-01;
+Q5_4 = -8.8676146394834e-01;
+Q5_5 =  0.0000000000000e+00;
+Q5_6 =  7.7461223007026e-01;
+Q5_7 = -1.0609547334165e-01;
+Q5_8 = -4.4853791547749e-02;
+Q5_9 =  3.2436468405486e-02;
+Q5_10 = -8.4387621360184e-03;
+Q5_11 =  8.5964292632428e-04;
+Q5_12 =  0.0000000000000e+00;
+Q5_13 =  0.0000000000000e+00;
+Q5_14 =  0.0000000000000e+00;
+Q5_15 =  0.0000000000000e+00;
+Q5_16 =  0.0000000000000e+00;
+Q5_17 =  0.0000000000000e+00;
+Q6_0 =  2.2216684976993e-03;
+Q6_1 = -8.5942765682435e-03;
+Q6_2 =  2.4406885385172e-02;
+Q6_3 = -6.9749289223875e-02;
+Q6_4 =  2.1292503103800e-01;
+Q6_5 = -7.7461223007026e-01;
+Q6_6 =  0.0000000000000e+00;
+Q6_7 =  7.4758103262966e-01;
+Q6_8 = -1.5730779067906e-01;
+Q6_9 =  2.6517620342970e-02;
+Q6_10 = -4.3175367549700e-03;
+Q6_11 =  1.1092605832824e-03;
+Q6_12 = -1.8037518037522e-04;
+Q6_13 =  0.0000000000000e+00;
+Q6_14 =  0.0000000000000e+00;
+Q6_15 =  0.0000000000000e+00;
+Q6_16 =  0.0000000000000e+00;
+Q6_17 =  0.0000000000000e+00;
+Q7_0 =  1.5910034062022e-02;
+Q7_1 = -4.0290424215772e-02;
+Q7_2 =  5.5737279079895e-02;
+Q7_3 = -6.5161366516465e-02;
+Q7_4 =  4.6037018833218e-02;
+Q7_5 =  1.0609547334165e-01;
+Q7_6 = -7.4758103262966e-01;
+Q7_7 =  0.0000000000000e+00;
+Q7_8 =  8.0975719267918e-01;
+Q7_9 = -2.3568822398349e-01;
+Q7_10 =  6.9373143801571e-02;
+Q7_11 = -1.6606121869177e-02;
+Q7_12 =  2.5974025974031e-03;
+Q7_13 = -1.8037518037522e-04;
+Q7_14 =  0.0000000000000e+00;
+Q7_15 =  0.0000000000000e+00;
+Q7_16 =  0.0000000000000e+00;
+Q7_17 =  0.0000000000000e+00;
+Q8_0 = -1.1296706376589e-02;
+Q8_1 =  2.9396383714543e-02;
+Q8_2 = -4.3772338637753e-02;
+Q8_3 =  6.0325702283960e-02;
+Q8_4 = -7.4338719466734e-02;
+Q8_5 =  4.4853791547749e-02;
+Q8_6 =  1.5730779067906e-01;
+Q8_7 = -8.0975719267918e-01;
+Q8_8 =  0.0000000000000e+00;
+Q8_9 =  8.4765775072084e-01;
+Q8_10 = -2.6369594097148e-01;
+Q8_11 =  7.8759594625702e-02;
+Q8_12 = -1.7857142857146e-02;
+Q8_13 =  2.5974025974031e-03;
+Q8_14 = -1.8037518037522e-04;
+Q8_15 =  0.0000000000000e+00;
+Q8_16 =  0.0000000000000e+00;
+Q8_17 =  0.0000000000000e+00;
+Q9_0 =  3.1823678285130e-03;
+Q9_1 = -8.5601827834256e-03;
+Q9_2 =  1.3727655130726e-02;
+Q9_3 = -2.1188913621662e-02;
+Q9_4 =  3.1217656663809e-02;
+Q9_5 = -3.2436468405486e-02;
+Q9_6 = -2.6517620342970e-02;
+Q9_7 =  2.3568822398349e-01;
+Q9_8 = -8.4765775072084e-01;
+Q9_9 =  0.0000000000000e+00;
+Q9_10 =  8.5631774953989e-01;
+Q9_11 = -2.6769768119702e-01;
+Q9_12 =  7.9365079365093e-02;
+Q9_13 = -1.7857142857146e-02;
+Q9_14 =  2.5974025974031e-03;
+Q9_15 = -1.8037518037522e-04;
+Q9_16 =  0.0000000000000e+00;
+Q9_17 =  0.0000000000000e+00;
+Q10_0 = -2.4843594063649e-04;
+Q10_0 = -2.4843594063649e-04;
+Q10_1 =  7.8128092862319e-04;
+Q10_1 =  7.8128092862319e-04;
+Q10_2 = -1.6271304373071e-03;
+Q10_2 = -1.6271304373071e-03;
+Q10_3 =  3.2632650250470e-03;
+Q10_3 =  3.2632650250470e-03;
+Q10_4 = -6.1239492854797e-03;
+Q10_4 = -6.1239492854797e-03;
+Q10_5 =  8.4387621360184e-03;
+Q10_5 =  8.4387621360184e-03;
+Q10_6 =  4.3175367549700e-03;
+Q10_6 =  4.3175367549700e-03;
+Q10_7 = -6.9373143801571e-02;
+Q10_7 = -6.9373143801571e-02;
+Q10_8 =  2.6369594097148e-01;
+Q10_8 =  2.6369594097148e-01;
+Q10_9 = -8.5631774953989e-01;
+Q10_9 = -8.5631774953989e-01;
+Q10_10 =  0.0000000000000e+00;
+Q10_10 =  0.0000000000000e+00;
+Q10_11 =  8.5712580212095e-01;
+Q10_11 =  8.5712580212095e-01;
+Q10_12 = -2.6785714285718e-01;
+Q10_12 = -2.6785714285718e-01;
+Q10_13 =  7.9365079365093e-02;
+Q10_13 =  7.9365079365093e-02;
+Q10_14 = -1.7857142857146e-02;
+Q10_14 = -1.7857142857146e-02;
+Q10_15 =  2.5974025974031e-03;
+Q10_15 =  2.5974025974031e-03;
+Q10_16 = -1.8037518037522e-04;
+Q10_16 = -1.8037518037522e-04;
+Q10_17 =  0.0000000000000e+00;
+Q10_17 =  0.0000000000000e+00;
+Q11_0 = -3.1501105449828e-05;
+Q11_0 = -3.1501105449828e-05;
+Q11_1 =  6.0444181254875e-05;
+Q11_1 =  6.0444181254875e-05;
+Q11_2 = -1.7066984372933e-05;
+Q11_2 = -1.7066984372933e-05;
+Q11_3 = -1.3097937809499e-04;
+Q11_3 = -1.3097937809499e-04;
+Q11_4 =  4.5892226603067e-04;
+Q11_4 =  4.5892226603067e-04;
+Q11_5 = -8.5964292632428e-04;
+Q11_5 = -8.5964292632428e-04;
+Q11_6 = -1.1092605832824e-03;
+Q11_6 = -1.1092605832824e-03;
+Q11_7 =  1.6606121869177e-02;
+Q11_7 =  1.6606121869177e-02;
+Q11_8 = -7.8759594625702e-02;
+Q11_8 = -7.8759594625702e-02;
+Q11_9 =  2.6769768119702e-01;
+Q11_9 =  2.6769768119702e-01;
+Q11_10 = -8.5712580212095e-01;
+Q11_10 = -8.5712580212095e-01;
+Q11_11 =  0.0000000000000e+00;
+Q11_11 =  0.0000000000000e+00;
+Q11_12 =  8.5714285714289e-01;
+Q11_12 =  8.5714285714289e-01;
+Q11_13 = -2.6785714285718e-01;
+Q11_13 = -2.6785714285718e-01;
+Q11_14 =  7.9365079365093e-02;
+Q11_14 =  7.9365079365093e-02;
+Q11_15 = -1.7857142857146e-02;
+Q11_15 = -1.7857142857146e-02;
+Q11_16 =  2.5974025974031e-03;
+Q11_16 =  2.5974025974031e-03;
+Q11_17 = -1.8037518037522e-04;
+Q11_17 = -1.8037518037522e-04;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,114 @@
+function [D1,H,x,h] = d1_noneq_4(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 4;
+m = 2;
+order = 4;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  6.8764546205559e-01;
+x2 =  1.8022115125776e+00;
+x3 =  2.8022115125776e+00;
+x4 =  3.8022115125776e+00;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  2.1259737557798e-01;
+P1 =  1.0260290400758e+00;
+P2 =  1.0775123588954e+00;
+P3 =  9.8607273802835e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.5605279837843e-01;
+Q0_2 = -1.9875859409017e-01;
+Q0_3 =  4.2705795711740e-02;
+Q0_4 =  0.0000000000000e+00;
+Q0_5 =  0.0000000000000e+00;
+Q1_0 = -6.5605279837843e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  8.1236966439895e-01;
+Q1_3 = -1.5631686602052e-01;
+Q1_4 =  0.0000000000000e+00;
+Q1_5 =  0.0000000000000e+00;
+Q2_0 =  1.9875859409017e-01;
+Q2_1 = -8.1236966439895e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  6.9694440364211e-01;
+Q2_4 = -8.3333333333333e-02;
+Q2_5 =  0.0000000000000e+00;
+Q3_0 = -4.2705795711740e-02;
+Q3_1 =  1.5631686602052e-01;
+Q3_2 = -6.9694440364211e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  6.6666666666667e-01;
+Q3_5 = -8.3333333333333e-02;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_6.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_6.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,148 @@
+function [D1,H,x,h] = d1_noneq_6(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 6;
+m = 3;
+order = 6;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  4.4090263368623e-01;
+x2 =  1.2855984345073e+00;
+x3 =  2.2638953951239e+00;
+x4 =  3.2638953951239e+00;
+x5 =  4.2638953951239e+00;
+x6 =  5.2638953951239e+00;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  1.3030223027124e-01;
+P1 =  6.8851501587715e-01;
+P2 =  9.5166202564389e-01;
+P3 =  9.9103890475697e-01;
+P4 =  1.0028757074552e+00;
+P5 =  9.9950151111941e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.6042071945824e-01;
+Q0_2 = -2.2104152954203e-01;
+Q0_3 =  7.6243679810093e-02;
+Q0_4 = -1.7298206716724e-02;
+Q0_5 =  1.6753369904210e-03;
+Q0_6 =  0.0000000000000e+00;
+Q0_7 =  0.0000000000000e+00;
+Q0_8 =  0.0000000000000e+00;
+Q1_0 = -6.6042071945824e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  8.7352798702787e-01;
+Q1_3 = -2.6581719253084e-01;
+Q1_4 =  5.7458484948314e-02;
+Q1_5 = -4.7485599871040e-03;
+Q1_6 =  0.0000000000000e+00;
+Q1_7 =  0.0000000000000e+00;
+Q1_8 =  0.0000000000000e+00;
+Q2_0 =  2.2104152954203e-01;
+Q2_1 = -8.7352798702787e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  8.1707122038457e-01;
+Q2_4 = -1.8881125503769e-01;
+Q2_5 =  2.4226492138960e-02;
+Q2_6 =  0.0000000000000e+00;
+Q2_7 =  0.0000000000000e+00;
+Q2_8 =  0.0000000000000e+00;
+Q3_0 = -7.6243679810093e-02;
+Q3_1 =  2.6581719253084e-01;
+Q3_2 = -8.1707122038457e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  7.6798636652679e-01;
+Q3_5 = -1.5715532552963e-01;
+Q3_6 =  1.6666666666667e-02;
+Q3_7 =  0.0000000000000e+00;
+Q3_8 =  0.0000000000000e+00;
+Q4_0 =  1.7298206716724e-02;
+Q4_1 = -5.7458484948314e-02;
+Q4_2 =  1.8881125503769e-01;
+Q4_3 = -7.6798636652679e-01;
+Q4_4 =  0.0000000000000e+00;
+Q4_5 =  7.5266872305402e-01;
+Q4_6 = -1.5000000000000e-01;
+Q4_7 =  1.6666666666667e-02;
+Q4_8 =  0.0000000000000e+00;
+Q5_0 = -1.6753369904210e-03;
+Q5_1 =  4.7485599871040e-03;
+Q5_2 = -2.4226492138960e-02;
+Q5_3 =  1.5715532552963e-01;
+Q5_4 = -7.5266872305402e-01;
+Q5_5 =  0.0000000000000e+00;
+Q5_6 =  7.5000000000000e-01;
+Q5_7 = -1.5000000000000e-01;
+Q5_8 =  1.6666666666667e-02;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_8.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_8.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,194 @@
+function [D1,H,x,h] = d1_noneq_8(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 8;
+m = 4;
+order = 8;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  3.8118550247622e-01;
+x2 =  1.1899550868338e+00;
+x3 =  2.2476300175641e+00;
+x4 =  3.3192851303204e+00;
+x5 =  4.3192851303204e+00;
+x6 =  5.3192851303204e+00;
+x7 =  6.3192851303204e+00;
+x8 =  7.3192851303204e+00;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  1.0758368078310e-01;
+P1 =  6.1909685107891e-01;
+P2 =  9.6971176519117e-01;
+P3 =  1.1023441350947e+00;
+P4 =  1.0244688965833e+00;
+P5 =  9.9533550116831e-01;
+P6 =  1.0008236941028e+00;
+P7 =  9.9992060631812e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.7284756079369e-01;
+Q0_2 = -2.5969732837062e-01;
+Q0_3 =  1.3519390385721e-01;
+Q0_4 = -6.9678474730984e-02;
+Q0_5 =  2.6434024071371e-02;
+Q0_6 = -5.5992311465618e-03;
+Q0_7 =  4.9954552590464e-04;
+Q0_8 =  0.0000000000000e+00;
+Q0_9 =  0.0000000000000e+00;
+Q0_10 =  0.0000000000000e+00;
+Q0_11 =  0.0000000000000e+00;
+Q1_0 = -6.7284756079369e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  9.4074021172233e-01;
+Q1_3 = -4.0511642426516e-01;
+Q1_4 =  1.9369192209331e-01;
+Q1_5 = -6.8638079843479e-02;
+Q1_6 =  1.3146457241484e-02;
+Q1_7 = -9.7652615479254e-04;
+Q1_8 =  0.0000000000000e+00;
+Q1_9 =  0.0000000000000e+00;
+Q1_10 =  0.0000000000000e+00;
+Q1_11 =  0.0000000000000e+00;
+Q2_0 =  2.5969732837062e-01;
+Q2_1 = -9.4074021172233e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  9.4316393361096e-01;
+Q2_4 = -3.5728039257451e-01;
+Q2_5 =  1.1266686855013e-01;
+Q2_6 = -1.8334941452280e-02;
+Q2_7 =  8.2741521740941e-04;
+Q2_8 =  0.0000000000000e+00;
+Q2_9 =  0.0000000000000e+00;
+Q2_10 =  0.0000000000000e+00;
+Q2_11 =  0.0000000000000e+00;
+Q3_0 = -1.3519390385721e-01;
+Q3_1 =  4.0511642426516e-01;
+Q3_2 = -9.4316393361096e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  8.7694387866575e-01;
+Q3_5 = -2.4698058719506e-01;
+Q3_6 =  4.7291642094198e-02;
+Q3_7 = -4.0135203618880e-03;
+Q3_8 =  0.0000000000000e+00;
+Q3_9 =  0.0000000000000e+00;
+Q3_10 =  0.0000000000000e+00;
+Q3_11 =  0.0000000000000e+00;
+Q4_0 =  6.9678474730984e-02;
+Q4_1 = -1.9369192209331e-01;
+Q4_2 =  3.5728039257451e-01;
+Q4_3 = -8.7694387866575e-01;
+Q4_4 =  0.0000000000000e+00;
+Q4_5 =  8.1123946853807e-01;
+Q4_6 = -2.0267150541446e-01;
+Q4_7 =  3.8680398901392e-02;
+Q4_8 = -3.5714285714286e-03;
+Q4_9 =  0.0000000000000e+00;
+Q4_10 =  0.0000000000000e+00;
+Q4_11 =  0.0000000000000e+00;
+Q5_0 = -2.6434024071371e-02;
+Q5_1 =  6.8638079843479e-02;
+Q5_2 = -1.1266686855013e-01;
+Q5_3 =  2.4698058719506e-01;
+Q5_4 = -8.1123946853807e-01;
+Q5_5 =  0.0000000000000e+00;
+Q5_6 =  8.0108544742793e-01;
+Q5_7 = -2.0088756283071e-01;
+Q5_8 =  3.8095238095238e-02;
+Q5_9 = -3.5714285714286e-03;
+Q5_10 =  0.0000000000000e+00;
+Q5_11 =  0.0000000000000e+00;
+Q6_0 =  5.5992311465618e-03;
+Q6_1 = -1.3146457241484e-02;
+Q6_2 =  1.8334941452280e-02;
+Q6_3 = -4.7291642094198e-02;
+Q6_4 =  2.0267150541446e-01;
+Q6_5 = -8.0108544742793e-01;
+Q6_6 =  0.0000000000000e+00;
+Q6_7 =  8.0039405922650e-01;
+Q6_8 = -2.0000000000000e-01;
+Q6_9 =  3.8095238095238e-02;
+Q6_10 = -3.5714285714286e-03;
+Q6_11 =  0.0000000000000e+00;
+Q7_0 = -4.9954552590464e-04;
+Q7_1 =  9.7652615479254e-04;
+Q7_2 = -8.2741521740941e-04;
+Q7_3 =  4.0135203618880e-03;
+Q7_4 = -3.8680398901392e-02;
+Q7_5 =  2.0088756283071e-01;
+Q7_6 = -8.0039405922650e-01;
+Q7_7 =  0.0000000000000e+00;
+Q7_8 =  8.0000000000000e-01;
+Q7_9 = -2.0000000000000e-01;
+Q7_10 =  3.8095238095238e-02;
+Q7_11 = -3.5714285714286e-03;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_minimal_10.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_minimal_10.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,202 @@
+function [D1,H,x,h] = d1_noneq_minimal_10(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 8;
+m = 3;
+order = 10;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  5.8556160757529e-01;
+x2 =  1.7473267488572e+00;
+x3 =  3.0000000000000e+00;
+x4 =  4.0000000000000e+00;
+x5 =  5.0000000000000e+00;
+x6 =  6.0000000000000e+00;
+x7 =  7.0000000000000e+00;
+x8 =  8.0000000000000e+00;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  1.6717213975289e-01;
+P1 =  9.3675739171278e-01;
+P2 =  1.3035532379753e+00;
+P3 =  1.1188461804303e+00;
+P4 =  9.6664345922660e-01;
+P5 =  1.0083235564392e+00;
+P6 =  9.9858767377362e-01;
+P7 =  1.0001163606893e+00;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.7349296966214e-01;
+Q0_2 = -2.5186401896559e-01;
+Q0_3 =  8.3431385420901e-02;
+Q0_4 =  2.5480326895984e-02;
+Q0_5 = -4.5992420658252e-02;
+Q0_6 =  1.7526412909003e-02;
+Q0_7 = -2.0746552641799e-03;
+Q0_8 =  0.0000000000000e+00;
+Q0_9 =  0.0000000000000e+00;
+Q0_10 =  0.0000000000000e+00;
+Q0_11 =  0.0000000000000e+00;
+Q0_12 =  0.0000000000000e+00;
+Q1_0 = -6.7349296966214e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  9.1982892384044e-01;
+Q1_3 = -2.7262271754043e-01;
+Q1_4 = -5.0992113348238e-02;
+Q1_5 =  1.1814647281129e-01;
+Q1_6 = -4.6693123378079e-02;
+Q1_7 =  5.8255272771571e-03;
+Q1_8 =  0.0000000000000e+00;
+Q1_9 =  0.0000000000000e+00;
+Q1_10 =  0.0000000000000e+00;
+Q1_11 =  0.0000000000000e+00;
+Q1_12 =  0.0000000000000e+00;
+Q2_0 =  2.5186401896559e-01;
+Q2_1 = -9.1982892384044e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  7.8566746772741e-01;
+Q2_4 = -2.4097806629929e-02;
+Q2_5 = -1.5312168858669e-01;
+Q2_6 =  6.9451518963875e-02;
+Q2_7 = -9.9345865998262e-03;
+Q2_8 =  0.0000000000000e+00;
+Q2_9 =  0.0000000000000e+00;
+Q2_10 =  0.0000000000000e+00;
+Q2_11 =  0.0000000000000e+00;
+Q2_12 =  0.0000000000000e+00;
+Q3_0 = -8.3431385420901e-02;
+Q3_1 =  2.7262271754043e-01;
+Q3_2 = -7.8566746772741e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  6.2047871210535e-01;
+Q3_5 =  1.4776775176509e-02;
+Q3_6 = -4.6889652372990e-02;
+Q3_7 =  7.3166499053672e-03;
+Q3_8 =  7.9365079365079e-04;
+Q3_9 =  0.0000000000000e+00;
+Q3_10 =  0.0000000000000e+00;
+Q3_11 =  0.0000000000000e+00;
+Q3_12 =  0.0000000000000e+00;
+Q4_0 = -2.5480326895984e-02;
+Q4_1 =  5.0992113348238e-02;
+Q4_2 =  2.4097806629929e-02;
+Q4_3 = -6.2047871210535e-01;
+Q4_4 =  0.0000000000000e+00;
+Q4_5 =  6.9425006383507e-01;
+Q4_6 = -1.5686345740485e-01;
+Q4_7 =  4.2609496719925e-02;
+Q4_8 = -9.9206349206349e-03;
+Q4_9 =  7.9365079365079e-04;
+Q4_10 =  0.0000000000000e+00;
+Q4_11 =  0.0000000000000e+00;
+Q4_12 =  0.0000000000000e+00;
+Q5_0 =  4.5992420658252e-02;
+Q5_1 = -1.1814647281129e-01;
+Q5_2 =  1.5312168858669e-01;
+Q5_3 = -1.4776775176509e-02;
+Q5_4 = -6.9425006383507e-01;
+Q5_5 =  0.0000000000000e+00;
+Q5_6 =  8.0719535654891e-01;
+Q5_7 = -2.2953297936781e-01;
+Q5_8 =  5.9523809523809e-02;
+Q5_9 = -9.9206349206349e-03;
+Q5_10 =  7.9365079365079e-04;
+Q5_11 =  0.0000000000000e+00;
+Q5_12 =  0.0000000000000e+00;
+Q6_0 = -1.7526412909003e-02;
+Q6_1 =  4.6693123378079e-02;
+Q6_2 = -6.9451518963875e-02;
+Q6_3 =  4.6889652372990e-02;
+Q6_4 =  1.5686345740485e-01;
+Q6_5 = -8.0719535654891e-01;
+Q6_6 =  0.0000000000000e+00;
+Q6_7 =  8.3142546796428e-01;
+Q6_8 = -2.3809523809524e-01;
+Q6_9 =  5.9523809523809e-02;
+Q6_10 = -9.9206349206349e-03;
+Q6_11 =  7.9365079365079e-04;
+Q6_12 =  0.0000000000000e+00;
+Q7_0 =  2.0746552641799e-03;
+Q7_1 = -5.8255272771571e-03;
+Q7_2 =  9.9345865998262e-03;
+Q7_3 = -7.3166499053672e-03;
+Q7_4 = -4.2609496719925e-02;
+Q7_5 =  2.2953297936781e-01;
+Q7_6 = -8.3142546796428e-01;
+Q7_7 =  0.0000000000000e+00;
+Q7_8 =  8.3333333333333e-01;
+Q7_9 = -2.3809523809524e-01;
+Q7_10 =  5.9523809523809e-02;
+Q7_11 = -9.9206349206349e-03;
+Q7_12 =  7.9365079365079e-04;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_minimal_12.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_minimal_12.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,262 @@
+function [D1,H,x,h] = d1_noneq_minimal_12(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 10;
+m = 4;
+order = 12;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  4.6552112904489e-01;
+x2 =  1.4647984306493e+00;
+x3 =  2.7620429464763e+00;
+x4 =  4.0000000000000e+00;
+x5 =  5.0000000000000e+00;
+x6 =  6.0000000000000e+00;
+x7 =  7.0000000000000e+00;
+x8 =  8.0000000000000e+00;
+x9 =  9.0000000000000e+00;
+x10 =  1.0000000000000e+01;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  1.3013597111750e-01;
+P1 =  7.6146045079020e-01;
+P2 =  1.1984222247012e+00;
+P3 =  1.3340123109301e+00;
+P4 =  1.0951811473364e+00;
+P5 =  9.7569096377130e-01;
+P6 =  1.0061945410831e+00;
+P7 =  9.9874339446564e-01;
+P8 =  1.0001702615573e+00;
+P9 =  9.9998873424721e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.7603132599815e-01;
+Q0_2 = -2.6781065957921e-01;
+Q0_3 =  1.4050310470012e-01;
+Q0_4 = -5.4072653004710e-02;
+Q0_5 = -1.1876984028213e-02;
+Q0_6 =  2.6300694680362e-02;
+Q0_7 = -9.8077210531438e-03;
+Q0_8 =  4.2848959311712e-04;
+Q0_9 =  3.0440269352791e-04;
+Q0_10 =  0.0000000000000e+00;
+Q0_11 =  0.0000000000000e+00;
+Q0_12 =  0.0000000000000e+00;
+Q0_13 =  0.0000000000000e+00;
+Q0_14 =  0.0000000000000e+00;
+Q0_15 =  0.0000000000000e+00;
+Q1_0 = -6.7603132599815e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  9.5204118058043e-01;
+Q1_3 = -4.1306598236120e-01;
+Q1_4 =  1.5442577883533e-01;
+Q1_5 =  2.6535212157067e-02;
+Q1_6 = -6.7869317213141e-02;
+Q1_7 =  2.6431850942376e-02;
+Q1_8 = -1.8383496124689e-03;
+Q1_9 = -6.2904733024363e-04;
+Q1_10 =  0.0000000000000e+00;
+Q1_11 =  0.0000000000000e+00;
+Q1_12 =  0.0000000000000e+00;
+Q1_13 =  0.0000000000000e+00;
+Q1_14 =  0.0000000000000e+00;
+Q1_15 =  0.0000000000000e+00;
+Q2_0 =  2.6781065957921e-01;
+Q2_1 = -9.5204118058043e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  9.4424869445124e-01;
+Q2_4 = -3.0369922793820e-01;
+Q2_5 = -1.7036409572828e-02;
+Q2_6 =  9.7546158402857e-02;
+Q2_7 = -4.2534720340735e-02;
+Q2_8 =  5.3471186513813e-03;
+Q2_9 =  3.5890734751923e-04;
+Q2_10 =  0.0000000000000e+00;
+Q2_11 =  0.0000000000000e+00;
+Q2_12 =  0.0000000000000e+00;
+Q2_13 =  0.0000000000000e+00;
+Q2_14 =  0.0000000000000e+00;
+Q2_15 =  0.0000000000000e+00;
+Q3_0 = -1.4050310470012e-01;
+Q3_1 =  4.1306598236120e-01;
+Q3_2 = -9.4424869445124e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  8.1369662782755e-01;
+Q3_5 = -8.4027084126181e-02;
+Q3_6 = -1.0721180825279e-01;
+Q3_7 =  6.1098180874949e-02;
+Q3_8 = -1.2618762739267e-02;
+Q3_9 =  7.4866320589496e-04;
+Q3_10 =  0.0000000000000e+00;
+Q3_11 =  0.0000000000000e+00;
+Q3_12 =  0.0000000000000e+00;
+Q3_13 =  0.0000000000000e+00;
+Q3_14 =  0.0000000000000e+00;
+Q3_15 =  0.0000000000000e+00;
+Q4_0 =  5.4072653004710e-02;
+Q4_1 = -1.5442577883533e-01;
+Q4_2 =  3.0369922793820e-01;
+Q4_3 = -8.1369662782755e-01;
+Q4_4 =  0.0000000000000e+00;
+Q4_5 =  6.8140317057259e-01;
+Q4_6 = -5.0090848997730e-02;
+Q4_7 = -3.2156238350691e-02;
+Q4_8 =  1.2270208460707e-02;
+Q4_9 = -8.9539078453821e-04;
+Q4_10 = -1.8037518037522e-04;
+Q4_11 =  0.0000000000000e+00;
+Q4_12 =  0.0000000000000e+00;
+Q4_13 =  0.0000000000000e+00;
+Q4_14 =  0.0000000000000e+00;
+Q4_15 =  0.0000000000000e+00;
+Q5_0 =  1.1876984028213e-02;
+Q5_1 = -2.6535212157067e-02;
+Q5_2 =  1.7036409572828e-02;
+Q5_3 =  8.4027084126181e-02;
+Q5_4 = -6.8140317057259e-01;
+Q5_5 =  0.0000000000000e+00;
+Q5_6 =  7.3535220394540e-01;
+Q5_7 = -1.7565390898074e-01;
+Q5_8 =  4.5853976429252e-02;
+Q5_9 = -1.2971393808506e-02;
+Q5_10 =  2.5974025974031e-03;
+Q5_11 = -1.8037518037522e-04;
+Q5_12 =  0.0000000000000e+00;
+Q5_13 =  0.0000000000000e+00;
+Q5_14 =  0.0000000000000e+00;
+Q5_15 =  0.0000000000000e+00;
+Q6_0 = -2.6300694680362e-02;
+Q6_1 =  6.7869317213141e-02;
+Q6_2 = -9.7546158402857e-02;
+Q6_3 =  1.0721180825279e-01;
+Q6_4 =  5.0090848997730e-02;
+Q6_5 = -7.3535220394540e-01;
+Q6_6 =  0.0000000000000e+00;
+Q6_7 =  8.2185236816776e-01;
+Q6_8 = -2.4842386107781e-01;
+Q6_9 =  7.6038690915127e-02;
+Q6_10 = -1.7857142857146e-02;
+Q6_11 =  2.5974025974031e-03;
+Q6_12 = -1.8037518037522e-04;
+Q6_13 =  0.0000000000000e+00;
+Q6_14 =  0.0000000000000e+00;
+Q6_15 =  0.0000000000000e+00;
+Q7_0 =  9.8077210531438e-03;
+Q7_1 = -2.6431850942376e-02;
+Q7_2 =  4.2534720340735e-02;
+Q7_3 = -6.1098180874949e-02;
+Q7_4 =  3.2156238350691e-02;
+Q7_5 =  1.7565390898074e-01;
+Q7_6 = -8.2185236816776e-01;
+Q7_7 =  0.0000000000000e+00;
+Q7_8 =  8.5207110387533e-01;
+Q7_9 = -2.6676625654053e-01;
+Q7_10 =  7.9365079365093e-02;
+Q7_11 = -1.7857142857146e-02;
+Q7_12 =  2.5974025974031e-03;
+Q7_13 = -1.8037518037522e-04;
+Q7_14 =  0.0000000000000e+00;
+Q7_15 =  0.0000000000000e+00;
+Q8_0 = -4.2848959311712e-04;
+Q8_1 =  1.8383496124689e-03;
+Q8_2 = -5.3471186513813e-03;
+Q8_3 =  1.2618762739267e-02;
+Q8_4 = -1.2270208460707e-02;
+Q8_5 = -4.5853976429252e-02;
+Q8_6 =  2.4842386107781e-01;
+Q8_7 = -8.5207110387533e-01;
+Q8_8 =  0.0000000000000e+00;
+Q8_9 =  8.5702210251244e-01;
+Q8_10 = -2.6785714285718e-01;
+Q8_11 =  7.9365079365093e-02;
+Q8_12 = -1.7857142857146e-02;
+Q8_13 =  2.5974025974031e-03;
+Q8_14 = -1.8037518037522e-04;
+Q8_15 =  0.0000000000000e+00;
+Q9_0 = -3.0440269352791e-04;
+Q9_1 =  6.2904733024363e-04;
+Q9_2 = -3.5890734751923e-04;
+Q9_3 = -7.4866320589496e-04;
+Q9_4 =  8.9539078453821e-04;
+Q9_5 =  1.2971393808506e-02;
+Q9_6 = -7.6038690915127e-02;
+Q9_7 =  2.6676625654053e-01;
+Q9_8 = -8.5702210251244e-01;
+Q9_9 =  0.0000000000000e+00;
+Q9_10 =  8.5714285714289e-01;
+Q9_11 = -2.6785714285718e-01;
+Q9_12 =  7.9365079365093e-02;
+Q9_13 = -1.7857142857146e-02;
+Q9_14 =  2.5974025974031e-03;
+Q9_15 = -1.8037518037522e-04;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_minimal_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_minimal_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,103 @@
+function [D1,H,x,h] = d1_noneq_minimal_4(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 3;
+m = 1;
+order = 4;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  7.7122987842562e-01;
+x2 =  1.7712298784256e+00;
+x3 =  2.7712298784256e+00;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  2.6864248295847e-01;
+P1 =  1.0094667153500e+00;
+P2 =  9.9312068011715e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.1697245625434e-01;
+Q0_2 = -1.1697245625434e-01;
+Q0_3 =  0.0000000000000e+00;
+Q0_4 =  0.0000000000000e+00;
+Q1_0 = -6.1697245625434e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  7.0030578958767e-01;
+Q1_3 = -8.3333333333333e-02;
+Q1_4 =  0.0000000000000e+00;
+Q2_0 =  1.1697245625434e-01;
+Q2_1 = -7.0030578958767e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  6.6666666666667e-01;
+Q2_4 = -8.3333333333333e-02;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_minimal_6.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_minimal_6.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,132 @@
+function [D1,H,x,h] = d1_noneq_minimal_6(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 5;
+m = 2;
+order = 6;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  4.0842950991998e-01;
+x2 =  1.1968523189207e+00;
+x3 =  2.1968523189207e+00;
+x4 =  3.1968523189207e+00;
+x5 =  4.1968523189207e+00;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  1.2740260779883e-01;
+P1 =  6.1820981002054e-01;
+P2 =  9.4308973897679e-01;
+P3 =  1.0093019060199e+00;
+P4 =  9.9884825610465e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.3217364546846e-01;
+Q0_2 = -1.6411963429825e-01;
+Q0_3 =  3.6495407984639e-02;
+Q0_4 = -4.5494191548490e-03;
+Q0_5 =  0.0000000000000e+00;
+Q0_6 =  0.0000000000000e+00;
+Q0_7 =  0.0000000000000e+00;
+Q1_0 = -6.3217364546846e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  8.0515625504417e-01;
+Q1_3 = -2.0755653563249e-01;
+Q1_4 =  3.4573926056780e-02;
+Q1_5 =  0.0000000000000e+00;
+Q1_6 =  0.0000000000000e+00;
+Q1_7 =  0.0000000000000e+00;
+Q2_0 =  1.6411963429825e-01;
+Q2_1 = -8.0515625504417e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  7.9402676057785e-01;
+Q2_4 = -1.6965680649860e-01;
+Q2_5 =  1.6666666666667e-02;
+Q2_6 =  0.0000000000000e+00;
+Q2_7 =  0.0000000000000e+00;
+Q3_0 = -3.6495407984639e-02;
+Q3_1 =  2.0755653563249e-01;
+Q3_2 = -7.9402676057785e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  7.5629896626333e-01;
+Q3_5 = -1.5000000000000e-01;
+Q3_6 =  1.6666666666667e-02;
+Q3_7 =  0.0000000000000e+00;
+Q4_0 =  4.5494191548490e-03;
+Q4_1 = -3.4573926056780e-02;
+Q4_2 =  1.6965680649860e-01;
+Q4_3 = -7.5629896626333e-01;
+Q4_4 =  0.0000000000000e+00;
+Q4_5 =  7.5000000000000e-01;
+Q4_6 = -1.5000000000000e-01;
+Q4_7 =  1.6666666666667e-02;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_noneq_minimal_8.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_noneq_minimal_8.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,154 @@
+function [D1,H,x,h] = d1_noneq_minimal_8(N,L)
+
+% L: Domain length
+% N: Number of grid points
+if(nargin < 2)
+    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
+BP = 6;
+m = 2;
+order = 8;
+
+%%%% Non-equidistant grid points %%%%%
+x0 =  0.0000000000000e+00;
+x1 =  4.9439570885261e-01;
+x2 =  1.4051531374839e+00;
+x3 =  2.4051531374839e+00;
+x4 =  3.4051531374839e+00;
+x5 =  4.4051531374839e+00;
+x6 =  5.4051531374839e+00;
+
+xb = sparse(m+1,1);
+for i = 0:m
+    xb(i+1) = eval(['x' num2str(i)]);
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Compute h %%%%%%%%%%
+h = L/(2*xb(end) + N-1-2*m);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Define grid %%%%%%%%
+x = h*[xb; linspace(xb(end)+1,L/h-xb(end)-1,N-2*(m+1))'; L/h-flip(xb) ];
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Norm matrix %%%%%%%%
+P = sparse(BP,1);
+%#ok<*NASGU>
+P0 =  1.4523997892351e-01;
+P1 =  7.6864793350174e-01;
+P2 =  9.9116487068535e-01;
+P3 =  9.9992473335107e-01;
+P4 =  1.0002097054636e+00;
+P5 =  9.9996591555866e-01;
+
+for i = 0:BP-1
+    P(i+1) = eval(['P' num2str(i)]);
+end
+
+H = ones(N,1);
+H(1:BP) = P;
+H(end-BP+1:end) = flip(P);
+H = spdiags(h*H,0,N,N);
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Q matrix %%%%%%%%%%%
+
+% interior stencil
+switch order
+    case 2
+        d = [-1/2,0,1/2];
+    case 4
+        d = [1/12,-2/3,0,2/3,-1/12];
+    case 6
+        d = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    case 8
+        d = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    case 10
+        d = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    case 12
+        d = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+end
+d = repmat(d,N,1);
+Q = spdiags(d,-order/2:order/2,N,N);
+
+% Boundaries
+Q0_0 = -5.0000000000000e-01;
+Q0_1 =  6.6697342753834e-01;
+Q0_2 = -2.2919342278749e-01;
+Q0_3 =  7.4283116457276e-02;
+Q0_4 = -1.2020661178873e-02;
+Q0_5 = -4.2460029252999e-05;
+Q0_6 =  0.0000000000000e+00;
+Q0_7 =  0.0000000000000e+00;
+Q0_8 =  0.0000000000000e+00;
+Q0_9 =  0.0000000000000e+00;
+Q1_0 = -6.6697342753834e-01;
+Q1_1 =  0.0000000000000e+00;
+Q1_2 =  8.8241196934163e-01;
+Q1_3 = -2.6653314104602e-01;
+Q1_4 =  5.5302527504316e-02;
+Q1_5 = -4.2079282615860e-03;
+Q1_6 =  0.0000000000000e+00;
+Q1_7 =  0.0000000000000e+00;
+Q1_8 =  0.0000000000000e+00;
+Q1_9 =  0.0000000000000e+00;
+Q2_0 =  2.2919342278749e-01;
+Q2_1 = -8.8241196934163e-01;
+Q2_2 =  0.0000000000000e+00;
+Q2_3 =  8.2904844081126e-01;
+Q2_4 = -2.1156614214635e-01;
+Q2_5 =  3.9307676460659e-02;
+Q2_6 = -3.5714285714286e-03;
+Q2_7 =  0.0000000000000e+00;
+Q2_8 =  0.0000000000000e+00;
+Q2_9 =  0.0000000000000e+00;
+Q3_0 = -7.4283116457276e-02;
+Q3_1 =  2.6653314104602e-01;
+Q3_2 = -8.2904844081126e-01;
+Q3_3 =  0.0000000000000e+00;
+Q3_4 =  8.0305501223679e-01;
+Q3_5 = -2.0078040553808e-01;
+Q3_6 =  3.8095238095238e-02;
+Q3_7 = -3.5714285714286e-03;
+Q3_8 =  0.0000000000000e+00;
+Q3_9 =  0.0000000000000e+00;
+Q4_0 =  1.2020661178873e-02;
+Q4_1 = -5.5302527504316e-02;
+Q4_2 =  2.1156614214635e-01;
+Q4_3 = -8.0305501223679e-01;
+Q4_4 =  0.0000000000000e+00;
+Q4_5 =  8.0024692689207e-01;
+Q4_6 = -2.0000000000000e-01;
+Q4_7 =  3.8095238095238e-02;
+Q4_8 = -3.5714285714286e-03;
+Q4_9 =  0.0000000000000e+00;
+Q5_0 =  4.2460029252999e-05;
+Q5_1 =  4.2079282615860e-03;
+Q5_2 = -3.9307676460659e-02;
+Q5_3 =  2.0078040553808e-01;
+Q5_4 = -8.0024692689207e-01;
+Q5_5 =  0.0000000000000e+00;
+Q5_6 =  8.0000000000000e-01;
+Q5_7 = -2.0000000000000e-01;
+Q5_8 =  3.8095238095238e-02;
+Q5_9 = -3.5714285714286e-03;
+for i = 1:BP
+    for j = 1:BP
+        Q(i,j) = eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+        Q(N+1-i,N+1-j) = -eval(['Q' num2str(i-1) '_' num2str(j-1)]);
+    end
+end
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%% Difference operator %%
+D1 = H\Q;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_upwind_2.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_upwind_2.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,35 @@
+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);
+    Hv = Hv*h;
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
+
+    q_diags   = [0 1 2];
+    q_stencil = [-3/2 +2 -1/2];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+    Q_U = [
+        -0.1e1/0.4e1 0.5e1/0.4e1;
+        -0.1e1/0.4e1 -0.5e1/0.4e1;
+    ];
+
+    Qp(1:2,1:2)=Q_U;
+    Qp(m-1:m,m-1:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
+
+    Qm=-Qp';
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+end
+
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_upwind_3.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_upwind_3.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,37 @@
+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);
+    Hv = Hv*h;
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
+
+    q_diags   = [-1, 0, 1, 2];
+    q_stencil = [-1/3 -1/2 1 -1/6];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+    Q_U = [
+         -1/24  17/24   -1/6;
+        -13/24   -1/4  23/24;
+          1/12 -11/24 -11/24;
+    ];
+    Qp(1:3,1:3)=Q_U;
+    Qp(m-2:m,m-2:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
+
+    Qm=-Qp';
+
+    e_1=sparse(m,1);
+    e_1(1)=1;
+    e_m=sparse(m,1);
+    e_m(m)=1;
+
+    Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+end
+
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_upwind_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_upwind_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,36 @@
+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);
+    Hv = Hv*h;
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
+
+    q_diags   = [-1, 0, 1, 2 3];
+    q_stencil = [-1/4 -5/6 3/2 -1/2 1/12];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+    Q_U = [
+        -0.1e1/0.48e2    0.205e3/0.288e3 -0.29e2/0.144e3 0.1e1/0.96e2;
+        -0.169e3/0.288e3 -0.11e2/0.48e2  0.33e2/0.32e2   -0.43e2/0.144e3;
+        0.11e2/0.144e3   -0.13e2/0.32e2  -0.29e2/0.48e2  0.389e3/0.288e3;
+        0.1e1/0.32e2     -0.11e2/0.144e3 -0.65e2/0.288e3 -0.13e2/0.16e2;
+    ];
+
+    Qp(1:4,1:4)=Q_U;
+    Qp(m-3:m,m-3:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
+
+    Qm=-Qp';
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_upwind_5.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_upwind_5.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,36 @@
+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);
+    Hv = Hv*h;
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
+
+    q_diags   = [-2 -1 0 1 2 3];
+    q_stencil = [1/20 -1/2 -1/3 +1 -1/4 +1/30];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+    Q_U = [
+        -0.1e1/0.120e3 0.941e3/0.1440e4 -0.47e2/0.360e3 -0.7e1/0.480e3;
+        -0.869e3/0.1440e4 -0.11e2/0.120e3 0.25e2/0.32e2 -0.43e2/0.360e3;
+        0.29e2/0.360e3 -0.17e2/0.32e2 -0.29e2/0.120e3 0.1309e4/0.1440e4;
+        0.1e1/0.32e2 -0.11e2/0.360e3 -0.661e3/0.1440e4 -0.13e2/0.40e2;
+    ];
+
+    Qp(1:4,1:4)=Q_U;
+    Qp(m-3:m,m-3:m)=rot90( Q_U(1:4,1:4) ,2 )'; %%% This is different from standard SBP
+
+    Qm=-Qp';
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_upwind_6.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_upwind_6.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,39 @@
+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);
+    Hv = Hv*h;
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
+
+    q_diags   = [-2 -1 0 1 2 3 4];
+    q_stencil = [1/30 -2/5 -7/12 4/3 -1/2 2/15 -1/60];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+    Q_U =[
+        -0.265e3/0.128688e6 0.1146190567e10/0.1737288000e10 -0.1596619e7/0.18384000e8 -0.55265831e8/0.579096000e9 0.26269819e8/0.3474576000e10 0.2464501e7/0.144774000e9;
+        -0.1116490567e10/0.1737288000e10 -0.8839e4/0.214480e6 0.190538869e9/0.347457600e9 0.102705469e9/0.694915200e9 0.413741e6/0.9651600e7 -0.191689861e9/0.3474576000e10;
+        0.1096619e7/0.18384000e8 -0.135385429e9/0.347457600e9 -0.61067e5/0.321720e6 0.45137333e8/0.57909600e8 -0.253641811e9/0.694915200e9 0.70665929e8/0.579096000e9;
+        0.66965831e8/0.579096000e9 -0.208765789e9/0.694915200e9 -0.17623253e8/0.57909600e8 -0.18269e5/0.45960e5 0.410905829e9/0.347457600e9 -0.477953317e9/0.1158192000e10;
+        -0.49219819e8/0.3474576000e10 0.293299e6/0.9651600e7 0.26422771e8/0.694915200e9 -0.141938309e9/0.347457600e9 -0.346583e6/0.643440e6 0.2217185207e10/0.1737288000e10;
+        -0.2374501e7/0.144774000e9 0.142906261e9/0.3474576000e10 -0.3137129e7/0.579096000e9 -0.29884283e8/0.1158192000e10 -0.630168407e9/0.1737288000e10 -0.3559e4/0.6128e4;
+    ];
+
+    Qp(1:6,1:6)=Q_U;
+    Qp(m-5:m,m-5:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
+
+    Qm=-Qp';
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_upwind_7.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_upwind_7.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,40 @@
+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);
+    Hv = Hv*h;
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
+
+    q_diags = [-3 -2 -1 0 1 2 3 4];
+    q_stencil = [-1/105 +1/10 -3/5 -1/4 +1 -3/10 +1/15 -1/140];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+    Q_U =[
+        -0.265e3/0.300272e6 0.1587945773e10/0.2432203200e10 -0.1926361e7/0.25737600e8 -0.84398989e8/0.810734400e9 0.48781961e8/0.4864406400e10 0.3429119e7/0.202683600e9;
+        -0.1570125773e10/0.2432203200e10 -0.26517e5/0.1501360e7 0.240029831e9/0.486440640e9 0.202934303e9/0.972881280e9 0.118207e6/0.13512240e8 -0.231357719e9/0.4864406400e10;
+        0.1626361e7/0.25737600e8 -0.206937767e9/0.486440640e9 -0.61067e5/0.750680e6 0.49602727e8/0.81073440e8 -0.43783933e8/0.194576256e9 0.51815011e8/0.810734400e9;
+        0.91418989e8/0.810734400e9 -0.53314099e8/0.194576256e9 -0.33094279e8/0.81073440e8 -0.18269e5/0.107240e6 0.440626231e9/0.486440640e9 -0.365711063e9/0.1621468800e10;
+        -0.62551961e8/0.4864406400e10 0.799e3/0.35280e5 0.82588241e8/0.972881280e9 -0.279245719e9/0.486440640e9 -0.346583e6/0.1501360e7 0.2312302333e10/0.2432203200e10;
+        -0.3375119e7/0.202683600e9 0.202087559e9/0.4864406400e10 -0.11297731e8/0.810734400e9 0.61008503e8/0.1621468800e10 -0.1360092253e10/0.2432203200e10 -0.10677e5/0.42896e5;
+    ];
+
+
+    Qp(1:6,1:6)=Q_U;
+    Qp(m-5:m,m-5:m)=rot90(Q_U,2)';
+
+    Qm=-Qp';
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_upwind_8.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_upwind_8.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,43 @@
+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);
+    Hv=Hv*h;
+
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
+
+    q_diags   = [-3 -2 -1 0 1 2 3 4 5];
+    q_stencil = [-1/168 +1/14 -1/2 -9/20 +5/4 -1/2 +1/6 -1/28 +1/280];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+
+    Q_U =[
+        -0.16683e5/0.63018560e8 0.29345822969987e14/0.43354248537600e14 -0.2734625426591e13/0.40644608004000e14 -0.113480208109603e15/0.780376473676800e15 -0.830250230261e12/0.26012549122560e14 0.2500519492033e13/0.32515686403200e14 0.2235718279643e13/0.390188236838400e15 -0.388481888477e12/0.26543417472000e14;
+        -0.29227665839987e14/0.43354248537600e14 -0.493793e6/0.63018560e8 0.8302717120817e13/0.26543417472000e14 0.3739408501537e13/0.9290196115200e13 0.2684481534461e13/0.13935294172800e14 -0.4450185662513e13/0.18580392230400e14 -0.1221838279381e13/0.37160784460800e14 0.90595000956023e14/0.1950941184192000e16;
+        0.2505689537591e13/0.40644608004000e14 -0.7312922392817e13/0.26543417472000e14 -0.69332623e8/0.1323389760e10 0.10994933811709e14/0.18580392230400e14 -0.9270952411151e13/0.18580392230400e14 0.3191238635141e13/0.20644880256000e14 0.4442211176987e13/0.92901961152000e14 -0.940661365031e12/0.32515686403200e14;
+        0.118016946570403e15/0.780376473676800e15 -0.4173878828737e13/0.9290196115200e13 -0.7990503962509e13/0.18580392230400e14 -0.207799621e9/0.1323389760e10 0.2044021560341e13/0.2477385630720e13 0.511197701761e12/0.18580392230400e14 0.1237681717213e13/0.13935294172800e14 -0.7784834666617e13/0.130062745612800e15;
+        0.68609076271e11/0.2364777192960e13 -0.2235651762161e13/0.13935294172800e14 0.6527681584751e13/0.18580392230400e14 -0.1115980068821e13/0.2477385630720e13 -0.55386253e8/0.189055680e9 0.3208334350649e13/0.3716078446080e13 -0.407569013461e12/0.844563283200e12 0.136474842626653e15/0.780376473676800e15;
+        -0.2487637785013e13/0.32515686403200e14 0.4244231077313e13/0.18580392230400e14 -0.1550378843141e13/0.20644880256000e14 -0.5726967564961e13/0.18580392230400e14 -0.1017898941929e13/0.3716078446080e13 -0.526653889e9/0.1323389760e10 0.45241297077547e14/0.37160784460800e14 -0.2279608411897e13/0.5080576000500e13;
+        -0.2164019088443e13/0.390188236838400e15 0.1263196075861e13/0.37160784460800e14 -0.6600697610987e13/0.92901961152000e14 0.556610591687e12/0.13935294172800e14 0.926842346471e12/0.9290196115200e13 -0.18757693936747e14/0.37160784460800e14 -0.584765899e9/0.1323389760e10 0.204646287449e12/0.168431424000e12;
+        0.387091928477e12/0.26543417472000e14 -0.90231551688023e14/0.1950941184192000e16 0.1032404418251e13/0.32515686403200e14 0.3502353445417e13/0.130062745612800e15 -0.15385068876253e14/0.780376473676800e15 0.262499068919e12/0.10161152001000e14 -0.867004691939e12/0.1852745664000e13 -0.85017967e8/0.189055680e9;
+    ];
+
+    Qp(1:8,1:8)=Q_U;
+    Qp(m-7:m,m-7:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
+
+    Qm=-Qp';
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d1_upwind_9.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d1_upwind_9.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,43 @@
+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);
+    Hv=Hv*h;
+
+    H = spdiag(Hv,0);
+    HI = spdiag(1./Hv,0);
+
+    q_diags   = [-4 -3 -2 -1 0 1 2 3 4 5];
+    q_stencil = [1/504 -1/42 +1/7 -2/3 -1/5 +1 -1/3 +2/21 -1/56 +1/630];
+    Qp = stripeMatrix(q_stencil, q_diags,m);
+
+    Q_U =[
+        -0.5561e4/0.47263920e8 0.4186300102421e13/0.6193464076800e13 -0.377895002003e12/0.5806372572000e13 -0.16485548951749e14/0.111482353382400e15 -0.113245973003e12/0.3716078446080e13 0.355360297339e12/0.4645098057600e13 0.321012170669e12/0.55741176691200e14 -0.388397049437e12/0.26543417472000e14;
+        -0.4178798062421e13/0.6193464076800e13 -0.493793e6/0.141791760e9 0.725405227507e12/0.2413037952000e13 0.3904159533697e13/0.9290196115200e13 0.2483046570341e13/0.13935294172800e14 -0.4336328670953e13/0.18580392230400e14 -0.1258688487061e13/0.37160784460800e14 0.12931584852209e14/0.278705883456000e15;
+        0.363359390003e12/0.5806372572000e13 -0.7539548734577e13/0.26543417472000e14 -0.69332623e8/0.2977626960e10 0.9994352248429e13/0.18580392230400e14 -0.8195655811631e13/0.18580392230400e14 0.7361486640463e13/0.61934640768000e14 0.5539855071347e13/0.92901961152000e14 -0.12898722943e11/0.422281641600e12;
+        0.16773595838149e14/0.111482353382400e15 -0.372477950627e12/0.844563283200e12 -0.8659050093229e13/0.18580392230400e14 -0.207799621e9/0.2977626960e10 0.1734921317461e13/0.2477385630720e13 0.2530020015841e13/0.18580392230400e14 0.441856623253e12/0.13935294172800e14 -0.115132773073e12/0.2654341747200e13;
+        0.108449122763e12/0.3716078446080e13 -0.2283566671541e13/0.13935294172800e14 0.6976424333231e13/0.18580392230400e14 -0.440819477447e12/0.825795210240e12 -0.55386253e8/0.425375280e9 0.2479572560009e13/0.3716078446080e13 -0.40258468963e11/0.120651897600e12 0.11808221047099e14/0.111482353382400e15;
+        -0.32231128289e11/0.422281641600e12 0.4244793299753e13/0.18580392230400e14 -0.5173673584463e13/0.61934640768000e14 -0.4848139955041e13/0.18580392230400e14 -0.1506045711689e13/0.3716078446080e13 -0.526653889e9/0.2977626960e10 0.36411368691307e14/0.37160784460800e14 -0.825434105779e12/0.2903186286000e13;
+        -0.316459841069e12/0.55741176691200e14 0.1277069729941e13/0.37160784460800e14 -0.6499182375347e13/0.92901961152000e14 0.355606625147e12/0.13935294172800e14 0.1519272420551e13/0.9290196115200e13 -0.2240079855137e13/0.3378253132800e13 -0.584765899e9/0.2977626960e10 0.2301241355533e13/0.2382101568000e13;
+        0.387779289437e12/0.26543417472000e14 -0.12908508708209e14/0.278705883456000e15 0.147710908133e12/0.4645098057600e13 0.534025841911e12/0.18580392230400e14 -0.4119981443899e13/0.111482353382400e15 0.279819152779e12/0.2903186286000e13 -0.1510324515533e13/0.2382101568000e13 -0.85017967e8/0.425375280e9;
+    ];
+
+
+    Qp(1:8,1:8)=Q_U;
+    Qp(m-7:m,m-7:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
+
+    Qm=-Qp';
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    Dp=HI*(Qp-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    Dm=HI*(Qm-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_10.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_10.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,66 @@
+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=speye(m);
+    H(1:11,1:11)=H_U;
+    H(m-10:m,m-10:m)=rot90( H_U(1:11,1:11) ,2 );
+    H=H*h;
+    HI=inv(H);
+
+%     Q=-(-1/1260*diag(ones(m-5,1),5)+5/504*diag(ones(m-4,1),4)-5/84*diag(ones(m-3,1),3)+5/21*diag(ones(m-2,1),2)-5/6*diag(ones(m-1,1),1)+5/6*diag(ones(m-1,1),-1)-5/21*diag(ones(m-2,1),-2)+5/84*diag(ones(m-3,1),-3)-5/504*diag(ones(m-4,1),-4)+1/1260*diag(ones(m-5,1),-5));
+    
+    diags   = -5:5;
+    stencil = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    Q = stripeMatrix(stencil, diags, m);
+    
+    
+    
+    Q_U = [-0.1e1 / 0.2e1 0.2300876759589119e16 / 0.3395198177280000e16 -0.99808615498093e14 / 0.2263465451520000e16 -0.34957747037683e14 / 0.212199886080000e15 -0.709586095717e12 / 0.13473008640000e14 0.325330433051e12 / 0.6218311680000e13 0.27953548723573e14 / 0.485028311040000e15 0.2690678501e10 / 0.412439040000e12 -0.2397491025029e13 / 0.70733295360000e14 -0.9959492094287e13 / 0.1131732725760000e16 0.5242772857661e13 / 0.522338181120000e15; -0.2300876759589119e16 / 0.3395198177280000e16 0 0.3103439505511e13 / 0.16643128320000e14 0.2700334568377e13 / 0.5052378240000e13 0.50587599589937e14 / 0.242514155520000e15 -0.5570893587157e13 / 0.40419025920000e14 -0.1496329934863e13 / 0.8083805184000e13 -0.322512443237e12 / 0.12482346240000e14 0.2275340833763e13 / 0.23096586240000e14 0.22922115021893e14 / 0.848799544320000e15 -0.143e3 / 0.5000e4; 0.99808615498093e14 / 0.2263465451520000e16 -0.3103439505511e13 / 0.16643128320000e14 0 0.15053664233879e14 / 0.40419025920000e14 -0.9306441440587e13 / 0.32335220736000e14 -0.945459729233e12 / 0.13473008640000e14 0.956829267413e12 / 0.5774146560000e13 0.446866085903e12 / 0.56586636288000e14 -0.41109372242993e14 / 0.754488483840000e15 0.1e1 / 0.500e3 0.17e2 / 0.2500e4; 0.34957747037683e14 / 0.212199886080000e15 -0.2700334568377e13 / 0.5052378240000e13 -0.15053664233879e14 / 0.40419025920000e14 0 0.3899174751943e13 / 0.10104756480000e14 0.4691717443831e13 / 0.10104756480000e14 -0.58571891887e11 / 0.396264960000e12 0.100791910589e12 / 0.1040195520000e13 -0.425149181e9 / 0.29719872000e11 -0.2376515922259e13 / 0.30314269440000e14 0.36894656431e11 / 0.1036385280000e13; 0.709586095717e12 / 0.13473008640000e14 -0.50587599589937e14 / 0.242514155520000e15 0.9306441440587e13 / 0.32335220736000e14 -0.3899174751943e13 / 0.10104756480000e14 0 -0.4552305973e10 / 0.444165120000e12 0.4984940784247e13 / 0.11548293120000e14 -0.19410791e8 / 0.146764800e9 -0.2912773695913e13 / 0.40419025920000e14 0.127067639161e12 / 0.3233522073600e13 -0.89277540287e11 / 0.37309870080000e14; -0.325330433051e12 / 0.6218311680000e13 0.5570893587157e13 / 0.40419025920000e14 0.945459729233e12 / 0.13473008640000e14 -0.4691717443831e13 / 0.10104756480000e14 0.4552305973e10 / 0.444165120000e12 0 0.31722122083e11 / 0.84913920000e11 -0.887187251021e12 / 0.10104756480000e14 -0.1661755478749e13 / 0.26946017280000e14 0.1505713246249e13 / 0.13473008640000e14 -0.38859042469e11 / 0.1036385280000e13; -0.27953548723573e14 / 0.485028311040000e15 0.1496329934863e13 / 0.8083805184000e13 -0.956829267413e12 / 0.5774146560000e13 0.58571891887e11 / 0.396264960000e12 -0.4984940784247e13 / 0.11548293120000e14 -0.31722122083e11 / 0.84913920000e11 0 0.9357094407023e13 / 0.20209512960000e14 0.52602356173249e14 / 0.161676103680000e15 -0.1435252677707e13 / 0.17322439680000e14 -0.33048158431e11 / 0.3109155840000e13; -0.2690678501e10 / 0.412439040000e12 0.322512443237e12 / 0.12482346240000e14 -0.446866085903e12 / 0.56586636288000e14 -0.100791910589e12 / 0.1040195520000e13 0.19410791e8 / 0.146764800e9 0.887187251021e12 / 0.10104756480000e14 -0.9357094407023e13 / 0.20209512960000e14 0 0.70089734285659e14 / 0.141466590720000e15 -0.105938137621e12 / 0.471555302400e12 0.4358988450443e13 / 0.65292272640000e14; 0.2397491025029e13 / 0.70733295360000e14 -0.2275340833763e13 / 0.23096586240000e14 0.41109372242993e14 / 0.754488483840000e15 0.425149181e9 / 0.29719872000e11 0.2912773695913e13 / 0.40419025920000e14 0.1661755478749e13 / 0.26946017280000e14 -0.52602356173249e14 / 0.161676103680000e15 -0.70089734285659e14 / 0.141466590720000e15 0 0.314274398580227e15 / 0.377244241920000e15 -0.97822819709e11 / 0.487710720000e12; 0.9959492094287e13 / 0.1131732725760000e16 -0.22922115021893e14 / 0.848799544320000e15 -0.1e1 / 0.500e3 0.2376515922259e13 / 0.30314269440000e14 -0.127067639161e12 / 0.3233522073600e13 -0.1505713246249e13 / 0.13473008640000e14 0.1435252677707e13 / 0.17322439680000e14 0.105938137621e12 / 0.471555302400e12 -0.314274398580227e15 / 0.377244241920000e15 0 0.7519148725913e13 / 0.9327467520000e13; -0.5242772857661e13 / 0.522338181120000e15 0.143e3 / 0.5000e4 -0.17e2 / 0.2500e4 -0.36894656431e11 / 0.1036385280000e13 0.89277540287e11 / 0.37309870080000e14 0.38859042469e11 / 0.1036385280000e13 0.33048158431e11 / 0.3109155840000e13 -0.4358988450443e13 / 0.65292272640000e14 0.97822819709e11 / 0.487710720000e12 -0.7519148725913e13 / 0.9327467520000e13 0;];
+
+    Q(1:11,1:11)=Q_U;
+    Q(m-10:m,m-10:m)=rot90( -Q_U ,2 );
+
+    D1=H\Q;
+
+
+%     s18=-1.000000000000000;   s19=0.195000000000000;     % alpha 0.0605
+    s18=    -0.475000000000000;   s19=0.110000000000000; % alpha 0.0350
+    %s18=0;s19=0;
+    DS=sparse(m,m);
+    DS(1,1:9)=[0.49e2 / 0.20e2 - s18 - (7 * s19) -0.6e1 + 0.7e1 * s18 + (48 * s19) 0.15e2 / 0.2e1 - 0.21e2 * s18 - (140 * s19) -0.20e2 / 0.3e1 + 0.35e2 * s18 + (224 * s19) 0.15e2 / 0.4e1 - 0.35e2 * s18 - (210 * s19) -0.6e1 / 0.5e1 + 0.21e2 * s18 + (112 * s19) 0.1e1 / 0.6e1 - 0.7e1 * s18 - (28 * s19) s18 s19;];
+    DS(m,m-8:m)=fliplr(DS(1,1:9));
+    DS=DS/h;
+
+    M_U = [0.12056593789671863908e1 -0.13378814169347239658e1 0.36847309286546532061e-2 0.15698288365600946515e0 -0.37472461482539197952e-2 -0.62491712449361657064e-2 -0.29164045872729581661e-1 0.54848184117832929161e-3 0.13613461413384884448e-1 -0.25059220258337808220e-2 -0.94113457993630916498e-3; -0.13378814169347239658e1 0.21749807117105597139e1 -0.12369059547124894597e0 -0.83712574037924152603e0 0.50065127254670973258e-1 0.81045853127317536361e-2 0.97405846039248226536e-1 -0.68942461520402214720e-3 -0.41326971493379188475e-1 0.75778529605774119402e-2 0.25800256160095691057e-2; 0.36847309286546532061e-2 -0.12369059547124894597e0 0.18361596652499065332e0 0.48289690013342693109e-1 -0.19719621435164680412e0 0.11406859029505842791e0 -0.29646295985488126964e-1 -0.16038463172861201306e-2 0.32879841528337653050e-2 -0.93242311589807387463e-3 0.12241332668787820533e-3; 0.15698288365600946515e0 -0.83712574037924152603e0 0.48289690013342693109e-1 0.12886524606662484673e1 -0.14403037739488789185e0 -0.44846291607489015475e0 -0.10598334599408054277e0 -0.15873275740355918053e-1 0.73988493386459608166e-1 -0.12508848749152899785e-1 -0.39290233894513005339e-2; -0.37472461482539197952e-2 0.50065127254670973258e-1 -0.19719621435164680412e0 -0.14403037739488789185e0 0.51482665719685186210e0 0.51199577887125103015e-1 -0.36233561810883077365e0 0.91356850268746392169e-1 0.24195916108052419451e-2 -0.18564214413731389338e-2 -0.70192677320704413827e-3; -0.62491712449361657064e-2 0.81045853127317536361e-2 0.11406859029505842791e0 -0.44846291607489015475e0 0.51199577887125103015e-1 0.68636003380365860083e0 -0.28358848290867614908e0 -0.13836006478253396528e0 0.76158070663111995297e-2 0.11447010307180005164e-1 -0.21349696610286552676e-2; -0.29164045872729581661e-1 0.97405846039248226536e-1 -0.29646295985488126964e-1 -0.10598334599408054277e0 -0.36233561810883077365e0 -0.28358848290867614908e0 0.15216081480839085990e1 -0.42653865162216293237e0 -0.42047484981879143123e0 0.19813359263872926304e-1 0.19221397241190103344e-1; 0.54848184117832929161e-3 -0.68942461520402214720e-3 -0.16038463172861201306e-2 -0.15873275740355918053e-1 0.91356850268746392169e-1 -0.13836006478253396528e0 -0.42653865162216293237e0 0.10656733504627815335e1 -0.66921872668484232217e0 0.12022033144141336599e0 -0.30157881394591483631e-1; 0.13613461413384884448e-1 -0.41326971493379188475e-1 0.32879841528337653050e-2 0.73988493386459608166e-1 0.24195916108052419451e-2 0.76158070663111995297e-2 -0.42047484981879143123e0 -0.66921872668484232217e0 0.24064247712949611684e1 -0.15150200315922263367e1 0.17373015320416595052e0; -0.25059220258337808220e-2 0.75778529605774119402e-2 -0.93242311589807387463e-3 -0.12508848749152899785e-1 -0.18564214413731389338e-2 0.11447010307180005164e-1 0.19813359263872926304e-1 0.12022033144141336599e0 -0.15150200315922263367e1 0.27682502485427255096e1 -0.15975407111468405444e1; -0.94113457993630916498e-3 0.25800256160095691057e-2 0.12241332668787820533e-3 -0.39290233894513005339e-2 -0.70192677320704413827e-3 -0.21349696610286552676e-2 0.19221397241190103344e-1 -0.30157881394591483631e-1 0.17373015320416595052e0 -0.15975407111468405444e1 0.29033627686681129471e1;];
+
+
+%     M=-(1/3150)*diag(ones(m-5,1),5)+(5/1008)*diag(ones(m-4,1),4)-(5/126)*diag(ones(m-3,1),3)+(5/21)*diag(ones(m-2,1),2)-(5/3)*diag(ones(m-1,1),1)...
+%       -(1/3150)*diag(ones(m-5,1),-5)+(5/1008)*diag(ones(m-4,1),-4)-(5/126)*diag(ones(m-3,1),-3)+(5/21)*diag(ones(m-2,1),-2)-(5/3)*diag(ones(m-1,1),-1)...
+%         +(5269/1800)*diag(ones(m,1),0);
+    
+    diags   = -5:5;
+    left_stencil = [-1/3150,5/1008,-5/126,5/21,-5/3];
+    stencil = [left_stencil,5269/1800,fliplr(left_stencil)];
+    M = stripeMatrix(stencil, diags, m);
+
+    M(1:11,1:11)=M_U;
+    M(m-10:m,m-10:m)=rot90( M_U(1:11,1:11) ,2 );
+
+    D2=H\(-M/h+DS);
+
+    e_1 = sparse(m,1);
+    e_1(1)= 1;
+    e_m = sparse(m,1);
+    e_m(end)= 1;
+    S_1 = -DS(1,:)';
+    S_m =  DS(end,:)';
+
+    Q = H*D1-(-(e_1*e_1') + (e_m*e_m'));
+    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_12.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_12.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,289 @@
+function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_12(m,h)
+
+% D2 = D1*D1, wide!
+
+BP = 15;
+if(m<2*BP)
+    error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+end
+
+H=speye(m,m);
+H(1:15,1:15)=diag([2.880607858916397e-01,...
+    1.560376162339675e+00,...
+    2.403139445479289e-01,...
+    1.531292896754208e+00,...
+    1.245107365551116e+00,...
+    2.403139445479289e-01,...
+    1.218498444843265e+00,...
+    1.730095305997005e+00,...
+    2.403139445479289e-01,...
+    8.526541262207157e-01,...
+    1.839467231356713e+00,...
+    2.403139445479289e-01,...
+    1.350211172437031e+00,...
+    9.139950953929686e-01,...
+    1.008985635023947e+00]);
+
+H(m-14:m,m-14:m)=rot90(H(1:15,1:15),2);
+
+H=H*h;
+HI = inv(H);
+
+diags   = -6:6;
+stencil = [1/5544,-1/385,1/56,-5/63,15/56,-6/7,0,6/7,-15/56,5/63,-1/56,1/385,-1/5544];
+D1 = stripeMatrix(stencil, diags, m);
+
+
+D1(1,     1)=    -1.735744761135539e+00;
+D1(1  ,   2 )=   2.307154400697361e+00;
+D1(1,     3)=    -8.049541548921420e-02;
+D1(1 ,    4)=    -5.054323197649326e-01;
+D1(1 ,   5 )=   -2.276940626773821e-01;
+D1(1 ,    6 )=   -4.332046513157440e-03;
+D1(1 ,    7 )=   1.922516500571120e-01;
+D1(1 ,    8 )=   1.841426475531248e-01;
+D1(1 ,    9 )=   4.299540500353117e-02;
+D1(1 ,   10 )=   -8.425321510779284e-02;
+D1(1 ,   11 )=   -1.783432239793461e-01;
+D1(1 ,   12 )=   -9.098340284317097e-02;
+D1(1 ,   13 )=   2.989603414709966e-01;
+D1(1 ,   14 )=   -1.262666707971657e-01;
+D1(1 ,   15 )=   8.040673525575449e-03;
+D1(2 ,    1 )=   -4.259233932680148e-01;
+D1(2 ,    3  )=  1.077970170802666e-01;
+D1(2 ,    4  )=  3.305658398446859e-01;
+D1(2 ,    5 )=   1.023936809322525e-01;
+D1(2 ,    6  )=  1.004615991085861e-02;
+D1(2 ,    7  )=  -9.993439452786020e-02;
+D1(2 ,    8  )=  -8.071677622127596e-02;
+D1(2 ,    9  )=  -2.794842118590027e-02;
+D1(2 ,   10  )=  4.202296437592187e-02;
+D1(2 ,   11 )=   8.084986053360355e-02;
+D1(2 ,   12 )=   4.970793893896007e-02;
+D1(2 ,   13 )=   -1.480838886705940e-01;
+D1(2  ,  14  )=  6.449962737470759e-02;
+D1(2  ,  15 )=   -5.276215117611654e-03;
+D1(3  ,   1  )=  9.648866897889277e-02;
+D1(3  ,   2  )=  -6.999339806925928e-01;
+D1(3  ,   4  )=  6.447106132171313e-01;
+D1(3  ,   5  )=  1.610341017868972e-01;
+D1(3  ,   6  )=  -2.926101271261580e-01;
+D1(3  ,   7  )=  2.578035970538076e-02;
+D1(3  ,   8  )=  -3.649479605631123e-02;
+D1(3  ,   9  )=  2.039707558852247e-01;
+D1(3  ,  10  )=  -2.443704472345096e-02;
+D1(3  ,  11  )=  -4.983260374057472e-02;
+D1(3  ,  12  )=  -1.982796172639611e-01;
+D1(3  ,  13  )=  2.659121147554237e-01;
+D1(3  ,  14  )=  -1.104398155224152e-01;
+D1(3  ,  15  )=  1.413137079651327e-02;
+D1(4  ,   1  )=  9.507993640872410e-02;
+D1(4  ,   2  )=  -3.368441515472113e-01;
+D1(4  ,   3  )=  -1.011778679849722e-01;
+D1(4  ,   5  )=  1.664700006607916e-01;
+D1(4  ,   6  )=  8.420689674052668e-02;
+D1(4  ,   7  )=  1.234483107384551e-01;
+D1(4  ,   8  )=  3.371285340885326e-02;
+D1(4  ,   9  )=  -2.009043511216467e-02;
+D1(4  ,  10  )=  -4.311340633236862e-02;
+D1(4  ,  11  )=  -3.824719371220764e-02;
+D1(4  ,  12  )=  -2.775022659375772e-03;
+D1(4  ,  13  )=  8.248678009703486e-02;
+D1(4  ,  14  )=  -5.169933586327551e-02;
+D1(4  ,  15  )=  8.542635157189999e-03;
+D1(5  ,   1  )=  5.267797175762052e-02;
+D1(5  ,   2  )=  -1.283203869171410e-01;
+D1(5   ,  3  )=  -3.108064515385221e-02;
+D1(5  ,   4  )=  -2.047328098663259e-01;
+D1(5  ,   6  )=  1.528377576445926e-02;
+D1(5  ,   7  )=  1.842140733907868e-01;
+D1(5  ,   8  )=  1.776491663357457e-01;
+D1(5  ,   9  )=  4.220032524144508e-02;
+D1(5  ,  10  )=  -3.611067700750285e-02;
+D1(5  ,  11  )=  -1.090730089234403e-01;
+D1(5  ,  12  )=  -5.398262792345335e-02;
+D1(5  ,  13  )=  1.325672256468355e-01;
+D1(5  ,  14  )=  -3.865175590539601e-02;
+D1(5  ,  15  )=  -2.640626439781275e-03;
+D1(6  ,   1 )=   5.192760351242898e-03;
+D1(6  ,   2  )=  -6.523045708997477e-02;
+D1(6  ,   3  )=  2.926101271261579e-01;
+D1(6  ,   4  )=  -5.365707057867646e-01;
+D1(6  ,   5  )=  -7.918783828195401e-02;
+D1(6  ,   7  )=  1.455199260610844e-01;
+D1(6  ,   8  )=  4.392627009892030e-01;
+D1(6  ,   9  )=  -2.877704902282471e-01;
+D1(6  ,  10  )=  6.246304940524665e-02;
+D1(6  ,  11  )=  -8.757523368284212e-03;
+D1(6  ,  12  )=  2.373907173856874e-01;
+D1(6  ,  13  )=  -3.887671913712637e-01;
+D1(6  ,  14  )=  2.338336212010801e-01;
+D1(6  ,  15  )=  -4.998869639321427e-02;
+D1( 7 ,    1 )=   -4.544951340626429e-02;
+D1( 7 ,    2 )=   1.279732835762292e-01;
+D1( 7 ,    3 )=   -5.084438112238577e-03;
+D1( 7 ,    4 )=   -1.551380899582667e-01;
+D1( 7 ,    5  )=  -1.882368423100825e-01;
+D1( 7 ,    6  )=  -2.869964060279157e-02;
+D1( 7  ,   8  )=  1.501531969717210e-01;
+D1( 7 ,    9  )=  4.398683557974375e-02;
+D1( 7  ,  10  )=  9.034991722085359e-02;
+D1( 7 ,   11  )=  6.874263504449905e-02;
+D1( 7 ,   12  )=  1.191424140454980e-02;
+D1( 7 ,   13  )=  -1.387149470006835e-01;
+D1( 7,    14  )=  8.081158783540948e-02;
+D1( 7 ,   15  )=  -1.260822624267884e-02;
+D1( 8 ,    1  )=  -3.065974203065793e-02;
+D1( 8  ,   2  )=  7.279861004189266e-02;
+D1( 8  ,   3  )=  5.069205358435631e-03;
+D1( 8  ,   4  )=  -2.983896481040582e-02;
+D1( 8  ,   5  )=  -1.278497691554543e-01;
+D1( 8  ,   6  )=  -6.101453024095747e-02;
+D1( 8  ,   7  )=  -1.057522301598588e-01;
+D1( 8  ,   9  )=  3.518098475279482e-02;
+D1( 8  ,  10 )=   1.267951379582364e-01;
+D1( 8  ,  11  )=  1.709119775233402e-01;
+D1( 8  ,  12 )=   4.871305182138817e-02;
+D1( 8  ,  13 )=   -1.381315738947210e-01;
+D1( 8  ,  14 )=   2.531339542383916e-02;
+D1( 8  ,  15 )=   8.464447412128264e-03;
+D1( 9  ,   1  )=  -5.153795872455654e-02;
+D1( 9  ,   2  )=  1.814711596347261e-01;
+D1( 9  ,   3  )=  -2.039707558852247e-01;
+D1( 9  ,   4 )=   1.280172927036423e-01;
+D1( 9  ,   5 )=   -2.186470530689342e-01;
+D1( 9  ,   6 )=   2.877704902282471e-01;
+D1( 9  ,   7 )=   -2.230327950727989e-01;
+D1( 9  ,   8 )=   -2.532789210200124e-01;
+D1( 9  ,  10 )=   -2.487018120584765e-02;
+D1( 9  ,  11 )=   5.656432879788119e-01;
+D1( 9  ,  12 )=   -3.179024054582303e-01;
+D1( 9  ,  13 )=   3.080272260545759e-01;
+D1( 9  ,  14 )=   -2.449533574878925e-01;
+D1( 9  ,  15 )=   6.726397132349360e-02;
+D1(10  ,   1 )=   2.846411764336633e-02;
+D1(10  ,   2 )=   -7.690296670899374e-02;
+D1(10  ,   3 )=   6.887391299700927e-03;
+D1(10  ,   4 )=   7.742794040563218e-02;
+D1(10  ,   5 )=   5.273142829480713e-02;
+D1(10  ,   6 )=   -1.760472544430208e-02;
+D1(10  ,   7 )=   -1.291159336943500e-01;
+D1(10  ,   8  )=  -2.572762697778848e-01;
+D1(10  ,   9  )=  7.009467453925059e-03;
+D1(10  ,  11  )=  1.983435406810274e-01;
+D1(10  ,  12  )=  -3.844771590180474e-02;
+D1(10  ,  13  )=  2.943472385247488e-01;
+D1(10  ,  14  )=  -1.771193581329739e-01;
+D1(10  ,  15  )=  3.146739090039766e-02;
+D1(10  ,  16  )=  -2.115455432962849e-04;
+D1(11  ,   1  )=  2.792856995883971e-02;
+D1(11  ,   2  )=  -6.858300759838749e-02;
+D1(11  ,   3  )=  6.510292419375574e-03;
+D1(11  ,   4  )=  3.183946691406334e-02;
+D1(11  ,   5  )=  7.382985925399284e-02;
+D1(11  ,   6  )=  1.144111158506918e-03;
+D1(11  ,   7  )=  -4.553644254612264e-02;
+D1(11  ,   8  )=  -1.607498111470597e-01;
+D1(11  ,   9  )=  -7.389746738841917e-02;
+D1(11  ,  10  )=  -9.193881548309495e-02;
+D1(11  ,  12  )=  4.858403641270599e-02;
+D1(11  ,  13  )=  2.953396945760745e-01;
+D1(11  ,  14  )=  -1.897059300798801e-02;
+D1(11  ,  15  )=  -2.681387584075025e-02;
+D1(11  ,  16  )=  1.412040700223218e-03;
+D1(11  ,  17  )=  -9.805838195994568e-05;
+D1(12  ,   1  )=  1.090604649488924e-01;
+D1(12  ,   2  )=  -3.227573129195589e-01;
+D1(12  ,   3  )=  1.982796172639611e-01;
+D1(12  ,   4  )=  1.768258806049677e-02;
+D1(12  ,   5  )=  2.796931645632894e-01;
+D1(12  ,   6  )=  -2.373907173856874e-01;
+D1(12  ,   7  )=  -6.041049615427440e-02;
+D1(12  ,   8  )=  -3.507005074362792e-01;
+D1(12  ,   9  )=  3.179024054582303e-01;
+D1(12  ,  10  )=  1.364157359619944e-01;
+D1(12  ,  11  )=  -3.718833008893085e-01;
+D1(12  ,  13  )=  -1.473587211078091e-01;
+D1(12  ,  14  )=  5.107219886498376e-01;
+D1(12  ,  15  )=  -1.500513994956780e-02;
+D1(12  ,  16  )=  -7.430756001585824e-02;
+D1(12  ,  17  )=  1.080837236594302e-02;
+D1(12  ,  18  )=  -7.505814143015984e-04;
+D1(13  ,   1   )= -6.378169035524298e-02;
+D1(13  ,   2   )= 1.711336527390002e-01;
+D1(13  ,   3  )=  -4.732769992164881e-02;
+D1(13  ,   4  )=  -9.354938176872968e-02;
+D1(13  ,   5  )=  -1.222478620034153e-01;
+D1(13  ,   6  )=  6.919375218960795e-02;
+D1(13  ,   7  )=  1.251833421669687e-01;
+D1(13  ,   8  )=  1.769951193441043e-01;
+D1(13  ,   9  )=  -5.482345223653074e-02;
+D1(13  ,  10  )=  -1.858793591648383e-01;
+D1(13  ,  11  )=  -4.023575729350775e-01;
+D1(13  ,  12  )=  2.622727189335804e-02;
+D1(13  ,  14  )=  4.511356466215911e-01;
+D1(13  ,  15  )=  -9.724618589400275e-02;
+D1(13  ,  16  )=  5.877975311212341e-02;
+D1(13  ,  17  )=  -1.322544445022777e-02;
+D1(13  ,  18  )=  1.923701010942221e-03;
+D1(13  ,  19  )=  -1.335903479820987e-04;
+D1(14   ,  1  )=  3.979504551511218e-02;
+D1(14  ,   2  )=  -1.101140274631495e-01;
+D1(14  ,   3  )=  2.903760407152547e-02;
+D1(14  ,   4  )=  8.661624791356937e-02;
+D1(14  ,   5  )=  5.265409651744463e-02;
+D1(14  ,   6  )=  -6.148116129069339e-02;
+D1(14  ,   7  )=  -1.077344885099467e-01;
+D1(14  ,   8  )=  -4.791555974685060e-02;
+D1(14  ,   9  )=  6.440483965930399e-02;
+D1(14  ,  10  )=  1.652323434850750e-01;
+D1(14  ,  11  )=  3.817939983867793e-02;
+D1(14  ,  12  )=  -1.342825757801646e-01;
+D1(14  ,  13  )=  -6.664460164211102e-01;
+D1(14  ,  15  )=  8.751759953804069e-01;
+D1(14  ,  16  )=  -2.930619039503475e-01;
+D1(14  ,  17  )=  8.683315672602888e-02;
+D1(14  ,  18  )=  -1.953746026335650e-02;
+D1(14  ,  19  )=  2.841812401942763e-03;
+D1(14  ,  20  )=  -1.973480834682474e-04;
+D1(15  ,   1  )=  -2.295575530984041e-03;
+D1(15  ,   2  )=  8.159561455701054e-03;
+D1(15  ,   3  )=  -3.365722305748102e-03;
+D1(15  ,   4  )=  -1.296477975670818e-02;
+D1(15  ,   5  )=  3.258582992375954e-03;
+D1(15  ,   6  )=  1.190599786168119e-02;
+D1(15  ,   7  )=  1.522628621820923e-02;
+D1(15  ,   8  )=  -1.451388426876270e-02;
+D1(15  ,   9  )=  -1.602051576712872e-02;
+D1(15  ,  10  )=  -2.659185598017704e-02;
+D1(15  ,  11  )=  4.888399224192811e-02;
+D1(15  ,  12  )=  3.573831226733737e-03;
+D1(15  ,  13  )=  1.301335540499094e-01;
+D1(15  ,  14  )=  -7.927829095053140e-01;
+D1(15  ,  16  )=  8.495094750506673e-01;
+D1(15  ,  17  )=  -2.654717109533336e-01;
+D1(15  ,  18  )=  7.865828472691364e-02;
+D1(15  ,  19  )=  -1.769811406355557e-02;
+D1(15  ,  20  )=  2.574271136517173e-03;
+D1(15  ,  21  )=  -1.787688289248037e-04;
+
+
+D1(m-14:m,m-20:m)=rot90( -D1(1:15,1:21),2);
+D1=D1/h;
+
+
+% Wide 2nd derivative
+
+D2=D1*D1;
+
+e_1 = sparse(m,1);
+e_1(1)= 1;
+e_m = sparse(m,1);
+e_m(end)= 1;
+
+S_1 = (e_1'*D1)';
+S_m = (e_m'*D1)';
+
+Q = H*D1-(-(e_1*e_1') + (e_m*e_m'));
+M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_2.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_2.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,43 @@
+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=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    H=(speye(m,m));H(1,1)=0.5;H(m,m)=0.5;
+    H=h*H;
+    HI=inv(H);
+    
+    diags   = -1:1;
+    stencil = [-1/2 0 1/2];
+    D1 = stripeMatrix(stencil, diags, m);
+    
+    D1(1,1)=-1;D1(1,2)=1;D1(m,m-1)=-1;D1(m,m)=1;
+    D1(m,m-1)=-1;D1(m,m)=1;
+    D1=D1/h;
+
+    Q=H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m');
+
+    diags   = -1:1;
+    stencil = [1 -2 1];
+    D2 = stripeMatrix(stencil, diags, m);
+    
+    D2(1,1)=1;D2(1,2)=-2;D2(1,3)=1;
+    D2(m,m-2)=1;D2(m,m-1)=-2;D2(m,m)=1;
+    D2=D2/h^2;
+
+    S_U=[-3/2, 2, -1/2]/h;
+    S_1=sparse(1,m);
+    S_1(1:3)=S_U;
+    S_m=sparse(1,m);
+    S_m(m-2:m)=fliplr(-S_U);
+
+
+    M=-H*D2-e_1*S_1+e_m*S_m;
+    S_1 = S_1';
+    S_m = S_m';
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,49 @@
+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=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    e=ones(m,1);
+    H=spdiags(e,0,m,m);
+    %H=speye(m,m);
+
+    H(1:4,1:4)=diag([17/48 59/48 43/48 49/48]);
+    H(m-3:m,m-3:m)=rot90(diag([17/48 59/48 43/48 49/48]),2);
+    H=H*h;
+    HI=inv(H);
+
+
+    Q=spdiags([e -8*e 0*e 8*e -e], -2:2, m, m)/12;
+    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
+    Q_U = [0 0.59e2 / 0.96e2 -0.1e1 / 0.12e2 -0.1e1 / 0.32e2; -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2; 0.1e1 / 0.32e2 0 -0.59e2 / 0.96e2 0;];
+    Q(1:4,1:4)=Q_U;
+    Q(m-3:m,m-3:m)=rot90( -Q_U(1:4,1:4) ,2 );
+
+    D1=H\(Q-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    M=-spdiags([-e 16*e -30*e 16*e -e], -2:2, m, m)/12;
+
+    %M=-(-1/12*diag(ones(m-2,1),2)+16/12*diag(ones(m-1,1),1)+16/12*diag(ones(m-1,1),-1)-1/12*diag(ones(m-2,1),-2)-30/12*diag(ones(m,1),0));
+
+    M_U=[0.9e1 / 0.8e1 -0.59e2 / 0.48e2 0.1e1 / 0.12e2 0.1e1 / 0.48e2; -0.59e2 / 0.48e2 0.59e2 / 0.24e2 -0.59e2 / 0.48e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.48e2 0.55e2 / 0.24e2 -0.59e2 / 0.48e2; 0.1e1 / 0.48e2 0 -0.59e2 / 0.48e2 0.59e2 / 0.24e2;];
+    M(1:4,1:4)=M_U;
+
+    M(m-3:m,m-3:m)=rot90(  M_U ,2 );
+    M=M/h;
+
+    S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
+    S_1=sparse(sparse(1,m));
+    S_1(1:4)=S_U;
+    S_m=sparse(sparse(1,m));
+    S_m(m-3:m)=fliplr(-S_U);
+
+
+    D2=H\(-M-e_1*S_1+e_m*S_m);
+    S_1 = S_1';
+    S_m = S_m';
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_6.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_6.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,60 @@
+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=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    H=speye(m,m);
+    H(1:6,1:6)=diag([13649/43200,12013/8640,2711/4320,5359/4320,7877/8640, ...
+             43801/43200]);
+    H(m-5:m,m-5:m)=rot90(diag([13649/43200,12013/8640, ...
+                2711/4320,5359/4320,7877/8640,43801/43200]),2);
+
+    H=H*h;
+    HI=inv(H);
+
+
+    % D1 har en fri parameter x1.
+    % Ett optimerat varde ger x1=0.70127127127127 = 331/472
+    x1=0.70127127127127;
+
+    diags   = -3:3;
+    stencil = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    D1 = stripeMatrix(stencil, diags, m);
+
+    D1(1:6,1:9)=[-21600/13649, 43200/13649*x1-7624/40947, -172800/13649*x1+ ...
+             715489/81894, 259200/13649*x1-187917/13649, -172800/13649* ...
+             x1+735635/81894, 43200/13649*x1-89387/40947, 0, 0, 0; ...
+             -8640/12013*x1+7624/180195, 0, 86400/12013*x1-57139/12013, ...
+             -172800/12013*x1+745733/72078, 129600/12013*x1-91715/12013, ...
+             -34560/12013*x1+240569/120130, 0, 0, 0; 17280/2711*x1-715489/162660, -43200/2711*x1+57139/5422, 0, 86400/2711*x1-176839/8133, -86400/2711*x1+242111/10844, 25920/2711*x1-182261/27110, 0, 0, 0; -25920/5359*x1+187917/53590, 86400/5359*x1-745733/64308, -86400/5359*x1+176839/16077, 0, 43200/5359*x1-165041/32154, -17280/5359*x1+710473/321540, 72/5359, 0, 0; 34560/7877*x1-147127/47262, -129600/7877*x1+91715/7877, 172800/7877*x1-242111/15754, -86400/7877*x1+165041/23631, 0, 8640/7877*x1, -1296/7877, 144/7877, 0; -43200/43801*x1+89387/131403, 172800/43801*x1-240569/87602, -259200/43801*x1+182261/43801, 172800/43801*x1-710473/262806, -43200/43801*x1, 0, 32400/43801, -6480/43801, 720/43801];
+    D1(m-5:m,m-8:m)=rot90( -D1(1:6,1:9),2);
+    D1=D1/h;
+
+    Q=H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m');
+
+    %D2=(2*diag(ones(m-3,1),3)-27*diag(ones(m-2,1),2)+270*diag(ones(m-1,1),1)+270*diag(ones(m-1,1),-1)-27*diag(ones(m-2,1),-2)+2*diag(ones(m-3,1),-3)-490*diag(ones(m,1),0))/180;
+    diags   = -3:3;
+    stencil = 1/180*[2,-27,270,-490,270,-27,2];
+    D2 = stripeMatrix(stencil, diags, m);
+    
+    D2(1:6,1:9)=[114170/40947, -438107/54596, 336409/40947, -276997/81894, 3747/13649, 21035/163788, 0, 0, 0;6173/5860, -2066/879, 3283/1758, -303/293, 2111/3516, -601/4395, 0, 0, 0;-52391/81330, 134603/32532, -21982/2711, 112915/16266, -46969/16266, 30409/54220, 0, 0, 0;68603/321540, -12423/10718, 112915/32154, -75934/16077, 53369/21436, -54899/160770, 48/5359, 0, 0;-7053/39385, 86551/94524, -46969/23631, 53369/15754, -87904/23631, 820271/472620, -1296/7877, 96/7877, 0;21035/525612, -24641/131403, 30409/87602, -54899/131403, 820271/525612, -117600/43801, 64800/43801, -6480/43801, 480/43801];
+    D2(m-5:m,m-8:m)=rot90( D2(1:6,1:9) ,2 );
+
+    D2=D2/h^2;
+
+    S_U=[-25/12, 4, -3, 4/3, -1/4]/h;
+    S_1=sparse(1,m);
+    S_1(1:5)=S_U;
+    S_m=sparse(1,m);
+    S_m(m-4:m)=fliplr(-S_U);
+
+
+    M=-H*D2-e_1*S_1+e_m*S_m;
+    S_1 = S_1';
+    S_m = S_m';
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_8.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_8.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,124 @@
+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=speye(m,m);
+    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)=rot90(diag([1498139/5080320, 1107307/725760, 20761/80640, 1304999/725760, 299527/725760, 103097/80640, 670091/725760, 5127739/5080320]),2);
+
+%     D1=-(1/280*diag(ones(m-4,1),4)-4/105*diag(ones(m-3,1),3)+1/5*diag(ones(m-2,1),2)-4/5*diag(ones(m-1,1),1)+4/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+4/105*diag(ones(m-3,1),-3)-1/280*diag(ones(m-4,1),-4));
+
+    diags   = -4:4;
+    stencil = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    D1 = stripeMatrix(stencil, diags, m);
+
+
+    %r68 = -1022551/30481920;
+    %r78 = 6445687/8709120;
+    %r67 = 1714837/4354560;
+
+    %r67=0.58;
+    %r68=-0.08;
+    %r78=0.75;
+
+    %r67=0.65;
+    %r68=-0.1;
+    %r78=0.75;
+
+    %r67=0.9250;
+    %r68=-0.2;
+    %r78=0.775;
+
+    %r67=0.65;
+    %r68=-0.105;
+    %r78=0.755;
+
+    %%r67=0.649;
+    %%r68=-0.104;
+    %%r78=0.755;
+
+    %r67=-0.48;
+    %r68=0.3;
+    %r78=0.67;
+
+    %r67=0.5600;
+    %r68=-0.0733;
+    %r78=0.7500;/scr0/home/ken/VERY_FINE
+
+    % min med 1/10 f?r D6
+    %r67=0.62;
+    %r68=-0.1040;
+    %r78=0.7640;
+
+    % Den nya optimerade, for att fungera i NS-dissipation
+
+    r67=0.69789473684211;
+    r68=-0.12052631578947;
+    r78=0.75868421052632;
+
+
+    D1(1:8,1:12)=[-2540160/1498139, -142642467/5992556+50803200/1498139*r78+5080320/1498139*r67+25401600/1498139*r68, 705710031/5992556-228614400/1498139*r78-25401600/1498139*r67-121927680/1498139*r68, -3577778591/17977668+381024000/1498139*r78+50803200/1498139*r67+228614400/1498139*r68, 203718909/1498139-254016000/1498139*r78-50803200/1498139*r67-203212800/1498139*r68, -32111205/5992556+25401600/1498139*r67+76204800/1498139*r68, -652789417/17977668+76204800/1498139*r78-5080320/1498139*r67, 74517981/5992556-25401600/1498139*r78-5080320/1498139*r68, 0, 0, 0, 0;142642467/31004596-7257600/1107307*r78-725760/1107307*r67-3628800/1107307*r68, 0, -141502371/2214614+91445760/1107307*r78+10886400/1107307*r67+50803200/1107307*r68, 159673719/1107307-203212800/1107307*r78-29030400/1107307*r67-127008000/1107307*r68, -1477714693/13287684+152409600/1107307*r78+32659200/1107307*r67+127008000/1107307*r68, 11652351/2214614-17418240/1107307*r67-50803200/1107307*r68, 36069450/1107307-50803200/1107307*r78+3628800/1107307*r67, -536324953/46506894+17418240/1107307*r78+3628800/1107307*r68, 0, 0, 0, 0;-18095129/134148+3628800/20761*r78+403200/20761*r67+1935360/20761*r68, 47167457/124566-10160640/20761*r78-1209600/20761*r67-5644800/20761*r68, 0, -120219461/124566+25401600/20761*r78+4032000/20761*r67+16934400/20761*r68, 249289259/249132-25401600/20761*r78-6048000/20761*r67-22579200/20761*r68, -2611503/41522+3628800/20761*r67+10160640/20761*r68, -7149666/20761+10160640/20761*r78-806400/20761*r67, 37199165/290654-3628800/20761*r78-806400/20761*r68, 0, 0, 0, 0;3577778591/109619916-54432000/1304999*r78-7257600/1304999*r67-32659200/1304999*r68, -159673719/1304999+203212800/1304999*r78+29030400/1304999*r67+127008000/1304999*r68, 360658383/2609998-228614400/1304999*r78-36288000/1304999*r67-152409600/1304999*r68, 0, -424854441/5219996+127008000/1304999*r78+36288000/1304999*r67+127008000/1304999*r68, 22885113/2609998-29030400/1304999*r67-76204800/1304999*r68, 158096578/3914997-76204800/1304999*r78+7257600/1304999*r67, -296462325/18269986+29030400/1304999*r78+7257600/1304999*r68, 0, 0, 0, 0;-203718909/2096689+36288000/299527*r78+7257600/299527*r67+29030400/299527*r68, 1477714693/3594324-152409600/299527*r78-32659200/299527*r67-127008000/299527*r68, -747867777/1198108+228614400/299527*r78+54432000/299527*r67+203212800/299527*r68, 424854441/1198108-127008000/299527*r78-36288000/299527*r67-127008000/299527*r68, 0, -17380335/1198108+10886400/299527*r67+25401600/299527*r68, -67080435/1198108+25401600/299527*r78-3628800/299527*r67, 657798011/25160268-10886400/299527*r78-3628800/299527*r68, -2592/299527, 0, 0, 0;1529105/1237164-403200/103097*r67-1209600/103097*r68, -3884117/618582+1935360/103097*r67+5644800/103097*r68, 2611503/206194-3628800/103097*r67-10160640/103097*r68, -7628371/618582+3225600/103097*r67+8467200/103097*r68, 5793445/1237164-1209600/103097*r67-2822400/103097*r68, 0, 80640/103097*r67, 80640/103097*r68, 3072/103097, -288/103097, 0, 0;93255631/8041092-10886400/670091*r78+725760/670091*r67, -36069450/670091+50803200/670091*r78-3628800/670091*r67, 64346994/670091-91445760/670091*r78+7257600/670091*r67, -158096578/2010273+76204800/670091*r78-7257600/670091*r67, 67080435/2680364-25401600/670091*r78+3628800/670091*r67, -725760/670091*r67, 0, 725760/670091*r78, -145152/670091, 27648/670091, -2592/670091, 0;-3921999/1079524+25401600/5127739*r78+5080320/5127739*r68, 536324953/30766434-121927680/5127739*r78-25401600/5127739*r68, -334792485/10255478+228614400/5127739*r78+50803200/5127739*r68, 296462325/10255478-203212800/5127739*r78-50803200/5127739*r68, -657798011/61532868+76204800/5127739*r78+25401600/5127739*r68, -5080320/5127739*r68, -5080320/5127739*r78, 0, 4064256/5127739, -1016064/5127739, 193536/5127739, -18144/5127739];
+
+
+    D1(m-7:m,m-11:m)=rot90( -D1(1:8,1:12),2);
+
+
+    D1=D1/h;
+
+    %DD=-(1/280*diag(ones(m-4,1),4)-4/105*diag(ones(m-3,1),3)+1/5*diag(ones(m-2,1),2)-4/5*diag(ones(m-1,1),1)+4/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+4/105*diag(ones(m-3,1),-3)-1/280*diag(ones(m-4,1),-4));
+    %DD(1:4,1:9)=1/280*[-761,2240,-3920,15680/3,-4900,3136,-3920/3,320,-35,
+    %                   -35,-446,980,-980,2450/3,-490,196,-140/3,5,
+    %                   5,-80,-266,560,-350,560/3,-70,16,-5/3,
+    %                   -5/3,20,-140,-126,350,-140,140/3,-10,1];
+%     D(m-7:m,m-11:m)=rot90( -D1(1:8,1:12),2);
+
+%     D2=(-1/560*diag(ones(m-4,1),4)+8/315*diag(ones(m-3,1),3)-1/5*diag(ones(m-2,1),2)+8/5*diag(ones(m-1,1),1)+8/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+8/315*diag(ones(m-3,1),-3)-1/560*diag(ones(m-4,1),-4)-205/72*diag(ones(m,1),0));
+
+    diags   = -4:4;
+    left_stencil = [-1/560,8/315,-1/5,8/5];
+    stencil = [left_stencil,-205/72,fliplr(left_stencil)];
+    D2 = stripeMatrix(stencil, diags, m);
+
+    
+    D2(1:8,1:12)=[4870382994799/1358976868290, -893640087518/75498714905,926594825119/60398971924, -1315109406200/135897686829,39126983272/15099742981, 12344491342/75498714905, -451560522577/2717953736580, 0, 0, 0, 0, 0;333806012194/390619153855, -154646272029/111605472530, 1168338040/33481641759, 82699112501/133926567036, -171562838/11160547253, -28244698346/167408208795, 11904122576/167408208795, -2598164715/312495323084, 0, 0, 0, 0;7838984095/52731029988, 1168338040/5649753213, -88747895/144865467, 423587231/627750357, -43205598281/22599012852, 4876378562/1883251071, -5124426509/3766502142, 10496900965/39548272491, 0, 0, 0, 0;-94978241528/828644350023, 82699112501/157837019052, 1270761693/13153084921, -167389605005/118377764289, 48242560214/39459254763, -31673996013/52612339684, 43556319241/118377764289, -44430275135/552429566682, 0, 0, 0, 0;1455067816/21132528431, -171562838/3018932633, -43205598281/36227191596, 48242560214/9056797899, -52276055645/6037865266, 57521587238/9056797899, -80321706377/36227191596, 8078087158/21132528431, -1296/299527, 0, 0, 0;10881504334/327321118845, -28244698346/140280479505, 4876378562/9352031967, -10557998671/12469375956, 57521587238/28056095901, -278531401019/93520319670, 73790130002/46760159835, -137529995233/785570685228, 2048/103097, -144/103097, 0, 0;-135555328849/8509847458140, 11904122576/101307707835, -5124426509/13507694378, 43556319241/60784624701, -80321706377/81046166268, 73790130002/33769235945, -950494905688/303923123505, 239073018673/141830790969, -145152/670091, 18432/670091, -1296/670091, 0;0, -2598164715/206729925524, 10496900965/155047444143, -44430275135/310094888286, 425162482/2720130599, -137529995233/620189776572, 239073018673/155047444143, -144648000000/51682481381, 8128512/5127739, -1016064/5127739, 129024/5127739, -9072/5127739];
+
+
+
+
+    D2(m-7:m,m-11:m)=rot90( D2(1:8,1:12) ,2 );
+
+    D2=D2/h^2;
+
+    DS=sparse(m,m);
+    DS(1,1:7)=-[-4723/2100, 839/175, -157/35, 278/105, -103/140, -1/175, 6/175];
+
+    DS(m,m-6:m)=fliplr(-[-4723/2100, 839/175, -157/35, 278/105, -103/140, -1/175, 6/175]);
+    DS=DS/h;
+
+    H=h*H;
+    HI=inv(H);
+
+    %r1=D1*u-u_x;sqrt(r1'*r1)/m
+    %r2=D2*u-u_xx;sqrt(r2'*r2)/m
+
+    %te=eig(D1);
+    %tm=max(abs(te));
+    %plot(real(te),imag(te),'*');
+    %grid;
+    %xlabel('Real part');
+    %ylabel('Imaginary part');
+    %title('Spectrum, minimal spectral radius');
+    e_1 = sparse(m,1);
+    e_1(1)= 1;
+    e_m = sparse(m,1);
+    e_m(end)= 1;
+    S_1 = -DS(1,:)';
+    S_m =  DS(end,:)';
+
+    Q = H*D1-(-(e_1*e_1') + (e_m*e_m'));
+    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_blocknorm_10.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_blocknorm_10.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,71 @@
+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;];
+
+
+    H=speye(m);
+    H(1:9,1:9)=H_U;
+    H(m-8:m,m-8:m)=rot90( H_U(1:9,1:9) ,2 );
+    H=H*h;
+    HI=inv(H);
+
+%     Q=1/1260*diag(ones(m-5,1),5)-5/504*diag(ones(m-4,1),4)+5/84*diag(ones(m-3,1),3)-5/21*diag(ones(m-2,1),2)+5/6*diag(ones(m-1,1),1)-5/6*diag(ones(m-1,1),-1)+5/21*diag(ones(m-2,1),-2)-5/84*diag(ones(m-3,1),-3)+5/504*diag(ones(m-4,1),-4)-1/1260*diag(ones(m-5,1),-5) ;
+    diags   = -5:5;
+    stencil = [-1/1260,5/504,-5/84,5/21,-5/6,0,5/6,-5/21,5/84,-5/504,1/1260];
+    Q = stripeMatrix(stencil, diags, m);
+
+    Q_U = [-0.1e1 / 0.2e1 0.78249683e8 / 0.71442000e8 -0.28290472447e11 / 0.18289152000e11 0.4285528063e10 / 0.2032128000e10 -0.3924872557e10 / 0.1828915200e10 0.2856344621e10 / 0.1828915200e10 -0.1598284927e10 / 0.2032128000e10 0.4652402687e10 / 0.18289152000e11 -0.731623e6 / 0.17860500e8; -0.78249683e8 / 0.71442000e8 0 0.5351945471e10 / 0.2032128000e10 -0.4078428731e10 / 0.1143072000e10 0.4879509877e10 / 0.1219276800e10 -0.1273709579e10 / 0.381024000e9 0.7433128649e10 / 0.3657830400e10 -0.1239008e7 / 0.1488375e7 0.21251483e8 / 0.124416000e9; 0.28290472447e11 / 0.18289152000e11 -0.5351945471e10 / 0.2032128000e10 0 0.6701592799e10 / 0.2612736000e10 -0.57535927e8 / 0.17418240e8 0.3058732543e10 / 0.870912000e9 -0.28821953e8 / 0.10206000e8 0.1858901437e10 / 0.1219276800e10 -0.2363118211e10 / 0.6096384000e10; -0.4285528063e10 / 0.2032128000e10 0.4078428731e10 / 0.1143072000e10 -0.6701592799e10 / 0.2612736000e10 0 0.52016695e8 / 0.20901888e8 -0.3777923e7 / 0.1275750e7 0.123333949e9 / 0.41472000e8 -0.2256321727e10 / 0.1143072000e10 0.1058261459e10 / 0.1828915200e10; 0.3924872557e10 / 0.1828915200e10 -0.4879509877e10 / 0.1219276800e10 0.57535927e8 / 0.17418240e8 -0.52016695e8 / 0.20901888e8 0 0.125390297e9 / 0.58060800e8 -0.609569351e9 / 0.261273600e9 0.438488399e9 / 0.243855360e9 -0.14244569e8 / 0.24385536e8; -0.2856344621e10 / 0.1828915200e10 0.1273709579e10 / 0.381024000e9 -0.3058732543e10 / 0.870912000e9 0.3777923e7 / 0.1275750e7 -0.125390297e9 / 0.58060800e8 0 0.4624381729e10 / 0.2612736000e10 -0.484096919e9 / 0.381024000e9 0.2676438019e10 / 0.6096384000e10; 0.1598284927e10 / 0.2032128000e10 -0.7433128649e10 / 0.3657830400e10 0.28821953e8 / 0.10206000e8 -0.123333949e9 / 0.41472000e8 0.609569351e9 / 0.261273600e9 -0.4624381729e10 / 0.2612736000e10 0 0.21500967689e11 / 0.18289152000e11 -0.7199454721e10 / 0.18289152000e11; -0.4652402687e10 / 0.18289152000e11 0.1239008e7 / 0.1488375e7 -0.1858901437e10 / 0.1219276800e10 0.2256321727e10 / 0.1143072000e10 -0.438488399e9 / 0.243855360e9 0.484096919e9 / 0.381024000e9 -0.21500967689e11 / 0.18289152000e11 0 0.761653e6 / 0.882000e6; 0.731623e6 / 0.17860500e8 -0.21251483e8 / 0.124416000e9 0.2363118211e10 / 0.6096384000e10 -0.1058261459e10 / 0.1828915200e10 0.14244569e8 / 0.24385536e8 -0.2676438019e10 / 0.6096384000e10 0.7199454721e10 / 0.18289152000e11 -0.761653e6 / 0.882000e6 0;];
+
+    Q(1:9,1:9)=Q_U;
+    Q(m-8:m,m-8:m)=rot90( -Q_U(1:9,1:9) ,2 );
+
+    D1=H\Q;
+
+    M_U =[0.3812926003e10 / 0.2438553600e10 -0.5433856529e10 / 0.1741824000e10 0.4187462879e10 / 0.1045094400e10 -0.65635105447e11 / 0.12192768000e11 0.1457682577e10 / 0.270950400e9 -0.27884016067e11 / 0.7315660800e10 0.22304839493e11 / 0.12192768000e11 -0.188132543e9 / 0.348364800e9 0.42711619e8 / 0.571536000e9; -0.5433885329e10 / 0.1741824000e10 0.23985229969e11 / 0.2286144000e10 -0.10208460799e11 / 0.571536000e9 0.8828370001e10 / 0.381024000e9 -0.12306735263e11 / 0.522547200e9 0.39313626089e11 / 0.2286144000e10 -0.4380200287e10 / 0.508032000e9 0.192498023e9 / 0.71442000e8 -0.14565232681e11 / 0.36578304000e11; 0.29313778073e11 / 0.7315660800e10 -0.10209211399e11 / 0.571536000e9 0.24157533391e11 / 0.653184000e9 -0.6561725111e10 / 0.130636800e9 0.26490755639e11 / 0.522547200e9 -0.352801289e9 / 0.9331200e7 0.401374423e9 / 0.20412000e8 -0.29541854057e11 / 0.4572288000e10 0.7396364989e10 / 0.7315660800e10; -0.65653163047e11 / 0.12192768000e11 0.8832999601e10 / 0.381024000e9 -0.6566554871e10 / 0.130636800e9 0.1575758731e10 / 0.21772800e8 -0.2571648133e10 / 0.34836480e8 0.556969019e9 / 0.10206000e8 -0.3139265911e10 / 0.108864000e9 0.165424529e9 / 0.16934400e8 -0.11623567549e11 / 0.7315660800e10; 0.1458632977e10 / 0.270950400e9 -0.86260417241e11 / 0.3657830400e10 0.3792749777e10 / 0.74649600e8 -0.2576699653e10 / 0.34836480e8 0.157840723e9 / 0.2041200e7 -0.29838889141e11 / 0.522547200e9 0.5142742211e10 / 0.174182400e9 -0.36792522023e11 / 0.3657830400e10 0.2438136689e10 / 0.1463132160e10; -0.27909676867e11 / 0.7315660800e10 0.39389053289e11 / 0.2286144000e10 -0.2478149663e10 / 0.65318400e8 0.559214069e9 / 0.10206000e8 -0.29914661941e11 / 0.522547200e9 0.2843819551e10 / 0.65318400e8 -0.14816015149e11 / 0.653184000e9 0.1677001673e10 / 0.228614400e9 -0.44441740171e11 / 0.36578304000e11; 0.3188985299e10 / 0.1741824000e10 -0.626864041e9 / 0.72576000e8 0.57539389e8 / 0.2916000e7 -0.3153500311e10 / 0.108864000e9 0.5162239811e10 / 0.174182400e9 -0.14840163949e11 / 0.653184000e9 0.419025709e9 / 0.31104000e8 -0.138945749e9 / 0.27216000e8 0.591880819e9 / 0.746496000e9; -0.1317440441e10 / 0.2438553600e10 0.192696473e9 / 0.71442000e8 -0.4230355151e10 / 0.653184000e9 0.165983249e9 / 0.16934400e8 -0.36905792423e11 / 0.3657830400e10 0.1679779433e10 / 0.228614400e9 -0.972870443e9 / 0.190512000e9 0.9129544111e10 / 0.2286144000e10 -0.13387742111e11 / 0.7315660800e10; 0.42721069e8 / 0.571536000e9 -0.14572922281e11 / 0.36578304000e11 0.7407199549e10 / 0.7315660800e10 -0.11649228349e11 / 0.7315660800e10 0.349038407e9 / 0.209018880e9 -0.44495912971e11 / 0.36578304000e11 0.29009849731e11 / 0.36578304000e11 -0.13387863071e11 / 0.7315660800e10 0.21585797479e11 / 0.7315660800e10;];
+
+
+%     T=[-0.1e1 / 0.3150e4 0.5e1 / 0.1008e4 -0.5e1 / 0.126e3 0.5e1 / 0.21e2 -0.5e1 / 0.3e1 0.5269e4 / 0.1800e4 -0.5e1 / 0.3e1 0.5e1 / 0.21e2 -0.5e1 / 0.126e3 0.5e1 / 0.1008e4 -0.1e1 / 0.3150e4;];
+%     M=(T(1)*diag(ones(m-5,1),5)+T(2)*diag(ones(m-4,1),4)+T(3)*diag(ones(m-3,1),3)+T(4)*diag(ones(m-2,1),2)+T(5)*diag(ones(m-1,1),1)+T(7)*diag(ones(m-1,1),-1)+T(8)*diag(ones(m-2,1),-2)+T(9)*diag(ones(m-3,1),-3)+T(10)*diag(ones(m-4,1),-4)+T(11)*diag(ones(m-5,1),-5)+T(6)*diag(ones(m,1),0));
+
+    diags   = -5:5;
+    left_stencil = [-1/3150,5/1008,-5/126,5/21,-5/3];
+    stencil = [left_stencil,5269/1800,fliplr(left_stencil)];
+    M = stripeMatrix(stencil, diags, m);
+
+    M(1:9,1:9)=M_U;
+
+    M(m-8:m,m-8:m)=rot90(  M_U ,2 );
+    M=M/h;
+
+    DS_U=[0.761e3 / 0.280e3 -8 14 -0.56e2 / 0.3e1 0.35e2 / 0.2e1 -0.56e2 / 0.5e1 0.14e2 / 0.3e1 -0.8e1 / 0.7e1 0.1e1 / 0.8e1;];
+    DS=sparse(m,m);
+    DS(1,1:9)=DS_U;
+    DS(m,m-8:m)=fliplr(DS_U);
+    DS=DS/h;
+
+    D2=H\(-M+DS);
+
+    % Try adding AD to boundary D1=HI*(Q-D9'*D9)
+%     DD_9=sparse(m);
+%     d9=[-1 9 -36 84 -126 126 -84 36 -9 1];t9=sum(abs(d9));%d9=d9/t9;
+%     DD_9(1:1,1:10)=[d9];
+%     DD_9(m:m,m-9:m)=[d9];
+% 
+% 
+%     ADD=30*h/(t9)*DD_9'*DD_9;
+
+    e_1 = sparse(m,1);
+    e_1(1)= 1;
+    e_m = sparse(m,1);
+    e_m(end)= 1;
+    S_1 = -DS(1,:)';
+    S_m =  DS(end,:)';
+
+    Q = H*D1-(-(e_1*e_1') + (e_m*e_m'));
+    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_blocknorm_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_blocknorm_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,66 @@
+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;];
+
+
+    H=speye(m);
+    H(1:4,1:4)=H_U;
+    H(m-3:m,m-3:m)=rot90( H_U(1:4,1:4) ,2 );
+    H=H*h;
+    HI=inv(H);
+
+    e=ones(m,1);
+    Q=spdiags([e -8*e 0*e 8*e -e], -2:2, m, m)/12;
+%     Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
+
+    Q_U = [-0.1e1 / 0.2e1 0.55e2 / 0.72e2 -0.47e2 / 0.144e3 0.1e1 / 0.16e2; -0.55e2 / 0.72e2 0 0.43e2 / 0.48e2 -0.19e2 / 0.144e3; 0.47e2 / 0.144e3 -0.43e2 / 0.48e2 0 0.47e2 / 0.72e2; -0.1e1 / 0.16e2 0.19e2 / 0.144e3 -0.47e2 / 0.72e2 0;];
+
+    Q(1:4,1:4)=Q_U;
+    Q(m-3:m,m-3:m)=rot90( -Q_U(1:4,1:4) ,2 );
+
+    D1=H\Q;
+
+    M_U=[0.359e3 / 0.288e3 -0.443e3 / 0.288e3 0.97e2 / 0.288e3 -0.13e2 / 0.288e3; -0.51e2 / 0.32e2 0.325e3 / 0.96e2 -0.191e3 / 0.96e2 0.19e2 / 0.96e2; 0.43e2 / 0.96e2 -0.69e2 / 0.32e2 0.293e3 / 0.96e2 -0.137e3 / 0.96e2; -0.29e2 / 0.288e3 0.89e2 / 0.288e3 -0.427e3 / 0.288e3 0.727e3 / 0.288e3;];
+
+
+
+%     M=-(-1/12*diag(ones(m-2,1),2)+16/12*diag(ones(m-1,1),1)+16/12*diag(ones(m-1,1),-1)-1/12*diag(ones(m-2,1),-2)-30/12*diag(ones(m,1),0));
+    M=-spdiags([-e 16*e -30*e 16*e -e], -2:2, m, m)/12;
+
+    M(1:4,1:4)=M_U;
+
+    M(m-3:m,m-3:m)=rot90(  M_U ,2 );
+    M=M/h;
+
+    DS_U=[0.25e2 / 0.12e2 -4 3 -0.4e1 / 0.3e1 0.1e1 / 0.4e1;];
+    DS=sparse(m,m);
+    DS(1,1:5)=DS_U;
+    DS(m,m-4:m)=fliplr(DS_U);
+    DS=DS/h;
+
+    D2=H\(-M+DS);
+
+%     d3=[-1 3 -3 1];
+%     t3=sum(abs(d3));
+%     DD_3(1:1,1:4)=[d3];
+%     DD_3(m:m,m-3:m)=[d3];
+
+    % This works for wave eq.
+    % For studs interface in 1D no AD is needed.
+%     ADD=1*h/(t3)*DD_3'*DD_3;
+
+    e_1 = sparse(m,1);
+    e_1(1)= 1;
+    e_m = sparse(m,1);
+    e_m(end)= 1;
+    S_1 = -DS(1,:)';
+    S_m =  DS(end,:)';
+
+    Q = H*D1-(-(e_1*e_1') + (e_m*e_m'));
+    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_blocknorm_6.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_blocknorm_6.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,70 @@
+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;];
+
+
+    H=speye(m);
+    H(1:6,1:6)=H_U;
+    H(m-5:m,m-5:m)=rot90( H_U(1:6,1:6) ,2 );
+    H=H*h;
+    HI=inv(H);
+
+    diags   = -3:3;
+    stencil = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    Q = stripeMatrix(stencil, diags, m);
+    
+%     Q=(1/60*diag(ones(m-3,1),3)-9/60*diag(ones(m-2,1),2)+45/60*diag(ones(m-1,1),1)-45/60*diag(ones(m-1,1),-1)+9/60*diag(ones(m-2,1),-2)-1/60*diag(ones(m-3,1),-3));
+
+    Q_U = [-0.1e1 / 0.2e1 0.151864337282617e15 / 0.172322427715200e15 -0.251539972254817e15 / 0.344644855430400e15 0.61230525943549e14 / 0.114881618476800e15 -0.80987306509439e14 / 0.344644855430400e15 0.697178163343e12 / 0.13785794217216e14; -0.151864337282617e15 / 0.172322427715200e15 0 0.12350422095979e14 / 0.7658774565120e13 -0.78802251164141e14 / 0.68928971086080e14 0.4229407848431e13 / 0.7658774565120e13 -0.5372490790279e13 / 0.38293872825600e14; 0.251539972254817e15 / 0.344644855430400e15 -0.12350422095979e14 / 0.7658774565120e13 0 0.2217674201683e13 / 0.1723224277152e13 -0.13219134462287e14 / 0.22976323695360e14 0.19660399553981e14 / 0.114881618476800e15; -0.61230525943549e14 / 0.114881618476800e15 0.78802251164141e14 / 0.68928971086080e14 -0.2217674201683e13 / 0.1723224277152e13 0 0.62307836637379e14 / 0.68928971086080e14 -0.84068101764193e14 / 0.344644855430400e15; 0.80987306509439e14 / 0.344644855430400e15 -0.4229407848431e13 / 0.7658774565120e13 0.13219134462287e14 / 0.22976323695360e14 -0.62307836637379e14 / 0.68928971086080e14 0 0.44756810052211e14 / 0.57440809238400e14; -0.697178163343e12 / 0.13785794217216e14 0.5372490790279e13 / 0.38293872825600e14 -0.19660399553981e14 / 0.114881618476800e15 0.84068101764193e14 / 0.344644855430400e15 -0.44756810052211e14 / 0.57440809238400e14 0;];
+
+    Q(1:6,1:6)=Q_U;
+    Q(m-5:m,m-5:m)=rot90( -Q_U(1:6,1:6) ,2 );
+
+    D1=H\Q;
+
+    M_U=[0.960901171090739e15 / 0.689289710860800e15 -0.502032138770899e15 / 0.229763236953600e15 0.493085196645929e15 / 0.344644855430400e15 -0.329491854944251e15 / 0.344644855430400e15 0.89541920186441e14 / 0.229763236953600e15 -0.50617198740721e14 / 0.689289710860800e15; -0.100483015499831e15 / 0.45952647390720e14 0.807564929223191e15 / 0.137857942172160e15 -0.415779274818991e15 / 0.68928971086080e14 0.80693719872887e14 / 0.22976323695360e14 -0.196663473955997e15 / 0.137857942172160e15 0.37943821632959e14 / 0.137857942172160e15; 0.99938177941669e14 / 0.68928971086080e14 -0.84419552767043e14 / 0.13785794217216e14 0.106922123424097e15 / 0.11488161847680e14 -0.223356054245897e15 / 0.34464485543040e14 0.157526160982357e15 / 0.68928971086080e14 -0.10062402380533e14 / 0.22976323695360e14; -0.68310884976863e14 / 0.68928971086080e14 0.17038649985979e14 / 0.4595264739072e13 -0.231397767539273e15 / 0.34464485543040e14 0.232669188399619e15 / 0.34464485543040e14 -0.1657930371065e13 / 0.510584971008e12 0.34774771016773e14 / 0.68928971086080e14; 0.18789143112277e14 / 0.45952647390720e14 -0.213895716727517e15 / 0.137857942172160e15 0.171024751153381e15 / 0.68928971086080e14 -0.8523669967037e13 / 0.2552924855040e13 0.485768751245399e15 / 0.137857942172160e15 -0.229158724354277e15 / 0.137857942172160e15; -0.51766014925489e14 / 0.689289710860800e15 0.202930494289627e15 / 0.689289710860800e15 -0.54332868549353e14 / 0.114881618476800e15 0.180479548146281e15 / 0.344644855430400e15 -0.1146942437956153e16 / 0.689289710860800e15 0.211001773091419e15 / 0.76587745651200e14;];
+
+
+
+%     M=-(2*diag(ones(m-3,1),3)-27*diag(ones(m-2,1),2)+270*diag(ones(m-1,1),1)+270*diag(ones(m-1,1),-1)-27*diag(ones(m-2,1),-2)+2*diag(ones(m-3,1),-3)-490*diag(ones(m,1),0))/180;
+    diags   = -3:3;
+    stencil = -1/180*[2,-27,270,-490,270,-27,2];
+    M = stripeMatrix(stencil, diags, m);
+
+    M(1:6,1:6)=M_U;
+
+    M(m-5:m,m-5:m)=rot90(  M_U ,2 );
+    M=M/h;
+
+    DS_U=[0.137e3 / 0.60e2 -5 5 -0.10e2 / 0.3e1 0.5e1 / 0.4e1 -0.1e1 / 0.5e1;];
+    DS=sparse(m,m);
+    DS(1,1:6)=DS_U;
+    DS(m,m-5:m)=fliplr(DS_U);
+    DS=DS/h;
+
+    D2=H\(-M+DS);
+
+%     d5=[-1 5 -10 10 -5 1];
+%     t5=sum(abs(d5));
+%     DD_5(1:1,1:6)=[d5];
+%     DD_5(m:m,m-5:m)=[d5];
+% 
+%     % This works for wave eq.
+%     % For studs interface in 1D no AD is needed.
+%     ADD=7*h/(t5)*DD_5'*DD_5;
+
+    e_1 = sparse(m,1);
+    e_1(1)= 1;
+    e_m = sparse(m,1);
+    e_m(end)= 1;
+    S_1 = -DS(1,:)';
+    S_m =  DS(end,:)';
+
+    Q = H*D1-(-(e_1*e_1') + (e_m*e_m'));
+    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_blocknorm_8.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_blocknorm_8.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,73 @@
+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=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    H_U=[     0.704266523e9 / 0.4180377600e10     0.4579586639e10 / 0.16257024000e11     -0.3623870581e10 / 0.9754214400e10    0.12753127559e11 / 0.29262643200e11    -0.3687413731e10 / 0.9754214400e10         0.2169892891e10 / 0.9754214400e10     -0.13224544841e11 / 0.146313216000e12        0.4142047e7 / 0.199065600e9;
+            0.4579586639e10 / 0.16257024000e11   0.36543258551e11 / 0.20901888000e11     -0.8235820121e10 / 0.6967296000e10     0.1800520829e10 / 0.1393459200e10     -0.3725834681e10 / 0.4180377600e10         0.2588501879e10 / 0.6967296000e10         -0.10477621e8 / 0.995328000e9       -0.6589395529e10 / 0.146313216000e12;
+           -0.3623870581e10 / 0.9754214400e10    -0.8235820121e10 / 0.6967296000e10         0.765685439e9 / 0.258048000e9      -0.3254203513e10 / 0.1393459200e10      0.2477267447e10 / 0.1393459200e10             -0.456533e6 / 0.491520e6              0.873043831e9 / 0.6967296000e10      0.4279558279e10 / 0.48771072000e11;
+           0.12753127559e11 / 0.29262643200e11    0.1800520829e10 / 0.1393459200e10      -0.3254203513e10 / 0.1393459200e10    0.16428690611e11 / 0.4180377600e10       -0.460605929e9 / 0.199065600e9           0.1897042423e10 / 0.1393459200e10      -0.1151273401e10 / 0.4180377600e10        -0.65906413e8 / 0.650280960e9;
+           -0.3687413731e10 / 0.9754214400e10    -0.3725834681e10 / 0.4180377600e10       0.2477267447e10 / 0.1393459200e10      -0.460605929e9 / 0.199065600e9       0.11663916211e11 / 0.4180377600e10          -0.307273957e9 / 0.278691840e9           0.117995903e9 / 0.464486400e9           0.95035807e8 / 0.1170505728e10;
+            0.2169892891e10 / 0.9754214400e10     0.2588501879e10 / 0.6967296000e10           -0.456533e6 / 0.491520e6          0.1897042423e10 / 0.1393459200e10       -0.307273957e9 / 0.278691840e9              0.17436823e8 / 0.10321920e8         -0.1274455129e10 / 0.6967296000e10       -0.338917493e9 / 0.9754214400e10;
+          -0.13224544841e11 / 0.146313216000e12     -0.10477621e8 / 0.995328000e9           0.873043831e9 / 0.6967296000e10    -0.1151273401e10 / 0.4180377600e10        0.117995903e9 / 0.464486400e9          -0.1274455129e10 / 0.6967296000e10      0.22041718711e11 / 0.20901888000e11       0.468461293e9 / 0.48771072000e11;
+                0.4142047e7 / 0.199065600e9      -0.6589395529e10 / 0.146313216000e12     0.4279558279e10 / 0.48771072000e11      -0.65906413e8 / 0.650280960e9           0.95035807e8 / 0.1170505728e10          -0.338917493e9 / 0.9754214400e10         0.468461293e9 / 0.48771072000e11    0.20832744839e11 / 0.20901888000e11;
+        ];
+
+
+    H=speye(m);
+    H(1:8,1:8)=H_U;
+    H(m-7:m,m-7:m)=rot90( H_U(1:8,1:8) ,2 );
+    H=H*h;
+    HI=inv(H);
+
+%     Q=-(1/280*diag(ones(m-4,1),4)-4/105*diag(ones(m-3,1),3)+1/5*diag(ones(m-2,1),2)-4/5*diag(ones(m-1,1),1)+4/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+4/105*diag(ones(m-3,1),-3)-1/280*diag(ones(m-4,1),-4));
+    diags   = -4:4;
+    stencil = [1/280,-4/105,1/5,-4/5,0,4/5,-1/5,4/105,-1/280];
+    Q = stripeMatrix(stencil, diags, m);
+
+    Q_U = [-0.1e1 / 0.2e1 0.16262381e8 / 0.15876000e8 -0.3770744693e10 / 0.3048192000e10 0.290431859e9 / 0.203212800e9 -0.363704879e9 / 0.304819200e9 0.206906927e9 / 0.304819200e9 -0.248883679e9 / 0.1016064000e10 0.2665637e7 / 0.62208000e8; -0.16262381e8 / 0.15876000e8 0 0.138589901e9 / 0.62208000e8 -0.31764881e8 / 0.12441600e8 0.461249e6 / 0.193536e6 -0.347232997e9 / 0.217728000e9 0.1788157e7 / 0.2488320e7 -0.5926349e7 / 0.37632000e8; 0.3770744693e10 / 0.3048192000e10 -0.138589901e9 / 0.62208000e8 0 0.11741773e8 / 0.5443200e7 -0.39109817e8 / 0.17418240e8 0.10216441e8 / 0.5376000e7 -0.245131109e9 / 0.217728000e9 0.92809903e8 / 0.304819200e9; -0.290431859e9 / 0.203212800e9 0.31764881e8 / 0.12441600e8 -0.11741773e8 / 0.5443200e7 0 0.4634999e7 / 0.2488320e7 -0.144219869e9 / 0.87091200e8 0.17445643e8 / 0.14515200e8 -0.38142949e8 / 0.101606400e9; 0.363704879e9 / 0.304819200e9 -0.461249e6 / 0.193536e6 0.39109817e8 / 0.17418240e8 -0.4634999e7 / 0.2488320e7 0 0.7992221e7 / 0.5443200e7 -0.817951e6 / 0.829440e6 0.4455517e7 / 0.13547520e8; -0.206906927e9 / 0.304819200e9 0.347232997e9 / 0.217728000e9 -0.10216441e8 / 0.5376000e7 0.144219869e9 / 0.87091200e8 -0.7992221e7 / 0.5443200e7 0 0.68487373e8 / 0.62208000e8 -0.1032638773e10 / 0.3048192000e10; 0.248883679e9 / 0.1016064000e10 -0.1788157e7 / 0.2488320e7 0.245131109e9 / 0.217728000e9 -0.17445643e8 / 0.14515200e8 0.817951e6 / 0.829440e6 -0.68487373e8 / 0.62208000e8 0 0.39529771e8 / 0.47628000e8; -0.2665637e7 / 0.62208000e8 0.5926349e7 / 0.37632000e8 -0.92809903e8 / 0.304819200e9 0.38142949e8 / 0.101606400e9 -0.4455517e7 / 0.13547520e8 0.1032638773e10 / 0.3048192000e10 -0.39529771e8 / 0.47628000e8 0;];
+
+    Q(1:8,1:8)=Q_U;
+    Q(m-7:m,m-7:m)=rot90( -Q_U(1:8,1:8) ,2 );
+
+    D1=H\Q;
+
+
+    M_U =[0.27667249117e11 / 0.18289152000e11 -0.17100791927e11 / 0.6096384000e10 0.6123596021e10 / 0.2032128000e10 -0.12420079921e11 / 0.3657830400e10 0.3352522937e10 / 0.1219276800e10 -0.3030351383e10 / 0.2032128000e10 0.8955233071e10 / 0.18289152000e11 -0.448917533e9 / 0.6096384000e10; -0.2443029521e10 / 0.870912000e9 0.3279926909e10 / 0.373248000e9 -0.150833107e9 / 0.11612160e8 0.2418903029e10 / 0.174182400e9 -0.1195687489e10 / 0.104509440e9 0.1864443097e10 / 0.290304000e9 -0.275412413e9 / 0.124416000e9 0.26267539e8 / 0.74649600e8; 0.875033123e9 / 0.290304000e9 -0.754432799e9 / 0.58060800e8 0.262316881e9 / 0.10752000e8 -0.1615952663e10 / 0.58060800e8 0.1304948581e10 / 0.58060800e8 -0.59605951e8 / 0.4608000e7 0.270029509e9 / 0.58060800e8 -0.225377137e9 / 0.290304000e9; -0.71086111e8 / 0.20901888e8 0.2425994741e10 / 0.174182400e9 -0.1622486807e10 / 0.58060800e8 0.735382895e9 / 0.20901888e8 -0.1016121419e10 / 0.34836480e8 0.190014817e9 / 0.11612160e8 -0.447155539e9 / 0.74649600e8 0.179406911e9 / 0.174182400e9; 0.480578879e9 / 0.174182400e9 -0.6018333509e10 / 0.522547200e9 0.1319413093e10 / 0.58060800e8 -0.205032463e9 / 0.6967296e7 0.551889007e9 / 0.20901888e8 -0.887809303e9 / 0.58060800e8 0.914606453e9 / 0.174182400e9 -0.67482881e8 / 0.74649600e8; -0.434493809e9 / 0.290304000e9 0.1878773977e10 / 0.290304000e9 -0.423185977e9 / 0.32256000e8 0.964538597e9 / 0.58060800e8 -0.894343447e9 / 0.58060800e8 0.345461491e9 / 0.32256000e8 -0.1288081307e10 / 0.290304000e9 0.199200163e9 / 0.290304000e9; 0.183060319e9 / 0.373248000e9 -0.276656573e9 / 0.124416000e9 0.54579137e8 / 0.11612160e8 -0.3169984837e10 / 0.522547200e9 0.184339633e9 / 0.34836480e8 -0.1289417627e10 / 0.290304000e9 0.1431981949e10 / 0.373248000e9 -0.307164061e9 / 0.174182400e9; -0.449332253e9 / 0.6096384000e10 0.1290053923e10 / 0.3657830400e10 -0.1588745239e10 / 0.2032128000e10 0.1267377593e10 / 0.1219276800e10 -0.3326650673e10 / 0.3657830400e10 0.1396036981e10 / 0.2032128000e10 -0.2150231371e10 / 0.1219276800e10 0.52544801501e11 / 0.18289152000e11;];
+
+%     M=-(-1/560*diag(ones(m-4,1),4)+8/315*diag(ones(m-3,1),3)-1/5*diag(ones(m-2,1),2)+8/5*diag(ones(m-1,1),1)+8/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+8/315*diag(ones(m-3,1),-3)-1/560*diag(ones(m-4,1),-4)-205/72*diag(ones(m,1),0));
+    diags   = -4:4;
+    left_stencil = [-1/560,8/315,-1/5,8/5];
+    stencil = [left_stencil,-205/72,fliplr(left_stencil)];
+    M = stripeMatrix(stencil, diags, m);
+
+    M(1:8,1:8)=M_U;
+
+    M(m-7:m,m-7:m)=rot90(  M_U ,2 );
+    M=M/h;
+
+    % DS_U=[0.363e3 / 0.140e3 -7 0.21e2 / 0.2e1 -0.35e2 / 0.3e1 0.35e2 / 0.4e1 -0.21e2 / 0.5e1 0.7e1 / 0.6e1 -0.1e1 / 0.7e1;];
+    % DS=sparse(m,m);
+    % DS(1,1:8)=DS_U;
+    % DS(m,m-7:m)=fliplr(DS_U);
+    % DS=DS/h;
+
+    %D2=HI*(-M+DS);
+
+    S_U=-[0.363e3 / 0.140e3 -7 0.21e2 / 0.2e1 -0.35e2 / 0.3e1 0.35e2 / 0.4e1 -0.21e2 / 0.5e1 0.7e1 / 0.6e1 -0.1e1 / 0.7e1;]/h;
+    S_1=sparse(1,m);
+    S_1(1:8)=S_U;
+    S_m=sparse(1,m);
+    S_m(m-7:m)=fliplr(-S_U);
+
+
+    D2=H\(-M - e_1*S_1+e_m*S_m);
+    S_1 = S_1';
+    S_m = S_m';
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d2_variable_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d2_variable_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,121 @@
+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 = spspeye(N);
+    H(1,1) = 17/48; H(2,2) = 59/48; H(3,3) = 43/48; H(4,4) = 49/48;
+    H(N,N) = 17/48; H(N-1,N-1) = 59/48; H(N-2,N-2) = 43/48; H(N-3,N-3) = 49/48;
+    H = h*H;
+
+    HI = inv(H);
+
+    H = sparse(H);
+    HI = sparse(HI);
+
+
+    S = sparse(N,N);
+    S(1,1:4) = 1/h*[(-11/6);3;(-3/2);1/3];
+    S(N,N-3:N) = 1/h*[(-1/3);3/2;(-3);11/6];
+    S = sparse(S);
+
+    e_l = sparse(m,1);
+    e_l(1) = 1;
+
+    e_r = sparse(m,1);
+    e_r(end) = 1;
+
+    d_l = S(1,:)';
+    d_r = S(end,:)';
+
+    e=ones(m,1);
+    Q=spdiags([e -8*e 0*e 8*e -e], -2:2, m, m)/12;
+    Q_U = [0 0.59e2 / 0.96e2 -0.1e1 / 0.12e2 -0.1e1 / 0.32e2; -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2; 0.1e1 / 0.32e2 0 -0.59e2 / 0.96e2 0;];
+    Q(1:4,1:4)=Q_U;
+    Q(m-3:m,m-3:m)=rot90( -Q_U(1:4,1:4) ,2 );
+
+    D1=HI*(Q-1/2*(e_l*e_l')+1/2*(e_r*e_r')) ;
+
+    function D2 = D2_fun(c)
+        M = 78+(N-12)*5;
+        %h = 1/(N-1);
+
+
+        U = [48/(17)*(0.12e2 / 0.17e2 * c(1) + 0.59e2 / 0.192e3 * c(2) + 0.27010400129e11 / 0.345067064608e12 * c(3) + 0.69462376031e11 / 0.2070402387648e13 * c(4)) 48/(17)*(-0.59e2 / 0.68e2 * c(1) - 0.6025413881e10 / 0.21126554976e11 * c(3) - 0.537416663e9 / 0.7042184992e10 * c(4)) 48/(17)*(0.2e1 / 0.17e2 * c(1) - 0.59e2 / 0.192e3 * c(2) + 0.213318005e9 / 0.16049630912e11 * c(4) + 0.2083938599e10 / 0.8024815456e10 * c(3)) 48/(17)*(0.3e1 / 0.68e2 * c(1) - 0.1244724001e10 / 0.21126554976e11 * c(3) + 0.752806667e9 / 0.21126554976e11 * c(4)) 48/(17)*(0.49579087e8 / 0.10149031312e11 * c(3) - 0.49579087e8 / 0.10149031312e11 * c(4)) 48/(17)*(-c(4) / 0.784e3 + c(3) / 0.784e3);...
+                48/(59)*(-0.59e2 / 0.68e2 * c(1) - 0.6025413881e10 / 0.21126554976e11 * c(3) - 0.537416663e9 / 0.7042184992e10 * c(4)) 48/(59)*(0.3481e4 / 0.3264e4 * c(1) + 0.9258282831623875e16 / 0.7669235228057664e16 * c(3) + 0.236024329996203e15 / 0.1278205871342944e16 * c(4)) 48/(59)*(-0.59e2 / 0.408e3 * c(1) - 0.29294615794607e14 / 0.29725717938208e14 * c(3) - 0.2944673881023e13 / 0.29725717938208e14 * c(4)) 48/(59)*(-0.59e2 / 0.1088e4 * c(1) + 0.260297319232891e15 / 0.2556411742685888e16 * c(3) - 0.60834186813841e14 / 0.1278205871342944e16 * c(4)) 48/(59)*(-0.1328188692663e13 / 0.37594290333616e14 * c(3) + 0.1328188692663e13 / 0.37594290333616e14 * c(4)) 48/(59)*(-0.8673e4 / 0.2904112e7 * c(3) + 0.8673e4 / 0.2904112e7 * c(4));...
+                48/(43)*(0.2e1 / 0.17e2 * c(1) - 0.59e2 / 0.192e3 * c(2) + 0.213318005e9 / 0.16049630912e11 * c(4) + 0.2083938599e10 / 0.8024815456e10 * c(3)) 48/(43)*(-0.59e2 / 0.408e3 * c(1) - 0.29294615794607e14 / 0.29725717938208e14 * c(3) - 0.2944673881023e13 / 0.29725717938208e14 * c(4)) 48/(43)*(c(1) / 0.51e2 + 0.59e2 / 0.192e3 * c(2) + 0.13777050223300597e17 / 0.26218083221499456e17 * c(4) + 0.564461e6 / 0.13384296e8 * c(5) + 0.378288882302546512209e21 / 0.270764341349677687456e21 * c(3)) 48/(43)*(c(1) / 0.136e3 - 0.125059e6 / 0.743572e6 * c(5) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(3) - 0.17220493277981e14 / 0.89177153814624e14 * c(4)) 48/(43)*(-0.10532412077335e14 / 0.42840005263888e14 * c(4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(3) + 0.564461e6 / 0.4461432e7 * c(5)) 48/(43)*(-0.960119e6 / 0.1280713392e10 * c(4) - 0.3391e4 / 0.6692148e7 * c(5) + 0.33235054191e11 / 0.26452850508784e14 * c(3));...
+                48/(49)*(0.3e1 / 0.68e2 * c(1) - 0.1244724001e10 / 0.21126554976e11 * c(3) + 0.752806667e9 / 0.21126554976e11 * c(4)) 48/(49)*(-0.59e2 / 0.1088e4 * c(1) + 0.260297319232891e15 / 0.2556411742685888e16 * c(3) - 0.60834186813841e14 / 0.1278205871342944e16 * c(4)) 48/(49)*(c(1) / 0.136e3 - 0.125059e6 / 0.743572e6 * c(5) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(3) - 0.17220493277981e14 / 0.89177153814624e14 * c(4)) 48/(49)*(0.3e1 / 0.1088e4 * c(1) + 0.507284006600757858213e21 / 0.475219048083107777984e21 * c(3) + 0.1869103e7 / 0.2230716e7 * c(5) + c(6) / 0.24e2 + 0.1950062198436997e16 / 0.3834617614028832e16 * c(4)) 48/(49)*(-0.4959271814984644613e19 / 0.20965546238960637264e20 * c(3) - c(6) / 0.6e1 - 0.15998714909649e14 / 0.37594290333616e14 * c(4) - 0.375177e6 / 0.743572e6 * c(5)) 48/(49)*(-0.368395e6 / 0.2230716e7 * c(5) + 0.752806667e9 / 0.539854092016e12 * c(3) + 0.1063649e7 / 0.8712336e7 * c(4) + c(6) / 0.8e1);...
+                0.49579087e8 / 0.10149031312e11 * c(3) - 0.49579087e8 / 0.10149031312e11 * c(4) -0.1328188692663e13 / 0.37594290333616e14 * c(3) + 0.1328188692663e13 / 0.37594290333616e14 * c(4) -0.10532412077335e14 / 0.42840005263888e14 * c(4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(3) + 0.564461e6 / 0.4461432e7 * c(5) -0.4959271814984644613e19 / 0.20965546238960637264e20 * c(3) - c(6) / 0.6e1 - 0.15998714909649e14 / 0.37594290333616e14 * c(4) - 0.375177e6 / 0.743572e6 * c(5) 0.8386761355510099813e19 / 0.128413970713633903242e21 * c(3) + 0.2224717261773437e16 / 0.2763180339520776e16 * c(4) + 0.5e1 / 0.6e1 * c(6) + c(7) / 0.24e2 + 0.280535e6 / 0.371786e6 * c(5) -0.35039615e8 / 0.213452232e9 * c(4) - c(7) / 0.6e1 - 0.13091810925e11 / 0.13226425254392e14 * c(3) - 0.1118749e7 / 0.2230716e7 * c(5) - c(6) / 0.2e1;...
+                -c(4) / 0.784e3 + c(3) / 0.784e3 -0.8673e4 / 0.2904112e7 * c(3) + 0.8673e4 / 0.2904112e7 * c(4) -0.960119e6 / 0.1280713392e10 * c(4) - 0.3391e4 / 0.6692148e7 * c(5) + 0.33235054191e11 / 0.26452850508784e14 * c(3) -0.368395e6 / 0.2230716e7 * c(5) + 0.752806667e9 / 0.539854092016e12 * c(3) + 0.1063649e7 / 0.8712336e7 * c(4) + c(6) / 0.8e1 -0.35039615e8 / 0.213452232e9 * c(4) - c(7) / 0.6e1 - 0.13091810925e11 / 0.13226425254392e14 * c(3) - 0.1118749e7 / 0.2230716e7 * c(5) - c(6) / 0.2e1 0.3290636e7 / 0.80044587e8 * c(4) + 0.5580181e7 / 0.6692148e7 * c(5) + 0.5e1 / 0.6e1 * c(7) + c(8) / 0.24e2 + 0.660204843e9 / 0.13226425254392e14 * c(3) + 0.3e1 / 0.4e1 * c(6)];
+
+
+        L = [c(N-7) / 0.24e2 + 0.5e1 / 0.6e1 * c(N-6) + 0.5580181e7 / 0.6692148e7 * c(N-4) + 0.4887707739997e13 / 0.119037827289528e15 * c(N-3) + 0.3e1 / 0.4e1 * c(N-5) + 0.660204843e9 / 0.13226425254392e14 * c(N-2) + 0.660204843e9 / 0.13226425254392e14 * c(N-1) -c(N-6) / 0.6e1 - 0.1618585929605e13 / 0.9919818940794e13 * c(N-3) - c(N-5) / 0.2e1 - 0.1118749e7 / 0.2230716e7 * c(N-4) - 0.13091810925e11 / 0.13226425254392e14 * c(N-2) - 0.13091810925e11 / 0.13226425254392e14 * c(N-1) -0.368395e6 / 0.2230716e7 * c(N-4) + c(N-5) / 0.8e1 + 0.48866620889e11 / 0.404890569012e12 * c(N-3) + 0.752806667e9 / 0.539854092016e12 * c(N-2) + 0.752806667e9 / 0.539854092016e12 * c(N-1) -0.3391e4 / 0.6692148e7 * c(N-4) - 0.238797444493e12 / 0.119037827289528e15 * c(N-3) + 0.33235054191e11 / 0.26452850508784e14 * c(N-2) + 0.33235054191e11 / 0.26452850508784e14 * c(N-1) -0.8673e4 / 0.2904112e7 * c(N-2) - 0.8673e4 / 0.2904112e7 * c(N-1) + 0.8673e4 / 0.1452056e7 * c(N-3) -c(N-3) / 0.392e3 + c(N-2) / 0.784e3 + c(N-1) / 0.784e3;...
+               -c(N-6) / 0.6e1 - 0.1618585929605e13 / 0.9919818940794e13 * c(N-3) - c(N-5) / 0.2e1 - 0.1118749e7 / 0.2230716e7 * c(N-4) - 0.13091810925e11 / 0.13226425254392e14 * c(N-2) - 0.13091810925e11 / 0.13226425254392e14 * c(N-1) c(N-6) / 0.24e2 + 0.5e1 / 0.6e1 * c(N-5) + 0.3896014498639e13 / 0.4959909470397e13 * c(N-3) + 0.8386761355510099813e19 / 0.128413970713633903242e21 * c(N-2) + 0.280535e6 / 0.371786e6 * c(N-4) + 0.3360696339136261875e19 / 0.171218627618178537656e21 * c(N-1) -c(N-5) / 0.6e1 - 0.4959271814984644613e19 / 0.20965546238960637264e20 * c(N-2) - 0.375177e6 / 0.743572e6 * c(N-4) - 0.13425842714e11 / 0.33740880751e11 * c(N-3) - 0.193247108773400725e18 / 0.6988515412986879088e19 * c(N-1) -0.365281640980e12 / 0.1653303156799e13 * c(N-3) + 0.564461e6 / 0.4461432e7 * c(N-4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(N-2) - 0.198407225513315475e18 / 0.7963657098519931984e19 * c(N-1) -0.1328188692663e13 / 0.37594290333616e14 * c(N-2) + 0.2226377963775e13 / 0.37594290333616e14 * c(N-1) - 0.8673e4 / 0.363014e6 * c(N-3) c(N-3) / 0.49e2 + 0.49579087e8 / 0.10149031312e11 * c(N-2) - 0.256702175e9 / 0.10149031312e11 * c(N-1);...
+               48/(49)*(-0.368395e6 / 0.2230716e7 * c(N-4) + c(N-5) / 0.8e1 + 0.48866620889e11 / 0.404890569012e12 * c(N-3) + 0.752806667e9 / 0.539854092016e12 * c(N-2) + 0.752806667e9 / 0.539854092016e12 * c(N-1)) 48/(49)*(-c(N-5) / 0.6e1 - 0.4959271814984644613e19 / 0.20965546238960637264e20 * c(N-2) - 0.375177e6 / 0.743572e6 * c(N-4) - 0.13425842714e11 / 0.33740880751e11 * c(N-3) - 0.193247108773400725e18 / 0.6988515412986879088e19 * c(N-1)) 48/(49)*(c(N-5) / 0.24e2 + 0.1869103e7 / 0.2230716e7 * c(N-4) + 0.507284006600757858213e21 / 0.475219048083107777984e21 * c(N-2) + 0.3e1 / 0.1088e4 * c(N) + 0.31688435395e11 / 0.67481761502e11 * c(N-3) + 0.27769176016102795561e20 / 0.712828572124661666976e21 * c(N-1)) 48/(49)*(-0.125059e6 / 0.743572e6 * c(N-4) + c(N) / 0.136e3 - 0.23099342648e11 / 0.101222642253e12 * c(N-3) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(N-2) + 0.193950157930938693e18 / 0.5525802884687299744e19 * c(N-1)) 48/(49)*(0.260297319232891e15 / 0.2556411742685888e16 * c(N-2) - 0.59e2 / 0.1088e4 * c(N) - 0.106641839640553e15 / 0.1278205871342944e16 * c(N-1) + 0.26019e5 / 0.726028e6 * c(N-3)) 48/(49)*(-0.1244724001e10 / 0.21126554976e11 * c(N-2) + 0.3e1 / 0.68e2 * c(N) + 0.752806667e9 / 0.21126554976e11 * c(N-1));...
+               48/(43)*(-0.3391e4 / 0.6692148e7 * c(N-4) - 0.238797444493e12 / 0.119037827289528e15 * c(N-3) + 0.33235054191e11 / 0.26452850508784e14 * c(N-2) + 0.33235054191e11 / 0.26452850508784e14 * c(N-1)) 48/(43)*(-0.365281640980e12 / 0.1653303156799e13 * c(N-3) + 0.564461e6 / 0.4461432e7 * c(N-4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(N-2) - 0.198407225513315475e18 / 0.7963657098519931984e19 * c(N-1)) 48/(43)*(-0.125059e6 / 0.743572e6 * c(N-4) + c(N) / 0.136e3 - 0.23099342648e11 / 0.101222642253e12 * c(N-3) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(N-2) + 0.193950157930938693e18 / 0.5525802884687299744e19 * c(N-1)) 48/(43)*(0.564461e6 / 0.13384296e8 * c(N-4) + 0.470299699916357e15 / 0.952302618316224e15 * c(N-3) + 0.550597048646198778781e21 / 0.1624586048098066124736e22 * c(N-1) + c(N) / 0.51e2 + 0.378288882302546512209e21 / 0.270764341349677687456e21 * c(N-2)) 48/(43)*(-0.59e2 / 0.408e3 * c(N) - 0.29294615794607e14 / 0.29725717938208e14 * c(N-2) - 0.2234477713167e13 / 0.29725717938208e14 * c(N-1) - 0.8673e4 / 0.363014e6 * c(N-3)) 48/(43)*(-0.59e2 / 0.3136e4 * c(N-3) - 0.13249937023e11 / 0.48148892736e11 * c(N-1) + 0.2e1 / 0.17e2 * c(N) + 0.2083938599e10 / 0.8024815456e10 * c(N-2));...
+               48/(59)*(-0.8673e4 / 0.2904112e7 * c(N-2) - 0.8673e4 / 0.2904112e7 * c(N-1) + 0.8673e4 / 0.1452056e7 * c(N-3)) 48/(59)*(-0.1328188692663e13 / 0.37594290333616e14 * c(N-2) + 0.2226377963775e13 / 0.37594290333616e14 * c(N-1) - 0.8673e4 / 0.363014e6 * c(N-3)) 48/(59)*(0.260297319232891e15 / 0.2556411742685888e16 * c(N-2) - 0.59e2 / 0.1088e4 * c(N) - 0.106641839640553e15 / 0.1278205871342944e16 * c(N-1) + 0.26019e5 / 0.726028e6 * c(N-3)) 48/(59)*(-0.59e2 / 0.408e3 * c(N) - 0.29294615794607e14 / 0.29725717938208e14 * c(N-2) - 0.2234477713167e13 / 0.29725717938208e14 * c(N-1) - 0.8673e4 / 0.363014e6 * c(N-3)) 48/(59)*(0.9258282831623875e16 / 0.7669235228057664e16 * c(N-2) + 0.3481e4 / 0.3264e4 * c(N) + 0.228389721191751e15 / 0.1278205871342944e16 * c(N-1) + 0.8673e4 / 0.1452056e7 * c(N-3)) 48/(59)*(-0.6025413881e10 / 0.21126554976e11 * c(N-2) - 0.59e2 / 0.68e2 * c(N) - 0.537416663e9 / 0.7042184992e10 * c(N-1));...
+               48/(17)*(-c(N-3) / 0.392e3 + c(N-2) / 0.784e3 + c(N-1) / 0.784e3) 48/(17)*(c(N-3) / 0.49e2 + 0.49579087e8 / 0.10149031312e11 * c(N-2) - 0.256702175e9 / 0.10149031312e11 * c(N-1)) 48/(17)*(-0.1244724001e10 / 0.21126554976e11 * c(N-2) + 0.3e1 / 0.68e2 * c(N) + 0.752806667e9 / 0.21126554976e11 * c(N-1)) 48/(17)*(-0.59e2 / 0.3136e4 * c(N-3) - 0.13249937023e11 / 0.48148892736e11 * c(N-1) + 0.2e1 / 0.17e2 * c(N) + 0.2083938599e10 / 0.8024815456e10 * c(N-2)) 48/(17)*(-0.6025413881e10 / 0.21126554976e11 * c(N-2) - 0.59e2 / 0.68e2 * c(N) - 0.537416663e9 / 0.7042184992e10 * c(N-1)) 48/(17)*(0.3e1 / 0.3136e4 * c(N-3) + 0.27010400129e11 / 0.345067064608e12 * c(N-2) + 0.234566387291e12 / 0.690134129216e12 * c(N-1) + 0.12e2 / 0.17e2 * c(N))];
+
+
+
+        R = sparse(M,1);
+        R(1:24) = reshape(U(1:4,:)',24,1);
+        R(25:30) = U(5,:);
+        R(31) = -c(5+1) / 0.6e1 + c(5) / 0.8e1 + c(5+2) / 0.8e1;
+        R(32:37) = U(6,:);
+        R(38:39) = [-c(6-1) / 0.6e1 - c(6+2) / 0.6e1 - c(6) / 0.2e1 - c(6+1) / 0.2e1;...
+                                      -c(6+1) / 0.6e1 + c(6) / 0.8e1 + c(6+2) / 0.8e1];
+
+        R(M-38:M-37) = [-c(N-6) / 0.6e1 + c(N-7) / 0.8e1 + c(N-5) / 0.8e1;...
+                                              -c(N-7) / 0.6e1 - c(N-4) / 0.6e1 - c(N-6) / 0.2e1 - c(N-5) / 0.2e1];
+        R(M-36:M-31) = L(1,:);
+        R(M-30) = -c(N-5) / 0.6e1 + c(N-6) / 0.8e1 + c(N-4) / 0.8e1;
+        R(M-29:M-24) = L(2,:);
+        R(M-23:M) = reshape(L(3:6,:)',24,1);
+
+        for i=7:N-6
+            R(40+(i-7)*5:44+(i-7)*5) = [-c(i-1) / 0.6e1 + c(i-2) / 0.8e1 + c(i) / 0.8e1,...
+                                                                  -c(i-2) / 0.6e1 - c(i+1) / 0.6e1 - c(i-1) / 0.2e1 - c(i) / 0.2e1,...
+                                                                  c(i-2) / 0.24e2 + 0.5e1 / 0.6e1 * c(i-1) + 0.5e1 / 0.6e1 * c(i+1) + c(i+2) / 0.24e2 + 0.3e1 / 0.4e1 * c(i),...
+                                                                  -c(i-1) / 0.6e1 - c(i+2) / 0.6e1 - c(i) / 0.2e1 - c(i+1) / 0.2e1,...
+                                                                  -c(i+1) / 0.6e1 + c(i) / 0.8e1 + c(i+2) / 0.8e1];
+        end
+
+        R = R/h/h;
+        D2 = -R;
+        D2(1:4) = -48/17/h/h*[c(1)*(-11/6);c(1)*3;c(1)*(-3/2);c(1)*1/3] + D2(1:4);
+        D2(M-3:M) = -48/17/h/h*[c(N)*1/3;c(N)*(-3/2);c(N)*3;c(N)*(-11/6)] + D2(M-3:M);
+
+
+
+%         BS = sparse(N,N);
+%         BS(1,1:4) = -c(1)*1/h*[(-11/6);3;(-3/2);1/3];
+%         BS(N,N-3:N) = c(N)*1/h*[(-1/3);3/2;(-3);11/6];
+%         BS = sparse(BS);
+
+    % %%Row and column indices%%
+        M = 78+(N-12)*5;
+        rows = [kron([1;2;3;4],ones(6,1));...
+                    5*ones(7,1);...
+                    6*ones(8,1);...
+                    kron((7:N-6)',ones(5,1));...
+                    (N-5)*ones(8,1);...
+                    (N-4)*ones(7,1);...
+                    kron([N-3;N-2;N-1;N],ones(6,1))];
+
+        cols = sparse(M,1);
+        cols(1:24) = kron(ones(4,1),[1;2;3;4;5;6]);
+        cols(25:39) = [(1:7)';(1:8)'];
+        cols(M-23:M) = kron(ones(4,1),[N-5;N-4;N-3;N-2;N-1;N]);
+        cols(M-38:M-24) = [(N-7:N)';(N-6:N)'];
+        for i=7:N-6
+            cols(40+(i-7)*5:44+(i-7)*5) = [i-2;i-1;i;i+1;i+2];
+        end
+        D2 = sparse(rows,cols,D2);
+    end
+    D2 = @D2_fun;
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d4_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d4_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,170 @@
+function [H, HI, D1, D2, D3, D4, e_1, e_m, M, ...
+    M4,Q, Q3, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = d4_4(m,h)
+
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%% 4:de ordn. SBP Finita differens         %%%
+    %%% operatorer framtagna av Ken Mattsson    %%%
+    %%%                                         %%%
+    %%% 6 randpunkter, diagonal norm            %%%
+    %%%                                         %%%
+    %%% Datum: 2013-11-11                       %%%
+    %%%                                         %%%
+    %%%                                         %%%
+    %%% H           (Normen)                    %%%
+    %%% D1          (approx f?rsta derivatan)   %%%
+    %%% D2          (approx andra derivatan)    %%%
+    %%% D3          (approx tredje derivatan)   %%%
+    %%% D2          (approx fj?rde derivatan)   %%%
+    %%%                                         %%%
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    % M?ste ange antal punkter (m) och stegl?ngd (h)
+    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
+    % vi har 3de och 4de derivator i v?r PDE
+    % I annat fall anv?nd de "traditionella" som har noggrannare
+    % randsplutningar f?r D1 och D2
+
+    % 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=speye(m,m);
+    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;];
+
+    H(1:6,1:6)=H_U;
+    H(m-5:m,m-5:m)=rot90(H_U,2);
+    H=H*h;
+    HI=inv(H);
+
+
+    % First derivative SBP operator, 1st order accurate at first 6 boundary points
+
+%     q2=-1/12;q1=8/12;
+%     Q=q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    e=ones(m,1);
+    Q=spdiags([e -8*e 0*e 8*e -e], -2:2, m, m)/12;
+
+    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
+
+    Q_U = [0 0.526249e6 / 0.907200e6 -0.10819e5 / 0.777600e6 -0.50767e5 / 0.907200e6 -0.631e3 / 0.28800e5 0.91e2 / 0.7776e4; -0.526249e6 / 0.907200e6 0 0.1421209e7 / 0.2721600e7 0.16657e5 / 0.201600e6 -0.8467e4 / 0.453600e6 -0.33059e5 / 0.5443200e7; 0.10819e5 / 0.777600e6 -0.1421209e7 / 0.2721600e7 0 0.631187e6 / 0.1360800e7 0.400139e6 / 0.5443200e7 -0.8789e4 / 0.302400e6; 0.50767e5 / 0.907200e6 -0.16657e5 / 0.201600e6 -0.631187e6 / 0.1360800e7 0 0.496403e6 / 0.907200e6 -0.308533e6 / 0.5443200e7; 0.631e3 / 0.28800e5 0.8467e4 / 0.453600e6 -0.400139e6 / 0.5443200e7 -0.496403e6 / 0.907200e6 0 0.1805647e7 / 0.2721600e7; -0.91e2 / 0.7776e4 0.33059e5 / 0.5443200e7 0.8789e4 / 0.302400e6 0.308533e6 / 0.5443200e7 -0.1805647e7 / 0.2721600e7 0;];
+    Q(1:6,1:6)=Q_U;
+    Q(m-5:m,m-5:m)=rot90(  -Q_U ,2 );
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+
+    D1=H\(Q-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Second derivative, 1st order accurate at first 6 boundary points
+%     m2=1/12;m1=-16/12;m0=30/12;
+%     M=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    %M=(1/12*diag(ones(m-2,1),2)-16/12*diag(ones(m-1,1),1)-16/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2)+30/12*diag(ones(m,1),0));
+    M=-spdiags([-e 16*e -30*e 16*e -e], -2:2, m, m)/12;
+    M_U=[0.2386127e7 / 0.2177280e7 -0.515449e6 / 0.453600e6 -0.10781e5 / 0.777600e6 0.61567e5 / 0.1360800e7 0.6817e4 / 0.403200e6 -0.1069e4 / 0.136080e6; -0.515449e6 / 0.453600e6 0.4756039e7 / 0.2177280e7 -0.1270009e7 / 0.1360800e7 -0.3751e4 / 0.28800e5 0.3067e4 / 0.680400e6 0.119459e6 / 0.10886400e8; -0.10781e5 / 0.777600e6 -0.1270009e7 / 0.1360800e7 0.111623e6 / 0.60480e5 -0.555587e6 / 0.680400e6 -0.551339e6 / 0.5443200e7 0.8789e4 / 0.453600e6; 0.61567e5 / 0.1360800e7 -0.3751e4 / 0.28800e5 -0.555587e6 / 0.680400e6 0.1025327e7 / 0.544320e6 -0.464003e6 / 0.453600e6 0.222133e6 / 0.5443200e7; 0.6817e4 / 0.403200e6 0.3067e4 / 0.680400e6 -0.551339e6 / 0.5443200e7 -0.464003e6 / 0.453600e6 0.5074159e7 / 0.2177280e7 -0.1784047e7 / 0.1360800e7; -0.1069e4 / 0.136080e6 0.119459e6 / 0.10886400e8 0.8789e4 / 0.453600e6 0.222133e6 / 0.5443200e7 -0.1784047e7 / 0.1360800e7 0.1812749e7 / 0.725760e6;];
+
+    M(1:6,1:6)=M_U;
+
+    M(m-5:m,m-5:m)=rot90(  M_U ,2 );
+    M=M/h;
+
+    S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
+    S_1=sparse(1,m);
+    S_1(1:4)=S_U;
+    S_m=sparse(1,m);
+
+    S_m(m-3:m)=fliplr(-S_U);
+
+    D2=H\(-M-e_1*S_1+e_m*S_m);
+
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Third derivative, 1st order accurate at first 6 boundary points
+
+    q3=-1/8;q2=1;q1=-13/8;
+%     Q3=q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    diags   = -3:3;
+    stencil = [-q3,-q2,-q1,0,q1,q2,q3];
+    Q3 = stripeMatrix(stencil, diags, m);
+
+    %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
+
+
+    Q3_U = [0 -0.88471e5 / 0.67200e5 0.58139e5 / 0.33600e5 -0.1167e4 / 0.2800e4 -0.89e2 / 0.11200e5 0.7e1 / 0.640e3; 0.88471e5 / 0.67200e5 0 -0.43723e5 / 0.16800e5 0.46783e5 / 0.33600e5 -0.191e3 / 0.3200e4 -0.1567e4 / 0.33600e5; -0.58139e5 / 0.33600e5 0.43723e5 / 0.16800e5 0 -0.4049e4 / 0.2400e4 0.29083e5 / 0.33600e5 -0.71e2 / 0.1400e4; 0.1167e4 / 0.2800e4 -0.46783e5 / 0.33600e5 0.4049e4 / 0.2400e4 0 -0.8591e4 / 0.5600e4 0.10613e5 / 0.11200e5; 0.89e2 / 0.11200e5 0.191e3 / 0.3200e4 -0.29083e5 / 0.33600e5 0.8591e4 / 0.5600e4 0 -0.108271e6 / 0.67200e5; -0.7e1 / 0.640e3 0.1567e4 / 0.33600e5 0.71e2 / 0.1400e4 -0.10613e5 / 0.11200e5 0.108271e6 / 0.67200e5 0;];
+
+    Q3(1:6,1:6)=Q3_U;
+    Q3(m-5:m,m-5:m)=rot90(  -Q3_U ,2 );
+    Q3=Q3/h^2;
+
+
+
+    S2_U=[2 -5 4 -1;]/h^2;
+    S2_1=sparse(1,m);
+    S2_1(1:4)=S2_U;
+    S2_m=sparse(1,m);
+    S2_m(m-3:m)=fliplr(S2_U);
+
+
+
+    D3=H\(Q3 - e_1*S2_1 + e_m*S2_m +1/2*(S_1'*S_1) -1/2*(S_m'*S_m) ) ;
+
+    % Fourth derivative, 0th order accurate at first 6 boundary points (still
+    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
+
+    m3=-1/6;m2=2;m1=-13/2;m0=28/3;
+%     M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    diags   = -3:3;
+    left_stencil = [m3,m2,m1];
+    stencil = [left_stencil,m0,fliplr(left_stencil)];
+    M4 = stripeMatrix(stencil, diags, m);
+
+    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
+
+    M4_U=[0.4596181e7 / 0.1814400e7 -0.10307743e8 / 0.1814400e7 0.160961e6 / 0.43200e5 -0.535019e6 / 0.907200e6 0.109057e6 / 0.1814400e7 -0.29273e5 / 0.604800e6; -0.10307743e8 / 0.1814400e7 0.8368543e7 / 0.604800e6 -0.9558943e7 / 0.907200e6 0.2177057e7 / 0.907200e6 -0.11351e5 / 0.86400e5 0.204257e6 / 0.1814400e7; 0.160961e6 / 0.43200e5 -0.9558943e7 / 0.907200e6 0.4938581e7 / 0.453600e6 -0.786473e6 / 0.151200e6 0.1141057e7 / 0.907200e6 -0.120619e6 / 0.907200e6; -0.535019e6 / 0.907200e6 0.2177057e7 / 0.907200e6 -0.786473e6 / 0.151200e6 0.3146581e7 / 0.453600e6 -0.4614143e7 / 0.907200e6 0.24587e5 / 0.14400e5; 0.109057e6 / 0.1814400e7 -0.11351e5 / 0.86400e5 0.1141057e7 / 0.907200e6 -0.4614143e7 / 0.907200e6 0.185709e6 / 0.22400e5 -0.11293343e8 / 0.1814400e7; -0.29273e5 / 0.604800e6 0.204257e6 / 0.1814400e7 -0.120619e6 / 0.907200e6 0.24587e5 / 0.14400e5 -0.11293343e8 / 0.1814400e7 0.16787381e8 / 0.1814400e7;];
+
+    M4(1:6,1:6)=M4_U;
+
+    M4(m-5:m,m-5:m)=rot90(  M4_U ,2 );
+    M4=M4/h^3;
+
+    S3_U=[-1 3 -3 1;]/h^3;
+    S3_1=sparse(1,m);
+    S3_1(1:4)=S3_U;
+    S3_m=sparse(1,m);
+    S3_m(m-3:m)=fliplr(-S3_U);
+
+    D4=H\(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
+
+
+    % L=h*(m-1);
+    %
+    % x1=linspace(0,L,m)';
+    % x2=x1.^2/fac(2);
+    % x3=x1.^3/fac(3);
+    % x4=x1.^4/fac(4);
+    % x5=x1.^5/fac(5);
+    %
+    % x0=x1.^0/fac(1);
+
+    S_1  = S_1';
+    S2_1 = S2_1';
+    S3_1 = S3_1';
+    S_m  = S_m';
+    S2_m = S2_m';
+    S3_m = S3_m';
+
+
+
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d4_6.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d4_6.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,168 @@
+function [H, HI, D1, D2, D3, D4, e_1, e_m, M, M4,Q, Q3,...
+    S2_1, S2_m, S3_1, S3_m, S_1, S_m] = d4_6(m,h)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%% 4:de ordn. SBP Finita differens         %%%
+    %%% operatorer framtagna av Ken Mattsson    %%%
+    %%%                                         %%%
+    %%% 6 randpunkter, diagonal norm            %%%
+    %%%                                         %%%
+    %%% Datum: 2013-11-11                       %%%
+    %%%                                         %%%
+    %%%                                         %%%
+    %%% H           (Normen)                    %%%
+    %%% D1          (approx f?rsta derivatan)   %%%
+    %%% D2          (approx andra derivatan)    %%%
+    %%% D3          (approx tredje derivatan)   %%%
+    %%% D2          (approx fj?rde derivatan)   %%%
+    %%%                                         %%%
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    % M?ste ange antal punkter (m) och stegl?ngd (h)
+    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
+    % vi har 3de och 4de derivator i v?r PDE
+    % I annat fall anv?nd de "traditionella" som har noggrannare
+    % randsplutningar f?r D1 och D2
+
+    % 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=speye(m,m);
+    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;];
+
+    H(1:8,1:8)=H_U;
+    H(m-7:m,m-7:m)=rot90(H_U,2);
+    H=H*h;
+    HI=inv(H);
+
+
+    % First derivative SBP operator, 1st order accurate at first 6 boundary points
+
+%     q3=1/60;q2=-3/20;q1=3/4;
+%     Q=q3*(diag(ones(m-3,1),3) - diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    diags   = -3:3;
+    stencil = [-1/60,3/20,-3/4,0,3/4,-3/20,1/60];
+    Q = stripeMatrix(stencil, diags, m);
+
+    Q_U = [0 0.1547358409e10 / 0.2421619200e10 -0.422423e6 / 0.11211200e8 -0.1002751721e10 / 0.8717829120e10 -0.15605263e8 / 0.484323840e9 0.1023865e7 / 0.24216192e8 0.291943739e9 / 0.21794572800e11 -0.24659e5 / 0.2534400e7; -0.1547358409e10 / 0.2421619200e10 0 0.23031829e8 / 0.62899200e8 0.10784027e8 / 0.34594560e8 0.2859215e7 / 0.31135104e8 -0.45982103e8 / 0.345945600e9 -0.26681e5 / 0.1182720e7 0.538846039e9 / 0.21794572800e11; 0.422423e6 / 0.11211200e8 -0.23031829e8 / 0.62899200e8 0 0.28368209e8 / 0.69189120e8 -0.9693137e7 / 0.69189120e8 0.1289363e7 / 0.17740800e8 -0.39181e5 / 0.5491200e7 -0.168647e6 / 0.24216192e8; 0.1002751721e10 / 0.8717829120e10 -0.10784027e8 / 0.34594560e8 -0.28368209e8 / 0.69189120e8 0 0.5833151e7 / 0.10644480e8 0.4353179e7 / 0.69189120e8 0.2462459e7 / 0.155675520e9 -0.215471e6 / 0.10762752e8; 0.15605263e8 / 0.484323840e9 -0.2859215e7 / 0.31135104e8 0.9693137e7 / 0.69189120e8 -0.5833151e7 / 0.10644480e8 0 0.7521509e7 / 0.13837824e8 -0.1013231e7 / 0.11531520e8 0.103152839e9 / 0.8717829120e10; -0.1023865e7 / 0.24216192e8 0.45982103e8 / 0.345945600e9 -0.1289363e7 / 0.17740800e8 -0.4353179e7 / 0.69189120e8 -0.7521509e7 / 0.13837824e8 0 0.67795697e8 / 0.98841600e8 -0.17263733e8 / 0.151351200e9; -0.291943739e9 / 0.21794572800e11 0.26681e5 / 0.1182720e7 0.39181e5 / 0.5491200e7 -0.2462459e7 / 0.155675520e9 0.1013231e7 / 0.11531520e8 -0.67795697e8 / 0.98841600e8 0 0.1769933569e10 / 0.2421619200e10; 0.24659e5 / 0.2534400e7 -0.538846039e9 / 0.21794572800e11 0.168647e6 / 0.24216192e8 0.215471e6 / 0.10762752e8 -0.103152839e9 / 0.8717829120e10 0.17263733e8 / 0.151351200e9 -0.1769933569e10 / 0.2421619200e10 0;];
+
+    Q(1:8,1:8)=Q_U;
+    Q(m-7:m,m-7:m)=rot90(  -Q_U ,2 );
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+
+    D1=H\(Q-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Second derivative, 1st order accurate at first 6 boundary points
+    m3=-1/90;m2=3/20;m1=-3/2;m0=49/18;
+
+%     M=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    diags   = -3:3;
+    stencil = [m3,m2,m1,m0,m1,m2,m3];
+    M = stripeMatrix(stencil, diags, m);
+
+    M_U=[0.4347276223e10 / 0.3736212480e10 -0.1534657609e10 / 0.1210809600e10 0.68879e5 / 0.3057600e7 0.1092927401e10 / 0.13076743680e11 0.18145423e8 / 0.968647680e9 -0.1143817e7 / 0.60540480e8 -0.355447739e9 / 0.65383718400e11 0.56081e5 / 0.16473600e8; -0.1534657609e10 / 0.1210809600e10 0.42416226217e11 / 0.18681062400e11 -0.228654119e9 / 0.345945600e9 -0.12245627e8 / 0.34594560e8 -0.2995295e7 / 0.46702656e8 0.52836503e8 / 0.691891200e9 0.119351e6 / 0.12812800e8 -0.634102039e9 / 0.65383718400e11; 0.68879e5 / 0.3057600e7 -0.228654119e9 / 0.345945600e9 0.5399287e7 / 0.4193280e7 -0.24739409e8 / 0.34594560e8 0.7878737e7 / 0.69189120e8 -0.1917829e7 / 0.31449600e8 0.39727e5 / 0.3660800e7 0.10259e5 / 0.4656960e7; 0.1092927401e10 / 0.13076743680e11 -0.12245627e8 / 0.34594560e8 -0.24739409e8 / 0.34594560e8 0.7780367599e10 / 0.3736212480e10 -0.70085363e8 / 0.69189120e8 -0.500209e6 / 0.6289920e7 -0.311543e6 / 0.17962560e8 0.278191e6 / 0.21525504e8; 0.18145423e8 / 0.968647680e9 -0.2995295e7 / 0.46702656e8 0.7878737e7 / 0.69189120e8 -0.70085363e8 / 0.69189120e8 0.7116321131e10 / 0.3736212480e10 -0.545081e6 / 0.532224e6 0.811631e6 / 0.11531520e8 -0.84101639e8 / 0.13076743680e11; -0.1143817e7 / 0.60540480e8 0.52836503e8 / 0.691891200e9 -0.1917829e7 / 0.31449600e8 -0.500209e6 / 0.6289920e7 -0.545081e6 / 0.532224e6 0.324760747e9 / 0.138378240e9 -0.65995697e8 / 0.49420800e8 0.1469203e7 / 0.13759200e8; -0.355447739e9 / 0.65383718400e11 0.119351e6 / 0.12812800e8 0.39727e5 / 0.3660800e7 -0.311543e6 / 0.17962560e8 0.811631e6 / 0.11531520e8 -0.65995697e8 / 0.49420800e8 0.48284442317e11 / 0.18681062400e11 -0.1762877569e10 / 0.1210809600e10; 0.56081e5 / 0.16473600e8 -0.634102039e9 / 0.65383718400e11 0.10259e5 / 0.4656960e7 0.278191e6 / 0.21525504e8 -0.84101639e8 / 0.13076743680e11 0.1469203e7 / 0.13759200e8 -0.1762877569e10 / 0.1210809600e10 0.10117212851e11 / 0.3736212480e10;];
+
+    M(1:8,1:8)=M_U;
+
+    M(m-7:m,m-7:m)=rot90(  M_U ,2 );
+    M=M/h;
+
+    S_U=[-0.25e2 / 0.12e2 4 -3 0.4e1 / 0.3e1 -0.1e1 / 0.4e1;]/h;
+    S_1=sparse(1,m);
+    S_1(1:5)=S_U;
+    S_m=sparse(1,m);
+
+    S_m(m-4:m)=fliplr(-S_U);
+
+    D2=H\(-M-e_1*S_1+e_m*S_m);
+
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Third derivative, 1st order accurate at first 6 boundary points
+
+    q4=7/240;q3=-3/10;q2=169/120;q1=-61/30;
+%     Q3=q4*(diag(ones(m-4,1),4)-diag(ones(m-4,1),-4))+q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    diags   = -4:4;
+    stencil = [-q4,-q3,-q2,-q1,0,q1,q2,q3,q4];
+    Q3 = stripeMatrix(stencil, diags, m);
+    %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
+
+
+    Q3_U = [0 -0.10882810591e11 / 0.5811886080e10 0.398713069e9 / 0.132088320e9 -0.1746657571e10 / 0.1162377216e10 0.56050639e8 / 0.145297152e9 -0.11473393e8 / 0.1162377216e10 -0.38062741e8 / 0.1452971520e10 0.30473e5 / 0.4392960e7; 0.10882810591e11 / 0.5811886080e10 0 -0.3720544343e10 / 0.830269440e9 0.767707019e9 / 0.207567360e9 -0.1047978301e10 / 0.830269440e9 0.1240729e7 / 0.14826240e8 0.6807397e7 / 0.55351296e8 -0.50022767e8 / 0.1452971520e10; -0.398713069e9 / 0.132088320e9 0.3720544343e10 / 0.830269440e9 0 -0.2870078009e10 / 0.830269440e9 0.74962049e8 / 0.29652480e8 -0.12944857e8 / 0.30750720e8 -0.17846623e8 / 0.103783680e9 0.68707591e8 / 0.1162377216e10; 0.1746657571e10 / 0.1162377216e10 -0.767707019e9 / 0.207567360e9 0.2870078009e10 / 0.830269440e9 0 -0.727867087e9 / 0.276756480e9 0.327603877e9 / 0.207567360e9 -0.175223717e9 / 0.830269440e9 0.1353613e7 / 0.726485760e9; -0.56050639e8 / 0.145297152e9 0.1047978301e10 / 0.830269440e9 -0.74962049e8 / 0.29652480e8 0.727867087e9 / 0.276756480e9 0 -0.1804641793e10 / 0.830269440e9 0.311038417e9 / 0.207567360e9 -0.1932566239e10 / 0.5811886080e10; 0.11473393e8 / 0.1162377216e10 -0.1240729e7 / 0.14826240e8 0.12944857e8 / 0.30750720e8 -0.327603877e9 / 0.207567360e9 0.1804641793e10 / 0.830269440e9 0 -0.1760949511e10 / 0.830269440e9 0.2105883973e10 / 0.1452971520e10; 0.38062741e8 / 0.1452971520e10 -0.6807397e7 / 0.55351296e8 0.17846623e8 / 0.103783680e9 0.175223717e9 / 0.830269440e9 -0.311038417e9 / 0.207567360e9 0.1760949511e10 / 0.830269440e9 0 -0.1081094773e10 / 0.528353280e9; -0.30473e5 / 0.4392960e7 0.50022767e8 / 0.1452971520e10 -0.68707591e8 / 0.1162377216e10 -0.1353613e7 / 0.726485760e9 0.1932566239e10 / 0.5811886080e10 -0.2105883973e10 / 0.1452971520e10 0.1081094773e10 / 0.528353280e9 0;];
+
+    Q3(1:8,1:8)=Q3_U;
+    Q3(m-7:m,m-7:m)=rot90(  -Q3_U ,2 );
+    Q3=Q3/h^2;
+
+
+
+    S2_U=[0.35e2 / 0.12e2 -0.26e2 / 0.3e1 0.19e2 / 0.2e1 -0.14e2 / 0.3e1 0.11e2 / 0.12e2;]/h^2;
+    S2_1=sparse(1,m);
+    S2_1(1:5)=S2_U;
+    S2_m=sparse(1,m);
+    S2_m(m-4:m)=fliplr(S2_U);
+
+
+
+    D3=H\(Q3 - e_1*S2_1 + e_m*S2_m +1/2*(S_1'*S_1) -1/2*(S_m'*S_m) ) ;
+
+    % Fourth derivative, 0th order accurate at first 6 boundary points (still
+    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
+
+    m4=7/240;m3=-2/5;m2=169/60;m1=-122/15;m0=91/8;
+%     M4=m4*(diag(ones(m-4,1),4)+diag(ones(m-4,1),-4))+m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    diags   = -4:4;
+    left_stencil = [m4,m3,m2,m1];
+    stencil = [left_stencil,m0,fliplr(left_stencil)];
+    M4 = stripeMatrix(stencil, diags, m);
+    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
+
+    M4_U=[0.40833734273e11 / 0.10761070320e11 -0.162181998421e12 / 0.16397821440e11 0.4696168417e10 / 0.521748864e9 -0.245714671483e12 / 0.68870850048e11 0.2185939219e10 / 0.2869618752e10 -0.15248255797e11 / 0.114784750080e12 0.345156907e9 / 0.12298366080e11 0.6388381e7 / 0.1093188096e10; -0.162181998421e12 / 0.16397821440e11 0.147281127041e12 / 0.5380535160e10 -0.3072614435609e13 / 0.114784750080e12 0.320122985851e12 / 0.28696187520e11 -0.768046031383e12 / 0.344354250240e12 0.7861605187e10 / 0.14348093760e11 -0.803762437e9 / 0.4251287040e10 0.167394281e9 / 0.86088562560e11; 0.4696168417e10 / 0.521748864e9 -0.3072614435609e13 / 0.114784750080e12 0.139712483333e12 / 0.4782697920e10 -0.1634124842747e13 / 0.114784750080e12 0.90855193447e11 / 0.28696187520e11 -0.26412188989e11 / 0.38261583360e11 0.668741173e9 / 0.1793511720e10 -0.132673781e9 / 0.2342545920e10; -0.245714671483e12 / 0.68870850048e11 0.320122985851e12 / 0.28696187520e11 -0.1634124842747e13 / 0.114784750080e12 0.437353997177e12 / 0.43044281280e11 -0.172873969321e12 / 0.38261583360e11 0.34759553483e11 / 0.28696187520e11 -0.98928859751e11 / 0.344354250240e12 0.295000207e9 / 0.3587023440e10; 0.2185939219e10 / 0.2869618752e10 -0.768046031383e12 / 0.344354250240e12 0.90855193447e11 / 0.28696187520e11 -0.172873969321e12 / 0.38261583360e11 0.126711914423e12 / 0.21522140640e11 -0.520477408939e12 / 0.114784750080e12 0.49581230003e11 / 0.28696187520e11 -0.99640101991e11 / 0.344354250240e12; -0.15248255797e11 / 0.114784750080e12 0.7861605187e10 / 0.14348093760e11 -0.26412188989e11 / 0.38261583360e11 0.34759553483e11 / 0.28696187520e11 -0.520477408939e12 / 0.114784750080e12 0.19422074929e11 / 0.2391348960e10 -0.772894368601e12 / 0.114784750080e12 0.10579712849e11 / 0.4099455360e10; 0.345156907e9 / 0.12298366080e11 -0.803762437e9 / 0.4251287040e10 0.668741173e9 / 0.1793511720e10 -0.98928859751e11 / 0.344354250240e12 0.49581230003e11 / 0.28696187520e11 -0.772894368601e12 / 0.114784750080e12 0.456715296239e12 / 0.43044281280e11 -0.915425403107e12 / 0.114784750080e12; 0.6388381e7 / 0.1093188096e10 0.167394281e9 / 0.86088562560e11 -0.132673781e9 / 0.2342545920e10 0.295000207e9 / 0.3587023440e10 -0.99640101991e11 / 0.344354250240e12 0.10579712849e11 / 0.4099455360e10 -0.915425403107e12 / 0.114784750080e12 0.488029542379e12 / 0.43044281280e11;];
+
+    M4(1:8,1:8)=M4_U;
+
+    M4(m-7:m,m-7:m)=rot90(  M4_U ,2 );
+    M4=M4/h^3;
+
+    S3_U=[-0.5e1 / 0.2e1 9 -12 7 -0.3e1 / 0.2e1;]/h^3;
+    S3_1=sparse(1,m);
+    S3_1(1:5)=S3_U;
+    S3_m=sparse(1,m);
+    S3_m(m-4:m)=fliplr(-S3_U);
+
+    D4=H\(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
+
+
+%     L=h*(m-1);
+
+    % x1=linspace(0,L,m)';
+    % x2=x1.^2/fac(2);
+    % x3=x1.^3/fac(3);
+    % x4=x1.^4/fac(4);
+    % x5=x1.^5/fac(5);
+
+    % x0=x1.^0/fac(1);
+
+    S_1  = S_1';
+    S2_1 = S2_1';
+    S3_1 = S3_1';
+    S_m  = S_m';
+    S2_m = S2_m';
+    S3_m = S3_m';
+
+
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d4_compatible_2.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d4_compatible_2.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,161 @@
+function [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m,...
+    S3_1, S3_m, S_1, S_m] = d4_compatible_2(m,h)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%% 4:de ordn. SBP Finita differens         %%%
+    %%% operatorer framtagna av Ken Mattsson    %%%
+    %%%                                         %%%
+    %%% 6 randpunkter, diagonal norm            %%%
+    %%%                                         %%%
+    %%% Datum: 2013-11-11                       %%%
+    %%%                                         %%%
+    %%%                                         %%%
+    %%% H           (Normen)                    %%%
+    %%% D1          (approx f?rsta derivatan)   %%%
+    %%% D2          (approx andra derivatan)    %%%
+    %%% D3          (approx tredje derivatan)   %%%
+    %%% D2          (approx fj?rde derivatan)   %%%
+    %%%                                         %%%
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    % M?ste ange antal punkter (m) och stegl?ngd (h)
+    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
+    % vi har 3de och 4de derivator i v?r PDE
+    % I annat fall anv?nd de "traditionella" som har noggrannare
+    % randsplutningar f?r D1 och D2
+
+    % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
+    % vilket ?r n?dv?ndigt f?r stabilitet
+    
+    BP = 4;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
+    H=speye(m,m);H(1,1)=1/2;H(m,m)=1/2;
+
+
+    H=H*h;
+    HI=inv(H);
+
+
+    % First derivative SBP operator, 1st order accurate at first 6 boundary points
+
+    q1=1/2;
+%     Q=q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    stencil = [-q1,0,q1];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    Q = stripeMatrix(stencil, diags, m);
+
+    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
+
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+
+    D1=H\(Q-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Second derivative, 1st order accurate at first 6 boundary points
+%     m1=-1;m0=2;
+% %     M=m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);M(1,1)=1;M(m,m)=1;
+%     stencil = [m2,m1,m0,m1,m2];
+%     d = (length(stencil)-1)/2;
+%     diags = -d:d;
+%     M = stripeMatrix(stencil, diags, m);
+%     M=M/h;
+
+    S_U=[-1 1]/h;
+    S_1=sparse(1,m);
+    S_1(1:2)=S_U;
+    S_m=sparse(1,m);
+
+    S_m(m-1:m)=fliplr(-S_U);
+
+%     D2=H\(-M-e_1*S_1+e_m*S_m);
+
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Third derivative, 1st order accurate at first 6 boundary points
+
+%     q2=1/2;q1=-1;
+% %     Q3=q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+%     stencil = [-q2,-q1,0,q1,q2];
+%     d = (length(stencil)-1)/2;
+%     diags = -d:d;
+%     Q3 = stripeMatrix(stencil, diags, m);
+
+    %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
+
+
+%     Q3_U = [0 -0.2e1 / 0.5e1 0.3e1 / 0.10e2 0.1e1 / 0.10e2; 0.2e1 / 0.5e1 0 -0.7e1 / 0.10e2 0.3e1 / 0.10e2; -0.3e1 / 0.10e2 0.7e1 / 0.10e2 0 -0.9e1 / 0.10e2; -0.1e1 / 0.10e2 -0.3e1 / 0.10e2 0.9e1 / 0.10e2 0;];
+%     Q3(1:4,1:4)=Q3_U;
+%     Q3(m-3:m,m-3:m)=rot90(  -Q3_U ,2 );
+%     Q3=Q3/h^2;
+
+
+
+    S2_U=[1 -2 1;]/h^2;
+    S2_1=sparse(1,m);
+    S2_1(1:3)=S2_U;
+    S2_m=sparse(1,m);
+    S2_m(m-2:m)=fliplr(S2_U);
+
+
+
+%     D3=H\(Q3 - e_1*S2_1 + e_m*S2_m +1/2*(S_1'*S_1) -1/2*(S_m'*S_m) ) ;
+
+    % Fourth derivative, 0th order accurate at first 6 boundary points (still
+    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
+
+    m2=1;m1=-4;m0=6;
+    M4=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+
+    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
+
+    M4_U=[0.4e1 / 0.5e1 -0.7e1 / 0.5e1 0.2e1 / 0.5e1 0.1e1 / 0.5e1; -0.7e1 / 0.5e1 0.16e2 / 0.5e1 -0.11e2 / 0.5e1 0.2e1 / 0.5e1; 0.2e1 / 0.5e1 -0.11e2 / 0.5e1 0.21e2 / 0.5e1 -0.17e2 / 0.5e1; 0.1e1 / 0.5e1 0.2e1 / 0.5e1 -0.17e2 / 0.5e1 0.29e2 / 0.5e1;];
+
+    M4(1:4,1:4)=M4_U;
+
+    M4(m-3:m,m-3:m)=rot90(  M4_U ,2 );
+    M4=M4/h^3;
+
+    S3_U=[-1 3 -3 1;]/h^3;
+    S3_1=sparse(1,m);
+    S3_1(1:4)=S3_U;
+    S3_m=sparse(1,m);
+    S3_m(m-3:m)=fliplr(-S3_U);
+
+    D4=H\(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
+
+
+
+    S_1 = S_1';
+    S_m = S_m';
+    S2_1 = S2_1';
+    S2_m = S2_m';
+    S3_1 = S3_1';
+    S3_m = S3_m';
+
+
+
+
+    % L=h*(m-1);
+
+    % x1=linspace(0,L,m)';
+    % x2=x1.^2/fac(2);
+    % x3=x1.^3/fac(3);
+    % x4=x1.^4/fac(4);
+    % x5=x1.^5/fac(5);
+
+    % x0=x1.^0/fac(1);
+
+
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d4_compatible_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d4_compatible_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,163 @@
+function [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m,...
+    S3_1, S3_m, S_1, S_m] = d4_compatible_4(m,h)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%% 4:de ordn. SBP Finita differens         %%%
+    %%% operatorer framtagna av Ken Mattsson    %%%
+    %%%                                         %%%
+    %%% 6 randpunkter, diagonal norm            %%%
+    %%%                                         %%%
+    %%% Datum: 2013-11-11                       %%%
+    %%%                                         %%%
+    %%%                                         %%%
+    %%% H           (Normen)                    %%%
+    %%% D1          (approx f?rsta derivatan)   %%%
+    %%% D2          (approx andra derivatan)    %%%
+    %%% D3          (approx tredje derivatan)   %%%
+    %%% D2          (approx fj?rde derivatan)   %%%
+    %%%                                         %%%
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    % M?ste ange antal punkter (m) och stegl?ngd (h)
+    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
+    % vi har 3de och 4de derivator i v?r PDE
+    % I annat fall anv?nd de "traditionella" som har noggrannare
+    % randsplutningar f?r D1 och D2
+
+    % 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=speye(m,m);
+    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;];
+    H(1:6,1:6)=H_U;
+    H(m-5:m,m-5:m)=rot90(H_U,2);
+    H=H*h;
+    HI=inv(H);
+
+
+    % First derivative SBP operator, 1st order accurate at first 6 boundary points
+
+    q2=-1/12;q1=8/12;
+%     Q=q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    stencil = [-q2,-q1,0,q1,q2];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    Q = stripeMatrix(stencil, diags, m);
+
+    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
+
+    Q_U = [0 0.9e1 / 0.11e2 -0.9e1 / 0.22e2 0.1e1 / 0.11e2 0 0; -0.9e1 / 0.11e2 0 0.2595224893e10 / 0.2622009280e10 -0.151435707e9 / 0.327751160e9 0.1112665611e10 / 0.2622009280e10 -0.1290899e7 / 0.9639740e7; 0.9e1 / 0.22e2 -0.2595224893e10 / 0.2622009280e10 0 0.1468436423e10 / 0.983253480e9 -0.1194603401e10 / 0.983253480e9 0.72033031e8 / 0.238364480e9; -0.1e1 / 0.11e2 0.151435707e9 / 0.327751160e9 -0.1468436423e10 / 0.983253480e9 0 0.439819541e9 / 0.327751160e9 -0.215942641e9 / 0.983253480e9; 0 -0.1112665611e10 / 0.2622009280e10 0.1194603401e10 / 0.983253480e9 -0.439819541e9 / 0.327751160e9 0 0.1664113643e10 / 0.2622009280e10; 0 0.1290899e7 / 0.9639740e7 -0.72033031e8 / 0.238364480e9 0.215942641e9 / 0.983253480e9 -0.1664113643e10 / 0.2622009280e10 0;];
+    Q(1:6,1:6)=Q_U;
+    Q(m-5:m,m-5:m)=rot90(  -Q_U ,2 );
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+
+    D1=H\(Q-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % % Second derivative, 1st order accurate at first 6 boundary points
+    % m2=1/12;m1=-16/12;m0=30/12;
+    % M=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    % %M=(1/12*diag(ones(m-2,1),2)-16/12*diag(ones(m-1,1),1)-16/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2)+30/12*diag(ones(m,1),0));
+    % M_U=[0.2386127e7 / 0.2177280e7 -0.515449e6 / 0.453600e6 -0.10781e5 / 0.777600e6 0.61567e5 / 0.1360800e7 0.6817e4 / 0.403200e6 -0.1069e4 / 0.136080e6; -0.515449e6 / 0.453600e6 0.4756039e7 / 0.2177280e7 -0.1270009e7 / 0.1360800e7 -0.3751e4 / 0.28800e5 0.3067e4 / 0.680400e6 0.119459e6 / 0.10886400e8; -0.10781e5 / 0.777600e6 -0.1270009e7 / 0.1360800e7 0.111623e6 / 0.60480e5 -0.555587e6 / 0.680400e6 -0.551339e6 / 0.5443200e7 0.8789e4 / 0.453600e6; 0.61567e5 / 0.1360800e7 -0.3751e4 / 0.28800e5 -0.555587e6 / 0.680400e6 0.1025327e7 / 0.544320e6 -0.464003e6 / 0.453600e6 0.222133e6 / 0.5443200e7; 0.6817e4 / 0.403200e6 0.3067e4 / 0.680400e6 -0.551339e6 / 0.5443200e7 -0.464003e6 / 0.453600e6 0.5074159e7 / 0.2177280e7 -0.1784047e7 / 0.1360800e7; -0.1069e4 / 0.136080e6 0.119459e6 / 0.10886400e8 0.8789e4 / 0.453600e6 0.222133e6 / 0.5443200e7 -0.1784047e7 / 0.1360800e7 0.1812749e7 / 0.725760e6;];
+    %
+    % M(1:6,1:6)=M_U;
+    %
+    % M(m-5:m,m-5:m)=flipud( fliplr( M_U ) );
+    % M=M/h;
+    %
+     S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
+     S_1=sparse(1,m);
+     S_1(1:4)=S_U;
+     S_m=sparse(1,m);
+
+     S_m(m-3:m)=fliplr(-S_U);
+
+    % D2=H\(-M-e_1*S_1+e_m*S_m);
+
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Third derivative, 1st order accurate at first 6 boundary points
+
+    % q3=-1/8;q2=1;q1=-13/8;
+    % Q3=q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    %
+    % %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
+    %
+    %
+    % Q3_U = [0 -0.88471e5 / 0.67200e5 0.58139e5 / 0.33600e5 -0.1167e4 / 0.2800e4 -0.89e2 / 0.11200e5 0.7e1 / 0.640e3; 0.88471e5 / 0.67200e5 0 -0.43723e5 / 0.16800e5 0.46783e5 / 0.33600e5 -0.191e3 / 0.3200e4 -0.1567e4 / 0.33600e5; -0.58139e5 / 0.33600e5 0.43723e5 / 0.16800e5 0 -0.4049e4 / 0.2400e4 0.29083e5 / 0.33600e5 -0.71e2 / 0.1400e4; 0.1167e4 / 0.2800e4 -0.46783e5 / 0.33600e5 0.4049e4 / 0.2400e4 0 -0.8591e4 / 0.5600e4 0.10613e5 / 0.11200e5; 0.89e2 / 0.11200e5 0.191e3 / 0.3200e4 -0.29083e5 / 0.33600e5 0.8591e4 / 0.5600e4 0 -0.108271e6 / 0.67200e5; -0.7e1 / 0.640e3 0.1567e4 / 0.33600e5 0.71e2 / 0.1400e4 -0.10613e5 / 0.11200e5 0.108271e6 / 0.67200e5 0;];
+    %
+    % Q3(1:6,1:6)=Q3_U;
+    % Q3(m-5:m,m-5:m)=flipud( fliplr( -Q3_U ) );
+    % Q3=Q3/h^2;
+
+
+
+    S2_U=[2 -5 4 -1;]/h^2;
+    S2_1=sparse(1,m);
+    S2_1(1:4)=S2_U;
+    S2_m=sparse(1,m);
+    S2_m(m-3:m)=fliplr(S2_U);
+
+
+
+    %D3=H\(Q3 - e_1*S2_1 + e_m*S2_m +1/2*(S_1'*S_1) -1/2*(S_m'*S_m) ) ;
+
+    % Fourth derivative, 0th order accurate at first 6 boundary points (still
+    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
+
+    m3=-1/6;m2=2;m1=-13/2;m0=28/3;
+%     M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+
+    stencil = [m3,m2,m1,m0,m1,m2,m3];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    M4 = stripeMatrix(stencil, diags, m);
+
+    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
+
+    M4_U=[0.227176919517319e15 / 0.94899692875680e14 -0.15262605263734e14 / 0.2965615402365e13 0.20205404771243e14 / 0.6778549491120e13 -0.3998303664097e13 / 0.23724923218920e14 0.1088305091927e13 / 0.94899692875680e14 -0.1686077077693e13 / 0.23724923218920e14; -0.15262605263734e14 / 0.2965615402365e13 0.280494781164181e15 / 0.23724923218920e14 -0.46417445546261e14 / 0.5931230804730e13 0.1705307929429e13 / 0.1694637372780e13 -0.553547394061e12 / 0.5931230804730e13 0.5615721694973e13 / 0.23724923218920e14; 0.20205404771243e14 / 0.6778549491120e13 -0.46417445546261e14 / 0.5931230804730e13 0.4135802350237e13 / 0.551742400440e12 -0.4140981465247e13 / 0.1078405600860e13 0.75538453067437e14 / 0.47449846437840e14 -0.4778134936391e13 / 0.11862461609460e14; -0.3998303664097e13 / 0.23724923218920e14 0.1705307929429e13 / 0.1694637372780e13 -0.4140981465247e13 / 0.1078405600860e13 0.20760974175677e14 / 0.2965615402365e13 -0.138330689701889e15 / 0.23724923218920e14 0.23711317526909e14 / 0.11862461609460e14; 0.1088305091927e13 / 0.94899692875680e14 -0.553547394061e12 / 0.5931230804730e13 0.75538453067437e14 / 0.47449846437840e14 -0.138330689701889e15 / 0.23724923218920e14 0.120223780251937e15 / 0.13557098982240e14 -0.151383731537477e15 / 0.23724923218920e14; -0.1686077077693e13 / 0.23724923218920e14 0.5615721694973e13 / 0.23724923218920e14 -0.4778134936391e13 / 0.11862461609460e14 0.23711317526909e14 / 0.11862461609460e14 -0.151383731537477e15 / 0.23724923218920e14 0.220304030094121e15 / 0.23724923218920e14;];
+
+    M4(1:6,1:6)=M4_U;
+
+    M4(m-5:m,m-5:m)=rot90(  M4_U ,2 );
+    M4=M4/h^3;
+
+    S3_U=[-1 3 -3 1;]/h^3;
+    S3_1=sparse(1,m);
+    S3_1(1:4)=S3_U;
+    S3_m=sparse(1,m);
+    S3_m(m-3:m)=fliplr(-S3_U);
+
+    D4=H\(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
+
+    S_1 = S_1';
+    S_m = S_m';
+    S2_1 = S2_1';
+    S2_m = S2_m';
+    S3_1 = S3_1';
+    S3_m = S3_m';
+
+    % L=h*(m-1);
+    %
+    % x1=linspace(0,L,m)';
+    % x2=x1.^2/fac(2);
+    % x3=x1.^3/fac(3);
+    % x4=x1.^4/fac(4);
+    % x5=x1.^5/fac(5);
+    %
+    % x0=x1.^0/fac(1);
+
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d4_compatible_6.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d4_compatible_6.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,161 @@
+function [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m,...
+    S3_1, S3_m, S_1, S_m] = d4_compatible_6(m,h)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%% 4:de ordn. SBP Finita differens         %%%
+    %%% operatorer framtagna av Ken Mattsson    %%%
+    %%%                                         %%%
+    %%% 6 randpunkter, diagonal norm            %%%
+    %%%                                         %%%
+    %%% Datum: 2013-11-11                       %%%
+    %%%                                         %%%
+    %%%                                         %%%
+    %%% H           (Normen)                    %%%
+    %%% D1          (approx f?rsta derivatan)   %%%
+    %%% D2          (approx andra derivatan)    %%%
+    %%% D3          (approx tredje derivatan)   %%%
+    %%% D2          (approx fj?rde derivatan)   %%%
+    %%%                                         %%%
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    % M?ste ange antal punkter (m) och stegl?ngd (h)
+    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
+    % vi har 3de och 4de derivator i v?r PDE
+    % I annat fall anv?nd de "traditionella" som har noggrannare
+    % randsplutningar f?r D1 och D2
+
+    % 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=speye(m,m);
+    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;];
+
+    H(1:8,1:8)=H_U;
+    H(m-7:m,m-7:m)=rot90(H_U,2);
+    H=H*h;
+    HI=inv(H);
+
+
+    % First derivative SBP operator, 3rd order accurate at first 8 boundary points
+
+    q3=1/60;q2=-3/20;q1=3/4;
+%     Q=q3*(diag(ones(m-3,1),3) - diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    stencil = [-q3,-q2,-q1,0,q1,q2,q3];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    Q = stripeMatrix(stencil, diags, m);
+
+    Q_U = [0 0.26431903e8 / 0.43545600e8 0.39791489e8 / 0.152409600e9 -0.12747751e8 / 0.16934400e8 0.76099447e8 / 0.152409600e9 -0.1397443e7 / 0.12192768e8 0 0; -0.26431903e8 / 0.43545600e8 0 -0.13847476213e11 / 0.19559232000e11 0.35844843977e11 / 0.11735539200e11 -0.63413503537e11 / 0.23471078400e11 0.4764412871e10 / 0.3911846400e10 -0.1668252557e10 / 0.5867769600e10 0.842644697e9 / 0.29338848000e11; -0.39791489e8 / 0.152409600e9 0.13847476213e11 / 0.19559232000e11 0 -0.73834802771e11 / 0.23471078400e11 0.1802732209e10 / 0.325987200e9 -0.65514173e8 / 0.16299360e8 0.79341409141e11 / 0.58677696000e11 -0.1282384321e10 / 0.7823692800e10; 0.12747751e8 / 0.16934400e8 -0.35844843977e11 / 0.11735539200e11 0.73834802771e11 / 0.23471078400e11 0 -0.5274106087e10 / 0.1173553920e10 0.33743985841e11 / 0.5867769600e10 -0.6482602549e10 / 0.2607897600e10 0.1506017269e10 / 0.3911846400e10; -0.76099447e8 / 0.152409600e9 0.63413503537e11 / 0.23471078400e11 -0.1802732209e10 / 0.325987200e9 0.5274106087e10 / 0.1173553920e10 0 -0.7165829063e10 / 0.2607897600e10 0.23903110999e11 / 0.11735539200e11 -0.5346675911e10 / 0.11735539200e11; 0.1397443e7 / 0.12192768e8 -0.4764412871e10 / 0.3911846400e10 0.65514173e8 / 0.16299360e8 -0.33743985841e11 / 0.5867769600e10 0.7165829063e10 / 0.2607897600e10 0 -0.1060918223e10 / 0.11735539200e11 0.628353989e9 / 0.3911846400e10; 0 0.1668252557e10 / 0.5867769600e10 -0.79341409141e11 / 0.58677696000e11 0.6482602549e10 / 0.2607897600e10 -0.23903110999e11 / 0.11735539200e11 0.1060918223e10 / 0.11735539200e11 0 0.25889988599e11 / 0.39118464000e11; 0 -0.842644697e9 / 0.29338848000e11 0.1282384321e10 / 0.7823692800e10 -0.1506017269e10 / 0.3911846400e10 0.5346675911e10 / 0.11735539200e11 -0.628353989e9 / 0.3911846400e10 -0.25889988599e11 / 0.39118464000e11 0;];
+
+    Q(1:8,1:8)=Q_U;
+    Q(m-7:m,m-7:m)=rot90(  -Q_U ,2 );
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+
+    D1=H\(Q-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Second derivative, 1st order accurate at first 6 boundary points
+    % m3=-1/90;m2=3/20;m1=-3/2;m0=49/18;
+    %
+    % M=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    % M_U=[0.4347276223e10 / 0.3736212480e10 -0.1534657609e10 / 0.1210809600e10 0.68879e5 / 0.3057600e7 0.1092927401e10 / 0.13076743680e11 0.18145423e8 / 0.968647680e9 -0.1143817e7 / 0.60540480e8 -0.355447739e9 / 0.65383718400e11 0.56081e5 / 0.16473600e8; -0.1534657609e10 / 0.1210809600e10 0.42416226217e11 / 0.18681062400e11 -0.228654119e9 / 0.345945600e9 -0.12245627e8 / 0.34594560e8 -0.2995295e7 / 0.46702656e8 0.52836503e8 / 0.691891200e9 0.119351e6 / 0.12812800e8 -0.634102039e9 / 0.65383718400e11; 0.68879e5 / 0.3057600e7 -0.228654119e9 / 0.345945600e9 0.5399287e7 / 0.4193280e7 -0.24739409e8 / 0.34594560e8 0.7878737e7 / 0.69189120e8 -0.1917829e7 / 0.31449600e8 0.39727e5 / 0.3660800e7 0.10259e5 / 0.4656960e7; 0.1092927401e10 / 0.13076743680e11 -0.12245627e8 / 0.34594560e8 -0.24739409e8 / 0.34594560e8 0.7780367599e10 / 0.3736212480e10 -0.70085363e8 / 0.69189120e8 -0.500209e6 / 0.6289920e7 -0.311543e6 / 0.17962560e8 0.278191e6 / 0.21525504e8; 0.18145423e8 / 0.968647680e9 -0.2995295e7 / 0.46702656e8 0.7878737e7 / 0.69189120e8 -0.70085363e8 / 0.69189120e8 0.7116321131e10 / 0.3736212480e10 -0.545081e6 / 0.532224e6 0.811631e6 / 0.11531520e8 -0.84101639e8 / 0.13076743680e11; -0.1143817e7 / 0.60540480e8 0.52836503e8 / 0.691891200e9 -0.1917829e7 / 0.31449600e8 -0.500209e6 / 0.6289920e7 -0.545081e6 / 0.532224e6 0.324760747e9 / 0.138378240e9 -0.65995697e8 / 0.49420800e8 0.1469203e7 / 0.13759200e8; -0.355447739e9 / 0.65383718400e11 0.119351e6 / 0.12812800e8 0.39727e5 / 0.3660800e7 -0.311543e6 / 0.17962560e8 0.811631e6 / 0.11531520e8 -0.65995697e8 / 0.49420800e8 0.48284442317e11 / 0.18681062400e11 -0.1762877569e10 / 0.1210809600e10; 0.56081e5 / 0.16473600e8 -0.634102039e9 / 0.65383718400e11 0.10259e5 / 0.4656960e7 0.278191e6 / 0.21525504e8 -0.84101639e8 / 0.13076743680e11 0.1469203e7 / 0.13759200e8 -0.1762877569e10 / 0.1210809600e10 0.10117212851e11 / 0.3736212480e10;];
+    %
+    % M(1:8,1:8)=M_U;
+    %
+    % M(m-7:m,m-7:m)=flipud( fliplr( M_U ) );
+    % M=M/h;
+
+    S_U=[-0.12700800e8 / 0.7493827e7 0.185023321e9 / 0.89925924e8 0.39791489e8 / 0.44962962e8 -0.38243253e8 / 0.14987654e8 0.76099447e8 / 0.44962962e8 -0.34936075e8 / 0.89925924e8;]/h;
+    S_1=sparse(1,m);
+    S_1(1:6)=S_U;
+    S_m=sparse(1,m);
+
+    S_m(m-5:m)=fliplr(-S_U);
+
+    %D2=H\(-M-e_1*S_1+e_m*S_m);
+
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Third derivative, 1st order accurate at first 6 boundary points
+
+    % q4=7/240;q3=-3/10;q2=169/120;q1=-61/30;
+    % Q3=q4*(diag(ones(m-4,1),4)-diag(ones(m-4,1),-4))+q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    %
+    % %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
+    %
+    %
+    % Q3_U = [0 -0.10882810591e11 / 0.5811886080e10 0.398713069e9 / 0.132088320e9 -0.1746657571e10 / 0.1162377216e10 0.56050639e8 / 0.145297152e9 -0.11473393e8 / 0.1162377216e10 -0.38062741e8 / 0.1452971520e10 0.30473e5 / 0.4392960e7; 0.10882810591e11 / 0.5811886080e10 0 -0.3720544343e10 / 0.830269440e9 0.767707019e9 / 0.207567360e9 -0.1047978301e10 / 0.830269440e9 0.1240729e7 / 0.14826240e8 0.6807397e7 / 0.55351296e8 -0.50022767e8 / 0.1452971520e10; -0.398713069e9 / 0.132088320e9 0.3720544343e10 / 0.830269440e9 0 -0.2870078009e10 / 0.830269440e9 0.74962049e8 / 0.29652480e8 -0.12944857e8 / 0.30750720e8 -0.17846623e8 / 0.103783680e9 0.68707591e8 / 0.1162377216e10; 0.1746657571e10 / 0.1162377216e10 -0.767707019e9 / 0.207567360e9 0.2870078009e10 / 0.830269440e9 0 -0.727867087e9 / 0.276756480e9 0.327603877e9 / 0.207567360e9 -0.175223717e9 / 0.830269440e9 0.1353613e7 / 0.726485760e9; -0.56050639e8 / 0.145297152e9 0.1047978301e10 / 0.830269440e9 -0.74962049e8 / 0.29652480e8 0.727867087e9 / 0.276756480e9 0 -0.1804641793e10 / 0.830269440e9 0.311038417e9 / 0.207567360e9 -0.1932566239e10 / 0.5811886080e10; 0.11473393e8 / 0.1162377216e10 -0.1240729e7 / 0.14826240e8 0.12944857e8 / 0.30750720e8 -0.327603877e9 / 0.207567360e9 0.1804641793e10 / 0.830269440e9 0 -0.1760949511e10 / 0.830269440e9 0.2105883973e10 / 0.1452971520e10; 0.38062741e8 / 0.1452971520e10 -0.6807397e7 / 0.55351296e8 0.17846623e8 / 0.103783680e9 0.175223717e9 / 0.830269440e9 -0.311038417e9 / 0.207567360e9 0.1760949511e10 / 0.830269440e9 0 -0.1081094773e10 / 0.528353280e9; -0.30473e5 / 0.4392960e7 0.50022767e8 / 0.1452971520e10 -0.68707591e8 / 0.1162377216e10 -0.1353613e7 / 0.726485760e9 0.1932566239e10 / 0.5811886080e10 -0.2105883973e10 / 0.1452971520e10 0.1081094773e10 / 0.528353280e9 0;];
+    %
+    % Q3(1:8,1:8)=Q3_U;
+    % Q3(m-7:m,m-7:m)=flipud( fliplr( -Q3_U ) );
+    % Q3=Q3/h^2;
+    %
+    %
+    %
+     S2_U=[0.35e2 / 0.12e2 -0.26e2 / 0.3e1 0.19e2 / 0.2e1 -0.14e2 / 0.3e1 0.11e2 / 0.12e2;]/h^2;
+     S2_1=sparse(1,m);
+     S2_1(1:5)=S2_U;
+     S2_m=sparse(1,m);
+     S2_m(m-4:m)=fliplr(S2_U);
+    %
+    %
+    %
+    % D3=H\(Q3 - e_1*S2_1 + e_m*S2_m +1/2*(S_1'*S_1) -1/2*(S_m'*S_m) ) ;
+
+    % Fourth derivative, 0th order accurate at first 6 boundary points (still
+    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
+
+    m4=7/240;m3=-2/5;m2=169/60;m1=-122/15;m0=91/8;
+%     M4=m4*(diag(ones(m-4,1),4)+diag(ones(m-4,1),-4))+m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    stencil = [m4,m3,m2,m1,m0,m1,m2,m3,m4];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    M4 = stripeMatrix(stencil, diags, m);
+
+
+    M4_U=[0.600485868980522851e18 / 0.274825314114120000e18 -0.1421010223681841e16 / 0.348984525859200e15 0.38908412970187e14 / 0.1586293299360000e16 0.10224077451922837e17 / 0.2243471951952000e16 -0.7577302712815639e16 / 0.1744922629296000e16 0.138091642084013e15 / 0.59351109840000e14 -0.3775041725375197e16 / 0.4486943903904000e16 0.9907210230881393e16 / 0.61072292025360000e17; -0.1421010223681841e16 / 0.348984525859200e15 0.3985852497808703e16 / 0.407903991264000e15 -0.90048788923861e14 / 0.15579666333000e14 -0.4312795866499e13 / 0.997098645312e12 0.4414634708891947e16 / 0.448694390390400e15 -0.886174803100459e15 / 0.99709864531200e14 0.4333e4 / 0.1000e4 -0.13800578064893047e17 / 0.15704303663664000e17; 0.38908412970187e14 / 0.1586293299360000e16 -0.90048788923861e14 / 0.15579666333000e14 0.2071682582321887e16 / 0.113306664240000e15 -0.769471337294003e15 / 0.41545776888000e14 0.112191585452033e15 / 0.166183107552000e15 0.7204491902193671e16 / 0.623186653320000e15 -0.24847093554379e14 / 0.3115933266600e13 0.943854037768721e15 / 0.545288321655000e15; 0.10224077451922837e17 / 0.2243471951952000e16 -0.4312795866499e13 / 0.997098645312e12 -0.769471337294003e15 / 0.41545776888000e14 0.3086874339649421e16 / 0.81580798252800e14 -0.396009005312111e15 / 0.16618310755200e14 0.348854811893087e15 / 0.249274661328000e15 0.895954627955053e15 / 0.224347195195200e15 -0.184881685054543e15 / 0.166183107552000e15; -0.7577302712815639e16 / 0.1744922629296000e16 0.4414634708891947e16 / 0.448694390390400e15 0.112191585452033e15 / 0.166183107552000e15 -0.396009005312111e15 / 0.16618310755200e14 0.3774861828677557e16 / 0.112173597597600e15 -0.5693689108983593e16 / 0.249274661328000e15 0.803944126167107e15 / 0.99709864531200e14 -0.19547569411550791e17 / 0.15704303663664000e17; 0.138091642084013e15 / 0.59351109840000e14 -0.886174803100459e15 / 0.99709864531200e14 0.7204491902193671e16 / 0.623186653320000e15 0.348854811893087e15 / 0.249274661328000e15 -0.5693689108983593e16 / 0.249274661328000e15 0.73965842628398389e17 / 0.2492746613280000e16 -0.2184472662036043e16 / 0.124637330664000e15 0.46667e5 / 0.10000e5; -0.3775041725375197e16 / 0.4486943903904000e16 0.4333e4 / 0.1000e4 -0.24847093554379e14 / 0.3115933266600e13 0.895954627955053e15 / 0.224347195195200e15 0.803944126167107e15 / 0.99709864531200e14 -0.2184472662036043e16 / 0.124637330664000e15 0.37593640125444199e17 / 0.2243471951952000e16 -0.37e2 / 0.4e1; 0.9907210230881393e16 / 0.61072292025360000e17 -0.13800578064893047e17 / 0.15704303663664000e17 0.943854037768721e15 / 0.545288321655000e15 -0.184881685054543e15 / 0.166183107552000e15 -0.19547569411550791e17 / 0.15704303663664000e17 0.46667e5 / 0.10000e5 -0.37e2 / 0.4e1 0.12766926490502478779e20 / 0.1099301256456480000e19;];
+
+    M4(1:8,1:8)=M4_U;
+
+    M4(m-7:m,m-7:m)=rot90(  M4_U ,2 );
+    M4=M4/h^3;
+
+    S3_U=[-0.5e1 / 0.2e1 9 -12 7 -0.3e1 / 0.2e1;]/h^3;
+    S3_1=sparse(1,m);
+    S3_1(1:5)=S3_U;
+    S3_m=sparse(1,m);
+    S3_m(m-4:m)=fliplr(-S3_U);
+
+    D4=H\(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
+
+    S_1 = S_1';
+    S_m = S_m';
+    S2_1 = S2_1';
+    S2_m = S2_m';
+    S3_1 = S3_1';
+    S3_m = S3_m';
+
+    % L=h*(m-1);
+
+    % x1=linspace(0,L,m)';
+    % x2=x1.^2/fac(2);
+    % x3=x1.^3/fac(3);
+    % x4=x1.^4/fac(4);
+    % x5=x1.^5/fac(5);
+
+    % x0=x1.^0/fac(1);
+
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d4_compatible_halfvariable_2.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d4_compatible_halfvariable_2.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,179 @@
+% Returns D2 as a function handle
+function [H, HI, D1, D2, D3, D4, e_1, e_m, M4, Q, S2_1,...
+    S2_m, S3_1, S3_m, S_1, S_m] = d4_compatible_halfvariable_2(m,h)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%% 4:de ordn. SBP Finita differens         %%%
+    %%% operatorer framtagna av Ken Mattsson    %%%
+    %%%                                         %%%
+    %%% 6 randpunkter, diagonal norm            %%%
+    %%%                                         %%%
+    %%% Datum: 2013-11-11                       %%%
+    %%%                                         %%%
+    %%%                                         %%%
+    %%% H           (Normen)                    %%%
+    %%% D1          (approx f?rsta derivatan)   %%%
+    %%% D2          (approx andra derivatan)    %%%
+    %%% D3          (approx tredje derivatan)   %%%
+    %%% D2          (approx fj?rde derivatan)   %%%
+    %%%                                         %%%
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    % M?ste ange antal punkter (m) och stegl?ngd (h)
+    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
+    % vi har 3de och 4de derivator i v?r PDE
+    % I annat fall anv?nd de "traditionella" som har noggrannare
+    % randsplutningar f?r D1 och D2
+
+    % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
+    % vilket ?r n?dv?ndigt f?r stabilitet
+    
+    BP = 4;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
+    H=speye(m,m);H(1,1)=1/2;H(m,m)=1/2;
+
+
+    H=H*h;
+    HI=inv(H);
+
+
+    % First derivative SBP operator, 1st order accurate at first 6 boundary points
+
+    q1=1/2;
+%     Q=q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    stencil = [-q1,0,q1];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    Q = stripeMatrix(stencil, diags, m);
+
+    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
+
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+
+    D1=HI*(Q-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Second derivative, 1st order accurate at first boundary points
+
+    % below for constant coefficients
+    % m1=-1;m0=2;
+    % M=m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);M(1,1)=1;M(m,m)=1;
+    % M=M/h;
+    %D2=HI*(-M-e_1*S_1+e_m*S_m);
+
+    % Below for variable coefficients
+    % Require a vector c with the koeffients
+
+    S_U=[-3/2 2 -1/2]/h;
+    S_1=sparse(1,m);
+    S_1(1:3)=S_U;
+    S_m=sparse(1,m);
+    S_m(m-2:m)=fliplr(-S_U);
+
+    S_1 = S_1';
+    S_m = S_m';
+
+    M=sparse(m,m);
+    e_1 = sparse(e_1);
+    e_m = sparse(e_m);
+    S_1 = sparse(S_1);
+    S_m = sparse(S_m);
+
+    scheme_width = 3;
+    scheme_radius = (scheme_width-1)/2;
+    r = (1+scheme_radius):(m-scheme_radius);
+
+    function D2 = D2_fun(c)
+
+        Mm1 = -c(r-1)/2 - c(r)/2;
+        M0  =  c(r-1)/2 + c(r)   + c(r+1)/2;
+        Mp1 =            -c(r)/2 - c(r+1)/2;
+
+        M(r,:) = spdiags([Mm1 M0 Mp1],0:2*scheme_radius,length(r),m);
+
+
+        M(1:2,1:2)=[c(1)/2 + c(2)/2 -c(1)/2 - c(2)/2; -c(1)/2 - c(2)/2 c(1)/2 + c(2) + c(3)/2;];
+        M(m-1:m,m-1:m)=[c(m-2)/2 + c(m-1) + c(m)/2 -c(m-1)/2 - c(m)/2; -c(m-1)/2 - c(m)/2 c(m-1)/2 + c(m)/2;];
+        M=M/h;
+
+        D2=HI*(-M-c(1)*e_1*S_1'+c(m)*e_m*S_m');
+    end
+    D2 = @D2_fun;
+
+
+
+
+
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+    % Third derivative, 1st order accurate at first 6 boundary points
+
+    q2=1/2;q1=-1;
+%     Q3=q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+    stencil = [-q2,-q1,0,q1,q2];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    Q3 = stripeMatrix(stencil, diags, m);
+
+    %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
+
+
+    Q3_U = [0 -0.13e2 / 0.16e2 0.7e1 / 0.8e1 -0.1e1 / 0.16e2; 0.13e2 / 0.16e2 0 -0.23e2 / 0.16e2 0.5e1 / 0.8e1; -0.7e1 / 0.8e1 0.23e2 / 0.16e2 0 -0.17e2 / 0.16e2; 0.1e1 / 0.16e2 -0.5e1 / 0.8e1 0.17e2 / 0.16e2 0;];
+    Q3(1:4,1:4)=Q3_U;
+    Q3(m-3:m,m-3:m)=rot90(  -Q3_U ,2 );
+    Q3=Q3/h^2;
+
+
+
+    S2_U=[1 -2 1;]/h^2;
+    S2_1=sparse(1,m);
+    S2_1(1:3)=S2_U;
+    S2_m=sparse(1,m);
+    S2_m(m-2:m)=fliplr(S2_U);
+    S2_1 = S2_1';
+    S2_m = S2_m';
+
+
+
+    D3=HI*(Q3 - e_1*S2_1' + e_m*S2_m' +1/2*(S_1*S_1') -1/2*(S_m*S_m') ) ;
+
+    % Fourth derivative, 0th order accurate at first 6 boundary points (still
+    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
+
+    m2=1;m1=-4;m0=6;
+%     M4=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    stencil = [m2,m1,m0,m1,m2];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    M4 = stripeMatrix(stencil, diags, m);
+
+    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
+
+    M4_U=[0.13e2 / 0.10e2 -0.12e2 / 0.5e1 0.9e1 / 0.10e2 0.1e1 / 0.5e1; -0.12e2 / 0.5e1 0.26e2 / 0.5e1 -0.16e2 / 0.5e1 0.2e1 / 0.5e1; 0.9e1 / 0.10e2 -0.16e2 / 0.5e1 0.47e2 / 0.10e2 -0.17e2 / 0.5e1; 0.1e1 / 0.5e1 0.2e1 / 0.5e1 -0.17e2 / 0.5e1 0.29e2 / 0.5e1;];
+
+
+    M4(1:4,1:4)=M4_U;
+
+    M4(m-3:m,m-3:m)=rot90(  M4_U ,2 );
+    M4=M4/h^3;
+
+    S3_U=[-1 3 -3 1;]/h^3;
+    S3_1=sparse(1,m);
+    S3_1(1:4)=S3_U;
+    S3_m=sparse(1,m);
+    S3_m(m-3:m)=fliplr(-S3_U);
+    S3_1 = S3_1';
+    S3_m = S3_m';
+
+    D4=HI*(M4-e_1*S3_1'+e_m*S3_m'  + S_1*S2_1'-S_m*S2_m');
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d4_compatible_halfvariable_4.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d4_compatible_halfvariable_4.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,167 @@
+function [H, HI, D2, D4, e_1, e_m, M4, S2_1, S2_m, S3_1,...
+    S3_m, S_1, S_m] = d4_compatible_halfvariable_4(m,h)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%% 4:de ordn. SBP Finita differens         %%%
+    %%%                                         %%%
+    %%% H           (Normen)                    %%%
+    %%% D1=H^(-1)Q  (approx f?rsta derivatan)   %%%
+    %%% D2          (approx andra derivatan)    %%%
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+    %m=20; %problemstorlek
+    %h=1/(m-1);
+    %h=1;
+    
+    BP = 6;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
+%     c=ones(m,1);
+
+
+    H=speye(m,m);
+    H(1:4,1:4)=diag([17/48 59/48 43/48 49/48]);
+    H(m-3:m,m-3:m)=rot90(diag([17/48 59/48 43/48 49/48]),2);
+    H=H*h;
+    HI=inv(H);
+    HI = sparse(HI);
+
+
+
+%     Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
+      e=ones(m,1);
+%       Q=spdiags([e -8*e 0*e 8*e -e], -2:2, m, m)/12;
+%     Q_U = [0 0.59e2 / 0.96e2 -0.1e1 / 0.12e2 -0.1e1 / 0.32e2; -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2; 0.1e1 / 0.32e2 0 -0.59e2 / 0.96e2 0;];
+%     Q(1:4,1:4)=Q_U;
+%     Q(m-3:m,m-3:m)=rot90( -Q_U(1:4,1:4) ,2 );
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+%     D1=HI*(Q-1/2*(e_1*e_1')+1/2*(e_m*e_m')) ;
+
+    M_U=[0.9e1 / 0.8e1 -0.59e2 / 0.48e2 0.1e1 / 0.12e2 0.1e1 / 0.48e2; -0.59e2 / 0.48e2 0.59e2 / 0.24e2 -0.59e2 / 0.48e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.48e2 0.55e2 / 0.24e2 -0.59e2 / 0.48e2; 0.1e1 / 0.48e2 0 -0.59e2 / 0.48e2 0.59e2 / 0.24e2;];
+%     M=-(-1/12*diag(ones(m-2,1),2)+16/12*diag(ones(m-1,1),1)+16/12*diag(ones(m-1,1),-1)-1/12*diag(ones(m-2,1),-2)-30/12*diag(ones(m,1),0));
+    M=-spdiags([-e 16*e -30*e 16*e -e], -2:2, m, m)/12;
+
+    M(1:4,1:4)=M_U;
+
+    M(m-3:m,m-3:m)=rot90(  M_U ,2 );
+    M=M/h;
+
+    S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
+    S_1=sparse(1,m);
+    S_1(1:4)=S_U;
+    S_m=sparse(1,m);
+    S_m(m-3:m)=fliplr(-S_U);
+    S_1 = S_1';
+    S_m = S_m';
+
+
+    M=sparse(m,m);
+    e_1 = sparse(e_1);
+    e_m = sparse(e_m);
+    S_1 = sparse(S_1);
+    S_m = sparse(S_m);
+
+
+    scheme_width = 5;
+    scheme_radius = (scheme_width-1)/2;
+    r = (1+scheme_radius):(m-scheme_radius);
+
+    function D2 = D2_fun(c)
+
+        % ALTERNATIVES %%%%%%%%%%%%%
+        % for i=4:m-3
+        %     M(i,i-2:i+2)=[-c(i-1) / 0.6e1 + c(i-2) / 0.8e1 + c(i) / 0.8e1 -c(i-2) / 0.6e1 - c(i+1) / 0.6e1 - c(i-1) / 0.2e1 - c(i) / 0.2e1 c(i-2) / 0.24e2 + 0.5e1 / 0.6e1 * c(i-1) + 0.5e1 / 0.6e1 * c(i+1) + c(i+2) / 0.24e2 + 0.3e1 / 0.4e1 * c(i) -c(i-1) / 0.6e1 - c(i+2) / 0.6e1 - c(i) / 0.2e1 - c(i+1) / 0.2e1 -c(i+1) / 0.6e1 + c(i) / 0.8e1 + c(i+2) / 0.8e1;];
+        % end
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        % for i=4:m-3
+        %     M(i,i-2:i+2)= [
+        %      c(i-2) / 0.8e1 - c(i-1) / 0.6e1 + c(i)   / 0.8e1                                   ,
+        %     -c(i-2) / 0.6e1 - c(i-1) / 0.2e1 - c(i)   / 0.2e1 - c(i+1) / 0.6e1                  ,
+        %      c(i-2) / 2.4e1 + c(i-1) / 1.2e0 + c(i) * 0.3/0.4 + c(i+1) / 1.2e0 + c(i+2) / 2.4e1 ,
+        %                      -c(i-1) / 0.6e1 - c(i)   / 0.2e1 - c(i+1) / 0.2e1 - c(i+2) / 0.6e1 ,
+        %                                        c(i)   / 0.8e1 - c(i+1) / 0.6e1 + c(i+2) / 0.8e1 ,
+        %     ];
+        % end
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        Mm2 =  c(r-2) / 0.8e1 - c(r-1) / 0.6e1 + c(r)   / 0.8e1                                  ;
+        Mm1 = -c(r-2) / 0.6e1 - c(r-1) / 0.2e1 - c(r)   / 0.2e1 - c(r+1) / 0.6e1                 ;
+        M0  =  c(r-2) / 2.4e1 + c(r-1) / 1.2e0 + c(r) * 0.3/0.4 + c(r+1) / 1.2e0 + c(r+2) / 2.4e1;
+        Mp1 =                  -c(r-1) / 0.6e1 - c(r)   / 0.2e1 - c(r+1) / 0.2e1 - c(r+2) / 0.6e1;
+        Mp2 =                                    c(r)   / 0.8e1 - c(r+1) / 0.6e1 + c(r+2) / 0.8e1;
+        % printSize(Mm2);
+        % scheme_radius
+        % m
+        M(r,:) = spdiags([Mm2 Mm1 M0 Mp1 Mp2],0:2*scheme_radius,length(r),m);
+        % M(r,:) = spdiags([Mm2 Mm1 M0 Mp1 Mp2],(-2:2)+scheme_radius,M(r,:)); % This is slower
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        % %% Somthing is wrong here!!
+        % Mm2 =  c(r-2) / 0.8e1 - c(r-1) / 0.6e1 + c(r)   / 0.8e1                                  ;
+        % Mm1 = -c(r-2) / 0.6e1 - c(r-1) / 0.2e1 - c(r)   / 0.2e1 - c(r+1) / 0.6e1                 ;
+        % M0  =  c(r-2) / 2.4e1 + c(r-1) / 1.2e0 + c(r) * 0.3/0.4 + c(r+1) / 1.2e0 + c(r+2) / 2.4e1;
+        % Mp1 =                  -c(r-1) / 0.6e1 - c(r)   / 0.2e1 - c(r+1) / 0.2e1 - c(r+2) / 0.6e1;
+        % Mp2 =                                    c(r)   / 0.8e1 - c(r+1) / 0.6e1 + c(r+2) / 0.8e1;
+        % % printSize(M_diag_ind);
+        % % Mdiags = [Mm2 Mm1 M0  Mp1 Mp2];
+        % % printSize(Mdiags);
+        % M(M_diag_ind) = [Mm2 Mm1 M0  Mp1 Mp2]; % This is slightly faster
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+        % Kan man skriva det som en multiplikation av en 3-dim matris?
+        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+        M(1:6,1:6)=[0.12e2 / 0.17e2 * c(1) + 0.59e2 / 0.192e3 * c(2) + 0.27010400129e11 / 0.345067064608e12 * c(3) + 0.69462376031e11 / 0.2070402387648e13 * c(4) -0.59e2 / 0.68e2 * c(1) - 0.6025413881e10 / 0.21126554976e11 * c(3) - 0.537416663e9 / 0.7042184992e10 * c(4) 0.2e1 / 0.17e2 * c(1) - 0.59e2 / 0.192e3 * c(2) + 0.213318005e9 / 0.16049630912e11 * c(4) + 0.2083938599e10 / 0.8024815456e10 * c(3) 0.3e1 / 0.68e2 * c(1) - 0.1244724001e10 / 0.21126554976e11 * c(3) + 0.752806667e9 / 0.21126554976e11 * c(4) 0.49579087e8 / 0.10149031312e11 * c(3) - 0.49579087e8 / 0.10149031312e11 * c(4) -c(4) / 0.784e3 + c(3) / 0.784e3; -0.59e2 / 0.68e2 * c(1) - 0.6025413881e10 / 0.21126554976e11 * c(3) - 0.537416663e9 / 0.7042184992e10 * c(4) 0.3481e4 / 0.3264e4 * c(1) + 0.9258282831623875e16 / 0.7669235228057664e16 * c(3) + 0.236024329996203e15 / 0.1278205871342944e16 * c(4) -0.59e2 / 0.408e3 * c(1) - 0.29294615794607e14 / 0.29725717938208e14 * c(3) - 0.2944673881023e13 / 0.29725717938208e14 * c(4) -0.59e2 / 0.1088e4 * c(1) + 0.260297319232891e15 / 0.2556411742685888e16 * c(3) - 0.60834186813841e14 / 0.1278205871342944e16 * c(4) -0.1328188692663e13 / 0.37594290333616e14 * c(3) + 0.1328188692663e13 / 0.37594290333616e14 * c(4) -0.8673e4 / 0.2904112e7 * c(3) + 0.8673e4 / 0.2904112e7 * c(4); 0.2e1 / 0.17e2 * c(1) - 0.59e2 / 0.192e3 * c(2) + 0.213318005e9 / 0.16049630912e11 * c(4) + 0.2083938599e10 / 0.8024815456e10 * c(3) -0.59e2 / 0.408e3 * c(1) - 0.29294615794607e14 / 0.29725717938208e14 * c(3) - 0.2944673881023e13 / 0.29725717938208e14 * c(4) c(1) / 0.51e2 + 0.59e2 / 0.192e3 * c(2) + 0.13777050223300597e17 / 0.26218083221499456e17 * c(4) + 0.564461e6 / 0.13384296e8 * c(5) + 0.378288882302546512209e21 / 0.270764341349677687456e21 * c(3) c(1) / 0.136e3 - 0.125059e6 / 0.743572e6 * c(5) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(3) - 0.17220493277981e14 / 0.89177153814624e14 * c(4) -0.10532412077335e14 / 0.42840005263888e14 * c(4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(3) + 0.564461e6 / 0.4461432e7 * c(5) -0.960119e6 / 0.1280713392e10 * c(4) - 0.3391e4 / 0.6692148e7 * c(5) + 0.33235054191e11 / 0.26452850508784e14 * c(3); 0.3e1 / 0.68e2 * c(1) - 0.1244724001e10 / 0.21126554976e11 * c(3) + 0.752806667e9 / 0.21126554976e11 * c(4) -0.59e2 / 0.1088e4 * c(1) + 0.260297319232891e15 / 0.2556411742685888e16 * c(3) - 0.60834186813841e14 / 0.1278205871342944e16 * c(4) c(1) / 0.136e3 - 0.125059e6 / 0.743572e6 * c(5) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(3) - 0.17220493277981e14 / 0.89177153814624e14 * c(4) 0.3e1 / 0.1088e4 * c(1) + 0.507284006600757858213e21 / 0.475219048083107777984e21 * c(3) + 0.1869103e7 / 0.2230716e7 * c(5) + c(6) / 0.24e2 + 0.1950062198436997e16 / 0.3834617614028832e16 * c(4) -0.4959271814984644613e19 / 0.20965546238960637264e20 * c(3) - c(6) / 0.6e1 - 0.15998714909649e14 / 0.37594290333616e14 * c(4) - 0.375177e6 / 0.743572e6 * c(5) -0.368395e6 / 0.2230716e7 * c(5) + 0.752806667e9 / 0.539854092016e12 * c(3) + 0.1063649e7 / 0.8712336e7 * c(4) + c(6) / 0.8e1; 0.49579087e8 / 0.10149031312e11 * c(3) - 0.49579087e8 / 0.10149031312e11 * c(4) -0.1328188692663e13 / 0.37594290333616e14 * c(3) + 0.1328188692663e13 / 0.37594290333616e14 * c(4) -0.10532412077335e14 / 0.42840005263888e14 * c(4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(3) + 0.564461e6 / 0.4461432e7 * c(5) -0.4959271814984644613e19 / 0.20965546238960637264e20 * c(3) - c(6) / 0.6e1 - 0.15998714909649e14 / 0.37594290333616e14 * c(4) - 0.375177e6 / 0.743572e6 * c(5) 0.8386761355510099813e19 / 0.128413970713633903242e21 * c(3) + 0.2224717261773437e16 / 0.2763180339520776e16 * c(4) + 0.5e1 / 0.6e1 * c(6) + c(7) / 0.24e2 + 0.280535e6 / 0.371786e6 * c(5) -0.35039615e8 / 0.213452232e9 * c(4) - c(7) / 0.6e1 - 0.13091810925e11 / 0.13226425254392e14 * c(3) - 0.1118749e7 / 0.2230716e7 * c(5) - c(6) / 0.2e1; -c(4) / 0.784e3 + c(3) / 0.784e3 -0.8673e4 / 0.2904112e7 * c(3) + 0.8673e4 / 0.2904112e7 * c(4) -0.960119e6 / 0.1280713392e10 * c(4) - 0.3391e4 / 0.6692148e7 * c(5) + 0.33235054191e11 / 0.26452850508784e14 * c(3) -0.368395e6 / 0.2230716e7 * c(5) + 0.752806667e9 / 0.539854092016e12 * c(3) + 0.1063649e7 / 0.8712336e7 * c(4) + c(6) / 0.8e1 -0.35039615e8 / 0.213452232e9 * c(4) - c(7) / 0.6e1 - 0.13091810925e11 / 0.13226425254392e14 * c(3) - 0.1118749e7 / 0.2230716e7 * c(5) - c(6) / 0.2e1 0.3290636e7 / 0.80044587e8 * c(4) + 0.5580181e7 / 0.6692148e7 * c(5) + 0.5e1 / 0.6e1 * c(7) + c(8) / 0.24e2 + 0.660204843e9 / 0.13226425254392e14 * c(3) + 0.3e1 / 0.4e1 * c(6);];
+
+        M(m-5:m,m-5:m)=[c(m-7) / 0.24e2 + 0.5e1 / 0.6e1 * c(m-6) + 0.5580181e7 / 0.6692148e7 * c(m-4) + 0.4887707739997e13 / 0.119037827289528e15 * c(m-3) + 0.3e1 / 0.4e1 * c(m-5) + 0.660204843e9 / 0.13226425254392e14 * c(m-2) + 0.660204843e9 / 0.13226425254392e14 * c(m-1) -c(m-6) / 0.6e1 - 0.1618585929605e13 / 0.9919818940794e13 * c(m-3) - c(m-5) / 0.2e1 - 0.1118749e7 / 0.2230716e7 * c(m-4) - 0.13091810925e11 / 0.13226425254392e14 * c(m-2) - 0.13091810925e11 / 0.13226425254392e14 * c(m-1) -0.368395e6 / 0.2230716e7 * c(m-4) + c(m-5) / 0.8e1 + 0.48866620889e11 / 0.404890569012e12 * c(m-3) + 0.752806667e9 / 0.539854092016e12 * c(m-2) + 0.752806667e9 / 0.539854092016e12 * c(m-1) -0.3391e4 / 0.6692148e7 * c(m-4) - 0.238797444493e12 / 0.119037827289528e15 * c(m-3) + 0.33235054191e11 / 0.26452850508784e14 * c(m-2) + 0.33235054191e11 / 0.26452850508784e14 * c(m-1) -0.8673e4 / 0.2904112e7 * c(m-2) - 0.8673e4 / 0.2904112e7 * c(m-1) + 0.8673e4 / 0.1452056e7 * c(m-3) -c(m-3) / 0.392e3 + c(m-2) / 0.784e3 + c(m-1) / 0.784e3; -c(m-6) / 0.6e1 - 0.1618585929605e13 / 0.9919818940794e13 * c(m-3) - c(m-5) / 0.2e1 - 0.1118749e7 / 0.2230716e7 * c(m-4) - 0.13091810925e11 / 0.13226425254392e14 * c(m-2) - 0.13091810925e11 / 0.13226425254392e14 * c(m-1) c(m-6) / 0.24e2 + 0.5e1 / 0.6e1 * c(m-5) + 0.3896014498639e13 / 0.4959909470397e13 * c(m-3) + 0.8386761355510099813e19 / 0.128413970713633903242e21 * c(m-2) + 0.280535e6 / 0.371786e6 * c(m-4) + 0.3360696339136261875e19 / 0.171218627618178537656e21 * c(m-1) -c(m-5) / 0.6e1 - 0.4959271814984644613e19 / 0.20965546238960637264e20 * c(m-2) - 0.375177e6 / 0.743572e6 * c(m-4) - 0.13425842714e11 / 0.33740880751e11 * c(m-3) - 0.193247108773400725e18 / 0.6988515412986879088e19 * c(m-1) -0.365281640980e12 / 0.1653303156799e13 * c(m-3) + 0.564461e6 / 0.4461432e7 * c(m-4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(m-2) - 0.198407225513315475e18 / 0.7963657098519931984e19 * c(m-1) -0.1328188692663e13 / 0.37594290333616e14 * c(m-2) + 0.2226377963775e13 / 0.37594290333616e14 * c(m-1) - 0.8673e4 / 0.363014e6 * c(m-3) c(m-3) / 0.49e2 + 0.49579087e8 / 0.10149031312e11 * c(m-2) - 0.256702175e9 / 0.10149031312e11 * c(m-1); -0.368395e6 / 0.2230716e7 * c(m-4) + c(m-5) / 0.8e1 + 0.48866620889e11 / 0.404890569012e12 * c(m-3) + 0.752806667e9 / 0.539854092016e12 * c(m-2) + 0.752806667e9 / 0.539854092016e12 * c(m-1) -c(m-5) / 0.6e1 - 0.4959271814984644613e19 / 0.20965546238960637264e20 * c(m-2) - 0.375177e6 / 0.743572e6 * c(m-4) - 0.13425842714e11 / 0.33740880751e11 * c(m-3) - 0.193247108773400725e18 / 0.6988515412986879088e19 * c(m-1) c(m-5) / 0.24e2 + 0.1869103e7 / 0.2230716e7 * c(m-4) + 0.507284006600757858213e21 / 0.475219048083107777984e21 * c(m-2) + 0.3e1 / 0.1088e4 * c(m) + 0.31688435395e11 / 0.67481761502e11 * c(m-3) + 0.27769176016102795561e20 / 0.712828572124661666976e21 * c(m-1) -0.125059e6 / 0.743572e6 * c(m-4) + c(m) / 0.136e3 - 0.23099342648e11 / 0.101222642253e12 * c(m-3) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(m-2) + 0.193950157930938693e18 / 0.5525802884687299744e19 * c(m-1) 0.260297319232891e15 / 0.2556411742685888e16 * c(m-2) - 0.59e2 / 0.1088e4 * c(m) - 0.106641839640553e15 / 0.1278205871342944e16 * c(m-1) + 0.26019e5 / 0.726028e6 * c(m-3) -0.1244724001e10 / 0.21126554976e11 * c(m-2) + 0.3e1 / 0.68e2 * c(m) + 0.752806667e9 / 0.21126554976e11 * c(m-1); -0.3391e4 / 0.6692148e7 * c(m-4) - 0.238797444493e12 / 0.119037827289528e15 * c(m-3) + 0.33235054191e11 / 0.26452850508784e14 * c(m-2) + 0.33235054191e11 / 0.26452850508784e14 * c(m-1) -0.365281640980e12 / 0.1653303156799e13 * c(m-3) + 0.564461e6 / 0.4461432e7 * c(m-4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(m-2) - 0.198407225513315475e18 / 0.7963657098519931984e19 * c(m-1) -0.125059e6 / 0.743572e6 * c(m-4) + c(m) / 0.136e3 - 0.23099342648e11 / 0.101222642253e12 * c(m-3) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(m-2) + 0.193950157930938693e18 / 0.5525802884687299744e19 * c(m-1) 0.564461e6 / 0.13384296e8 * c(m-4) + 0.470299699916357e15 / 0.952302618316224e15 * c(m-3) + 0.550597048646198778781e21 / 0.1624586048098066124736e22 * c(m-1) + c(m) / 0.51e2 + 0.378288882302546512209e21 / 0.270764341349677687456e21 * c(m-2) -0.59e2 / 0.408e3 * c(m) - 0.29294615794607e14 / 0.29725717938208e14 * c(m-2) - 0.2234477713167e13 / 0.29725717938208e14 * c(m-1) - 0.8673e4 / 0.363014e6 * c(m-3) -0.59e2 / 0.3136e4 * c(m-3) - 0.13249937023e11 / 0.48148892736e11 * c(m-1) + 0.2e1 / 0.17e2 * c(m) + 0.2083938599e10 / 0.8024815456e10 * c(m-2); -0.8673e4 / 0.2904112e7 * c(m-2) - 0.8673e4 / 0.2904112e7 * c(m-1) + 0.8673e4 / 0.1452056e7 * c(m-3) -0.1328188692663e13 / 0.37594290333616e14 * c(m-2) + 0.2226377963775e13 / 0.37594290333616e14 * c(m-1) - 0.8673e4 / 0.363014e6 * c(m-3) 0.260297319232891e15 / 0.2556411742685888e16 * c(m-2) - 0.59e2 / 0.1088e4 * c(m) - 0.106641839640553e15 / 0.1278205871342944e16 * c(m-1) + 0.26019e5 / 0.726028e6 * c(m-3) -0.59e2 / 0.408e3 * c(m) - 0.29294615794607e14 / 0.29725717938208e14 * c(m-2) - 0.2234477713167e13 / 0.29725717938208e14 * c(m-1) - 0.8673e4 / 0.363014e6 * c(m-3) 0.9258282831623875e16 / 0.7669235228057664e16 * c(m-2) + 0.3481e4 / 0.3264e4 * c(m) + 0.228389721191751e15 / 0.1278205871342944e16 * c(m-1) + 0.8673e4 / 0.1452056e7 * c(m-3) -0.6025413881e10 / 0.21126554976e11 * c(m-2) - 0.59e2 / 0.68e2 * c(m) - 0.537416663e9 / 0.7042184992e10 * c(m-1); -c(m-3) / 0.392e3 + c(m-2) / 0.784e3 + c(m-1) / 0.784e3 c(m-3) / 0.49e2 + 0.49579087e8 / 0.10149031312e11 * c(m-2) - 0.256702175e9 / 0.10149031312e11 * c(m-1) -0.1244724001e10 / 0.21126554976e11 * c(m-2) + 0.3e1 / 0.68e2 * c(m) + 0.752806667e9 / 0.21126554976e11 * c(m-1) -0.59e2 / 0.3136e4 * c(m-3) - 0.13249937023e11 / 0.48148892736e11 * c(m-1) + 0.2e1 / 0.17e2 * c(m) + 0.2083938599e10 / 0.8024815456e10 * c(m-2) -0.6025413881e10 / 0.21126554976e11 * c(m-2) - 0.59e2 / 0.68e2 * c(m) - 0.537416663e9 / 0.7042184992e10 * c(m-1) 0.3e1 / 0.3136e4 * c(m-3) + 0.27010400129e11 / 0.345067064608e12 * c(m-2) + 0.234566387291e12 / 0.690134129216e12 * c(m-1) + 0.12e2 / 0.17e2 * c(m);];
+
+        M=M/h;
+        D2=HI*(-M-c(1)*e_1*S_1'+c(m)*e_m*S_m');
+    end
+    D2 = @D2_fun;
+
+
+    S2_U=[2 -5 4 -1;]/h^2;
+    S2_1=sparse(1,m);
+    S2_1(1:4)=S2_U;
+    S2_m=sparse(1,m);
+    S2_m(m-3:m)=fliplr(S2_U);
+    S2_1 = S2_1';
+    S2_m = S2_m';
+
+    m3=-1/6;m2=2;m1=-13/2;m0=28/3;
+%     M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    stencil = [m3,m2,m1,m0,m1,m2,m3];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    M4 = stripeMatrix(stencil, diags, m);
+
+    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
+
+    M4_U=[0.5762947e7 / 0.2316384e7 -0.6374287e7 / 0.1158192e7 0.573947e6 / 0.165456e6 -0.124637e6 / 0.289548e6 0.67979e5 / 0.2316384e7 -0.60257e5 / 0.1158192e7; -0.6374287e7 / 0.1158192e7 0.30392389e8 / 0.2316384e7 -0.2735053e7 / 0.289548e6 0.273109e6 / 0.165456e6 0.83767e5 / 0.1158192e7 0.245549e6 / 0.2316384e7; 0.573947e6 / 0.165456e6 -0.2735053e7 / 0.289548e6 0.5266855e7 / 0.579096e6 -0.1099715e7 / 0.289548e6 0.869293e6 / 0.1158192e7 -0.10195e5 / 0.144774e6; -0.124637e6 / 0.289548e6 0.273109e6 / 0.165456e6 -0.1099715e7 / 0.289548e6 0.3259225e7 / 0.579096e6 -0.324229e6 / 0.72387e5 0.1847891e7 / 0.1158192e7; 0.67979e5 / 0.2316384e7 0.83767e5 / 0.1158192e7 0.869293e6 / 0.1158192e7 -0.324229e6 / 0.72387e5 0.2626501e7 / 0.330912e6 -0.7115491e7 / 0.1158192e7; -0.60257e5 / 0.1158192e7 0.245549e6 / 0.2316384e7 -0.10195e5 / 0.144774e6 0.1847891e7 / 0.1158192e7 -0.7115491e7 / 0.1158192e7 0.21383077e8 / 0.2316384e7;];
+
+    M4(1:6,1:6)=M4_U;
+
+    M4(m-5:m,m-5:m)=rot90(  M4_U ,2 );
+    M4=M4/h^3;
+
+    S3_U=[-1 3 -3 1;]/h^3;
+    S3_1=sparse(1,m);
+    S3_1(1:4)=S3_U;
+    S3_m=sparse(1,m);
+    S3_m(m-3:m)=fliplr(-S3_U);
+    S3_1 = S3_1';
+    S3_m = S3_m';
+
+    D4=HI*(M4-e_1*S3_1'+e_m*S3_m'  + S_1*S2_1'-S_m*S2_m');
+
+
+
+
+
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/+implementations/d4_compatible_halfvariable_6.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/+implementations/d4_compatible_halfvariable_6.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,170 @@
+function [H, HI, D2, D4, e_1, e_m, M4, S2_1, S2_m, S3_1,...
+    S3_m, S_1, S_m] = d4_compatible_halfvariable_6(m,h)
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    %%% 6:te ordn. SBP Finita differens         %%%
+    %%% operatorer med diagonal norm            %%%
+    %%% Extension to variable koeff             %%%
+    %%%                                         %%%
+    %%% H           (Normen)                    %%%
+    %%% D1=H^(-1)Q  (approx f?rsta derivatan)   %%%
+    %%% D2          (approx andra derivatan)    %%%
+    %%% D2=HI*(R+C*D*S                          %%%
+    %%%                                         %%%
+    %%% R=-D1'*H*C*D1-RR                        %%%
+    %%%                                         %%%
+    %%% RR ?r dissipation)                      %%%
+    %%% Dissipationen uppbyggd av D4:           %%%
+    %%% DI=D4*B*H*D4                            %%%
+    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+    %m=10;          %problemstorlek
+    %h=1/(m-1);
+
+    % Variable koefficicients are stored in vector: c, size m,
+    % with the unknown stored as c(1), c(2), ..., c_m
+    % x=1:h:m*h;x=x';
+    % c=x.^0;
+    
+    BP = 8;
+    if(m<2*BP)
+        error(['Operator requires at least ' num2str(2*BP) ' grid points']);
+    end
+
+
+    H=speye(m,m);
+    H(1:6,1:6)=diag([13649/43200,12013/8640,2711/4320,5359/4320,7877/8640, ...
+    		 43801/43200]);
+    H(m-5:m,m-5:m)=rot90(diag([13649/43200,12013/8640, ...
+    		    2711/4320,5359/4320,7877/8640,43801/43200]),2);
+
+
+%     x1=0.70127127127127;
+
+
+%     D1=(1/60*diag(ones(m-3,1),3)-9/60*diag(ones(m-2,1),2)+45/60*diag(ones(m-1,1),1)-45/60*diag(ones(m-1,1),-1)+9/60*diag(ones(m-2,1),-2)-1/60*diag(ones(m-3,1),-3));
+% 
+% 
+% 
+%     D1(1:6,1:9)=[-21600/13649, 43200/13649*x1-7624/40947, -172800/13649*x1+ ...
+%     	     715489/81894, 259200/13649*x1-187917/13649, -172800/13649* ...
+%     	     x1+735635/81894, 43200/13649*x1-89387/40947, 0, 0, 0; ...
+%     	     -8640/12013*x1+7624/180195, 0, 86400/12013*x1-57139/12013, ...
+%     	     -172800/12013*x1+745733/72078, 129600/12013*x1-91715/12013, ...
+%     	     -34560/12013*x1+240569/120130, 0, 0, 0; ...
+%              17280/2711*x1-715489/162660, -43200/2711*x1+57139/5422, 0, ...
+%              86400/2711*x1-176839/8133, -86400/2711*x1+242111/10844, ...
+%              25920/2711*x1-182261/27110, 0, 0, 0; ...
+%              -25920/5359*x1+187917/53590, 86400/5359*x1-745733/64308, ...
+%              -86400/5359*x1+176839/16077, 0, 43200/5359*x1-165041/32154, ...
+%              -17280/5359*x1+710473/321540, 72/5359, 0, 0; ...
+%              34560/7877*x1-147127/47262, -129600/7877*x1+91715/7877, ...
+%              172800/7877*x1-242111/15754, -86400/7877*x1+165041/23631, ...
+%              0, 8640/7877*x1, -1296/7877, 144/7877, 0; ...
+%              -43200/43801*x1+89387/131403, 172800/43801*x1-240569/87602,...
+%              -259200/43801*x1+182261/43801, 172800/43801*x1-710473/262806, ...
+%              -43200/43801*x1, 0, 32400/43801, -6480/43801, 720/43801];
+%     D1(m-5:m,m-8:m)=rot90( -D1(1:6,1:9),2);
+%     D1=D1/h;
+
+    e_1=sparse(m,1);e_1(1)=1;
+    e_m=sparse(m,1);e_m(m)=1;
+
+    S_U=[-25/12, 4, -3, 4/3, -1/4]/h;
+    S_1=sparse(1,m);
+    S_1(1:5)=S_U;
+    S_m=sparse(1,m);
+    S_m(m-4:m)=fliplr(-S_U);
+    S_1 = S_1';
+    S_m = S_m';
+
+
+
+    %DS=sparse(m,m);
+    %DS(1,1:5)=-[-25/12, 4, -3, 4/3, -1/4];
+    %DS(m,m-4:m)=fliplr(-[-25/12, 4, -3, 4/3, -1/4]);
+    %DS=diag(c)*DS/h;
+
+
+    H=h*H;
+    HI=inv(H);
+
+
+    M=sparse(m,m);
+    e_1 = sparse(e_1);
+    e_m = sparse(e_m);
+    S_1 = sparse(S_1);
+    S_m = sparse(S_m);
+
+    scheme_width = 7;
+    scheme_radius = (scheme_width-1)/2;
+    r = (1+scheme_radius):(m-scheme_radius);
+
+    function D2 = D2_fun(c)
+
+        Mm3 =  c(r-2) / 0.40e2 + c(r-1) / 0.40e2 - 0.11e2 / 0.360e3 * c(r-3) - 0.11e2 / 0.360e3 * c(r);
+        Mm2 =  c(r-3) / 0.20e2 - 0.3e1 / 0.10e2 * c(r-1) + c(r+1) / 0.20e2 + 0.7e1 / 0.40e2 * c(r) + 0.7e1 / 0.40e2 * c(r-2);
+        Mm1 = -c(r-3) / 0.40e2 - 0.3e1 / 0.10e2 * c(r-2) - 0.3e1 / 0.10e2 * c(r+1) - c(r+2) / 0.40e2 - 0.17e2 / 0.40e2 * c(r) - 0.17e2 / 0.40e2 * c(r-1);
+        M0 =  c(r-3) / 0.180e3 + c(r-2) / 0.8e1 + 0.19e2 / 0.20e2 * c(r-1) + 0.19e2 / 0.20e2 * c(r+1) + c(r+2) / 0.8e1 + c(r+3) / 0.180e3 + 0.101e3 / 0.180e3 * c(r);
+        Mp1 = -c(r-2) / 0.40e2 - 0.3e1 / 0.10e2 * c(r-1) - 0.3e1 / 0.10e2 * c(r+2) - c(r+3) / 0.40e2 - 0.17e2 / 0.40e2 * c(r) - 0.17e2 / 0.40e2 * c(r+1);
+        Mp2 =  c(r-1) / 0.20e2 - 0.3e1 / 0.10e2 * c(r+1) + c(r+3) / 0.20e2 + 0.7e1 / 0.40e2 * c(r) + 0.7e1 / 0.40e2 * c(r+2);
+        Mp3 =  c(r+1) / 0.40e2 + c(r+2) / 0.40e2 - 0.11e2 / 0.360e3 * c(r) - 0.11e2 / 0.360e3 * c(r+3);
+
+        M(r,:) = spdiags([Mm3 Mm2 Mm1 M0 Mp1 Mp2 Mp3],0:2*scheme_radius,length(r),m);
+
+
+        M(1:9,1:9)=[0.7912667594695582093926295e0 * c(1) + 0.2968472090638000742888467e0 * c(2) + 0.3185519088796429015220016e-2 * c(3) + 0.1632404042590951953384672e-1 * c(4) + 0.3160302244094415087693968e-1 * c(5) + 0.3167964748016105299646518e-1 * c(6) + 0.3148577733947253920469418e-1 * c(7) -0.1016689339350338144430605e1 * c(1) - 0.2845627370491611369031341e-1 * c(3) - 0.4128029838349298819825156e-1 * c(4) - 0.1392281451620140507549866e0 * c(5) - 0.1195777325611201766551392e0 * c(6) - 0.1194267756529333410855186e0 * c(7) 0.7075642937243715046279337e-1 * c(1) - 0.1845476106024151050283847e0 * c(2) - 0.4364163147111892346990101e-1 * c(4) + 0.2432367907207732460874765e0 * c(5) + 0.1582127073537215443965653e0 * c(6) + 0.1602348578364786307613271e0 * c(7) 0.2251991532891353212689574e0 * c(1) - 0.1662748711097054895317080e0 * c(2) + 0.2710530961648671297733465e-1 * c(3) - 0.1916646185968439909125616e0 * c(5) - 0.7684117160199014594442072e-1 * c(6) - 0.8219586949831697575883635e-1 * c(7) -0.5224403464202056316702078e-1 * c(1) + 0.4440063948509876221050939e-1 * c(2) - 0.1023976547309387874453988e-2 * c(3) + 0.7403484645316174090533193e-1 * c(4) + 0.1241625568998496895352046e-1 * c(6) + 0.7188652847892601282652228e-1 * c(5) + 0.1379362997104735503447960e-1 * c(7) -0.1828896813877197352675410e-1 * c(1) + 0.9574633163221758060736592e-2 * c(2) - 0.8105784530576404277872603e-3 * c(3) - 0.7348845587775519698437916e-2 * c(4) + 0.1063601949723906997026904e-1 * c(5) - 0.1315967038382618382356495e-1 * c(6) - 0.2117936478838753524581943e-1 * c(7) 0.1911888563316170927411831e-2 * c(4) - 0.4068130355529149936100229e-1 * c(5) + 0.1319674981073749167009902e-1 * c(6) + 0.2557266518123783676349144e-1 * c(7) 0.1559652871136785763960685e-1 * c(5) - 0.6486184157331537899459796e-2 * c(6) - 0.9110344554036319740147054e-2 * c(7) 0.5593983696629863059347067e-3 * c(6) - 0.1384822535100796372263822e-2 * c(5) + 0.8254241654378100663291154e-3 * c(7); -0.1016689339350338144430605e1 * c(1) - 0.2845627370491611369031341e-1 * c(3) - 0.4128029838349298819825156e-1 * c(4) - 0.1392281451620140507549866e0 * c(5) - 0.1195777325611201766551392e0 * c(6) - 0.1194267756529333410855186e0 * c(7) 0.1306332157111667628555907e1 * c(1) + 0.2542001760457345743492403e0 * c(3) + 0.1043897828092562609502636e0 * c(4) + 0.6672328021032112950919876e0 * c(5) + 0.4681819359722749441073885e0 * c(6) + 0.4676415410195836920069412e0 * c(7) -0.9091410269992464604926176e-1 * c(1) + 0.1103611313171476425250639e0 * c(4) - 0.1290397544997518887000350e1 * c(5) - 0.6639605248735044787146222e0 * c(6) - 0.6615974464005206184151509e0 * c(7) -0.2893557395653431666593814e0 * c(1) - 0.2421320004064592721552708e0 * c(3) + 0.1187670255028031027693374e1 * c(5) + 0.3956598149904136332753521e0 * c(6) + 0.3860048921755800000681479e0 * c(7) 0.6712774475803763988977355e-1 * c(1) + 0.9147192682075630179962131e-2 * c(3) - 0.1872196143003808021730728e0 * c(4) - 0.1319358558853174530078498e0 * c(6) - 0.4871575736811911887376923e0 * c(5) - 0.1047516312275448138054418e0 * c(7) 0.2349927974590068869356781e-1 * c(1) + 0.7240905383565181316381731e-2 * c(3) + 0.1858378996391679448655070e-1 * c(4) - 0.9289616133938676174345208e-1 * c(5) + 0.1223513270418807666970488e0 * c(6) + 0.1113520320436295033894092e0 * c(7) -0.4834791406446907590553793e-2 * c(4) + 0.2310683832687820403062715e0 * c(5) - 0.1080774142196007991746827e0 * c(6) - 0.1181561776427343335410349e0 * c(7) -0.8368141434403455353724691e-1 * c(5) + 0.4093499466767054661591066e-1 * c(6) + 0.4274641967636400692133626e-1 * c(7) -0.3576545132696983143406173e-2 * c(6) + 0.7389399124121078682094445e-2 * c(5) - 0.3812853991424095538688273e-2 * c(7); 0.7075642937243715046279337e-1 * c(1) - 0.1845476106024151050283847e0 * c(2) - 0.4364163147111892346990101e-1 * c(4) + 0.2432367907207732460874765e0 * c(5) + 0.1582127073537215443965653e0 * c(6) + 0.1602348578364786307613271e0 * c(7) -0.9091410269992464604926176e-1 * c(1) + 0.1103611313171476425250639e0 * c(4) - 0.1290397544997518887000350e1 * c(5) - 0.6639605248735044787146222e0 * c(6) - 0.6615974464005206184151509e0 * c(7) 0.6327161147136873807796515e-2 * c(1) + 0.1147318200715868527529827e0 * c(2) + 0.1166740554279680007487795e0 * c(4) + 0.2766610808285444037240703e1 * c(5) + 0.1070920689960817104203947e1 * c(6) + 0.1013161391032973057171717e1 * c(7) 0.2013769413884797246646959e-1 * c(1) + 0.1033717994630886401730470e0 * c(2) - 0.2913221621151742724258117e1 * c(5) - 0.8755807343482262259774782e0 * c(6) - 0.6909957183488812426508351e0 * c(7) -0.4671751091575462868310238e-2 * c(1) - 0.2760353365637712827793337e-1 * c(2) - 0.1979290298620869974478871e0 * c(4) + 0.5402985338373433052255418e0 * c(6) + 0.1239177593031911077924537e1 * c(5) + 0.2628038050247358227280031e0 * c(7) -0.1635430866921887819487473e-2 * c(1) - 0.5952475275883259619711594e-2 * c(2) + 0.1964682777744275219350831e-1 * c(4) + 0.3236640012639046600590714e0 * c(5) - 0.4659516693228870973898560e0 * c(6) - 0.2217272720941736859420432e0 * c(7) -0.5111353189352474549563559e-2 * c(4) - 0.5355878163774754346032096e0 * c(5) + 0.3328335104489738933610597e0 * c(6) + 0.2078656591178540157917135e0 * c(7) 0.1824328174134289562208038e0 * c(5) - 0.1059816030196818445908057e0 * c(6) - 0.7645121439374711162999809e-1 * c(7) 0.9209089963443799485648361e-2 * c(6) - 0.1591502818872493167091475e-1 * c(5) + 0.6705938225281132185266388e-2 * c(7); 0.2251991532891353212689574e0 * c(1) - 0.1662748711097054895317080e0 * c(2) + 0.2710530961648671297733465e-1 * c(3) - 0.1916646185968439909125616e0 * c(5) - 0.7684117160199014594442072e-1 * c(6) - 0.8219586949831697575883635e-1 * c(7) -0.2893557395653431666593814e0 * c(1) - 0.2421320004064592721552708e0 * c(3) + 0.1187670255028031027693374e1 * c(5) + 0.3956598149904136332753521e0 * c(6) + 0.3860048921755800000681479e0 * c(7) 0.2013769413884797246646959e-1 * c(1) + 0.1033717994630886401730470e0 * c(2) - 0.2913221621151742724258117e1 * c(5) - 0.8755807343482262259774782e0 * c(6) - 0.6909957183488812426508351e0 * c(7) 0.6409299775987186986730499e-1 * c(1) + 0.9313657638804699948929701e-1 * c(2) + 0.2306367624634749229113646e0 * c(3) + 0.3689440308283716620260816e1 * c(5) + 0.1190550338687608873798462e1 * c(6) + 0.5912479546888856519443605e0 * c(7) -0.1486895819265604128572498e-1 * c(1) - 0.2487040599390160764166412e-1 * c(2) - 0.8712928907711754187084757e-2 * c(3) - 0.1263507837371824205693950e1 * c(6) - 0.3058317397843997326920898e0 * c(7) - 0.1470691926045802954795783e1 * c(5) -0.5205147429855955657625694e-2 * c(1) - 0.5363098747528542488971874e-2 * c(2) - 0.6897142765790609546343709e-2 * c(3) - 0.7857524521667450101721993e0 * c(5) + 0.2291148005423734600066709e0 * c(7) + 0.9977064356292750529201981e0 * c(6) 0.6697297488067662265210608e0 * c(5) - 0.5013247356072127938999311e0 * c(6) - 0.1795161243106645437322408e0 * c(7) -0.2022909060111751565150958e0 * c(5) + 0.1453421858063658498587377e0 * c(6) + 0.5694872020480930665635812e-1 * c(7) -0.1200429618441003833696998e-1 * c(6) - 0.4776915669385923841535432e-2 * c(7) + 0.1678121185379596217850541e-1 * c(5); -0.5224403464202056316702078e-1 * c(1) + 0.4440063948509876221050939e-1 * c(2) - 0.1023976547309387874453988e-2 * c(3) + 0.7403484645316174090533193e-1 * c(4) + 0.1241625568998496895352046e-1 * c(6) + 0.7188652847892601282652228e-1 * c(5) + 0.1379362997104735503447960e-1 * c(7) 0.6712774475803763988977355e-1 * c(1) + 0.9147192682075630179962131e-2 * c(3) - 0.1872196143003808021730728e0 * c(4) - 0.1319358558853174530078498e0 * c(6) - 0.4871575736811911887376923e0 * c(5) - 0.1047516312275448138054418e0 * c(7) -0.4671751091575462868310238e-2 * c(1) - 0.2760353365637712827793337e-1 * c(2) - 0.1979290298620869974478871e0 * c(4) + 0.5402985338373433052255418e0 * c(6) + 0.1239177593031911077924537e1 * c(5) + 0.2628038050247358227280031e0 * c(7) -0.1486895819265604128572498e-1 * c(1) - 0.2487040599390160764166412e-1 * c(2) - 0.8712928907711754187084757e-2 * c(3) - 0.1263507837371824205693950e1 * c(6) - 0.3058317397843997326920898e0 * c(7) - 0.1470691926045802954795783e1 * c(5) 0.3449455095910233625229891e-2 * c(1) + 0.6641183499427826101618457e-2 * c(2) + 0.3291545083271862858501887e-3 * c(3) + 0.3357721707576477199985656e0 * c(4) + 0.2096413329579026439044119e1 * c(6) + 0.2317323204183126854954203e0 * c(7) + 0.6107825764368264576481962e-2 * c(8) + 0.7109125850683376695640722e0 * c(5) 0.1207544072304193806052558e-2 * c(1) + 0.1432116665752147607469646e-2 * c(2) + 0.2605582646183255957264249e-3 * c(3) - 0.3332941113251635390801278e-1 * c(4) - 0.2808241697385532683612407e0 * c(7) - 0.2720908083525083608370563e-1 * c(8) + 0.1045865435682921987447929e0 * c(5) - 0.1348436986667115543203552e1 * c(6) 0.8671038084174692625075159e-2 * c(4) + 0.1736073411355428563685818e0 * c(6) + 0.5331362125287625412555844e-1 * c(8) - 0.2424935262404526301801157e0 * c(5) + 0.1569015257678588270609004e0 * c(7) -0.8631683980217122275970376e-1 * c(6) + 0.2698842360470999243492629e-1 * c(7) + 0.8098194147715651085292754e-1 * c(5) - 0.3276463639080639163926118e-1 * c(8) 0.7462059484530855073291365e-2 * c(6) - 0.8121640361668678949573496e-3 * c(7) + 0.5522702088127090209264064e-3 * c(8) - 0.7202165657176696199260422e-2 * c(5); -0.1828896813877197352675410e-1 * c(1) + 0.9574633163221758060736592e-2 * c(2) - 0.8105784530576404277872603e-3 * c(3) - 0.7348845587775519698437916e-2 * c(4) + 0.1063601949723906997026904e-1 * c(5) - 0.1315967038382618382356495e-1 * c(6) - 0.2117936478838753524581943e-1 * c(7) 0.2349927974590068869356781e-1 * c(1) + 0.7240905383565181316381731e-2 * c(3) + 0.1858378996391679448655070e-1 * c(4) - 0.9289616133938676174345208e-1 * c(5) + 0.1223513270418807666970488e0 * c(6) + 0.1113520320436295033894092e0 * c(7) -0.1635430866921887819487473e-2 * c(1) - 0.5952475275883259619711594e-2 * c(2) + 0.1964682777744275219350831e-1 * c(4) + 0.3236640012639046600590714e0 * c(5) - 0.4659516693228870973898560e0 * c(6) - 0.2217272720941736859420432e0 * c(7) -0.5205147429855955657625694e-2 * c(1) - 0.5363098747528542488971874e-2 * c(2) - 0.6897142765790609546343709e-2 * c(3) - 0.7857524521667450101721993e0 * c(5) + 0.2291148005423734600066709e0 * c(7) + 0.9977064356292750529201981e0 * c(6) 0.1207544072304193806052558e-2 * c(1) + 0.1432116665752147607469646e-2 * c(2) + 0.2605582646183255957264249e-3 * c(3) - 0.3332941113251635390801278e-1 * c(4) - 0.2808241697385532683612407e0 * c(7) - 0.2720908083525083608370563e-1 * c(8) + 0.1045865435682921987447929e0 * c(5) - 0.1348436986667115543203552e1 * c(6) 0.4227226173449345042468960e-3 * c(1) + 0.3088241944378964404772302e-3 * c(2) + 0.2062575706647430620228133e-3 * c(3) + 0.3308343404200968256656458e-2 * c(4) + 0.5828047016405001815804837e0 * c(5) + 0.8054174220366215473556835e0 * c(7) + 0.1338363233410033443348225e0 * c(8) + 0.5555555555555555555555556e-2 * c(9) + 0.1190362071861893051132274e1 * c(6) -0.8607044252686413302647675e-3 * c(4) - 0.1748074708673904989293256e0 * c(5) - 0.3132544850115050165022338e0 * c(8) - 0.2500000000000000000000000e-1 * c(9) - 0.3169166305310429271303167e0 * c(7) - 0.6691607091647929161078591e0 * c(6) 0.3354661791693352108660900e-1 * c(5) - 0.3343620022386971405018586e0 * c(7) + 0.5000000000000000000000000e-1 * c(9) + 0.2169790609807602750804271e0 * c(6) + 0.1838363233410033443348225e0 * c(8) 0.2912518476823004642951502e-1 * c(7) + 0.2279091916474916391629437e-1 * c(8) - 0.3068985997518740530511593e-1 * c(6) - 0.1781799513347360596249022e-2 * c(5) - 0.3055555555555555555555556e-1 * c(9); 0.1911888563316170927411831e-2 * c(4) - 0.4068130355529149936100229e-1 * c(5) + 0.1319674981073749167009902e-1 * c(6) + 0.2557266518123783676349144e-1 * c(7) -0.4834791406446907590553793e-2 * c(4) + 0.2310683832687820403062715e0 * c(5) - 0.1080774142196007991746827e0 * c(6) - 0.1181561776427343335410349e0 * c(7) -0.5111353189352474549563559e-2 * c(4) - 0.5355878163774754346032096e0 * c(5) + 0.3328335104489738933610597e0 * c(6) + 0.2078656591178540157917135e0 * c(7) 0.6697297488067662265210608e0 * c(5) - 0.5013247356072127938999311e0 * c(6) - 0.1795161243106645437322408e0 * c(7) 0.8671038084174692625075159e-2 * c(4) + 0.1736073411355428563685818e0 * c(6) + 0.5331362125287625412555844e-1 * c(8) - 0.2424935262404526301801157e0 * c(5) + 0.1569015257678588270609004e0 * c(7) -0.8607044252686413302647675e-3 * c(4) - 0.1748074708673904989293256e0 * c(5) - 0.3132544850115050165022338e0 * c(8) - 0.2500000000000000000000000e-1 * c(9) - 0.3169166305310429271303167e0 * c(7) - 0.6691607091647929161078591e0 * c(6) 0.2239223735771599178951297e-3 * c(4) + 0.1275437785430956673825710e0 * c(5) + 0.1011699483929608164601067e1 * c(6) + 0.9698817275172575247533506e0 * c(8) + 0.1250000000000000000000000e0 * c(9) + 0.5555555555555555555555556e-2 * c(10) + 0.4823177543031281500117826e0 * c(7) -0.3784113973033012949863031e-1 * c(5) - 0.2997556885134827361576001e0 * c(6) - 0.3000000000000000000000000e0 * c(9) - 0.2500000000000000000000000e-1 * c(10) - 0.3991486867446821178415359e0 * c(7) - 0.4382544850115050165022338e0 * c(8) 0.4698146218022683933926520e-1 * c(6) - 0.2966863787471237458744416e0 * c(8) + 0.5000000000000000000000000e-1 * c(10) + 0.1716355704146006481727960e0 * c(7) + 0.3069346152296258362380356e-2 * c(5) + 0.1750000000000000000000000e0 * c(9); 0.1559652871136785763960685e-1 * c(5) - 0.6486184157331537899459796e-2 * c(6) - 0.9110344554036319740147054e-2 * c(7) -0.8368141434403455353724691e-1 * c(5) + 0.4093499466767054661591066e-1 * c(6) + 0.4274641967636400692133626e-1 * c(7) 0.1824328174134289562208038e0 * c(5) - 0.1059816030196818445908057e0 * c(6) - 0.7645121439374711162999809e-1 * c(7) -0.2022909060111751565150958e0 * c(5) + 0.1453421858063658498587377e0 * c(6) + 0.5694872020480930665635812e-1 * c(7) -0.8631683980217122275970376e-1 * c(6) + 0.2698842360470999243492629e-1 * c(7) + 0.8098194147715651085292754e-1 * c(5) - 0.3276463639080639163926118e-1 * c(8) 0.3354661791693352108660900e-1 * c(5) - 0.3343620022386971405018586e0 * c(7) + 0.5000000000000000000000000e-1 * c(9) + 0.2169790609807602750804271e0 * c(6) + 0.1838363233410033443348225e0 * c(8) -0.3784113973033012949863031e-1 * c(5) - 0.2997556885134827361576001e0 * c(6) - 0.3000000000000000000000000e0 * c(9) - 0.2500000000000000000000000e-1 * c(10) - 0.3991486867446821178415359e0 * c(7) - 0.4382544850115050165022338e0 * c(8) 0.1230328942716804455358698e-1 * c(5) + 0.1183647529645898332481833e0 * c(6) + 0.9410511898227943334189628e0 * c(7) + 0.9500000000000000000000000e0 * c(9) + 0.1250000000000000000000000e0 * c(10) + 0.5555555555555555555555556e-2 * c(11) + 0.5699474344521144554459336e0 * c(8) -0.2308067892671916339568942e-1 * c(6) - 0.2986625053775149497180439e0 * c(7) - 0.3000000000000000000000000e0 * c(10) - 0.2500000000000000000000000e-1 * c(11) - 0.1047734860515050802561078e-2 * c(5) - 0.4272090808352508360837056e0 * c(8) - 0.4250000000000000000000000e0 * c(9); 0.5593983696629863059347067e-3 * c(6) - 0.1384822535100796372263822e-2 * c(5) + 0.8254241654378100663291154e-3 * c(7) -0.3576545132696983143406173e-2 * c(6) + 0.7389399124121078682094445e-2 * c(5) - 0.3812853991424095538688273e-2 * c(7) 0.9209089963443799485648361e-2 * c(6) - 0.1591502818872493167091475e-1 * c(5) + 0.6705938225281132185266388e-2 * c(7) -0.1200429618441003833696998e-1 * c(6) - 0.4776915669385923841535432e-2 * c(7) + 0.1678121185379596217850541e-1 * c(5) 0.7462059484530855073291365e-2 * c(6) - 0.8121640361668678949573496e-3 * c(7) + 0.5522702088127090209264064e-3 * c(8) - 0.7202165657176696199260422e-2 * c(5) 0.2912518476823004642951502e-1 * c(7) + 0.2279091916474916391629437e-1 * c(8) - 0.3068985997518740530511593e-1 * c(6) - 0.1781799513347360596249022e-2 * c(5) - 0.3055555555555555555555556e-1 * c(9) 0.4698146218022683933926520e-1 * c(6) - 0.2966863787471237458744416e0 * c(8) + 0.5000000000000000000000000e-1 * c(10) + 0.1716355704146006481727960e0 * c(7) + 0.3069346152296258362380356e-2 * c(5) + 0.1750000000000000000000000e0 * c(9) -0.2308067892671916339568942e-1 * c(6) - 0.2986625053775149497180439e0 * c(7) - 0.3000000000000000000000000e0 * c(10) - 0.2500000000000000000000000e-1 * c(11) - 0.1047734860515050802561078e-2 * c(5) - 0.4272090808352508360837056e0 * c(8) - 0.4250000000000000000000000e0 * c(9) 0.5139370221149109977041877e-2 * c(6) + 0.1247723215009422001393184e0 * c(7) + 0.9505522702088127090209264e0 * c(8) + 0.9500000000000000000000000e0 * c(10) + 0.1250000000000000000000000e0 * c(11) + 0.5555555555555555555555556e-2 * c(12) + 0.9159362465153641826887659e-4 * c(5) + 0.5611111111111111111111111e0 * c(9);];
+
+        M(m-8:m,m-8:m)=[0.5555555555555555555555556e-2 * c(m-11) + 0.1250000000000000000000000e0 * c(m-10) + 0.9500000000000000000000000e0 * c(m-9) + 0.9505522702088127090209264e0 * c(m-7) + 0.1247205076844361998744053e0 * c(m-6) + 0.5139370221149109977041877e-2 * c(m-5) + 0.5611111111111111111111111e0 * c(m-8) + 0.1434074411575366831819799e-3 * c(m-4) -0.2500000000000000000000000e-1 * c(m-10) - 0.3000000000000000000000000e0 * c(m-9) - 0.2980649679116425253322056e0 * c(m-6) - 0.2308067892671916339568942e-1 * c(m-5) - 0.4250000000000000000000000e0 * c(m-8) - 0.4272090808352508360837056e0 * c(m-7) - 0.1645272326387475188399322e-2 * c(m-4) 0.5000000000000000000000000e-1 * c(m-9) - 0.2966863787471237458744416e0 * c(m-7) + 0.4698146218022683933926520e-1 * c(m-5) + 0.1750000000000000000000000e0 * c(m-8) + 0.1700291833903489463825077e0 * c(m-6) + 0.4675733176547960152668626e-2 * c(m-4) 0.2279091916474916391629437e-1 * c(m-7) + 0.3097763128598982561225538e-1 * c(m-6) - 0.3055555555555555555555556e-1 * c(m-8) - 0.3068985997518740530511593e-1 * c(m-5) - 0.3634246031107139778989373e-2 * c(m-4) 0.5522702088127090209264064e-3 * c(m-7) - 0.3265435411305071914756373e-2 * c(m-6) + 0.7462059484530855073291365e-2 * c(m-5) - 0.4748894282038492179461399e-2 * c(m-4) 0.6272075574042975468177820e-3 * c(m-6) - 0.1200429618441003833696998e-1 * c(m-5) + 0.1137708862700574079015220e-1 * c(m-4) 0.9209089963443799485648361e-2 * c(m-5) - 0.3129629392354775191148163e-3 * c(m-6) - 0.8896127024208321966533544e-2 * c(m-4) -0.3576545132696983143406173e-2 * c(m-5) + 0.4335019854436220306755673e-3 * c(m-6) + 0.3143043147253361112730605e-2 * c(m-4) 0.5593983696629863059347067e-3 * c(m-5) - 0.1446656414398166805849327e-3 * c(m-6) - 0.4147327282231696253497740e-3 * c(m-4); -0.2500000000000000000000000e-1 * c(m-10) - 0.3000000000000000000000000e0 * c(m-9) - 0.2980649679116425253322056e0 * c(m-6) - 0.2308067892671916339568942e-1 * c(m-5) - 0.4250000000000000000000000e0 * c(m-8) - 0.4272090808352508360837056e0 * c(m-7) - 0.1645272326387475188399322e-2 * c(m-4) 0.5555555555555555555555556e-2 * c(m-10) + 0.1250000000000000000000000e0 * c(m-9) + 0.9500000000000000000000000e0 * c(m-8) + 0.9341601509609901526962449e0 * c(m-6) + 0.1183647529645898332481833e0 * c(m-5) + 0.1919432828897222527630486e-1 * c(m-4) + 0.5699474344521144554459336e0 * c(m-7) -0.2500000000000000000000000e-1 * c(m-9) - 0.3000000000000000000000000e0 * c(m-8) - 0.2997556885134827361576001e0 * c(m-5) - 0.5636663150858098975790317e-1 * c(m-4) - 0.4382544850115050165022338e0 * c(m-7) - 0.3806231949664312575822630e0 * c(m-6) 0.5000000000000000000000000e-1 * c(m-8) - 0.3557251496099816106154206e0 * c(m-6) + 0.5490976528821799120017102e-1 * c(m-4) + 0.1838363233410033443348225e0 * c(m-7) + 0.2169790609807602750804271e0 * c(m-5) 0.5528052133944605740009217e-1 * c(m-6) - 0.8631683980217122275970376e-1 * c(m-5) - 0.3276463639080639163926118e-1 * c(m-7) + 0.5268984374242044588776166e-1 * c(m-4) -0.5373770512016897565958305e-2 * c(m-6) + 0.1453421858063658498587377e0 * c(m-5) - 0.1399684152943489522927794e0 * c(m-4) -0.1059816030196818445908057e0 * c(m-5) + 0.1014880675788250237247178e0 * c(m-4) + 0.4493535440856820866087846e-2 * c(m-6) 0.4093499466767054661591066e-1 * c(m-5) - 0.3471075437892810033585296e-1 * c(m-4) - 0.6224240288742446280057699e-2 * c(m-6) -0.6486184157331537899459796e-2 * c(m-5) + 0.4409068609809831485979484e-2 * c(m-4) + 0.2077115547521706413480312e-2 * c(m-6); 0.5000000000000000000000000e-1 * c(m-9) - 0.2966863787471237458744416e0 * c(m-7) + 0.4698146218022683933926520e-1 * c(m-5) + 0.1750000000000000000000000e0 * c(m-8) + 0.1700291833903489463825077e0 * c(m-6) + 0.4675733176547960152668626e-2 * c(m-4) -0.2500000000000000000000000e-1 * c(m-9) - 0.3000000000000000000000000e0 * c(m-8) - 0.2997556885134827361576001e0 * c(m-5) - 0.5636663150858098975790317e-1 * c(m-4) - 0.4382544850115050165022338e0 * c(m-7) - 0.3806231949664312575822630e0 * c(m-6) 0.5555555555555555555555556e-2 * c(m-9) + 0.1250000000000000000000000e0 * c(m-8) + 0.9698817275172575247533506e0 * c(m-7) + 0.1011699483929608164601067e1 * c(m-5) + 0.1773466968705924819112984e0 * c(m-4) + 0.2239223735771599178951297e-3 * c(m-3) + 0.4325148359756313354830552e0 * c(m-6) -0.2500000000000000000000000e-1 * c(m-8) - 0.3132544850115050165022338e0 * c(m-7) - 0.2322389872063761557916742e0 * c(m-4) - 0.8607044252686413302647675e-3 * c(m-3) - 0.2594851141920572702679681e0 * c(m-6) - 0.6691607091647929161078591e0 * c(m-5) 0.5331362125287625412555844e-1 * c(m-7) + 0.1736073411355428563685818e0 * c(m-5) + 0.8671038084174692625075159e-2 * c(m-3) + 0.8084259844422177692569663e-1 * c(m-6) - 0.1664345989168155800449120e0 * c(m-4) -0.5013247356072127938999311e0 * c(m-5) + 0.5021853752328231128475915e0 * c(m-4) - 0.1197175073672143005877150e-1 * c(m-6) 0.3328335104489738933610597e0 * c(m-5) - 0.3179803804558436283847901e0 * c(m-4) - 0.5111353189352474549563559e-2 * c(m-3) - 0.9741776803777790426705996e-2 * c(m-6) -0.1080774142196007991746827e0 * c(m-5) + 0.9941834083648937298100811e-1 * c(m-4) - 0.4834791406446907590553793e-2 * c(m-3) + 0.1349386478955833378422842e-1 * c(m-6) 0.1319674981073749167009902e-1 * c(m-5) - 0.1060554802883657391328704e-1 * c(m-4) + 0.1911888563316170927411831e-2 * c(m-3) - 0.4503090345217088684223814e-2 * c(m-6); 0.2279091916474916391629437e-1 * c(m-7) + 0.3097763128598982561225538e-1 * c(m-6) - 0.3055555555555555555555556e-1 * c(m-8) - 0.3068985997518740530511593e-1 * c(m-5) - 0.3634246031107139778989373e-2 * c(m-4) 0.5000000000000000000000000e-1 * c(m-8) - 0.3557251496099816106154206e0 * c(m-6) + 0.5490976528821799120017102e-1 * c(m-4) + 0.1838363233410033443348225e0 * c(m-7) + 0.2169790609807602750804271e0 * c(m-5) -0.2500000000000000000000000e-1 * c(m-8) - 0.3132544850115050165022338e0 * c(m-7) - 0.2322389872063761557916742e0 * c(m-4) - 0.8607044252686413302647675e-3 * c(m-3) - 0.2594851141920572702679681e0 * c(m-6) - 0.6691607091647929161078591e0 * c(m-5) 0.5555555555555555555555556e-2 * c(m-8) + 0.1338363233410033443348225e0 * c(m-7) + 0.7391887916719206077121040e0 * c(m-6) + 0.6490333320052011212240632e0 * c(m-4) + 0.3308343404200968256656458e-2 * c(m-3) + 0.2062575706647430620228133e-3 * c(m-2) + 0.3088241944378964404772302e-3 * c(m-1) + 0.4227226173449345042468960e-3 * c(m) + 0.1190362071861893051132274e1 * c(m-5) -0.2720908083525083608370563e-1 * c(m-7) - 0.1931148612480615118957263e0 * c(m-6) - 0.3332941113251635390801278e-1 * c(m-3) + 0.2605582646183255957264249e-3 * c(m-2) + 0.1432116665752147607469646e-2 * c(m-1) + 0.1207544072304193806052558e-2 * c(m) - 0.1348436986667115543203552e1 * c(m-5) + 0.1687723507780044227927853e-1 * c(m-4) 0.3590669644811151307464697e-1 * c(m-6) - 0.5925443480724830632401754e0 * c(m-4) - 0.6897142765790609546343709e-2 * c(m-2) - 0.5363098747528542488971874e-2 * c(m-1) - 0.5205147429855955657625694e-2 * c(m) + 0.9977064356292750529201981e0 * c(m-5) 0.7272438906214475928744770e-1 * c(m-4) + 0.1964682777744275219350831e-1 * c(m-3) - 0.5952475275883259619711594e-2 * c(m-1) - 0.1635430866921887819487473e-2 * c(m) + 0.2921234010758621482958052e-1 * c(m-6) - 0.4659516693228870973898560e0 * c(m-5) 0.5891947149681041048896399e-1 * c(m-4) + 0.1858378996391679448655070e-1 * c(m-3) + 0.7240905383565181316381731e-2 * c(m-2) + 0.2349927974590068869356781e-1 * c(m) - 0.4046360079256766884300687e-1 * c(m-6) + 0.1223513270418807666970488e0 * c(m-5) -0.2404661162020836566908542e-1 * c(m-4) - 0.7348845587775519698437916e-2 * c(m-3) - 0.8105784530576404277872603e-3 * c(m-2) + 0.9574633163221758060736592e-2 * c(m-1) - 0.1828896813877197352675410e-1 * c(m) + 0.1350326632905990039353503e-1 * c(m-6) - 0.1315967038382618382356495e-1 * c(m-5); 0.5522702088127090209264064e-3 * c(m-7) - 0.3265435411305071914756373e-2 * c(m-6) + 0.7462059484530855073291365e-2 * c(m-5) - 0.4748894282038492179461399e-2 * c(m-4) 0.5528052133944605740009217e-1 * c(m-6) - 0.8631683980217122275970376e-1 * c(m-5) - 0.3276463639080639163926118e-1 * c(m-7) + 0.5268984374242044588776166e-1 * c(m-4) 0.5331362125287625412555844e-1 * c(m-7) + 0.1736073411355428563685818e0 * c(m-5) + 0.8671038084174692625075159e-2 * c(m-3) + 0.8084259844422177692569663e-1 * c(m-6) - 0.1664345989168155800449120e0 * c(m-4) -0.2720908083525083608370563e-1 * c(m-7) - 0.1931148612480615118957263e0 * c(m-6) - 0.3332941113251635390801278e-1 * c(m-3) + 0.2605582646183255957264249e-3 * c(m-2) + 0.1432116665752147607469646e-2 * c(m-1) + 0.1207544072304193806052558e-2 * c(m) - 0.1348436986667115543203552e1 * c(m-5) + 0.1687723507780044227927853e-1 * c(m-4) 0.6107825764368264576481962e-2 * c(m-7) + 0.1155752633643216628010304e0 * c(m-6) + 0.2096413329579026439044119e1 * c(m-5) + 0.3357721707576477199985656e0 * c(m-3) + 0.3291545083271862858501887e-3 * c(m-2) + 0.6641183499427826101618457e-2 * c(m-1) + 0.3449455095910233625229891e-2 * c(m) + 0.8270696421223286922584620e0 * c(m-4) -0.4995827370863505253765970e-1 * c(m-6) - 0.1263507837371824205693950e1 * c(m-5) - 0.8712928907711754187084757e-2 * c(m-2) - 0.2487040599390160764166412e-1 * c(m-1) - 0.1486895819265604128572498e-1 * c(m) - 0.1726565392121567634950213e1 * c(m-4) 0.5402985338373433052255418e0 * c(m-5) - 0.1979290298620869974478871e0 * c(m-3) - 0.2760353365637712827793337e-1 * c(m-1) - 0.4671751091575462868310238e-2 * c(m) - 0.6952587985456154591014641e-1 * c(m-6) + 0.1571507277911208446562686e1 * c(m-4) -0.1319358558853174530078498e0 * c(m-5) - 0.1872196143003808021730728e0 * c(m-3) + 0.9147192682075630179962131e-2 * c(m-2) + 0.6712774475803763988977355e-1 * c(m) + 0.9630407686703666967100804e-1 * c(m-6) - 0.6882132817757726722141421e0 * c(m-4) 0.1241625568998496895352046e-1 * c(m-5) + 0.7403484645316174090533193e-1 * c(m-3) - 0.1023976547309387874453988e-2 * c(m-2) + 0.4440063948509876221050939e-1 * c(m-1) - 0.5224403464202056316702078e-1 * c(m) - 0.3213800979246298453953842e-1 * c(m-6) + 0.1178181682424363524005403e0 * c(m-4); 0.6272075574042975468177820e-3 * c(m-6) - 0.1200429618441003833696998e-1 * c(m-5) + 0.1137708862700574079015220e-1 * c(m-4) -0.5373770512016897565958305e-2 * c(m-6) + 0.1453421858063658498587377e0 * c(m-5) - 0.1399684152943489522927794e0 * c(m-4) -0.5013247356072127938999311e0 * c(m-5) + 0.5021853752328231128475915e0 * c(m-4) - 0.1197175073672143005877150e-1 * c(m-6) 0.3590669644811151307464697e-1 * c(m-6) - 0.5925443480724830632401754e0 * c(m-4) - 0.6897142765790609546343709e-2 * c(m-2) - 0.5363098747528542488971874e-2 * c(m-1) - 0.5205147429855955657625694e-2 * c(m) + 0.9977064356292750529201981e0 * c(m-5) -0.4995827370863505253765970e-1 * c(m-6) - 0.1263507837371824205693950e1 * c(m-5) - 0.8712928907711754187084757e-2 * c(m-2) - 0.2487040599390160764166412e-1 * c(m-1) - 0.1486895819265604128572498e-1 * c(m) - 0.1726565392121567634950213e1 * c(m-4) 0.2760393423824887721078848e-1 * c(m-6) + 0.1190550338687608873798462e1 * c(m-5) + 0.4253084328734353394994388e1 * c(m-4) + 0.2306367624634749229113646e0 * c(m-2) + 0.9313657638804699948929701e-1 * c(m-1) + 0.6409299775987186986730499e-1 * c(m) -0.8755807343482262259774782e0 * c(m-5) - 0.3645285178085761821545207e1 * c(m-4) + 0.1033717994630886401730470e0 * c(m-1) + 0.2013769413884797246646959e-1 * c(m) + 0.4106783858513785463625543e-1 * c(m-6) 0.3956598149904136332753521e0 * c(m-5) + 0.1630560443616104907615866e1 * c(m-4) - 0.2421320004064592721552708e0 * c(m-2) - 0.2893557395653431666593814e0 * c(m) - 0.5688529641249387985434413e-1 * c(m-6) -0.7684117160199014594442072e-1 * c(m-5) - 0.2928439026361256842196229e0 * c(m-4) + 0.2710530961648671297733465e-1 * c(m-2) - 0.1662748711097054895317080e0 * c(m-1) + 0.2251991532891353212689574e0 * c(m) + 0.1898341454096471754822498e-1 * c(m-6); 0.9209089963443799485648361e-2 * c(m-5) - 0.3129629392354775191148163e-3 * c(m-6) - 0.8896127024208321966533544e-2 * c(m-4) -0.1059816030196818445908057e0 * c(m-5) + 0.1014880675788250237247178e0 * c(m-4) + 0.4493535440856820866087846e-2 * c(m-6) 0.3328335104489738933610597e0 * c(m-5) - 0.3179803804558436283847901e0 * c(m-4) - 0.5111353189352474549563559e-2 * c(m-3) - 0.9741776803777790426705996e-2 * c(m-6) 0.7272438906214475928744770e-1 * c(m-4) + 0.1964682777744275219350831e-1 * c(m-3) - 0.5952475275883259619711594e-2 * c(m-1) - 0.1635430866921887819487473e-2 * c(m) + 0.2921234010758621482958052e-1 * c(m-6) - 0.4659516693228870973898560e0 * c(m-5) 0.5402985338373433052255418e0 * c(m-5) - 0.1979290298620869974478871e0 * c(m-3) - 0.2760353365637712827793337e-1 * c(m-1) - 0.4671751091575462868310238e-2 * c(m) - 0.6952587985456154591014641e-1 * c(m-6) + 0.1571507277911208446562686e1 * c(m-4) -0.8755807343482262259774782e0 * c(m-5) - 0.3645285178085761821545207e1 * c(m-4) + 0.1033717994630886401730470e0 * c(m-1) + 0.2013769413884797246646959e-1 * c(m) + 0.4106783858513785463625543e-1 * c(m-6) 0.1070920689960817104203947e1 * c(m-5) + 0.3717418466925056542408153e1 * c(m-4) + 0.1166740554279680007487795e0 * c(m-3) + 0.1147318200715868527529827e0 * c(m-1) + 0.6327161147136873807796515e-2 * c(m) + 0.6235373239336055200426697e-1 * c(m-6) -0.6639605248735044787146222e0 * c(m-5) - 0.1865625445986772763641423e1 * c(m-4) + 0.1103611313171476425250639e0 * c(m-3) - 0.9091410269992464604926176e-1 * c(m) - 0.8636954541126674177407762e-1 * c(m-6) 0.1582127073537215443965653e0 * c(m-5) + 0.3746489300753517635549495e0 * c(m-4) - 0.4364163147111892346990101e-1 * c(m-3) - 0.1845476106024151050283847e0 * c(m-1) + 0.7075642937243715046279337e-1 * c(m) + 0.2882271848190011329385407e-1 * c(m-6); -0.3576545132696983143406173e-2 * c(m-5) + 0.4335019854436220306755673e-3 * c(m-6) + 0.3143043147253361112730605e-2 * c(m-4) 0.4093499466767054661591066e-1 * c(m-5) - 0.3471075437892810033585296e-1 * c(m-4) - 0.6224240288742446280057699e-2 * c(m-6) -0.1080774142196007991746827e0 * c(m-5) + 0.9941834083648937298100811e-1 * c(m-4) - 0.4834791406446907590553793e-2 * c(m-3) + 0.1349386478955833378422842e-1 * c(m-6) 0.5891947149681041048896399e-1 * c(m-4) + 0.1858378996391679448655070e-1 * c(m-3) + 0.7240905383565181316381731e-2 * c(m-2) + 0.2349927974590068869356781e-1 * c(m) - 0.4046360079256766884300687e-1 * c(m-6) + 0.1223513270418807666970488e0 * c(m-5) -0.1319358558853174530078498e0 * c(m-5) - 0.1872196143003808021730728e0 * c(m-3) + 0.9147192682075630179962131e-2 * c(m-2) + 0.6712774475803763988977355e-1 * c(m) + 0.9630407686703666967100804e-1 * c(m-6) - 0.6882132817757726722141421e0 * c(m-4) 0.3956598149904136332753521e0 * c(m-5) + 0.1630560443616104907615866e1 * c(m-4) - 0.2421320004064592721552708e0 * c(m-2) - 0.2893557395653431666593814e0 * c(m) - 0.5688529641249387985434413e-1 * c(m-6) -0.6639605248735044787146222e0 * c(m-5) - 0.1865625445986772763641423e1 * c(m-4) + 0.1103611313171476425250639e0 * c(m-3) - 0.9091410269992464604926176e-1 * c(m) - 0.8636954541126674177407762e-1 * c(m-6) 0.4681819359722749441073885e0 * c(m-5) + 0.1015239189167790053447110e1 * c(m-4) + 0.1043897828092562609502636e0 * c(m-3) + 0.2542001760457345743492403e0 * c(m-2) + 0.1306332157111667628555907e1 * c(m) + 0.1196351539550049336518187e0 * c(m-6) -0.1195777325611201766551392e0 * c(m-5) - 0.2187310061229745694542609e0 * c(m-4) - 0.4128029838349298819825156e-1 * c(m-3) - 0.2845627370491611369031341e-1 * c(m-2) - 0.1016689339350338144430605e1 * c(m) - 0.3992391469197282238624438e-1 * c(m-6); 0.5593983696629863059347067e-3 * c(m-5) - 0.1446656414398166805849327e-3 * c(m-6) - 0.4147327282231696253497740e-3 * c(m-4) -0.6486184157331537899459796e-2 * c(m-5) + 0.4409068609809831485979484e-2 * c(m-4) + 0.2077115547521706413480312e-2 * c(m-6) 0.1319674981073749167009902e-1 * c(m-5) - 0.1060554802883657391328704e-1 * c(m-4) + 0.1911888563316170927411831e-2 * c(m-3) - 0.4503090345217088684223814e-2 * c(m-6) -0.2404661162020836566908542e-1 * c(m-4) - 0.7348845587775519698437916e-2 * c(m-3) - 0.8105784530576404277872603e-3 * c(m-2) + 0.9574633163221758060736592e-2 * c(m-1) - 0.1828896813877197352675410e-1 * c(m) + 0.1350326632905990039353503e-1 * c(m-6) - 0.1315967038382618382356495e-1 * c(m-5) 0.1241625568998496895352046e-1 * c(m-5) + 0.7403484645316174090533193e-1 * c(m-3) - 0.1023976547309387874453988e-2 * c(m-2) + 0.4440063948509876221050939e-1 * c(m-1) - 0.5224403464202056316702078e-1 * c(m) - 0.3213800979246298453953842e-1 * c(m-6) + 0.1178181682424363524005403e0 * c(m-4) -0.7684117160199014594442072e-1 * c(m-5) - 0.2928439026361256842196229e0 * c(m-4) + 0.2710530961648671297733465e-1 * c(m-2) - 0.1662748711097054895317080e0 * c(m-1) + 0.2251991532891353212689574e0 * c(m) + 0.1898341454096471754822498e-1 * c(m-6) 0.1582127073537215443965653e0 * c(m-5) + 0.3746489300753517635549495e0 * c(m-4) - 0.4364163147111892346990101e-1 * c(m-3) - 0.1845476106024151050283847e0 * c(m-1) + 0.7075642937243715046279337e-1 * c(m) + 0.2882271848190011329385407e-1 * c(m-6) -0.1195777325611201766551392e0 * c(m-5) - 0.2187310061229745694542609e0 * c(m-4) - 0.4128029838349298819825156e-1 * c(m-3) - 0.2845627370491611369031341e-1 * c(m-2) - 0.1016689339350338144430605e1 * c(m) - 0.3992391469197282238624438e-1 * c(m-6) 0.3167964748016105299646518e-1 * c(m-5) + 0.4976563420877041544013670e-1 * c(m-4) + 0.1632404042590951953384672e-1 * c(m-3) + 0.3185519088796429015220016e-2 * c(m-2) + 0.2968472090638000742888467e0 * c(m-1) + 0.7912667594695582093926295e0 * c(m) + 0.1332316557164627464149716e-1 * c(m-6);];
+
+        M(5,10)=M(10,5);
+        M(m-4,m-9)=M(m-9,m-4);
+
+        M=M/h;
+
+        D2=HI*(-M-diag(c)*e_1*S_1'+diag(c)*e_m*S_m');
+    end
+    D2 = @D2_fun;
+
+    S2_U=[0.35e2 / 0.12e2 -0.26e2 / 0.3e1 0.19e2 / 0.2e1 -0.14e2 / 0.3e1 0.11e2 / 0.12e2;]/h^2;
+    S2_1=sparse(1,m);
+    S2_1(1:5)=S2_U;
+    S2_m=sparse(1,m);
+    S2_m(m-4:m)=fliplr(S2_U);
+    S2_1 = S2_1';
+    S2_m = S2_m';
+
+
+
+
+
+    % Fourth derivative, 1th order accurate at first 8 boundary points (still
+    % yield 5th order convergence if stable: for example u_tt=-u_xxxx
+
+    m4=7/240;m3=-2/5;m2=169/60;m1=-122/15;m0=91/8;
+%     M4=m4*(diag(ones(m-4,1),4)+diag(ones(m-4,1),-4))+m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
+    stencil = [m4,m3,m2,m1,m0,m1,m2,m3,m4];
+    d = (length(stencil)-1)/2;
+    diags = -d:d;
+    M4 = stripeMatrix(stencil, diags, m);
+
+    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
+
+    M4_U=[0.1394226315049e13 / 0.367201486080e12 -0.1137054563243e13 / 0.114750464400e12 0.16614189027367e14 / 0.1836007430400e13 -0.1104821700277e13 / 0.306001238400e12 0.1355771086763e13 / 0.1836007430400e13 -0.27818686453e11 / 0.459001857600e12 -0.40671054239e11 / 0.1836007430400e13 0.5442887371e10 / 0.306001238400e12; -0.1137054563243e13 / 0.114750464400e12 0.70616795535409e14 / 0.2570410402560e13 -0.173266854731041e15 / 0.6426026006400e13 0.28938615291031e14 / 0.2570410402560e13 -0.146167361863e12 / 0.71400288960e11 0.2793470836571e13 / 0.12852052012800e14 0.6219558097e10 / 0.428401733760e12 -0.7313844559e10 / 0.166909766400e12; 0.16614189027367e14 / 0.1836007430400e13 -0.173266854731041e15 / 0.6426026006400e13 0.378613061504779e15 / 0.12852052012800e14 -0.9117069604217e13 / 0.642602600640e12 0.632177582849e12 / 0.233673672960e12 -0.1057776382577e13 / 0.6426026006400e13 0.443019868399e12 / 0.4284017337600e13 -0.3707981e7 / 0.2318191200e10; -0.1104821700277e13 / 0.306001238400e12 0.28938615291031e14 / 0.2570410402560e13 -0.9117069604217e13 / 0.642602600640e12 0.5029150721885e13 / 0.514082080512e12 -0.5209119714341e13 / 0.1285205201280e13 0.12235427457469e14 / 0.12852052012800e14 -0.13731270505e11 / 0.64260260064e11 0.2933596129e10 / 0.40800165120e11; 0.1355771086763e13 / 0.1836007430400e13 -0.146167361863e12 / 0.71400288960e11 0.632177582849e12 / 0.233673672960e12 -0.5209119714341e13 / 0.1285205201280e13 0.14871726798559e14 / 0.2570410402560e13 -0.7504337615347e13 / 0.1606506501600e13 0.310830296467e12 / 0.171360693504e12 -0.55284274391e11 / 0.183600743040e12; -0.27818686453e11 / 0.459001857600e12 0.2793470836571e13 / 0.12852052012800e14 -0.1057776382577e13 / 0.6426026006400e13 0.12235427457469e14 / 0.12852052012800e14 -0.7504337615347e13 / 0.1606506501600e13 0.106318657014853e15 / 0.12852052012800e14 -0.14432772918527e14 / 0.2142008668800e13 0.58102695589e11 / 0.22666758400e11; -0.40671054239e11 / 0.1836007430400e13 0.6219558097e10 / 0.428401733760e12 0.443019868399e12 / 0.4284017337600e13 -0.13731270505e11 / 0.64260260064e11 0.310830296467e12 / 0.171360693504e12 -0.14432772918527e14 / 0.2142008668800e13 0.27102479467823e14 / 0.2570410402560e13 -0.1216032192203e13 / 0.153000619200e12; 0.5442887371e10 / 0.306001238400e12 -0.7313844559e10 / 0.166909766400e12 -0.3707981e7 / 0.2318191200e10 0.2933596129e10 / 0.40800165120e11 -0.55284274391e11 / 0.183600743040e12 0.58102695589e11 / 0.22666758400e11 -0.1216032192203e13 / 0.153000619200e12 0.20799922829107e14 / 0.1836007430400e13;];
+
+    M4(1:8,1:8)=M4_U;
+
+    M4(m-7:m,m-7:m)=rot90(  M4_U ,2 );
+    M4=M4/h^3;
+
+    S3_U=[-0.5e1 / 0.2e1 9 -12 7 -0.3e1 / 0.2e1;]/h^3;
+    S3_1=sparse(1,m);
+    S3_1(1:5)=S3_U;
+    S3_m=sparse(1,m);
+    S3_m(m-4:m)=fliplr(-S3_U);
+    S3_1 = S3_1';
+    S3_m = S3_m';
+
+    D4=HI*(M4-e_1*S3_1'+e_m*S3_m'  + S_1*S2_1'-S_m*S2_m');
+
+end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/BlockNorm.m
--- a/+sbp/BlockNorm.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-classdef BlockNorm < sbp.OpSet
-    properties
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
-        borrowing % Struct with borrowing limits for different norm matrices
-        m % Number of grid points.
-        h % Step size
-    end
-
-
-
-    methods
-        function obj = BlockNorm(m,h,order)
-
-            if order == 4
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.blocknorm4(m,h);
-            elseif order == 6
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.blocknorm6(m,h);
-            elseif order == 8
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.blocknorm8(m,h);
-            elseif order == 10
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.blocknorm10(m,h);
-            else
-                error('Invalid operator order %d.',order);
-            end
-
-            obj.h = h;
-            obj.m = m;
-
-            obj.norms.H = H;
-            obj.norms.HI = HI;
-            obj.norms.Q = Q;
-            obj.norms.M = M;
-
-            obj.boundary.e_1 = e_1;
-            obj.boundary.S_1 = S_1;
-
-            obj.boundary.e_m = e_m;
-            obj.boundary.S_m = S_m;
-
-            obj.derivatives.D1 = D1;
-            obj.derivatives.D2 = D2;
-        end
-    end
-
-    methods (Static)
-        function lambda = smallestGrid(obj)
-            error('Not implmented')
-        end
-    end
-
-
-
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/D1Nonequidistant.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/D1Nonequidistant.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,94 @@
+classdef D1Nonequidistant < sbp.OpSet
+    properties
+        D1 % SBP operator approximating first derivative
+        H % Norm matrix
+        HI % H^-1
+        Q % Skew-symmetric matrix
+        e_l % Left boundary operator
+        e_r % Right boundary operator
+        m % Number of grid points.
+        h % Step size
+        x % grid
+        borrowing % Struct with borrowing limits for different norm matrices
+    end
+    
+    methods
+        function obj = D1Nonequidistant(m,lim,order,option)
+            
+            default_arg('option','Accurate');
+            % 'Accurate' operators are optimized for accuracy
+            % 'Minimal' operators have the smallest possible boundary
+            %  closure
+            
+            x_l = lim{1};
+            x_r = lim{2};
+            L = x_r-x_l;
+            
+            switch option
+                
+                case {'Accurate','accurate','A'}
+                    
+                    if order == 4
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_4(m,L);
+                    elseif order == 6
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_6(m,L);
+                    elseif order == 8
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_8(m,L);
+                    elseif order == 10
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_10(m,L);
+                    elseif order == 12
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_12(m,L);
+                    else
+                        error('Invalid operator order %d.',order);
+                    end
+                    
+                case {'Minimal','minimal','M'}
+                    
+                    if order == 4
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_minimal_4(m,L);
+                    elseif order == 6
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_minimal_6(m,L);
+                    elseif order == 8
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_minimal_8(m,L);
+                    elseif order == 10
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_minimal_10(m,L);
+                    elseif order == 12
+                        [obj.D1,obj.H,obj.x,obj.h] = ...
+                            sbp.implementations.d1_noneq_minimal_12(m,L);
+                    else
+                        error('Invalid operator order %d.',order);
+                    end
+                    
+            end
+            
+            obj.x = obj.x + x_l;
+            
+            obj.e_l = sparse(m,1);
+            obj.e_r = sparse(m,1);
+            obj.e_l(1) = 1;
+            obj.e_r(m) = 1;
+            
+            obj.HI = inv(obj.H);
+            obj.Q = obj.H*obj.D1 - obj.e_r*obj.e_r' + obj.e_l*obj.e_l';
+            
+            obj.borrowing = [];
+            
+        end
+    end
+    
+
+end
+
+
+
+
+
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/D1Upwind.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/D1Upwind.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,65 @@
+classdef D1Upwind < sbp.OpSet
+    properties
+        D1 % SBP operator approximating first derivative
+        H % Norm matrix
+        HI % H^-1
+        Q % Skew-symmetric matrix
+        e_l % Left boundary operator
+        e_r % Right boundary operator
+        m % Number of grid points.
+        h % Step size
+        x % grid
+        borrowing % Struct with borrowing limits for different norm matrices
+    end
+
+    methods
+        function obj = D1Upwind(m,lim,order)
+            
+            x_l = lim{1};
+            x_r = lim{2};
+            L = x_r-x_l;
+            obj.h = L/(m-1);
+            obj.x = linspace(x_l,x_r,m)';
+
+            switch order
+                case 2
+                    [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ...
+                        sbp.implementations.d1_upwind_2(m,obj.h);
+                case 3
+                    [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ...
+                        sbp.implementations.d1_upwind_3(m,obj.h);
+                case 4
+                    [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ...
+                        sbp.implementations.d1_upwind_4(m,obj.h);
+                case 5
+                    [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ...
+                        sbp.implementations.d1_upwind_5(m,obj.h);
+                case 6
+                    [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ...
+                        sbp.implementations.d1_upwind_6(m,obj.h);
+                case 7
+                    [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ...
+                        sbp.implementations.d1_upwind_7(m,obj.h);
+                case 8
+                    [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ...
+                        sbp.implementations.d1_upwind_8(m,obj.h);
+                case 9
+                    [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ...
+                        sbp.implementations.d1_upwind_9(m,obj.h);
+                otherwise
+                    error('Invalid operator order %d.',order);
+            end
+
+            obj.m = m;
+        	obj.borrowing = [];
+
+        end
+    end
+
+
+end
+
+
+
+
+
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/D2BlockNorm.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/D2BlockNorm.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,57 @@
+classdef D2BlockNorm < sbp.OpSet
+    properties
+        D1 % SBP operator approximating first derivative
+        H % Norm matrix
+        HI % H^-1
+        Q % Skew-symmetric matrix
+        e_l % Left boundary operator
+        e_r % Right boundary operator
+        D2 % SBP operator for second derivative
+        M % Norm matrix, second derivative
+        d1_l % Left boundary first derivative
+        d1_r % Right boundary first derivative
+        m % Number of grid points.
+        h % Step size
+        x % grid
+        borrowing % Struct with borrowing limits for different norm matrices
+    end
+
+
+
+    methods
+        function obj = D2BlockNorm(m,lim,order)
+
+            x_l = lim{1};
+            x_r = lim{2};
+            L = x_r-x_l;
+            obj.h = L/(m-1);
+            obj.x = linspace(x_l,x_r,m)';
+
+            if order == 4
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] = ...
+                    sbp.implementations.d2_blocknorm_4(m,obj.h);
+            elseif order == 6
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] = ...
+                    sbp.implementations.d2_blocknorm_6(m,obj.h);
+            elseif order == 8
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] = ...
+                    sbp.implementations.d2_blocknorm_8(m,obj.h);
+            elseif order == 10
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] = ...
+                    sbp.implementations.d2_blocknorm_10(m,obj.h);
+            else
+                error('Invalid operator order %d.',order);
+            end
+
+            obj.m = m;
+
+        end
+    end
+
+
+
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/D2Standard.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/D2Standard.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,76 @@
+classdef D2Standard < sbp.OpSet
+    properties
+        D1 % SBP operator approximating first derivative
+        H % Norm matrix
+        HI % H^-1
+        Q % Skew-symmetric matrix
+        e_l % Left boundary operator
+        e_r % Right boundary operator
+        D2 % SBP operator for second derivative
+        M % Norm matrix, second derivative
+        d1_l % Left boundary first derivative
+        d1_r % Right boundary first derivative
+        m % Number of grid points.
+        h % Step size
+        x % grid
+        borrowing % Struct with borrowing limits for different norm matrices
+        
+    end
+
+    methods
+        function obj = D2Standard(m,lim,order)
+
+            x_l = lim{1};
+            x_r = lim{2};
+            L = x_r-x_l;
+            obj.h = L/(m-1);
+            obj.x = linspace(x_l,x_r,m)';
+
+            if order == 2
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
+                sbp.implementations.d2_2(m,obj.h);
+                obj.borrowing.M.S = 0.4000;
+            elseif order == 4
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
+                sbp.implementations.d2_4(m,obj.h);
+                obj.borrowing.M.S = 0.2508;
+            elseif order == 6
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
+                sbp.implementations.d2_6(m,obj.h);
+                obj.borrowing.M.S = 0.1878;
+            elseif order == 8
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
+                sbp.implementations.d2_8(m,obj.h);
+                obj.borrowing.M.S = 0.0015;
+            elseif order == 10
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
+                sbp.implementations.d2_10(m,obj.h);
+                obj.borrowing.M.S = 0.0351;
+            elseif order == 12
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
+                sbp.implementations.d2_12(m,obj.h);
+                obj.borrowing.M.S = []; % Need to compute!
+                warning('D2=D1*D1 (wide stencil).');
+                warning('The borrowing constant has not been computed.')
+            else
+                error('Invalid operator order %d.',order);
+            end
+
+            obj.m = m;
+
+        end
+    end
+
+
+end
+
+
+
+
+
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/D2Variable.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/D2Variable.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,49 @@
+classdef D2Variable < sbp.OpSet
+    properties
+        D1 % SBP operator approximating first derivative
+        H % Norm matrix
+        HI % H^-1
+        Q % Skew-symmetric matrix
+        e_l % Left boundary operator
+        e_r % Right boundary operator
+        D2 % SBP operator for second derivative
+        M % Norm matrix, second derivative
+        d1_l % Left boundary first derivative
+        d1_r % Right boundary first derivative
+        m % Number of grid points.
+        h % Step size
+        x % grid
+        borrowing % Struct with borrowing limits for different norm matrices
+    end
+
+    methods
+        function obj = D2Variable(m,lim,order)
+            
+            x_l = lim{1};
+            x_r = lim{2};
+            L = x_r-x_l;
+            obj.h = L/(m-1);
+            obj.x = linspace(x_l,x_r,m)';
+
+            switch order
+                case 4
+                    [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
+                        obj.e_r, obj.d1_l, obj.d1_r] = ...
+                        sbp.implementations.d2_variable_4(m,obj.h);
+                    obj.borrowing.M.S = 0.2505765857;
+                otherwise
+                    error('Invalid operator order %d.',order);
+            end
+
+            obj.m = m;
+            obj.M = [];
+
+        end
+    end
+
+end
+
+
+
+
+
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/D4Compatible.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/D4Compatible.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,75 @@
+classdef D4Compatible < sbp.OpSet
+    properties
+        D1 % SBP operator approximating first derivative
+        H % Norm matrix
+        HI % H^-1
+        Q % Skew-symmetric matrix
+        e_l % Left boundary operator
+        e_r % Right boundary operator
+        D2 % SBP operator for second derivative
+        M % Norm matrix, second derivative
+        d1_l % Left boundary first derivative
+        d1_r % Right boundary first derivative
+        D3 % SBP operator for third derivative
+        Q3 % Skew-symmetric matrix in third derivative
+        d2_l % Left boundary second derivative
+        d2_r % Right boundary second derivative
+        D4 % SBP operator for fourth derivative
+        M4 % Norm matrix, fourth derivative
+        d3_l % Left boundary third derivative
+        d3_r % Right boundary third derivative
+        m % Number of grid points.
+        h % Step size
+        x % grid
+        borrowing % Struct with borrowing limits for different norm matrices
+    end
+
+
+
+    methods
+        function obj = D4Compatible(m,lim,order)
+            
+            
+            x_l = lim{1};
+            x_r = lim{2};
+            L = x_r-x_l;
+            obj.h = L/(m-1);
+            obj.x = linspace(x_l,x_r,m)';
+
+            if order == 2
+                [obj.H, obj.HI, obj.D1, obj.D4, obj.e_l, obj.e_r, obj.M4,...
+                 obj.Q, obj.d2_l, obj.d2_r, obj.d3_l, obj.d3_r,...
+                    obj.d1_l, obj.d1_r] =...
+                    sbp.implementations.d4_compatible_2(m,obj.h);
+                obj.borrowing.N.S2 = 0.7500;
+                obj.borrowing.N.S3 = 0.3000;
+            elseif order == 4
+                [obj.H, obj.HI, obj.D1, obj.D4, obj.e_l, obj.e_r, obj.M4,...
+                 obj.Q, obj.d2_l, obj.d2_r, obj.d3_l, obj.d3_r,...
+                    obj.d1_l, obj.d1_r] =...
+                    sbp.implementations.d4_compatible_4(m,obj.h);
+                obj.borrowing.N.S2 = 0.4210;
+                obj.borrowing.N.S3 = 0.7080;
+            elseif order == 6
+                [obj.H, obj.HI, obj.D1, obj.D4, obj.e_l, obj.e_r, obj.M4,...
+                 obj.Q, obj.d2_l, obj.d2_r, obj.d3_l, obj.d3_r,...
+                    obj.d1_l, obj.d1_r] =...
+                    sbp.implementations.d4_compatible_6(m,obj.h);
+                obj.borrowing.N.S2 = 0.06925;
+                obj.borrowing.N.S3 = 0.05128;
+            else
+                error('Invalid operator order.');
+            end
+
+            obj.m = m;
+
+            obj.D2 = [];
+            obj.D3 = [];
+
+
+        end
+    end
+
+
+
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/D4CompatibleVariable.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/D4CompatibleVariable.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,74 @@
+classdef D4CompatibleVariable < sbp.OpSet
+    properties
+        D1 % SBP operator approximating first derivative
+        H % Norm matrix
+        HI % H^-1
+        Q % Skew-symmetric matrix
+        e_l % Left boundary operator
+        e_r % Right boundary operator
+        D2 % SBP operator for second derivative
+        M % Norm matrix, second derivative
+        d1_l % Left boundary first derivative
+        d1_r % Right boundary first derivative
+        D3 % SBP operator for third derivative
+        Q3 % Skew-symmetric matrix in third derivative
+        d2_l % Left boundary second derivative
+        d2_r % Right boundary second derivative
+        D4 % SBP operator for fourth derivative
+        M4 % Norm matrix, fourth derivative
+        d3_l % Left boundary third derivative
+        d3_r % Right boundary third derivative
+        m % Number of grid points.
+        h % Step size
+        x % grid
+        borrowing % Struct with borrowing limits for different norm matrices
+    end
+
+
+
+    methods
+        function obj = D4CompatibleVariable(m,lim,order)
+            
+            x_l = lim{1};
+            x_r = lim{2};
+            L = x_r-x_l;
+            obj.h = L/(m-1);
+            obj.x = linspace(x_l,x_r,m)';
+
+            if order == 2
+                [obj.H, obj.HI, ~, obj.D2, ~, obj.D4, obj.e_l, obj.e_r,...
+                 obj.M4, ~, obj.d2_l, obj.d2_r, obj.d3_l,...
+                    obj.d3_r, obj.d1_l, obj.d1_r] =...
+                    sbp.implementations.d4_compatible_halfvariable_2(m,obj.h);
+                obj.borrowing.N.S2 = 1.2500;
+                obj.borrowing.N.S3 = 0.4000;
+            elseif order == 4
+                [obj.H, obj.HI, obj.D2, obj.D4, obj.e_l, obj.e_r, obj.M4,...
+                 obj.d2_l, obj.d2_r, obj.d3_l, obj.d3_r, obj.d1_l,...
+                    obj.d1_r] =...
+                    sbp.implementations.d4_compatible_halfvariable_4(m,obj.h);
+                obj.borrowing.N.S2 = 0.5055;
+                obj.borrowing.N.S3 = 0.9290;
+            elseif order == 6
+                [obj.H, obj.HI, obj.D2, obj.D4, obj.e_l, obj.e_r, obj.M4,...
+                 obj.d2_l, obj.d2_r, obj.d3_l, obj.d3_r, obj.d1_l,...
+                    obj.d1_r] =...
+                    sbp.implementations.d4_compatible_halfvariable_6(m,obj.h);
+                obj.borrowing.N.S2 = 0.3259;
+                obj.borrowing.N.S3 = 0.1580;
+            else
+                error('Invalid operator order.');
+            end
+
+            obj.m = m;
+            
+            obj.D1 = [];
+            obj.D3 = [];
+
+
+        end
+    end
+
+
+
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/D4Standard.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/+sbp/D4Standard.m	Mon Sep 12 12:53:02 2016 +0200
@@ -0,0 +1,62 @@
+classdef D4Standard < sbp.OpSet
+    properties
+        D1 % SBP operator approximating first derivative
+        H % Norm matrix
+        HI % H^-1
+        Q % Skew-symmetric matrix
+        e_l % Left boundary operator
+        e_r % Right boundary operator
+        D2 % SBP operator for second derivative
+        M % Norm matrix, second derivative
+        d1_l % Left boundary first derivative
+        d1_r % Right boundary first derivative
+        D3 % SBP operator for third derivative
+        Q3 % Skew-symmetric matrix in third derivative
+        d2_l % Left boundary second derivative
+        d2_r % Right boundary second derivative
+        D4 % SBP operator for fourth derivative
+        M4 % Norm matrix, fourth derivative
+        d3_l % Left boundary third derivative
+        d3_r % Right boundary third derivative
+        m % Number of grid points.
+        h % Step size
+        x % grid
+        borrowing % Struct with borrowing limits for different norm matrices
+    end
+
+
+
+    methods
+        function obj = D4Standard(m,lim,order)
+            
+            x_l = lim{1};
+            x_r = lim{2};
+            L = x_r-x_l;
+            obj.h = L/(m-1);
+            obj.x = linspace(x_l,x_r,m)';
+
+            if order == 4
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.D3, obj.D4,...
+                 obj.e_l, obj.e_r, obj.M, obj.M4, obj.Q, obj.Q3, obj.d2_l,...
+                 obj.d2_r, obj.d3_l, obj.d3_r, obj.d1_l, obj.d1_r] = ...
+                  sbp.implementations.d4_4(m,obj.h);
+                obj.borrowing.N.S2 = 0.5485;
+                obj.borrowing.N.S3 = 1.0882;
+            elseif order == 6
+                [obj.H, obj.HI, obj.D1, obj.D2, obj.D3, obj.D4,...
+                 obj.e_l, obj.e_r, obj.M, obj.M4, obj.Q, obj.Q3, obj.d2_l,...
+                 obj.d2_r, obj.d3_l, obj.d3_r, obj.d1_l, obj.d1_r] = ...
+                  sbp.implementations.d4_6(m,obj.h);
+                obj.borrowing.N.S2 = 0.3227;
+                obj.borrowing.N.S3 = 0.1568;
+            else
+                error('Invalid operator order %d.',order);
+            end
+
+            obj.m = m;
+
+        end
+    end
+
+
+end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/Higher.m
--- a/+sbp/Higher.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-classdef Higher < sbp.OpSet
-    properties
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
-        borrowing % Struct with borrowing limits for different norm matrices
-        m % Number of grid points.
-        h % Step size
-    end
-
-
-
-    methods
-        function obj = Higher(m,h,order)
-
-            if order == 4
-                [H, HI, D1, D2, D3, D4, e_1, e_m, M, M4,Q, Q3, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher4(m,h);
-                obj.borrowing.N.S2 = 0.5485;
-                obj.borrowing.N.S3 = 1.0882;
-            elseif order == 6
-                [H, HI, D1, D2, D3, D4, e_1, e_m, M, M4,Q, Q3, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher6(m,h);
-                obj.borrowing.N.S2 = 0.3227;
-                obj.borrowing.N.S3 = 0.1568;
-            else
-                error('Invalid operator order %d.',order);
-            end
-
-            obj.h = h;
-            obj.m = m;
-
-            obj.norms.H = H;
-            obj.norms.HI = HI;
-            obj.norms.Q = Q;
-            obj.norms.M = M;
-            obj.norms.Q3 = Q3;
-            obj.norms.N = M4;
-
-            obj.boundary.e_1 = e_1;
-            obj.boundary.S_1 = S_1;
-            obj.boundary.S2_1 = S2_1;
-            obj.boundary.S3_1 = S3_1;
-
-            obj.boundary.e_m = e_m;
-            obj.boundary.S_m = S_m;
-            obj.boundary.S2_m = S2_m;
-            obj.boundary.S3_m = S3_m;
-
-            obj.derivatives.D1 = D1;
-            obj.derivatives.D2 = D2;
-            obj.derivatives.D3 = D3;
-            obj.derivatives.D4 = D4;
-
-        end
-    end
-
-    methods (Static)
-        function lambda = smallestGrid(obj)
-            error('Not implmented')
-        end
-    end
-
-
-
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/HigherCompatible.m
--- a/+sbp/HigherCompatible.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,64 +0,0 @@
-classdef HigherCompatible < sbp.OpSet
-    properties
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
-        borrowing % Struct with borrowing limits for different norm matrices
-        m % Number of grid points.
-        h % Step size
-    end
-
-
-
-    methods
-        function obj = HigherCompatible(m,h,order)
-
-            if order == 2
-                [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher_compatible2(m,h);
-                obj.borrowing.N.S2 = 0.7500;
-                obj.borrowing.N.S3 = 0.3000;
-            elseif order == 4
-                [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher_compatible4(m,h);
-                obj.borrowing.N.S2 = 0.4210;
-                obj.borrowing.N.S3 = 0.7080;
-            elseif order == 6
-                [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher_compatible6(m,h);
-                obj.borrowing.N.S2 = 0.06925;
-                obj.borrowing.N.S3 = 0.05128;
-            else
-                error('Invalid operator order.');
-            end
-
-            obj.h = h;
-            obj.m = m;
-
-            obj.norms.H = H;
-            obj.norms.HI = HI;
-            obj.norms.Q = Q;
-            obj.norms.N = M4;
-
-            obj.boundary.e_1 = e_1;
-            obj.boundary.S_1 = S_1;
-            obj.boundary.S2_1 = S2_1;
-            obj.boundary.S3_1 = S3_1;
-
-            obj.boundary.e_m = e_m;
-            obj.boundary.S_m = S_m;
-            obj.boundary.S2_m = S2_m;
-            obj.boundary.S3_m = S3_m;
-
-            obj.derivatives.D1 = D1;
-            obj.derivatives.D4 = D4;
-
-        end
-    end
-
-    methods (Static)
-        function lambda = smallestGrid(obj)
-            error('Not implmented')
-        end
-    end
-
-
-
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/HigherCompatibleVariable.m
--- a/+sbp/HigherCompatibleVariable.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-classdef HigherCompatibleVariable < sbp.OpSet
-    properties
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
-        borrowing % Struct with borrowing limits for different norm matrices
-        m % Number of grid points.
-        h % Step size
-    end
-
-
-
-    methods
-        function obj = HigherCompatibleVariable(m,h,order)
-
-            if order == 2
-                [H, HI, D1, D2, D3, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher2_compatible_halfvariable(m,h);
-                obj.borrowing.N.S2 = 1.2500;
-                obj.borrowing.N.S3 = 0.4000;
-            elseif order == 4
-                [H, HI, D2, D4, e_1, e_m, M4, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher4_compatible_halfvariable(m,h);
-                obj.borrowing.N.S2 = 0.5055;
-                obj.borrowing.N.S3 = 0.9290;
-            elseif order == 6
-                [H, HI, D2, D4, e_1, e_m, M4, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher6_compatible_halfvariable(m,h);
-                obj.borrowing.N.S2 = 0.3259;
-                obj.borrowing.N.S3 = 0.1580;
-            else
-                error('Invalid operator order.');
-            end
-
-            obj.h = h;
-            obj.m = m;
-
-            obj.norms.H = H;
-            obj.norms.HI = HI;
-            obj.norms.N = M4;
-
-            obj.boundary.e_1 = e_1;
-            obj.boundary.S_1 = S_1;
-            obj.boundary.S2_1 = S2_1;
-            obj.boundary.S3_1 = S3_1;
-
-            obj.boundary.e_m = e_m;
-            obj.boundary.S_m = S_m;
-            obj.boundary.S2_m = S2_m;
-            obj.boundary.S3_m = S3_m;
-
-            obj.derivatives.D2 = D2;
-            obj.derivatives.D4 = D4;
-
-        end
-    end
-
-    methods (Static)
-        function lambda = smallestGrid(obj)
-            error('Not implmented')
-        end
-    end
-
-
-
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/HigherPeriodic.m
--- a/+sbp/HigherPeriodic.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-classdef HigherPeriodic < sbp.OpSet
-    properties
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
-        borrowing % Struct with borrowing limits for different norm matrices
-        m % Number of grid points.
-        h % Step size
-    end
-
-
-
-    methods
-        function obj = HigherCompatible(m,h,order)
-
-            if order == 2
-                [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher2_compatible(m,h);
-                obj.borrowing.N.S2 = 0.7500;
-                obj.borrowing.N.S3 = 0.3000;
-            elseif order == 4
-
-                [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher4_compatible(m,h);
-                obj.borrowing.N.S2 = 0.4210;
-                obj.borrowing.N.S3 = 0.7080;
-            elseif order == 6
-                [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher6_compatible(m,h);
-                obj.borrowing.N.S2 = 0.06925;
-                obj.borrowing.N.S3 = 0.05128;
-            else
-                error('Invalid operator order.');
-            end
-
-            obj.h = h;
-            obj.m = m;
-
-            obj.norms.H = H;
-            obj.norms.HI = HI;
-            obj.norms.Q = Q;
-            obj.norms.N = M4;
-
-            obj.boundary.e_1 = e_1;
-            obj.boundary.S_1 = S_1;
-            obj.boundary.S2_1 = S2_1;
-            obj.boundary.S3_1 = S3_1;
-
-            obj.boundary.e_m = e_m;
-            obj.boundary.S_m = S_m;
-            obj.boundary.S2_m = S2_m;
-            obj.boundary.S3_m = S3_m;
-
-            obj.derivatives.D1 = D1;
-            obj.derivatives.D4 = D4;
-
-        end
-    end
-
-    methods (Static)
-        function lambda = smallestGrid(obj)
-            error('Not implmented')
-        end
-    end
-
-
-
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/OpSet.m
--- a/+sbp/OpSet.m	Mon Sep 12 11:14:00 2016 +0200
+++ b/+sbp/OpSet.m	Mon Sep 12 12:53:02 2016 +0200
@@ -1,18 +1,9 @@
 classdef (Abstract) OpSet
     properties (Abstract)
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
         borrowing % Struct with borrowing limits for different norm matrices
         m % Number of grid points.
         h % Step size
+        x % Grid
     end
 
-    methods (Abstract)
-
-    end
-
-    methods (Abstract, Static)
-        lambda = smallestGrid()
-    end
 end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/Ordinary.m
--- a/+sbp/Ordinary.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,63 +0,0 @@
-classdef Ordinary < sbp.OpSet
-    properties
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
-        borrowing % Struct with borrowing limits for different norm matrices
-        m % Number of grid points.
-        h % Step size
-    end
-
-    methods
-        function obj = Ordinary(m,h,order)
-
-            if order == 2
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.ordinary2(m,h);
-                obj.borrowing.M.S = 0.4000;
-            elseif order == 4
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.ordinary4(m,h);
-                obj.borrowing.M.S = 0.2508;
-            elseif order == 6
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.ordinary6(m,h);
-                obj.borrowing.M.S = 0.1878;
-            elseif order == 8
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.ordinary8(m,h);
-                obj.borrowing.M.S = 0.0015;
-            elseif order == 10
-                [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = sbp.ordinary10(m,h);
-                obj.borrowing.M.S = 0.0351;
-            else
-                error('Invalid operator order %d.',order);
-            end
-
-            obj.h = h;
-            obj.m = m;
-
-            obj.norms.H = H;
-            obj.norms.HI = HI;
-            obj.norms.Q = Q;
-            obj.norms.M = M;
-
-            obj.boundary.e_1 = e_1;
-            obj.boundary.S_1 = S_1;
-
-            obj.boundary.e_m = e_m;
-            obj.boundary.S_m = S_m;
-
-            obj.derivatives.D1 = D1;
-            obj.derivatives.D2 = D2;
-
-        end
-    end
-
-    methods (Static)
-        function lambda = smallestGrid(obj)
-            error('Not implmented')
-        end
-    end
-end
-
-
-
-
-
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/Upwind.m
--- a/+sbp/Upwind.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-classdef Upwind < sbp.OpSet
-    properties
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
-        borrowing % Struct with borrowing limits for different norm matrices
-        m % Number of grid points.
-        h % Step size
-    end
-
-    methods
-        function obj = Upwind(m,h,order)
-
-            switch order
-                case 2
-                    [H, HI, Dp, Dm, e_1, e_m] = sbp.upwind2(m,h);
-                case 3
-                    [H, HI, Dp, Dm, e_1, e_m] = sbp.upwind3(m,h);
-                case 4
-                    [H, HI, Dp, Dm, e_1, e_m] = sbp.upwind4(m,h);
-                case 5
-                    [H, HI, Dp, Dm, e_1, e_m] = sbp.upwind5(m,h);
-                case 6
-                    [H, HI, Dp, Dm, e_1, e_m] = sbp.upwind6(m,h);
-                case 7
-                    [H, HI, Dp, Dm, e_1, e_m] = sbp.upwind7(m,h);
-                case 8
-                    [H, HI, Dp, Dm, e_1, e_m] = sbp.upwind8(m,h);
-                case 9
-                    [H, HI, Dp, Dm, e_1, e_m] = sbp.upwind9(m,h);
-                otherwise
-                    error('Invalid operator order %d.',order);
-            end
-
-            obj.h = h;
-            obj.m = m;
-
-            obj.norms.H = H;
-            obj.norms.HI = HI;
-
-            obj.boundary.e_1 = e_1;
-            obj.boundary.e_m = e_m;
-
-            obj.derivatives.Dp = Dp;
-            obj.derivatives.Dm = Dm;
-        end
-    end
-
-    methods (Static)
-        function lambda = smallestGrid(obj)
-            error('Not implmented')
-        end
-    end
-end
-
-
-
-
-
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/Variable.m
--- a/+sbp/Variable.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,52 +0,0 @@
-classdef Variable < sbp.OpSet
-    properties
-        norms % Struct containing norm matrices such as H,Q, M
-        boundary  % Struct contanging vectors for boundry point approximations
-        derivatives % Struct containging differentiation operators
-        borrowing % Struct with borrowing limits for different norm matrices
-        m % Number of grid points.
-        h % Step size
-    end
-
-    methods
-        function obj = Variable(m,h,order)
-
-            switch order
-                case 4
-                    [H, HI, D1, D2, e_1, e_m, S_1, S_m] = sbp.variable4(m,h);
-                    obj.borrowing.M.S = 0.2505765857;
-                otherwise
-                    error('Invalid operator order %d.',order);
-            end
-
-            obj.h = h;
-            obj.m = m;
-
-            obj.norms.H = H;
-            obj.norms.HI = HI;
-            % obj.norms.Q = Q;
-            % obj.norms.M = M;
-
-            obj.boundary.e_1 = e_1;
-            obj.boundary.S_1 = S_1;
-
-            obj.boundary.e_m = e_m;
-            obj.boundary.S_m = S_m;
-
-            obj.derivatives.D1 = D1;
-            obj.derivatives.D2 = D2;
-
-        end
-    end
-
-    methods (Static)
-        function lambda = smallestGrid(obj)
-            error('Not implmented')
-        end
-    end
-end
-
-
-
-
-
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/blocknorm10.m
--- a/+sbp/blocknorm10.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = blocknorm10(m,h)
-    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;];
-
-
-    H=eye(m);
-    H(1:9,1:9)=H_U;
-    H(m-8:m,m-8:m)=flipud( fliplr(H_U(1:9,1:9) ) );
-    H=H*h;
-    HI=inv(H);
-
-    Q=1/1260*diag(ones(m-5,1),5)-5/504*diag(ones(m-4,1),4)+5/84*diag(ones(m-3,1),3)-5/21*diag(ones(m-2,1),2)+5/6*diag(ones(m-1,1),1)-5/6*diag(ones(m-1,1),-1)+5/21*diag(ones(m-2,1),-2)-5/84*diag(ones(m-3,1),-3)+5/504*diag(ones(m-4,1),-4)-1/1260*diag(ones(m-5,1),-5) ;
-
-    Q_U = [-0.1e1 / 0.2e1 0.78249683e8 / 0.71442000e8 -0.28290472447e11 / 0.18289152000e11 0.4285528063e10 / 0.2032128000e10 -0.3924872557e10 / 0.1828915200e10 0.2856344621e10 / 0.1828915200e10 -0.1598284927e10 / 0.2032128000e10 0.4652402687e10 / 0.18289152000e11 -0.731623e6 / 0.17860500e8; -0.78249683e8 / 0.71442000e8 0 0.5351945471e10 / 0.2032128000e10 -0.4078428731e10 / 0.1143072000e10 0.4879509877e10 / 0.1219276800e10 -0.1273709579e10 / 0.381024000e9 0.7433128649e10 / 0.3657830400e10 -0.1239008e7 / 0.1488375e7 0.21251483e8 / 0.124416000e9; 0.28290472447e11 / 0.18289152000e11 -0.5351945471e10 / 0.2032128000e10 0 0.6701592799e10 / 0.2612736000e10 -0.57535927e8 / 0.17418240e8 0.3058732543e10 / 0.870912000e9 -0.28821953e8 / 0.10206000e8 0.1858901437e10 / 0.1219276800e10 -0.2363118211e10 / 0.6096384000e10; -0.4285528063e10 / 0.2032128000e10 0.4078428731e10 / 0.1143072000e10 -0.6701592799e10 / 0.2612736000e10 0 0.52016695e8 / 0.20901888e8 -0.3777923e7 / 0.1275750e7 0.123333949e9 / 0.41472000e8 -0.2256321727e10 / 0.1143072000e10 0.1058261459e10 / 0.1828915200e10; 0.3924872557e10 / 0.1828915200e10 -0.4879509877e10 / 0.1219276800e10 0.57535927e8 / 0.17418240e8 -0.52016695e8 / 0.20901888e8 0 0.125390297e9 / 0.58060800e8 -0.609569351e9 / 0.261273600e9 0.438488399e9 / 0.243855360e9 -0.14244569e8 / 0.24385536e8; -0.2856344621e10 / 0.1828915200e10 0.1273709579e10 / 0.381024000e9 -0.3058732543e10 / 0.870912000e9 0.3777923e7 / 0.1275750e7 -0.125390297e9 / 0.58060800e8 0 0.4624381729e10 / 0.2612736000e10 -0.484096919e9 / 0.381024000e9 0.2676438019e10 / 0.6096384000e10; 0.1598284927e10 / 0.2032128000e10 -0.7433128649e10 / 0.3657830400e10 0.28821953e8 / 0.10206000e8 -0.123333949e9 / 0.41472000e8 0.609569351e9 / 0.261273600e9 -0.4624381729e10 / 0.2612736000e10 0 0.21500967689e11 / 0.18289152000e11 -0.7199454721e10 / 0.18289152000e11; -0.4652402687e10 / 0.18289152000e11 0.1239008e7 / 0.1488375e7 -0.1858901437e10 / 0.1219276800e10 0.2256321727e10 / 0.1143072000e10 -0.438488399e9 / 0.243855360e9 0.484096919e9 / 0.381024000e9 -0.21500967689e11 / 0.18289152000e11 0 0.761653e6 / 0.882000e6; 0.731623e6 / 0.17860500e8 -0.21251483e8 / 0.124416000e9 0.2363118211e10 / 0.6096384000e10 -0.1058261459e10 / 0.1828915200e10 0.14244569e8 / 0.24385536e8 -0.2676438019e10 / 0.6096384000e10 0.7199454721e10 / 0.18289152000e11 -0.761653e6 / 0.882000e6 0;];
-
-    Q(1:9,1:9)=Q_U;
-    Q(m-8:m,m-8:m)=flipud( fliplr(-Q_U(1:9,1:9) ) );
-
-    D1=HI*Q;
-
-    M_U =[0.3812926003e10 / 0.2438553600e10 -0.5433856529e10 / 0.1741824000e10 0.4187462879e10 / 0.1045094400e10 -0.65635105447e11 / 0.12192768000e11 0.1457682577e10 / 0.270950400e9 -0.27884016067e11 / 0.7315660800e10 0.22304839493e11 / 0.12192768000e11 -0.188132543e9 / 0.348364800e9 0.42711619e8 / 0.571536000e9; -0.5433885329e10 / 0.1741824000e10 0.23985229969e11 / 0.2286144000e10 -0.10208460799e11 / 0.571536000e9 0.8828370001e10 / 0.381024000e9 -0.12306735263e11 / 0.522547200e9 0.39313626089e11 / 0.2286144000e10 -0.4380200287e10 / 0.508032000e9 0.192498023e9 / 0.71442000e8 -0.14565232681e11 / 0.36578304000e11; 0.29313778073e11 / 0.7315660800e10 -0.10209211399e11 / 0.571536000e9 0.24157533391e11 / 0.653184000e9 -0.6561725111e10 / 0.130636800e9 0.26490755639e11 / 0.522547200e9 -0.352801289e9 / 0.9331200e7 0.401374423e9 / 0.20412000e8 -0.29541854057e11 / 0.4572288000e10 0.7396364989e10 / 0.7315660800e10; -0.65653163047e11 / 0.12192768000e11 0.8832999601e10 / 0.381024000e9 -0.6566554871e10 / 0.130636800e9 0.1575758731e10 / 0.21772800e8 -0.2571648133e10 / 0.34836480e8 0.556969019e9 / 0.10206000e8 -0.3139265911e10 / 0.108864000e9 0.165424529e9 / 0.16934400e8 -0.11623567549e11 / 0.7315660800e10; 0.1458632977e10 / 0.270950400e9 -0.86260417241e11 / 0.3657830400e10 0.3792749777e10 / 0.74649600e8 -0.2576699653e10 / 0.34836480e8 0.157840723e9 / 0.2041200e7 -0.29838889141e11 / 0.522547200e9 0.5142742211e10 / 0.174182400e9 -0.36792522023e11 / 0.3657830400e10 0.2438136689e10 / 0.1463132160e10; -0.27909676867e11 / 0.7315660800e10 0.39389053289e11 / 0.2286144000e10 -0.2478149663e10 / 0.65318400e8 0.559214069e9 / 0.10206000e8 -0.29914661941e11 / 0.522547200e9 0.2843819551e10 / 0.65318400e8 -0.14816015149e11 / 0.653184000e9 0.1677001673e10 / 0.228614400e9 -0.44441740171e11 / 0.36578304000e11; 0.3188985299e10 / 0.1741824000e10 -0.626864041e9 / 0.72576000e8 0.57539389e8 / 0.2916000e7 -0.3153500311e10 / 0.108864000e9 0.5162239811e10 / 0.174182400e9 -0.14840163949e11 / 0.653184000e9 0.419025709e9 / 0.31104000e8 -0.138945749e9 / 0.27216000e8 0.591880819e9 / 0.746496000e9; -0.1317440441e10 / 0.2438553600e10 0.192696473e9 / 0.71442000e8 -0.4230355151e10 / 0.653184000e9 0.165983249e9 / 0.16934400e8 -0.36905792423e11 / 0.3657830400e10 0.1679779433e10 / 0.228614400e9 -0.972870443e9 / 0.190512000e9 0.9129544111e10 / 0.2286144000e10 -0.13387742111e11 / 0.7315660800e10; 0.42721069e8 / 0.571536000e9 -0.14572922281e11 / 0.36578304000e11 0.7407199549e10 / 0.7315660800e10 -0.11649228349e11 / 0.7315660800e10 0.349038407e9 / 0.209018880e9 -0.44495912971e11 / 0.36578304000e11 0.29009849731e11 / 0.36578304000e11 -0.13387863071e11 / 0.7315660800e10 0.21585797479e11 / 0.7315660800e10;];
-
-
-    T=[-0.1e1 / 0.3150e4 0.5e1 / 0.1008e4 -0.5e1 / 0.126e3 0.5e1 / 0.21e2 -0.5e1 / 0.3e1 0.5269e4 / 0.1800e4 -0.5e1 / 0.3e1 0.5e1 / 0.21e2 -0.5e1 / 0.126e3 0.5e1 / 0.1008e4 -0.1e1 / 0.3150e4;];
-    M=(T(1)*diag(ones(m-5,1),5)+T(2)*diag(ones(m-4,1),4)+T(3)*diag(ones(m-3,1),3)+T(4)*diag(ones(m-2,1),2)+T(5)*diag(ones(m-1,1),1)+T(7)*diag(ones(m-1,1),-1)+T(8)*diag(ones(m-2,1),-2)+T(9)*diag(ones(m-3,1),-3)+T(10)*diag(ones(m-4,1),-4)+T(11)*diag(ones(m-5,1),-5)+T(6)*diag(ones(m,1),0));
-
-    M(1:9,1:9)=M_U;
-
-    M(m-8:m,m-8:m)=flipud( fliplr( M_U ) );
-    M=M/h;
-
-    DS_U=[0.761e3 / 0.280e3 -8 14 -0.56e2 / 0.3e1 0.35e2 / 0.2e1 -0.56e2 / 0.5e1 0.14e2 / 0.3e1 -0.8e1 / 0.7e1 0.1e1 / 0.8e1;];
-    DS=zeros(m,m);
-    DS(1,1:9)=DS_U;
-    DS(m,m-8:m)=fliplr(DS_U);
-    DS=DS/h;
-
-    D2=HI*(-M+DS);
-
-    % Try adding AD to boundary D1=HI*(Q-D9'*D9)
-    DD_9=zeros(m);
-    d9=[-1 9 -36 84 -126 126 -84 36 -9 1];t9=sum(abs(d9));%d9=d9/t9;
-    DD_9(1:1,1:10)=[d9];
-    DD_9(m:m,m-9:m)=[d9];
-
-
-    ADD=30*h/(t9)*DD_9'*DD_9;
-
-    e_1 = zeros(m,1);
-    e_1(1)= 1;
-    e_m = zeros(m,1);
-    e_m(end)= 1;
-    S_1 = -DS(1,:)';
-    S_m =  DS(end,:)';
-
-    Q = H*D1-(-e_1*e_1' + e_m*e_m');
-    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/blocknorm4.m
--- a/+sbp/blocknorm4.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = blocknorm4(m,h)
-    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;];
-
-
-    H=eye(m);
-    H(1:4,1:4)=H_U;
-    H(m-3:m,m-3:m)=flipud( fliplr(H_U(1:4,1:4) ) );
-    H=H*h;
-    HI=inv(H);
-
-    Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
-
-    Q_U = [-0.1e1 / 0.2e1 0.55e2 / 0.72e2 -0.47e2 / 0.144e3 0.1e1 / 0.16e2; -0.55e2 / 0.72e2 0 0.43e2 / 0.48e2 -0.19e2 / 0.144e3; 0.47e2 / 0.144e3 -0.43e2 / 0.48e2 0 0.47e2 / 0.72e2; -0.1e1 / 0.16e2 0.19e2 / 0.144e3 -0.47e2 / 0.72e2 0;];
-
-    Q(1:4,1:4)=Q_U;
-    Q(m-3:m,m-3:m)=flipud( fliplr(-Q_U(1:4,1:4) ) );
-
-    D1=HI*Q;
-
-    M_U=[0.359e3 / 0.288e3 -0.443e3 / 0.288e3 0.97e2 / 0.288e3 -0.13e2 / 0.288e3; -0.51e2 / 0.32e2 0.325e3 / 0.96e2 -0.191e3 / 0.96e2 0.19e2 / 0.96e2; 0.43e2 / 0.96e2 -0.69e2 / 0.32e2 0.293e3 / 0.96e2 -0.137e3 / 0.96e2; -0.29e2 / 0.288e3 0.89e2 / 0.288e3 -0.427e3 / 0.288e3 0.727e3 / 0.288e3;];
-
-
-
-    M=-(-1/12*diag(ones(m-2,1),2)+16/12*diag(ones(m-1,1),1)+16/12*diag(ones(m-1,1),-1)-1/12*diag(ones(m-2,1),-2)-30/12*diag(ones(m,1),0));
-
-    M(1:4,1:4)=M_U;
-
-    M(m-3:m,m-3:m)=flipud( fliplr( M_U ) );
-    M=M/h;
-
-    DS_U=[0.25e2 / 0.12e2 -4 3 -0.4e1 / 0.3e1 0.1e1 / 0.4e1;];
-    DS=zeros(m,m);
-    DS(1,1:5)=DS_U;
-    DS(m,m-4:m)=fliplr(DS_U);
-    DS=DS/h;
-
-    D2=HI*(-M+DS);
-
-    d3=[-1 3 -3 1];
-    t3=sum(abs(d3));
-    DD_3(1:1,1:4)=[d3];
-    DD_3(m:m,m-3:m)=[d3];
-
-    % This works for wave eq.
-    % For studs interface in 1D no AD is needed.
-    ADD=1*h/(t3)*DD_3'*DD_3;
-
-    e_1 = zeros(m,1);
-    e_1(1)= 1;
-    e_m = zeros(m,1);
-    e_m(end)= 1;
-    S_1 = -DS(1,:)';
-    S_m =  DS(end,:)';
-
-    Q = H*D1-(-e_1*e_1' + e_m*e_m');
-    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/blocknorm6.m
--- a/+sbp/blocknorm6.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = blocknorm6(m,h)
-    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;];
-
-
-    H=eye(m);
-    H(1:6,1:6)=H_U;
-    H(m-5:m,m-5:m)=flipud( fliplr(H_U(1:6,1:6) ) );
-    H=H*h;
-    HI=inv(H);
-
-    Q=(1/60*diag(ones(m-3,1),3)-9/60*diag(ones(m-2,1),2)+45/60*diag(ones(m-1,1),1)-45/60*diag(ones(m-1,1),-1)+9/60*diag(ones(m-2,1),-2)-1/60*diag(ones(m-3,1),-3));
-
-    Q_U = [-0.1e1 / 0.2e1 0.151864337282617e15 / 0.172322427715200e15 -0.251539972254817e15 / 0.344644855430400e15 0.61230525943549e14 / 0.114881618476800e15 -0.80987306509439e14 / 0.344644855430400e15 0.697178163343e12 / 0.13785794217216e14; -0.151864337282617e15 / 0.172322427715200e15 0 0.12350422095979e14 / 0.7658774565120e13 -0.78802251164141e14 / 0.68928971086080e14 0.4229407848431e13 / 0.7658774565120e13 -0.5372490790279e13 / 0.38293872825600e14; 0.251539972254817e15 / 0.344644855430400e15 -0.12350422095979e14 / 0.7658774565120e13 0 0.2217674201683e13 / 0.1723224277152e13 -0.13219134462287e14 / 0.22976323695360e14 0.19660399553981e14 / 0.114881618476800e15; -0.61230525943549e14 / 0.114881618476800e15 0.78802251164141e14 / 0.68928971086080e14 -0.2217674201683e13 / 0.1723224277152e13 0 0.62307836637379e14 / 0.68928971086080e14 -0.84068101764193e14 / 0.344644855430400e15; 0.80987306509439e14 / 0.344644855430400e15 -0.4229407848431e13 / 0.7658774565120e13 0.13219134462287e14 / 0.22976323695360e14 -0.62307836637379e14 / 0.68928971086080e14 0 0.44756810052211e14 / 0.57440809238400e14; -0.697178163343e12 / 0.13785794217216e14 0.5372490790279e13 / 0.38293872825600e14 -0.19660399553981e14 / 0.114881618476800e15 0.84068101764193e14 / 0.344644855430400e15 -0.44756810052211e14 / 0.57440809238400e14 0;];
-
-    Q(1:6,1:6)=Q_U;
-    Q(m-5:m,m-5:m)=flipud( fliplr(-Q_U(1:6,1:6) ) );
-
-    D1=HI*Q;
-
-    M_U=[0.960901171090739e15 / 0.689289710860800e15 -0.502032138770899e15 / 0.229763236953600e15 0.493085196645929e15 / 0.344644855430400e15 -0.329491854944251e15 / 0.344644855430400e15 0.89541920186441e14 / 0.229763236953600e15 -0.50617198740721e14 / 0.689289710860800e15; -0.100483015499831e15 / 0.45952647390720e14 0.807564929223191e15 / 0.137857942172160e15 -0.415779274818991e15 / 0.68928971086080e14 0.80693719872887e14 / 0.22976323695360e14 -0.196663473955997e15 / 0.137857942172160e15 0.37943821632959e14 / 0.137857942172160e15; 0.99938177941669e14 / 0.68928971086080e14 -0.84419552767043e14 / 0.13785794217216e14 0.106922123424097e15 / 0.11488161847680e14 -0.223356054245897e15 / 0.34464485543040e14 0.157526160982357e15 / 0.68928971086080e14 -0.10062402380533e14 / 0.22976323695360e14; -0.68310884976863e14 / 0.68928971086080e14 0.17038649985979e14 / 0.4595264739072e13 -0.231397767539273e15 / 0.34464485543040e14 0.232669188399619e15 / 0.34464485543040e14 -0.1657930371065e13 / 0.510584971008e12 0.34774771016773e14 / 0.68928971086080e14; 0.18789143112277e14 / 0.45952647390720e14 -0.213895716727517e15 / 0.137857942172160e15 0.171024751153381e15 / 0.68928971086080e14 -0.8523669967037e13 / 0.2552924855040e13 0.485768751245399e15 / 0.137857942172160e15 -0.229158724354277e15 / 0.137857942172160e15; -0.51766014925489e14 / 0.689289710860800e15 0.202930494289627e15 / 0.689289710860800e15 -0.54332868549353e14 / 0.114881618476800e15 0.180479548146281e15 / 0.344644855430400e15 -0.1146942437956153e16 / 0.689289710860800e15 0.211001773091419e15 / 0.76587745651200e14;];
-
-
-
-    M=-(2*diag(ones(m-3,1),3)-27*diag(ones(m-2,1),2)+270*diag(ones(m-1,1),1)+270*diag(ones(m-1,1),-1)-27*diag(ones(m-2,1),-2)+2*diag(ones(m-3,1),-3)-490*diag(ones(m,1),0))/180;
-
-    M(1:6,1:6)=M_U;
-
-    M(m-5:m,m-5:m)=flipud( fliplr( M_U ) );
-    M=M/h;
-
-    DS_U=[0.137e3 / 0.60e2 -5 5 -0.10e2 / 0.3e1 0.5e1 / 0.4e1 -0.1e1 / 0.5e1;];
-    DS=zeros(m,m);
-    DS(1,1:6)=DS_U;
-    DS(m,m-5:m)=fliplr(DS_U);
-    DS=DS/h;
-
-    D2=HI*(-M+DS);
-
-    d5=[-1 5 -10 10 -5 1];
-    t5=sum(abs(d5));
-    DD_5(1:1,1:6)=[d5];
-    DD_5(m:m,m-5:m)=[d5];
-
-    % This works for wave eq.
-    % For studs interface in 1D no AD is needed.
-    ADD=7*h/(t5)*DD_5'*DD_5;
-
-    e_1 = zeros(m,1);
-    e_1(1)= 1;
-    e_m = zeros(m,1);
-    e_m(end)= 1;
-    S_1 = -DS(1,:)';
-    S_m =  DS(end,:)';
-
-    Q = H*D1-(-e_1*e_1' + e_m*e_m');
-    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/blocknorm8.m
--- a/+sbp/blocknorm8.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,60 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = blocknorm8(m,h)
-    % Eigth order
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    H_U=[     0.704266523e9 / 0.4180377600e10     0.4579586639e10 / 0.16257024000e11     -0.3623870581e10 / 0.9754214400e10    0.12753127559e11 / 0.29262643200e11    -0.3687413731e10 / 0.9754214400e10         0.2169892891e10 / 0.9754214400e10     -0.13224544841e11 / 0.146313216000e12        0.4142047e7 / 0.199065600e9;
-            0.4579586639e10 / 0.16257024000e11   0.36543258551e11 / 0.20901888000e11     -0.8235820121e10 / 0.6967296000e10     0.1800520829e10 / 0.1393459200e10     -0.3725834681e10 / 0.4180377600e10         0.2588501879e10 / 0.6967296000e10         -0.10477621e8 / 0.995328000e9       -0.6589395529e10 / 0.146313216000e12;
-           -0.3623870581e10 / 0.9754214400e10    -0.8235820121e10 / 0.6967296000e10         0.765685439e9 / 0.258048000e9      -0.3254203513e10 / 0.1393459200e10      0.2477267447e10 / 0.1393459200e10             -0.456533e6 / 0.491520e6              0.873043831e9 / 0.6967296000e10      0.4279558279e10 / 0.48771072000e11;
-           0.12753127559e11 / 0.29262643200e11    0.1800520829e10 / 0.1393459200e10      -0.3254203513e10 / 0.1393459200e10    0.16428690611e11 / 0.4180377600e10       -0.460605929e9 / 0.199065600e9           0.1897042423e10 / 0.1393459200e10      -0.1151273401e10 / 0.4180377600e10        -0.65906413e8 / 0.650280960e9;
-           -0.3687413731e10 / 0.9754214400e10    -0.3725834681e10 / 0.4180377600e10       0.2477267447e10 / 0.1393459200e10      -0.460605929e9 / 0.199065600e9       0.11663916211e11 / 0.4180377600e10          -0.307273957e9 / 0.278691840e9           0.117995903e9 / 0.464486400e9           0.95035807e8 / 0.1170505728e10;
-            0.2169892891e10 / 0.9754214400e10     0.2588501879e10 / 0.6967296000e10           -0.456533e6 / 0.491520e6          0.1897042423e10 / 0.1393459200e10       -0.307273957e9 / 0.278691840e9              0.17436823e8 / 0.10321920e8         -0.1274455129e10 / 0.6967296000e10       -0.338917493e9 / 0.9754214400e10;
-          -0.13224544841e11 / 0.146313216000e12     -0.10477621e8 / 0.995328000e9           0.873043831e9 / 0.6967296000e10    -0.1151273401e10 / 0.4180377600e10        0.117995903e9 / 0.464486400e9          -0.1274455129e10 / 0.6967296000e10      0.22041718711e11 / 0.20901888000e11       0.468461293e9 / 0.48771072000e11;
-                0.4142047e7 / 0.199065600e9      -0.6589395529e10 / 0.146313216000e12     0.4279558279e10 / 0.48771072000e11      -0.65906413e8 / 0.650280960e9           0.95035807e8 / 0.1170505728e10          -0.338917493e9 / 0.9754214400e10         0.468461293e9 / 0.48771072000e11    0.20832744839e11 / 0.20901888000e11;
-        ];
-
-
-    H=eye(m);
-    H(1:8,1:8)=H_U;
-    H(m-7:m,m-7:m)=rot90( H_U(1:8,1:8) ,2 );
-    H=H*h;
-    HI=inv(H);
-
-    Q=-(1/280*diag(ones(m-4,1),4)-4/105*diag(ones(m-3,1),3)+1/5*diag(ones(m-2,1),2)-4/5*diag(ones(m-1,1),1)+4/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+4/105*diag(ones(m-3,1),-3)-1/280*diag(ones(m-4,1),-4));
-
-
-    Q_U = [-0.1e1 / 0.2e1 0.16262381e8 / 0.15876000e8 -0.3770744693e10 / 0.3048192000e10 0.290431859e9 / 0.203212800e9 -0.363704879e9 / 0.304819200e9 0.206906927e9 / 0.304819200e9 -0.248883679e9 / 0.1016064000e10 0.2665637e7 / 0.62208000e8; -0.16262381e8 / 0.15876000e8 0 0.138589901e9 / 0.62208000e8 -0.31764881e8 / 0.12441600e8 0.461249e6 / 0.193536e6 -0.347232997e9 / 0.217728000e9 0.1788157e7 / 0.2488320e7 -0.5926349e7 / 0.37632000e8; 0.3770744693e10 / 0.3048192000e10 -0.138589901e9 / 0.62208000e8 0 0.11741773e8 / 0.5443200e7 -0.39109817e8 / 0.17418240e8 0.10216441e8 / 0.5376000e7 -0.245131109e9 / 0.217728000e9 0.92809903e8 / 0.304819200e9; -0.290431859e9 / 0.203212800e9 0.31764881e8 / 0.12441600e8 -0.11741773e8 / 0.5443200e7 0 0.4634999e7 / 0.2488320e7 -0.144219869e9 / 0.87091200e8 0.17445643e8 / 0.14515200e8 -0.38142949e8 / 0.101606400e9; 0.363704879e9 / 0.304819200e9 -0.461249e6 / 0.193536e6 0.39109817e8 / 0.17418240e8 -0.4634999e7 / 0.2488320e7 0 0.7992221e7 / 0.5443200e7 -0.817951e6 / 0.829440e6 0.4455517e7 / 0.13547520e8; -0.206906927e9 / 0.304819200e9 0.347232997e9 / 0.217728000e9 -0.10216441e8 / 0.5376000e7 0.144219869e9 / 0.87091200e8 -0.7992221e7 / 0.5443200e7 0 0.68487373e8 / 0.62208000e8 -0.1032638773e10 / 0.3048192000e10; 0.248883679e9 / 0.1016064000e10 -0.1788157e7 / 0.2488320e7 0.245131109e9 / 0.217728000e9 -0.17445643e8 / 0.14515200e8 0.817951e6 / 0.829440e6 -0.68487373e8 / 0.62208000e8 0 0.39529771e8 / 0.47628000e8; -0.2665637e7 / 0.62208000e8 0.5926349e7 / 0.37632000e8 -0.92809903e8 / 0.304819200e9 0.38142949e8 / 0.101606400e9 -0.4455517e7 / 0.13547520e8 0.1032638773e10 / 0.3048192000e10 -0.39529771e8 / 0.47628000e8 0;];
-
-    Q(1:8,1:8)=Q_U;
-    Q(m-7:m,m-7:m)=rot90( -Q_U(1:8,1:8) ,2 );
-
-    D1=HI*Q;
-
-
-    M_U =[0.27667249117e11 / 0.18289152000e11 -0.17100791927e11 / 0.6096384000e10 0.6123596021e10 / 0.2032128000e10 -0.12420079921e11 / 0.3657830400e10 0.3352522937e10 / 0.1219276800e10 -0.3030351383e10 / 0.2032128000e10 0.8955233071e10 / 0.18289152000e11 -0.448917533e9 / 0.6096384000e10; -0.2443029521e10 / 0.870912000e9 0.3279926909e10 / 0.373248000e9 -0.150833107e9 / 0.11612160e8 0.2418903029e10 / 0.174182400e9 -0.1195687489e10 / 0.104509440e9 0.1864443097e10 / 0.290304000e9 -0.275412413e9 / 0.124416000e9 0.26267539e8 / 0.74649600e8; 0.875033123e9 / 0.290304000e9 -0.754432799e9 / 0.58060800e8 0.262316881e9 / 0.10752000e8 -0.1615952663e10 / 0.58060800e8 0.1304948581e10 / 0.58060800e8 -0.59605951e8 / 0.4608000e7 0.270029509e9 / 0.58060800e8 -0.225377137e9 / 0.290304000e9; -0.71086111e8 / 0.20901888e8 0.2425994741e10 / 0.174182400e9 -0.1622486807e10 / 0.58060800e8 0.735382895e9 / 0.20901888e8 -0.1016121419e10 / 0.34836480e8 0.190014817e9 / 0.11612160e8 -0.447155539e9 / 0.74649600e8 0.179406911e9 / 0.174182400e9; 0.480578879e9 / 0.174182400e9 -0.6018333509e10 / 0.522547200e9 0.1319413093e10 / 0.58060800e8 -0.205032463e9 / 0.6967296e7 0.551889007e9 / 0.20901888e8 -0.887809303e9 / 0.58060800e8 0.914606453e9 / 0.174182400e9 -0.67482881e8 / 0.74649600e8; -0.434493809e9 / 0.290304000e9 0.1878773977e10 / 0.290304000e9 -0.423185977e9 / 0.32256000e8 0.964538597e9 / 0.58060800e8 -0.894343447e9 / 0.58060800e8 0.345461491e9 / 0.32256000e8 -0.1288081307e10 / 0.290304000e9 0.199200163e9 / 0.290304000e9; 0.183060319e9 / 0.373248000e9 -0.276656573e9 / 0.124416000e9 0.54579137e8 / 0.11612160e8 -0.3169984837e10 / 0.522547200e9 0.184339633e9 / 0.34836480e8 -0.1289417627e10 / 0.290304000e9 0.1431981949e10 / 0.373248000e9 -0.307164061e9 / 0.174182400e9; -0.449332253e9 / 0.6096384000e10 0.1290053923e10 / 0.3657830400e10 -0.1588745239e10 / 0.2032128000e10 0.1267377593e10 / 0.1219276800e10 -0.3326650673e10 / 0.3657830400e10 0.1396036981e10 / 0.2032128000e10 -0.2150231371e10 / 0.1219276800e10 0.52544801501e11 / 0.18289152000e11;];
-
-    M=-(-1/560*diag(ones(m-4,1),4)+8/315*diag(ones(m-3,1),3)-1/5*diag(ones(m-2,1),2)+8/5*diag(ones(m-1,1),1)+8/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+8/315*diag(ones(m-3,1),-3)-1/560*diag(ones(m-4,1),-4)-205/72*diag(ones(m,1),0));
-    M(1:8,1:8)=M_U;
-
-    M(m-7:m,m-7:m)=rot90(  M_U ,2 );
-    M=M/h;
-
-    % DS_U=[0.363e3 / 0.140e3 -7 0.21e2 / 0.2e1 -0.35e2 / 0.3e1 0.35e2 / 0.4e1 -0.21e2 / 0.5e1 0.7e1 / 0.6e1 -0.1e1 / 0.7e1;];
-    % DS=zeros(m,m);
-    % DS(1,1:8)=DS_U;
-    % DS(m,m-7:m)=fliplr(DS_U);
-    % DS=DS/h;
-
-    %D2=HI*(-M+DS);
-
-    S_U=-[0.363e3 / 0.140e3 -7 0.21e2 / 0.2e1 -0.35e2 / 0.3e1 0.35e2 / 0.4e1 -0.21e2 / 0.5e1 0.7e1 / 0.6e1 -0.1e1 / 0.7e1;]/h;
-    S_1=zeros(1,m);
-    S_1(1:8)=S_U;
-    S_m=zeros(1,m);
-    S_m(m-7:m)=fliplr(-S_U);
-
-
-    D2=HI*(-M - e_1*S_1+e_m*S_m);
-    S_1 = S_1';
-    S_m = S_m';
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/higher2_compatible_halfvariable.m
--- a/+sbp/higher2_compatible_halfvariable.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,161 +0,0 @@
-% Returns D2 as a function handle
-function [H, HI, D1, D2, D3, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher2_compatible_halfvariable(m,h)
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    %%% 4:de ordn. SBP Finita differens         %%%
-    %%% operatorer framtagna av Ken Mattsson    %%%
-    %%%                                         %%%
-    %%% 6 randpunkter, diagonal norm            %%%
-    %%%                                         %%%
-    %%% Datum: 2013-11-11                       %%%
-    %%%                                         %%%
-    %%%                                         %%%
-    %%% H           (Normen)                    %%%
-    %%% D1          (approx f?rsta derivatan)   %%%
-    %%% D2          (approx andra derivatan)    %%%
-    %%% D3          (approx tredje derivatan)   %%%
-    %%% D2          (approx fj?rde derivatan)   %%%
-    %%%                                         %%%
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-    % M?ste ange antal punkter (m) och stegl?ngd (h)
-    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
-    % vi har 3de och 4de derivator i v?r PDE
-    % I annat fall anv?nd de "traditionella" som har noggrannare
-    % randsplutningar f?r D1 och D2
-
-    % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
-    % vilket ?r n?dv?ndigt f?r stabilitet
-
-    H=diag(ones(m,1),0);H(1,1)=1/2;H(m,m)=1/2;
-
-
-    H=H*h;
-    HI=inv(H);
-
-
-    % First derivative SBP operator, 1st order accurate at first 6 boundary points
-
-    q1=1/2;
-    Q=q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
-
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-
-    D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Second derivative, 1st order accurate at first boundary points
-
-    %% below for constant coefficients
-    % m1=-1;m0=2;
-    % M=m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);M(1,1)=1;M(m,m)=1;
-    % M=M/h;
-    %D2=HI*(-M-e_1*S_1+e_m*S_m);
-
-    %% Below for variable coefficients
-    %% Require a vector c with the koeffients
-
-    S_U=[-3/2 2 -1/2]/h;
-    S_1=zeros(1,m);
-    S_1(1:3)=S_U;
-    S_m=zeros(1,m);
-    S_m(m-2:m)=fliplr(-S_U);
-
-    S_1 = S_1';
-    S_m = S_m';
-
-    M=sparse(m,m);
-    e_1 = sparse(e_1);
-    e_m = sparse(e_m);
-    S_1 = sparse(S_1);
-    S_m = sparse(S_m);
-
-    scheme_width = 3;
-    scheme_radius = (scheme_width-1)/2;
-    r = (1+scheme_radius):(m-scheme_radius);
-
-    function D2 = D2_fun(c)
-
-        Mm1 = -c(r-1)/2 - c(r)/2;
-        M0  =  c(r-1)/2 + c(r)   + c(r+1)/2;
-        Mp1 =            -c(r)/2 - c(r+1)/2;
-
-        M(r,:) = spdiags([Mm1 M0 Mp1],0:2*scheme_radius,length(r),m);
-
-
-        M(1:2,1:2)=[c(1)/2 + c(2)/2 -c(1)/2 - c(2)/2; -c(1)/2 - c(2)/2 c(1)/2 + c(2) + c(3)/2;];
-        M(m-1:m,m-1:m)=[c(m-2)/2 + c(m-1) + c(m)/2 -c(m-1)/2 - c(m)/2; -c(m-1)/2 - c(m)/2 c(m-1)/2 + c(m)/2;];
-        M=M/h;
-
-        D2=HI*(-M-c(1)*e_1*S_1'+c(m)*e_m*S_m');
-    end
-    D2 = @D2_fun;
-
-
-
-
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Third derivative, 1st order accurate at first 6 boundary points
-
-    q2=1/2;q1=-1;
-    Q3=q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
-
-
-    Q3_U = [0 -0.13e2 / 0.16e2 0.7e1 / 0.8e1 -0.1e1 / 0.16e2; 0.13e2 / 0.16e2 0 -0.23e2 / 0.16e2 0.5e1 / 0.8e1; -0.7e1 / 0.8e1 0.23e2 / 0.16e2 0 -0.17e2 / 0.16e2; 0.1e1 / 0.16e2 -0.5e1 / 0.8e1 0.17e2 / 0.16e2 0;];
-    Q3(1:4,1:4)=Q3_U;
-    Q3(m-3:m,m-3:m)=flipud( fliplr( -Q3_U ) );
-    Q3=Q3/h^2;
-
-
-
-    S2_U=[1 -2 1;]/h^2;
-    S2_1=zeros(1,m);
-    S2_1(1:3)=S2_U;
-    S2_m=zeros(1,m);
-    S2_m(m-2:m)=fliplr(S2_U);
-    S2_1 = S2_1';
-    S2_m = S2_m';
-
-
-
-    D3=HI*(Q3 - e_1*S2_1' + e_m*S2_m' +1/2*S_1*S_1' -1/2*S_m*S_m' ) ;
-
-    % Fourth derivative, 0th order accurate at first 6 boundary points (still
-    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
-
-    m2=1;m1=-4;m0=6;
-    M4=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-
-    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
-
-    M4_U=[0.13e2 / 0.10e2 -0.12e2 / 0.5e1 0.9e1 / 0.10e2 0.1e1 / 0.5e1; -0.12e2 / 0.5e1 0.26e2 / 0.5e1 -0.16e2 / 0.5e1 0.2e1 / 0.5e1; 0.9e1 / 0.10e2 -0.16e2 / 0.5e1 0.47e2 / 0.10e2 -0.17e2 / 0.5e1; 0.1e1 / 0.5e1 0.2e1 / 0.5e1 -0.17e2 / 0.5e1 0.29e2 / 0.5e1;];
-
-
-    M4(1:4,1:4)=M4_U;
-
-    M4(m-3:m,m-3:m)=flipud( fliplr( M4_U ) );
-    M4=M4/h^3;
-
-    S3_U=[-1 3 -3 1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:4)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-3:m)=fliplr(-S3_U);
-    S3_1 = S3_1';
-    S3_m = S3_m';
-
-    D4=HI*(M4-e_1*S3_1'+e_m*S3_m'  + S_1*S2_1'-S_m*S2_m');
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/higher4.m
--- a/+sbp/higher4.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-function [H, HI, D1, D2, D3, D4, e_1, e_m, M, M4,Q, Q3, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher4(m,h)
-
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    %%% 4:de ordn. SBP Finita differens         %%%
-    %%% operatorer framtagna av Ken Mattsson    %%%
-    %%%                                         %%%
-    %%% 6 randpunkter, diagonal norm            %%%
-    %%%                                         %%%
-    %%% Datum: 2013-11-11                       %%%
-    %%%                                         %%%
-    %%%                                         %%%
-    %%% H           (Normen)                    %%%
-    %%% D1          (approx f?rsta derivatan)   %%%
-    %%% D2          (approx andra derivatan)    %%%
-    %%% D3          (approx tredje derivatan)   %%%
-    %%% D2          (approx fj?rde derivatan)   %%%
-    %%%                                         %%%
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-    % M?ste ange antal punkter (m) och stegl?ngd (h)
-    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
-    % vi har 3de och 4de derivator i v?r PDE
-    % I annat fall anv?nd de "traditionella" som har noggrannare
-    % randsplutningar f?r D1 och D2
-
-    % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
-    % vilket ?r n?dv?ndigt f?r stabilitet
-
-    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;];
-
-    H(1:6,1:6)=H_U;
-    H(m-5:m,m-5:m)=fliplr(flipud(H_U));
-    H=H*h;
-    HI=inv(H);
-
-
-    % First derivative SBP operator, 1st order accurate at first 6 boundary points
-
-    q2=-1/12;q1=8/12;
-    Q=q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
-
-    Q_U = [0 0.526249e6 / 0.907200e6 -0.10819e5 / 0.777600e6 -0.50767e5 / 0.907200e6 -0.631e3 / 0.28800e5 0.91e2 / 0.7776e4; -0.526249e6 / 0.907200e6 0 0.1421209e7 / 0.2721600e7 0.16657e5 / 0.201600e6 -0.8467e4 / 0.453600e6 -0.33059e5 / 0.5443200e7; 0.10819e5 / 0.777600e6 -0.1421209e7 / 0.2721600e7 0 0.631187e6 / 0.1360800e7 0.400139e6 / 0.5443200e7 -0.8789e4 / 0.302400e6; 0.50767e5 / 0.907200e6 -0.16657e5 / 0.201600e6 -0.631187e6 / 0.1360800e7 0 0.496403e6 / 0.907200e6 -0.308533e6 / 0.5443200e7; 0.631e3 / 0.28800e5 0.8467e4 / 0.453600e6 -0.400139e6 / 0.5443200e7 -0.496403e6 / 0.907200e6 0 0.1805647e7 / 0.2721600e7; -0.91e2 / 0.7776e4 0.33059e5 / 0.5443200e7 0.8789e4 / 0.302400e6 0.308533e6 / 0.5443200e7 -0.1805647e7 / 0.2721600e7 0;];
-    Q(1:6,1:6)=Q_U;
-    Q(m-5:m,m-5:m)=flipud( fliplr( -Q_U ) );
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-
-    D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Second derivative, 1st order accurate at first 6 boundary points
-    m2=1/12;m1=-16/12;m0=30/12;
-    M=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-    %M=(1/12*diag(ones(m-2,1),2)-16/12*diag(ones(m-1,1),1)-16/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2)+30/12*diag(ones(m,1),0));
-    M_U=[0.2386127e7 / 0.2177280e7 -0.515449e6 / 0.453600e6 -0.10781e5 / 0.777600e6 0.61567e5 / 0.1360800e7 0.6817e4 / 0.403200e6 -0.1069e4 / 0.136080e6; -0.515449e6 / 0.453600e6 0.4756039e7 / 0.2177280e7 -0.1270009e7 / 0.1360800e7 -0.3751e4 / 0.28800e5 0.3067e4 / 0.680400e6 0.119459e6 / 0.10886400e8; -0.10781e5 / 0.777600e6 -0.1270009e7 / 0.1360800e7 0.111623e6 / 0.60480e5 -0.555587e6 / 0.680400e6 -0.551339e6 / 0.5443200e7 0.8789e4 / 0.453600e6; 0.61567e5 / 0.1360800e7 -0.3751e4 / 0.28800e5 -0.555587e6 / 0.680400e6 0.1025327e7 / 0.544320e6 -0.464003e6 / 0.453600e6 0.222133e6 / 0.5443200e7; 0.6817e4 / 0.403200e6 0.3067e4 / 0.680400e6 -0.551339e6 / 0.5443200e7 -0.464003e6 / 0.453600e6 0.5074159e7 / 0.2177280e7 -0.1784047e7 / 0.1360800e7; -0.1069e4 / 0.136080e6 0.119459e6 / 0.10886400e8 0.8789e4 / 0.453600e6 0.222133e6 / 0.5443200e7 -0.1784047e7 / 0.1360800e7 0.1812749e7 / 0.725760e6;];
-
-    M(1:6,1:6)=M_U;
-
-    M(m-5:m,m-5:m)=flipud( fliplr( M_U ) );
-    M=M/h;
-
-    S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
-    S_1=zeros(1,m);
-    S_1(1:4)=S_U;
-    S_m=zeros(1,m);
-
-    S_m(m-3:m)=fliplr(-S_U);
-
-    D2=HI*(-M-e_1*S_1+e_m*S_m);
-
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Third derivative, 1st order accurate at first 6 boundary points
-
-    q3=-1/8;q2=1;q1=-13/8;
-    Q3=q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
-
-
-    Q3_U = [0 -0.88471e5 / 0.67200e5 0.58139e5 / 0.33600e5 -0.1167e4 / 0.2800e4 -0.89e2 / 0.11200e5 0.7e1 / 0.640e3; 0.88471e5 / 0.67200e5 0 -0.43723e5 / 0.16800e5 0.46783e5 / 0.33600e5 -0.191e3 / 0.3200e4 -0.1567e4 / 0.33600e5; -0.58139e5 / 0.33600e5 0.43723e5 / 0.16800e5 0 -0.4049e4 / 0.2400e4 0.29083e5 / 0.33600e5 -0.71e2 / 0.1400e4; 0.1167e4 / 0.2800e4 -0.46783e5 / 0.33600e5 0.4049e4 / 0.2400e4 0 -0.8591e4 / 0.5600e4 0.10613e5 / 0.11200e5; 0.89e2 / 0.11200e5 0.191e3 / 0.3200e4 -0.29083e5 / 0.33600e5 0.8591e4 / 0.5600e4 0 -0.108271e6 / 0.67200e5; -0.7e1 / 0.640e3 0.1567e4 / 0.33600e5 0.71e2 / 0.1400e4 -0.10613e5 / 0.11200e5 0.108271e6 / 0.67200e5 0;];
-
-    Q3(1:6,1:6)=Q3_U;
-    Q3(m-5:m,m-5:m)=flipud( fliplr( -Q3_U ) );
-    Q3=Q3/h^2;
-
-
-
-    S2_U=[2 -5 4 -1;]/h^2;
-    S2_1=zeros(1,m);
-    S2_1(1:4)=S2_U;
-    S2_m=zeros(1,m);
-    S2_m(m-3:m)=fliplr(S2_U);
-
-
-
-    D3=HI*(Q3 - e_1*S2_1 + e_m*S2_m +1/2*S_1'*S_1 -1/2*S_m'*S_m ) ;
-
-    % Fourth derivative, 0th order accurate at first 6 boundary points (still
-    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
-
-    m3=-1/6;m2=2;m1=-13/2;m0=28/3;
-    M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-
-    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
-
-    M4_U=[0.4596181e7 / 0.1814400e7 -0.10307743e8 / 0.1814400e7 0.160961e6 / 0.43200e5 -0.535019e6 / 0.907200e6 0.109057e6 / 0.1814400e7 -0.29273e5 / 0.604800e6; -0.10307743e8 / 0.1814400e7 0.8368543e7 / 0.604800e6 -0.9558943e7 / 0.907200e6 0.2177057e7 / 0.907200e6 -0.11351e5 / 0.86400e5 0.204257e6 / 0.1814400e7; 0.160961e6 / 0.43200e5 -0.9558943e7 / 0.907200e6 0.4938581e7 / 0.453600e6 -0.786473e6 / 0.151200e6 0.1141057e7 / 0.907200e6 -0.120619e6 / 0.907200e6; -0.535019e6 / 0.907200e6 0.2177057e7 / 0.907200e6 -0.786473e6 / 0.151200e6 0.3146581e7 / 0.453600e6 -0.4614143e7 / 0.907200e6 0.24587e5 / 0.14400e5; 0.109057e6 / 0.1814400e7 -0.11351e5 / 0.86400e5 0.1141057e7 / 0.907200e6 -0.4614143e7 / 0.907200e6 0.185709e6 / 0.22400e5 -0.11293343e8 / 0.1814400e7; -0.29273e5 / 0.604800e6 0.204257e6 / 0.1814400e7 -0.120619e6 / 0.907200e6 0.24587e5 / 0.14400e5 -0.11293343e8 / 0.1814400e7 0.16787381e8 / 0.1814400e7;];
-
-    M4(1:6,1:6)=M4_U;
-
-    M4(m-5:m,m-5:m)=flipud( fliplr( M4_U ) );
-    M4=M4/h^3;
-
-    S3_U=[-1 3 -3 1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:4)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-3:m)=fliplr(-S3_U);
-
-    D4=HI*(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
-
-
-    % L=h*(m-1);
-    %
-    % x1=linspace(0,L,m)';
-    % x2=x1.^2/fac(2);
-    % x3=x1.^3/fac(3);
-    % x4=x1.^4/fac(4);
-    % x5=x1.^5/fac(5);
-    %
-    % x0=x1.^0/fac(1);
-
-    S_1  = S_1';
-    S2_1 = S2_1';
-    S3_1 = S3_1';
-    S_m  = S_m';
-    S2_m = S2_m';
-    S3_m = S3_m';
-
-
-
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/higher4_compatible_halfvariable.m
--- a/+sbp/higher4_compatible_halfvariable.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-function [H, HI, D2, D4, e_1, e_m, M4, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher4_compatible_halfvariable(m,h)
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    %%% 4:de ordn. SBP Finita differens         %%%
-    %%%                                         %%%
-    %%% H           (Normen)                    %%%
-    %%% D1=H^(-1)Q  (approx f?rsta derivatan)   %%%
-    %%% D2          (approx andra derivatan)    %%%
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-    %m=20; %problemstorlek
-    %h=1/(m-1);
-    %h=1;
-
-    c=ones(m,1);
-
-
-    H=diag(ones(m,1),0);
-    H(1:4,1:4)=diag([17/48 59/48 43/48 49/48]);
-    H(m-3:m,m-3:m)=fliplr(flipud(diag([17/48 59/48 43/48 49/48])));
-    H=H*h;
-    HI=inv(H);
-    HI = sparse(HI);
-
-
-
-    Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
-    Q_U = [0 0.59e2 / 0.96e2 -0.1e1 / 0.12e2 -0.1e1 / 0.32e2; -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2; 0.1e1 / 0.32e2 0 -0.59e2 / 0.96e2 0;];
-    Q(1:4,1:4)=Q_U;
-    Q(m-3:m,m-3:m)=flipud( fliplr(-Q_U(1:4,1:4) ) );
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    M_U=[0.9e1 / 0.8e1 -0.59e2 / 0.48e2 0.1e1 / 0.12e2 0.1e1 / 0.48e2; -0.59e2 / 0.48e2 0.59e2 / 0.24e2 -0.59e2 / 0.48e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.48e2 0.55e2 / 0.24e2 -0.59e2 / 0.48e2; 0.1e1 / 0.48e2 0 -0.59e2 / 0.48e2 0.59e2 / 0.24e2;];
-    M=-(-1/12*diag(ones(m-2,1),2)+16/12*diag(ones(m-1,1),1)+16/12*diag(ones(m-1,1),-1)-1/12*diag(ones(m-2,1),-2)-30/12*diag(ones(m,1),0));
-
-    M(1:4,1:4)=M_U;
-
-    M(m-3:m,m-3:m)=flipud( fliplr( M_U ) );
-    M=M/h;
-
-    S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
-    S_1=zeros(1,m);
-    S_1(1:4)=S_U;
-    S_m=zeros(1,m);
-    S_m(m-3:m)=fliplr(-S_U);
-    S_1 = S_1';
-    S_m = S_m';
-
-
-    M=sparse(m,m);
-    e_1 = sparse(e_1);
-    e_m = sparse(e_m);
-    S_1 = sparse(S_1);
-    S_m = sparse(S_m);
-
-
-    scheme_width = 5;
-    scheme_radius = (scheme_width-1)/2;
-    r = (1+scheme_radius):(m-scheme_radius);
-
-    function D2 = D2_fun(c)
-
-        %% ALTERNATIVES %%%%%%%%%%%%%
-        % for i=4:m-3
-        %     M(i,i-2:i+2)=[-c(i-1) / 0.6e1 + c(i-2) / 0.8e1 + c(i) / 0.8e1 -c(i-2) / 0.6e1 - c(i+1) / 0.6e1 - c(i-1) / 0.2e1 - c(i) / 0.2e1 c(i-2) / 0.24e2 + 0.5e1 / 0.6e1 * c(i-1) + 0.5e1 / 0.6e1 * c(i+1) + c(i+2) / 0.24e2 + 0.3e1 / 0.4e1 * c(i) -c(i-1) / 0.6e1 - c(i+2) / 0.6e1 - c(i) / 0.2e1 - c(i+1) / 0.2e1 -c(i+1) / 0.6e1 + c(i) / 0.8e1 + c(i+2) / 0.8e1;];
-        % end
-        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-        % for i=4:m-3
-        %     M(i,i-2:i+2)= [
-        %      c(i-2) / 0.8e1 - c(i-1) / 0.6e1 + c(i)   / 0.8e1                                   ,
-        %     -c(i-2) / 0.6e1 - c(i-1) / 0.2e1 - c(i)   / 0.2e1 - c(i+1) / 0.6e1                  ,
-        %      c(i-2) / 2.4e1 + c(i-1) / 1.2e0 + c(i) * 0.3/0.4 + c(i+1) / 1.2e0 + c(i+2) / 2.4e1 ,
-        %                      -c(i-1) / 0.6e1 - c(i)   / 0.2e1 - c(i+1) / 0.2e1 - c(i+2) / 0.6e1 ,
-        %                                        c(i)   / 0.8e1 - c(i+1) / 0.6e1 + c(i+2) / 0.8e1 ,
-        %     ];
-        % end
-        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-        Mm2 =  c(r-2) / 0.8e1 - c(r-1) / 0.6e1 + c(r)   / 0.8e1                                  ;
-        Mm1 = -c(r-2) / 0.6e1 - c(r-1) / 0.2e1 - c(r)   / 0.2e1 - c(r+1) / 0.6e1                 ;
-        M0  =  c(r-2) / 2.4e1 + c(r-1) / 1.2e0 + c(r) * 0.3/0.4 + c(r+1) / 1.2e0 + c(r+2) / 2.4e1;
-        Mp1 =                  -c(r-1) / 0.6e1 - c(r)   / 0.2e1 - c(r+1) / 0.2e1 - c(r+2) / 0.6e1;
-        Mp2 =                                    c(r)   / 0.8e1 - c(r+1) / 0.6e1 + c(r+2) / 0.8e1;
-        % printSize(Mm2);
-        % scheme_radius
-        % m
-        M(r,:) = spdiags([Mm2 Mm1 M0 Mp1 Mp2],0:2*scheme_radius,length(r),m);
-        % M(r,:) = spdiags([Mm2 Mm1 M0 Mp1 Mp2],(-2:2)+scheme_radius,M(r,:)); % This is slower
-        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-        % %% Somthing is wrong here!!
-        % Mm2 =  c(r-2) / 0.8e1 - c(r-1) / 0.6e1 + c(r)   / 0.8e1                                  ;
-        % Mm1 = -c(r-2) / 0.6e1 - c(r-1) / 0.2e1 - c(r)   / 0.2e1 - c(r+1) / 0.6e1                 ;
-        % M0  =  c(r-2) / 2.4e1 + c(r-1) / 1.2e0 + c(r) * 0.3/0.4 + c(r+1) / 1.2e0 + c(r+2) / 2.4e1;
-        % Mp1 =                  -c(r-1) / 0.6e1 - c(r)   / 0.2e1 - c(r+1) / 0.2e1 - c(r+2) / 0.6e1;
-        % Mp2 =                                    c(r)   / 0.8e1 - c(r+1) / 0.6e1 + c(r+2) / 0.8e1;
-        % % printSize(M_diag_ind);
-        % % Mdiags = [Mm2 Mm1 M0  Mp1 Mp2];
-        % % printSize(Mdiags);
-        % M(M_diag_ind) = [Mm2 Mm1 M0  Mp1 Mp2]; % This is slightly faster
-        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-        % Kan man skriva det som en multiplikation av en 3-dim matris?
-        %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-
-        M(1:6,1:6)=[0.12e2 / 0.17e2 * c(1) + 0.59e2 / 0.192e3 * c(2) + 0.27010400129e11 / 0.345067064608e12 * c(3) + 0.69462376031e11 / 0.2070402387648e13 * c(4) -0.59e2 / 0.68e2 * c(1) - 0.6025413881e10 / 0.21126554976e11 * c(3) - 0.537416663e9 / 0.7042184992e10 * c(4) 0.2e1 / 0.17e2 * c(1) - 0.59e2 / 0.192e3 * c(2) + 0.213318005e9 / 0.16049630912e11 * c(4) + 0.2083938599e10 / 0.8024815456e10 * c(3) 0.3e1 / 0.68e2 * c(1) - 0.1244724001e10 / 0.21126554976e11 * c(3) + 0.752806667e9 / 0.21126554976e11 * c(4) 0.49579087e8 / 0.10149031312e11 * c(3) - 0.49579087e8 / 0.10149031312e11 * c(4) -c(4) / 0.784e3 + c(3) / 0.784e3; -0.59e2 / 0.68e2 * c(1) - 0.6025413881e10 / 0.21126554976e11 * c(3) - 0.537416663e9 / 0.7042184992e10 * c(4) 0.3481e4 / 0.3264e4 * c(1) + 0.9258282831623875e16 / 0.7669235228057664e16 * c(3) + 0.236024329996203e15 / 0.1278205871342944e16 * c(4) -0.59e2 / 0.408e3 * c(1) - 0.29294615794607e14 / 0.29725717938208e14 * c(3) - 0.2944673881023e13 / 0.29725717938208e14 * c(4) -0.59e2 / 0.1088e4 * c(1) + 0.260297319232891e15 / 0.2556411742685888e16 * c(3) - 0.60834186813841e14 / 0.1278205871342944e16 * c(4) -0.1328188692663e13 / 0.37594290333616e14 * c(3) + 0.1328188692663e13 / 0.37594290333616e14 * c(4) -0.8673e4 / 0.2904112e7 * c(3) + 0.8673e4 / 0.2904112e7 * c(4); 0.2e1 / 0.17e2 * c(1) - 0.59e2 / 0.192e3 * c(2) + 0.213318005e9 / 0.16049630912e11 * c(4) + 0.2083938599e10 / 0.8024815456e10 * c(3) -0.59e2 / 0.408e3 * c(1) - 0.29294615794607e14 / 0.29725717938208e14 * c(3) - 0.2944673881023e13 / 0.29725717938208e14 * c(4) c(1) / 0.51e2 + 0.59e2 / 0.192e3 * c(2) + 0.13777050223300597e17 / 0.26218083221499456e17 * c(4) + 0.564461e6 / 0.13384296e8 * c(5) + 0.378288882302546512209e21 / 0.270764341349677687456e21 * c(3) c(1) / 0.136e3 - 0.125059e6 / 0.743572e6 * c(5) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(3) - 0.17220493277981e14 / 0.89177153814624e14 * c(4) -0.10532412077335e14 / 0.42840005263888e14 * c(4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(3) + 0.564461e6 / 0.4461432e7 * c(5) -0.960119e6 / 0.1280713392e10 * c(4) - 0.3391e4 / 0.6692148e7 * c(5) + 0.33235054191e11 / 0.26452850508784e14 * c(3); 0.3e1 / 0.68e2 * c(1) - 0.1244724001e10 / 0.21126554976e11 * c(3) + 0.752806667e9 / 0.21126554976e11 * c(4) -0.59e2 / 0.1088e4 * c(1) + 0.260297319232891e15 / 0.2556411742685888e16 * c(3) - 0.60834186813841e14 / 0.1278205871342944e16 * c(4) c(1) / 0.136e3 - 0.125059e6 / 0.743572e6 * c(5) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(3) - 0.17220493277981e14 / 0.89177153814624e14 * c(4) 0.3e1 / 0.1088e4 * c(1) + 0.507284006600757858213e21 / 0.475219048083107777984e21 * c(3) + 0.1869103e7 / 0.2230716e7 * c(5) + c(6) / 0.24e2 + 0.1950062198436997e16 / 0.3834617614028832e16 * c(4) -0.4959271814984644613e19 / 0.20965546238960637264e20 * c(3) - c(6) / 0.6e1 - 0.15998714909649e14 / 0.37594290333616e14 * c(4) - 0.375177e6 / 0.743572e6 * c(5) -0.368395e6 / 0.2230716e7 * c(5) + 0.752806667e9 / 0.539854092016e12 * c(3) + 0.1063649e7 / 0.8712336e7 * c(4) + c(6) / 0.8e1; 0.49579087e8 / 0.10149031312e11 * c(3) - 0.49579087e8 / 0.10149031312e11 * c(4) -0.1328188692663e13 / 0.37594290333616e14 * c(3) + 0.1328188692663e13 / 0.37594290333616e14 * c(4) -0.10532412077335e14 / 0.42840005263888e14 * c(4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(3) + 0.564461e6 / 0.4461432e7 * c(5) -0.4959271814984644613e19 / 0.20965546238960637264e20 * c(3) - c(6) / 0.6e1 - 0.15998714909649e14 / 0.37594290333616e14 * c(4) - 0.375177e6 / 0.743572e6 * c(5) 0.8386761355510099813e19 / 0.128413970713633903242e21 * c(3) + 0.2224717261773437e16 / 0.2763180339520776e16 * c(4) + 0.5e1 / 0.6e1 * c(6) + c(7) / 0.24e2 + 0.280535e6 / 0.371786e6 * c(5) -0.35039615e8 / 0.213452232e9 * c(4) - c(7) / 0.6e1 - 0.13091810925e11 / 0.13226425254392e14 * c(3) - 0.1118749e7 / 0.2230716e7 * c(5) - c(6) / 0.2e1; -c(4) / 0.784e3 + c(3) / 0.784e3 -0.8673e4 / 0.2904112e7 * c(3) + 0.8673e4 / 0.2904112e7 * c(4) -0.960119e6 / 0.1280713392e10 * c(4) - 0.3391e4 / 0.6692148e7 * c(5) + 0.33235054191e11 / 0.26452850508784e14 * c(3) -0.368395e6 / 0.2230716e7 * c(5) + 0.752806667e9 / 0.539854092016e12 * c(3) + 0.1063649e7 / 0.8712336e7 * c(4) + c(6) / 0.8e1 -0.35039615e8 / 0.213452232e9 * c(4) - c(7) / 0.6e1 - 0.13091810925e11 / 0.13226425254392e14 * c(3) - 0.1118749e7 / 0.2230716e7 * c(5) - c(6) / 0.2e1 0.3290636e7 / 0.80044587e8 * c(4) + 0.5580181e7 / 0.6692148e7 * c(5) + 0.5e1 / 0.6e1 * c(7) + c(8) / 0.24e2 + 0.660204843e9 / 0.13226425254392e14 * c(3) + 0.3e1 / 0.4e1 * c(6);];
-
-        M(m-5:m,m-5:m)=[c(m-7) / 0.24e2 + 0.5e1 / 0.6e1 * c(m-6) + 0.5580181e7 / 0.6692148e7 * c(m-4) + 0.4887707739997e13 / 0.119037827289528e15 * c(m-3) + 0.3e1 / 0.4e1 * c(m-5) + 0.660204843e9 / 0.13226425254392e14 * c(m-2) + 0.660204843e9 / 0.13226425254392e14 * c(m-1) -c(m-6) / 0.6e1 - 0.1618585929605e13 / 0.9919818940794e13 * c(m-3) - c(m-5) / 0.2e1 - 0.1118749e7 / 0.2230716e7 * c(m-4) - 0.13091810925e11 / 0.13226425254392e14 * c(m-2) - 0.13091810925e11 / 0.13226425254392e14 * c(m-1) -0.368395e6 / 0.2230716e7 * c(m-4) + c(m-5) / 0.8e1 + 0.48866620889e11 / 0.404890569012e12 * c(m-3) + 0.752806667e9 / 0.539854092016e12 * c(m-2) + 0.752806667e9 / 0.539854092016e12 * c(m-1) -0.3391e4 / 0.6692148e7 * c(m-4) - 0.238797444493e12 / 0.119037827289528e15 * c(m-3) + 0.33235054191e11 / 0.26452850508784e14 * c(m-2) + 0.33235054191e11 / 0.26452850508784e14 * c(m-1) -0.8673e4 / 0.2904112e7 * c(m-2) - 0.8673e4 / 0.2904112e7 * c(m-1) + 0.8673e4 / 0.1452056e7 * c(m-3) -c(m-3) / 0.392e3 + c(m-2) / 0.784e3 + c(m-1) / 0.784e3; -c(m-6) / 0.6e1 - 0.1618585929605e13 / 0.9919818940794e13 * c(m-3) - c(m-5) / 0.2e1 - 0.1118749e7 / 0.2230716e7 * c(m-4) - 0.13091810925e11 / 0.13226425254392e14 * c(m-2) - 0.13091810925e11 / 0.13226425254392e14 * c(m-1) c(m-6) / 0.24e2 + 0.5e1 / 0.6e1 * c(m-5) + 0.3896014498639e13 / 0.4959909470397e13 * c(m-3) + 0.8386761355510099813e19 / 0.128413970713633903242e21 * c(m-2) + 0.280535e6 / 0.371786e6 * c(m-4) + 0.3360696339136261875e19 / 0.171218627618178537656e21 * c(m-1) -c(m-5) / 0.6e1 - 0.4959271814984644613e19 / 0.20965546238960637264e20 * c(m-2) - 0.375177e6 / 0.743572e6 * c(m-4) - 0.13425842714e11 / 0.33740880751e11 * c(m-3) - 0.193247108773400725e18 / 0.6988515412986879088e19 * c(m-1) -0.365281640980e12 / 0.1653303156799e13 * c(m-3) + 0.564461e6 / 0.4461432e7 * c(m-4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(m-2) - 0.198407225513315475e18 / 0.7963657098519931984e19 * c(m-1) -0.1328188692663e13 / 0.37594290333616e14 * c(m-2) + 0.2226377963775e13 / 0.37594290333616e14 * c(m-1) - 0.8673e4 / 0.363014e6 * c(m-3) c(m-3) / 0.49e2 + 0.49579087e8 / 0.10149031312e11 * c(m-2) - 0.256702175e9 / 0.10149031312e11 * c(m-1); -0.368395e6 / 0.2230716e7 * c(m-4) + c(m-5) / 0.8e1 + 0.48866620889e11 / 0.404890569012e12 * c(m-3) + 0.752806667e9 / 0.539854092016e12 * c(m-2) + 0.752806667e9 / 0.539854092016e12 * c(m-1) -c(m-5) / 0.6e1 - 0.4959271814984644613e19 / 0.20965546238960637264e20 * c(m-2) - 0.375177e6 / 0.743572e6 * c(m-4) - 0.13425842714e11 / 0.33740880751e11 * c(m-3) - 0.193247108773400725e18 / 0.6988515412986879088e19 * c(m-1) c(m-5) / 0.24e2 + 0.1869103e7 / 0.2230716e7 * c(m-4) + 0.507284006600757858213e21 / 0.475219048083107777984e21 * c(m-2) + 0.3e1 / 0.1088e4 * c(m) + 0.31688435395e11 / 0.67481761502e11 * c(m-3) + 0.27769176016102795561e20 / 0.712828572124661666976e21 * c(m-1) -0.125059e6 / 0.743572e6 * c(m-4) + c(m) / 0.136e3 - 0.23099342648e11 / 0.101222642253e12 * c(m-3) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(m-2) + 0.193950157930938693e18 / 0.5525802884687299744e19 * c(m-1) 0.260297319232891e15 / 0.2556411742685888e16 * c(m-2) - 0.59e2 / 0.1088e4 * c(m) - 0.106641839640553e15 / 0.1278205871342944e16 * c(m-1) + 0.26019e5 / 0.726028e6 * c(m-3) -0.1244724001e10 / 0.21126554976e11 * c(m-2) + 0.3e1 / 0.68e2 * c(m) + 0.752806667e9 / 0.21126554976e11 * c(m-1); -0.3391e4 / 0.6692148e7 * c(m-4) - 0.238797444493e12 / 0.119037827289528e15 * c(m-3) + 0.33235054191e11 / 0.26452850508784e14 * c(m-2) + 0.33235054191e11 / 0.26452850508784e14 * c(m-1) -0.365281640980e12 / 0.1653303156799e13 * c(m-3) + 0.564461e6 / 0.4461432e7 * c(m-4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(m-2) - 0.198407225513315475e18 / 0.7963657098519931984e19 * c(m-1) -0.125059e6 / 0.743572e6 * c(m-4) + c(m) / 0.136e3 - 0.23099342648e11 / 0.101222642253e12 * c(m-3) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(m-2) + 0.193950157930938693e18 / 0.5525802884687299744e19 * c(m-1) 0.564461e6 / 0.13384296e8 * c(m-4) + 0.470299699916357e15 / 0.952302618316224e15 * c(m-3) + 0.550597048646198778781e21 / 0.1624586048098066124736e22 * c(m-1) + c(m) / 0.51e2 + 0.378288882302546512209e21 / 0.270764341349677687456e21 * c(m-2) -0.59e2 / 0.408e3 * c(m) - 0.29294615794607e14 / 0.29725717938208e14 * c(m-2) - 0.2234477713167e13 / 0.29725717938208e14 * c(m-1) - 0.8673e4 / 0.363014e6 * c(m-3) -0.59e2 / 0.3136e4 * c(m-3) - 0.13249937023e11 / 0.48148892736e11 * c(m-1) + 0.2e1 / 0.17e2 * c(m) + 0.2083938599e10 / 0.8024815456e10 * c(m-2); -0.8673e4 / 0.2904112e7 * c(m-2) - 0.8673e4 / 0.2904112e7 * c(m-1) + 0.8673e4 / 0.1452056e7 * c(m-3) -0.1328188692663e13 / 0.37594290333616e14 * c(m-2) + 0.2226377963775e13 / 0.37594290333616e14 * c(m-1) - 0.8673e4 / 0.363014e6 * c(m-3) 0.260297319232891e15 / 0.2556411742685888e16 * c(m-2) - 0.59e2 / 0.1088e4 * c(m) - 0.106641839640553e15 / 0.1278205871342944e16 * c(m-1) + 0.26019e5 / 0.726028e6 * c(m-3) -0.59e2 / 0.408e3 * c(m) - 0.29294615794607e14 / 0.29725717938208e14 * c(m-2) - 0.2234477713167e13 / 0.29725717938208e14 * c(m-1) - 0.8673e4 / 0.363014e6 * c(m-3) 0.9258282831623875e16 / 0.7669235228057664e16 * c(m-2) + 0.3481e4 / 0.3264e4 * c(m) + 0.228389721191751e15 / 0.1278205871342944e16 * c(m-1) + 0.8673e4 / 0.1452056e7 * c(m-3) -0.6025413881e10 / 0.21126554976e11 * c(m-2) - 0.59e2 / 0.68e2 * c(m) - 0.537416663e9 / 0.7042184992e10 * c(m-1); -c(m-3) / 0.392e3 + c(m-2) / 0.784e3 + c(m-1) / 0.784e3 c(m-3) / 0.49e2 + 0.49579087e8 / 0.10149031312e11 * c(m-2) - 0.256702175e9 / 0.10149031312e11 * c(m-1) -0.1244724001e10 / 0.21126554976e11 * c(m-2) + 0.3e1 / 0.68e2 * c(m) + 0.752806667e9 / 0.21126554976e11 * c(m-1) -0.59e2 / 0.3136e4 * c(m-3) - 0.13249937023e11 / 0.48148892736e11 * c(m-1) + 0.2e1 / 0.17e2 * c(m) + 0.2083938599e10 / 0.8024815456e10 * c(m-2) -0.6025413881e10 / 0.21126554976e11 * c(m-2) - 0.59e2 / 0.68e2 * c(m) - 0.537416663e9 / 0.7042184992e10 * c(m-1) 0.3e1 / 0.3136e4 * c(m-3) + 0.27010400129e11 / 0.345067064608e12 * c(m-2) + 0.234566387291e12 / 0.690134129216e12 * c(m-1) + 0.12e2 / 0.17e2 * c(m);];
-
-        M=M/h;
-        D2=HI*(-M-c(1)*e_1*S_1'+c(m)*e_m*S_m');
-    end
-    D2 = @D2_fun;
-
-
-    S2_U=[2 -5 4 -1;]/h^2;
-    S2_1=zeros(1,m);
-    S2_1(1:4)=S2_U;
-    S2_m=zeros(1,m);
-    S2_m(m-3:m)=fliplr(S2_U);
-    S2_1 = S2_1';
-    S2_m = S2_m';
-
-    m3=-1/6;m2=2;m1=-13/2;m0=28/3;
-    M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-
-    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
-
-    M4_U=[0.5762947e7 / 0.2316384e7 -0.6374287e7 / 0.1158192e7 0.573947e6 / 0.165456e6 -0.124637e6 / 0.289548e6 0.67979e5 / 0.2316384e7 -0.60257e5 / 0.1158192e7; -0.6374287e7 / 0.1158192e7 0.30392389e8 / 0.2316384e7 -0.2735053e7 / 0.289548e6 0.273109e6 / 0.165456e6 0.83767e5 / 0.1158192e7 0.245549e6 / 0.2316384e7; 0.573947e6 / 0.165456e6 -0.2735053e7 / 0.289548e6 0.5266855e7 / 0.579096e6 -0.1099715e7 / 0.289548e6 0.869293e6 / 0.1158192e7 -0.10195e5 / 0.144774e6; -0.124637e6 / 0.289548e6 0.273109e6 / 0.165456e6 -0.1099715e7 / 0.289548e6 0.3259225e7 / 0.579096e6 -0.324229e6 / 0.72387e5 0.1847891e7 / 0.1158192e7; 0.67979e5 / 0.2316384e7 0.83767e5 / 0.1158192e7 0.869293e6 / 0.1158192e7 -0.324229e6 / 0.72387e5 0.2626501e7 / 0.330912e6 -0.7115491e7 / 0.1158192e7; -0.60257e5 / 0.1158192e7 0.245549e6 / 0.2316384e7 -0.10195e5 / 0.144774e6 0.1847891e7 / 0.1158192e7 -0.7115491e7 / 0.1158192e7 0.21383077e8 / 0.2316384e7;];
-
-    M4(1:6,1:6)=M4_U;
-
-    M4(m-5:m,m-5:m)=flipud( fliplr( M4_U ) );
-    M4=M4/h^3;
-
-    S3_U=[-1 3 -3 1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:4)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-3:m)=fliplr(-S3_U);
-    S3_1 = S3_1';
-    S3_m = S3_m';
-
-    D4=HI*(M4-e_1*S3_1'+e_m*S3_m'  + S_1*S2_1'-S_m*S2_m');
-
-
-
-
-
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/higher6.m
--- a/+sbp/higher6.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-function [H, HI, D1, D2, D3, D4, e_1, e_m, M, M4,Q, Q3, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher6(m,h)
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    %%% 4:de ordn. SBP Finita differens         %%%
-    %%% operatorer framtagna av Ken Mattsson    %%%
-    %%%                                         %%%
-    %%% 6 randpunkter, diagonal norm            %%%
-    %%%                                         %%%
-    %%% Datum: 2013-11-11                       %%%
-    %%%                                         %%%
-    %%%                                         %%%
-    %%% H           (Normen)                    %%%
-    %%% D1          (approx f?rsta derivatan)   %%%
-    %%% D2          (approx andra derivatan)    %%%
-    %%% D3          (approx tredje derivatan)   %%%
-    %%% D2          (approx fj?rde derivatan)   %%%
-    %%%                                         %%%
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-    % M?ste ange antal punkter (m) och stegl?ngd (h)
-    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
-    % vi har 3de och 4de derivator i v?r PDE
-    % I annat fall anv?nd de "traditionella" som har noggrannare
-    % randsplutningar f?r D1 och D2
-
-    % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
-    % vilket ?r n?dv?ndigt f?r stabilitet
-
-    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;];
-
-    H(1:8,1:8)=H_U;
-    H(m-7:m,m-7:m)=fliplr(flipud(H_U));
-    H=H*h;
-    HI=inv(H);
-
-
-    % First derivative SBP operator, 1st order accurate at first 6 boundary points
-
-    q3=1/60;q2=-3/20;q1=3/4;
-    Q=q3*(diag(ones(m-3,1),3) - diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    Q_U = [0 0.1547358409e10 / 0.2421619200e10 -0.422423e6 / 0.11211200e8 -0.1002751721e10 / 0.8717829120e10 -0.15605263e8 / 0.484323840e9 0.1023865e7 / 0.24216192e8 0.291943739e9 / 0.21794572800e11 -0.24659e5 / 0.2534400e7; -0.1547358409e10 / 0.2421619200e10 0 0.23031829e8 / 0.62899200e8 0.10784027e8 / 0.34594560e8 0.2859215e7 / 0.31135104e8 -0.45982103e8 / 0.345945600e9 -0.26681e5 / 0.1182720e7 0.538846039e9 / 0.21794572800e11; 0.422423e6 / 0.11211200e8 -0.23031829e8 / 0.62899200e8 0 0.28368209e8 / 0.69189120e8 -0.9693137e7 / 0.69189120e8 0.1289363e7 / 0.17740800e8 -0.39181e5 / 0.5491200e7 -0.168647e6 / 0.24216192e8; 0.1002751721e10 / 0.8717829120e10 -0.10784027e8 / 0.34594560e8 -0.28368209e8 / 0.69189120e8 0 0.5833151e7 / 0.10644480e8 0.4353179e7 / 0.69189120e8 0.2462459e7 / 0.155675520e9 -0.215471e6 / 0.10762752e8; 0.15605263e8 / 0.484323840e9 -0.2859215e7 / 0.31135104e8 0.9693137e7 / 0.69189120e8 -0.5833151e7 / 0.10644480e8 0 0.7521509e7 / 0.13837824e8 -0.1013231e7 / 0.11531520e8 0.103152839e9 / 0.8717829120e10; -0.1023865e7 / 0.24216192e8 0.45982103e8 / 0.345945600e9 -0.1289363e7 / 0.17740800e8 -0.4353179e7 / 0.69189120e8 -0.7521509e7 / 0.13837824e8 0 0.67795697e8 / 0.98841600e8 -0.17263733e8 / 0.151351200e9; -0.291943739e9 / 0.21794572800e11 0.26681e5 / 0.1182720e7 0.39181e5 / 0.5491200e7 -0.2462459e7 / 0.155675520e9 0.1013231e7 / 0.11531520e8 -0.67795697e8 / 0.98841600e8 0 0.1769933569e10 / 0.2421619200e10; 0.24659e5 / 0.2534400e7 -0.538846039e9 / 0.21794572800e11 0.168647e6 / 0.24216192e8 0.215471e6 / 0.10762752e8 -0.103152839e9 / 0.8717829120e10 0.17263733e8 / 0.151351200e9 -0.1769933569e10 / 0.2421619200e10 0;];
-
-    Q(1:8,1:8)=Q_U;
-    Q(m-7:m,m-7:m)=flipud( fliplr( -Q_U ) );
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-
-    D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Second derivative, 1st order accurate at first 6 boundary points
-    m3=-1/90;m2=3/20;m1=-3/2;m0=49/18;
-
-    M=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-    M_U=[0.4347276223e10 / 0.3736212480e10 -0.1534657609e10 / 0.1210809600e10 0.68879e5 / 0.3057600e7 0.1092927401e10 / 0.13076743680e11 0.18145423e8 / 0.968647680e9 -0.1143817e7 / 0.60540480e8 -0.355447739e9 / 0.65383718400e11 0.56081e5 / 0.16473600e8; -0.1534657609e10 / 0.1210809600e10 0.42416226217e11 / 0.18681062400e11 -0.228654119e9 / 0.345945600e9 -0.12245627e8 / 0.34594560e8 -0.2995295e7 / 0.46702656e8 0.52836503e8 / 0.691891200e9 0.119351e6 / 0.12812800e8 -0.634102039e9 / 0.65383718400e11; 0.68879e5 / 0.3057600e7 -0.228654119e9 / 0.345945600e9 0.5399287e7 / 0.4193280e7 -0.24739409e8 / 0.34594560e8 0.7878737e7 / 0.69189120e8 -0.1917829e7 / 0.31449600e8 0.39727e5 / 0.3660800e7 0.10259e5 / 0.4656960e7; 0.1092927401e10 / 0.13076743680e11 -0.12245627e8 / 0.34594560e8 -0.24739409e8 / 0.34594560e8 0.7780367599e10 / 0.3736212480e10 -0.70085363e8 / 0.69189120e8 -0.500209e6 / 0.6289920e7 -0.311543e6 / 0.17962560e8 0.278191e6 / 0.21525504e8; 0.18145423e8 / 0.968647680e9 -0.2995295e7 / 0.46702656e8 0.7878737e7 / 0.69189120e8 -0.70085363e8 / 0.69189120e8 0.7116321131e10 / 0.3736212480e10 -0.545081e6 / 0.532224e6 0.811631e6 / 0.11531520e8 -0.84101639e8 / 0.13076743680e11; -0.1143817e7 / 0.60540480e8 0.52836503e8 / 0.691891200e9 -0.1917829e7 / 0.31449600e8 -0.500209e6 / 0.6289920e7 -0.545081e6 / 0.532224e6 0.324760747e9 / 0.138378240e9 -0.65995697e8 / 0.49420800e8 0.1469203e7 / 0.13759200e8; -0.355447739e9 / 0.65383718400e11 0.119351e6 / 0.12812800e8 0.39727e5 / 0.3660800e7 -0.311543e6 / 0.17962560e8 0.811631e6 / 0.11531520e8 -0.65995697e8 / 0.49420800e8 0.48284442317e11 / 0.18681062400e11 -0.1762877569e10 / 0.1210809600e10; 0.56081e5 / 0.16473600e8 -0.634102039e9 / 0.65383718400e11 0.10259e5 / 0.4656960e7 0.278191e6 / 0.21525504e8 -0.84101639e8 / 0.13076743680e11 0.1469203e7 / 0.13759200e8 -0.1762877569e10 / 0.1210809600e10 0.10117212851e11 / 0.3736212480e10;];
-
-    M(1:8,1:8)=M_U;
-
-    M(m-7:m,m-7:m)=flipud( fliplr( M_U ) );
-    M=M/h;
-
-    S_U=[-0.25e2 / 0.12e2 4 -3 0.4e1 / 0.3e1 -0.1e1 / 0.4e1;]/h;
-    S_1=zeros(1,m);
-    S_1(1:5)=S_U;
-    S_m=zeros(1,m);
-
-    S_m(m-4:m)=fliplr(-S_U);
-
-    D2=HI*(-M-e_1*S_1+e_m*S_m);
-
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Third derivative, 1st order accurate at first 6 boundary points
-
-    q4=7/240;q3=-3/10;q2=169/120;q1=-61/30;
-    Q3=q4*(diag(ones(m-4,1),4)-diag(ones(m-4,1),-4))+q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
-
-
-    Q3_U = [0 -0.10882810591e11 / 0.5811886080e10 0.398713069e9 / 0.132088320e9 -0.1746657571e10 / 0.1162377216e10 0.56050639e8 / 0.145297152e9 -0.11473393e8 / 0.1162377216e10 -0.38062741e8 / 0.1452971520e10 0.30473e5 / 0.4392960e7; 0.10882810591e11 / 0.5811886080e10 0 -0.3720544343e10 / 0.830269440e9 0.767707019e9 / 0.207567360e9 -0.1047978301e10 / 0.830269440e9 0.1240729e7 / 0.14826240e8 0.6807397e7 / 0.55351296e8 -0.50022767e8 / 0.1452971520e10; -0.398713069e9 / 0.132088320e9 0.3720544343e10 / 0.830269440e9 0 -0.2870078009e10 / 0.830269440e9 0.74962049e8 / 0.29652480e8 -0.12944857e8 / 0.30750720e8 -0.17846623e8 / 0.103783680e9 0.68707591e8 / 0.1162377216e10; 0.1746657571e10 / 0.1162377216e10 -0.767707019e9 / 0.207567360e9 0.2870078009e10 / 0.830269440e9 0 -0.727867087e9 / 0.276756480e9 0.327603877e9 / 0.207567360e9 -0.175223717e9 / 0.830269440e9 0.1353613e7 / 0.726485760e9; -0.56050639e8 / 0.145297152e9 0.1047978301e10 / 0.830269440e9 -0.74962049e8 / 0.29652480e8 0.727867087e9 / 0.276756480e9 0 -0.1804641793e10 / 0.830269440e9 0.311038417e9 / 0.207567360e9 -0.1932566239e10 / 0.5811886080e10; 0.11473393e8 / 0.1162377216e10 -0.1240729e7 / 0.14826240e8 0.12944857e8 / 0.30750720e8 -0.327603877e9 / 0.207567360e9 0.1804641793e10 / 0.830269440e9 0 -0.1760949511e10 / 0.830269440e9 0.2105883973e10 / 0.1452971520e10; 0.38062741e8 / 0.1452971520e10 -0.6807397e7 / 0.55351296e8 0.17846623e8 / 0.103783680e9 0.175223717e9 / 0.830269440e9 -0.311038417e9 / 0.207567360e9 0.1760949511e10 / 0.830269440e9 0 -0.1081094773e10 / 0.528353280e9; -0.30473e5 / 0.4392960e7 0.50022767e8 / 0.1452971520e10 -0.68707591e8 / 0.1162377216e10 -0.1353613e7 / 0.726485760e9 0.1932566239e10 / 0.5811886080e10 -0.2105883973e10 / 0.1452971520e10 0.1081094773e10 / 0.528353280e9 0;];
-
-    Q3(1:8,1:8)=Q3_U;
-    Q3(m-7:m,m-7:m)=flipud( fliplr( -Q3_U ) );
-    Q3=Q3/h^2;
-
-
-
-    S2_U=[0.35e2 / 0.12e2 -0.26e2 / 0.3e1 0.19e2 / 0.2e1 -0.14e2 / 0.3e1 0.11e2 / 0.12e2;]/h^2;
-    S2_1=zeros(1,m);
-    S2_1(1:5)=S2_U;
-    S2_m=zeros(1,m);
-    S2_m(m-4:m)=fliplr(S2_U);
-
-
-
-    D3=HI*(Q3 - e_1*S2_1 + e_m*S2_m +1/2*S_1'*S_1 -1/2*S_m'*S_m ) ;
-
-    % Fourth derivative, 0th order accurate at first 6 boundary points (still
-    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
-
-    m4=7/240;m3=-2/5;m2=169/60;m1=-122/15;m0=91/8;
-    M4=m4*(diag(ones(m-4,1),4)+diag(ones(m-4,1),-4))+m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-
-    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
-
-    M4_U=[0.40833734273e11 / 0.10761070320e11 -0.162181998421e12 / 0.16397821440e11 0.4696168417e10 / 0.521748864e9 -0.245714671483e12 / 0.68870850048e11 0.2185939219e10 / 0.2869618752e10 -0.15248255797e11 / 0.114784750080e12 0.345156907e9 / 0.12298366080e11 0.6388381e7 / 0.1093188096e10; -0.162181998421e12 / 0.16397821440e11 0.147281127041e12 / 0.5380535160e10 -0.3072614435609e13 / 0.114784750080e12 0.320122985851e12 / 0.28696187520e11 -0.768046031383e12 / 0.344354250240e12 0.7861605187e10 / 0.14348093760e11 -0.803762437e9 / 0.4251287040e10 0.167394281e9 / 0.86088562560e11; 0.4696168417e10 / 0.521748864e9 -0.3072614435609e13 / 0.114784750080e12 0.139712483333e12 / 0.4782697920e10 -0.1634124842747e13 / 0.114784750080e12 0.90855193447e11 / 0.28696187520e11 -0.26412188989e11 / 0.38261583360e11 0.668741173e9 / 0.1793511720e10 -0.132673781e9 / 0.2342545920e10; -0.245714671483e12 / 0.68870850048e11 0.320122985851e12 / 0.28696187520e11 -0.1634124842747e13 / 0.114784750080e12 0.437353997177e12 / 0.43044281280e11 -0.172873969321e12 / 0.38261583360e11 0.34759553483e11 / 0.28696187520e11 -0.98928859751e11 / 0.344354250240e12 0.295000207e9 / 0.3587023440e10; 0.2185939219e10 / 0.2869618752e10 -0.768046031383e12 / 0.344354250240e12 0.90855193447e11 / 0.28696187520e11 -0.172873969321e12 / 0.38261583360e11 0.126711914423e12 / 0.21522140640e11 -0.520477408939e12 / 0.114784750080e12 0.49581230003e11 / 0.28696187520e11 -0.99640101991e11 / 0.344354250240e12; -0.15248255797e11 / 0.114784750080e12 0.7861605187e10 / 0.14348093760e11 -0.26412188989e11 / 0.38261583360e11 0.34759553483e11 / 0.28696187520e11 -0.520477408939e12 / 0.114784750080e12 0.19422074929e11 / 0.2391348960e10 -0.772894368601e12 / 0.114784750080e12 0.10579712849e11 / 0.4099455360e10; 0.345156907e9 / 0.12298366080e11 -0.803762437e9 / 0.4251287040e10 0.668741173e9 / 0.1793511720e10 -0.98928859751e11 / 0.344354250240e12 0.49581230003e11 / 0.28696187520e11 -0.772894368601e12 / 0.114784750080e12 0.456715296239e12 / 0.43044281280e11 -0.915425403107e12 / 0.114784750080e12; 0.6388381e7 / 0.1093188096e10 0.167394281e9 / 0.86088562560e11 -0.132673781e9 / 0.2342545920e10 0.295000207e9 / 0.3587023440e10 -0.99640101991e11 / 0.344354250240e12 0.10579712849e11 / 0.4099455360e10 -0.915425403107e12 / 0.114784750080e12 0.488029542379e12 / 0.43044281280e11;];
-
-    M4(1:8,1:8)=M4_U;
-
-    M4(m-7:m,m-7:m)=flipud( fliplr( M4_U ) );
-    M4=M4/h^3;
-
-    S3_U=[-0.5e1 / 0.2e1 9 -12 7 -0.3e1 / 0.2e1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:5)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-4:m)=fliplr(-S3_U);
-
-    D4=HI*(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
-
-
-    L=h*(m-1);
-
-    % x1=linspace(0,L,m)';
-    % x2=x1.^2/fac(2);
-    % x3=x1.^3/fac(3);
-    % x4=x1.^4/fac(4);
-    % x5=x1.^5/fac(5);
-
-    % x0=x1.^0/fac(1);
-
-    S_1  = S_1';
-    S2_1 = S2_1';
-    S3_1 = S3_1';
-    S_m  = S_m';
-    S2_m = S2_m';
-    S3_m = S3_m';
-
-
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/higher6_compatible_halfvariable.m
--- a/+sbp/higher6_compatible_halfvariable.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,160 +0,0 @@
-function [H, HI, D2, D4, e_1, e_m, M4, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher6_compatible_halfvariable(m,h)
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    %%% 6:te ordn. SBP Finita differens         %%%
-    %%% operatorer med diagonal norm            %%%
-    %%% Extension to variable koeff             %%%
-    %%%                                         %%%
-    %%% H           (Normen)                    %%%
-    %%% D1=H^(-1)Q  (approx f?rsta derivatan)   %%%
-    %%% D2          (approx andra derivatan)    %%%
-    %%% D2=HI*(R+C*D*S                          %%%
-    %%%                                         %%%
-    %%% R=-D1'*H*C*D1-RR                        %%%
-    %%%                                         %%%
-    %%% RR ?r dissipation)                      %%%
-    %%% Dissipationen uppbyggd av D4:           %%%
-    %%% DI=D4*B*H*D4                            %%%
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-    %m=10;          %problemstorlek
-    %h=1/(m-1);
-
-    % Variable koefficicients are stored in vector: c, size m,
-    % with the unknown stored as c(1), c(2), ..., c_m
-    % x=1:h:m*h;x=x';
-    % c=x.^0;
-
-
-    H=diag(ones(m,1),0);
-    H(1:6,1:6)=diag([13649/43200,12013/8640,2711/4320,5359/4320,7877/8640, ...
-    		 43801/43200]);
-    H(m-5:m,m-5:m)=fliplr(flipud(diag([13649/43200,12013/8640, ...
-    		    2711/4320,5359/4320,7877/8640,43801/43200])));
-
-
-    x1=0.70127127127127;
-
-
-    D1=(1/60*diag(ones(m-3,1),3)-9/60*diag(ones(m-2,1),2)+45/60*diag(ones(m-1,1),1)-45/60*diag(ones(m-1,1),-1)+9/60*diag(ones(m-2,1),-2)-1/60*diag(ones(m-3,1),-3));
-
-
-
-    D1(1:6,1:9)=[-21600/13649, 43200/13649*x1-7624/40947, -172800/13649*x1+ ...
-    	     715489/81894, 259200/13649*x1-187917/13649, -172800/13649* ...
-    	     x1+735635/81894, 43200/13649*x1-89387/40947, 0, 0, 0; ...
-    	     -8640/12013*x1+7624/180195, 0, 86400/12013*x1-57139/12013, ...
-    	     -172800/12013*x1+745733/72078, 129600/12013*x1-91715/12013, ...
-    	     -34560/12013*x1+240569/120130, 0, 0, 0; ...
-             17280/2711*x1-715489/162660, -43200/2711*x1+57139/5422, 0, ...
-             86400/2711*x1-176839/8133, -86400/2711*x1+242111/10844, ...
-             25920/2711*x1-182261/27110, 0, 0, 0; ...
-             -25920/5359*x1+187917/53590, 86400/5359*x1-745733/64308, ...
-             -86400/5359*x1+176839/16077, 0, 43200/5359*x1-165041/32154, ...
-             -17280/5359*x1+710473/321540, 72/5359, 0, 0; ...
-             34560/7877*x1-147127/47262, -129600/7877*x1+91715/7877, ...
-             172800/7877*x1-242111/15754, -86400/7877*x1+165041/23631, ...
-             0, 8640/7877*x1, -1296/7877, 144/7877, 0; ...
-             -43200/43801*x1+89387/131403, 172800/43801*x1-240569/87602,...
-             -259200/43801*x1+182261/43801, 172800/43801*x1-710473/262806, ...
-             -43200/43801*x1, 0, 32400/43801, -6480/43801, 720/43801];
-    D1(m-5:m,m-8:m)=flipud( fliplr(-D1(1:6,1:9)));
-    D1=D1/h;
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    S_U=[-25/12, 4, -3, 4/3, -1/4]/h;
-    S_1=zeros(1,m);
-    S_1(1:5)=S_U;
-    S_m=zeros(1,m);
-    S_m(m-4:m)=fliplr(-S_U);
-    S_1 = S_1';
-    S_m = S_m';
-
-
-
-    %DS=zeros(m,m);
-    %DS(1,1:5)=-[-25/12, 4, -3, 4/3, -1/4];
-    %DS(m,m-4:m)=fliplr(-[-25/12, 4, -3, 4/3, -1/4]);
-    %DS=diag(c)*DS/h;
-
-
-    H=h*H;
-    HI=inv(H);
-
-
-    M=sparse(m,m);
-    e_1 = sparse(e_1);
-    e_m = sparse(e_m);
-    S_1 = sparse(S_1);
-    S_m = sparse(S_m);
-
-    scheme_width = 7;
-    scheme_radius = (scheme_width-1)/2;
-    r = (1+scheme_radius):(m-scheme_radius);
-
-    function D2 = D2_fun(c)
-
-        Mm3 =  c(r-2) / 0.40e2 + c(r-1) / 0.40e2 - 0.11e2 / 0.360e3 * c(r-3) - 0.11e2 / 0.360e3 * c(r);
-        Mm2 =  c(r-3) / 0.20e2 - 0.3e1 / 0.10e2 * c(r-1) + c(r+1) / 0.20e2 + 0.7e1 / 0.40e2 * c(r) + 0.7e1 / 0.40e2 * c(r-2);
-        Mm1 = -c(r-3) / 0.40e2 - 0.3e1 / 0.10e2 * c(r-2) - 0.3e1 / 0.10e2 * c(r+1) - c(r+2) / 0.40e2 - 0.17e2 / 0.40e2 * c(r) - 0.17e2 / 0.40e2 * c(r-1);
-        M0 =  c(r-3) / 0.180e3 + c(r-2) / 0.8e1 + 0.19e2 / 0.20e2 * c(r-1) + 0.19e2 / 0.20e2 * c(r+1) + c(r+2) / 0.8e1 + c(r+3) / 0.180e3 + 0.101e3 / 0.180e3 * c(r);
-        Mp1 = -c(r-2) / 0.40e2 - 0.3e1 / 0.10e2 * c(r-1) - 0.3e1 / 0.10e2 * c(r+2) - c(r+3) / 0.40e2 - 0.17e2 / 0.40e2 * c(r) - 0.17e2 / 0.40e2 * c(r+1);
-        Mp2 =  c(r-1) / 0.20e2 - 0.3e1 / 0.10e2 * c(r+1) + c(r+3) / 0.20e2 + 0.7e1 / 0.40e2 * c(r) + 0.7e1 / 0.40e2 * c(r+2);
-        Mp3 =  c(r+1) / 0.40e2 + c(r+2) / 0.40e2 - 0.11e2 / 0.360e3 * c(r) - 0.11e2 / 0.360e3 * c(r+3);
-
-        M(r,:) = spdiags([Mm3 Mm2 Mm1 M0 Mp1 Mp2 Mp3],0:2*scheme_radius,length(r),m);
-
-
-        M(1:9,1:9)=[0.7912667594695582093926295e0 * c(1) + 0.2968472090638000742888467e0 * c(2) + 0.3185519088796429015220016e-2 * c(3) + 0.1632404042590951953384672e-1 * c(4) + 0.3160302244094415087693968e-1 * c(5) + 0.3167964748016105299646518e-1 * c(6) + 0.3148577733947253920469418e-1 * c(7) -0.1016689339350338144430605e1 * c(1) - 0.2845627370491611369031341e-1 * c(3) - 0.4128029838349298819825156e-1 * c(4) - 0.1392281451620140507549866e0 * c(5) - 0.1195777325611201766551392e0 * c(6) - 0.1194267756529333410855186e0 * c(7) 0.7075642937243715046279337e-1 * c(1) - 0.1845476106024151050283847e0 * c(2) - 0.4364163147111892346990101e-1 * c(4) + 0.2432367907207732460874765e0 * c(5) + 0.1582127073537215443965653e0 * c(6) + 0.1602348578364786307613271e0 * c(7) 0.2251991532891353212689574e0 * c(1) - 0.1662748711097054895317080e0 * c(2) + 0.2710530961648671297733465e-1 * c(3) - 0.1916646185968439909125616e0 * c(5) - 0.7684117160199014594442072e-1 * c(6) - 0.8219586949831697575883635e-1 * c(7) -0.5224403464202056316702078e-1 * c(1) + 0.4440063948509876221050939e-1 * c(2) - 0.1023976547309387874453988e-2 * c(3) + 0.7403484645316174090533193e-1 * c(4) + 0.1241625568998496895352046e-1 * c(6) + 0.7188652847892601282652228e-1 * c(5) + 0.1379362997104735503447960e-1 * c(7) -0.1828896813877197352675410e-1 * c(1) + 0.9574633163221758060736592e-2 * c(2) - 0.8105784530576404277872603e-3 * c(3) - 0.7348845587775519698437916e-2 * c(4) + 0.1063601949723906997026904e-1 * c(5) - 0.1315967038382618382356495e-1 * c(6) - 0.2117936478838753524581943e-1 * c(7) 0.1911888563316170927411831e-2 * c(4) - 0.4068130355529149936100229e-1 * c(5) + 0.1319674981073749167009902e-1 * c(6) + 0.2557266518123783676349144e-1 * c(7) 0.1559652871136785763960685e-1 * c(5) - 0.6486184157331537899459796e-2 * c(6) - 0.9110344554036319740147054e-2 * c(7) 0.5593983696629863059347067e-3 * c(6) - 0.1384822535100796372263822e-2 * c(5) + 0.8254241654378100663291154e-3 * c(7); -0.1016689339350338144430605e1 * c(1) - 0.2845627370491611369031341e-1 * c(3) - 0.4128029838349298819825156e-1 * c(4) - 0.1392281451620140507549866e0 * c(5) - 0.1195777325611201766551392e0 * c(6) - 0.1194267756529333410855186e0 * c(7) 0.1306332157111667628555907e1 * c(1) + 0.2542001760457345743492403e0 * c(3) + 0.1043897828092562609502636e0 * c(4) + 0.6672328021032112950919876e0 * c(5) + 0.4681819359722749441073885e0 * c(6) + 0.4676415410195836920069412e0 * c(7) -0.9091410269992464604926176e-1 * c(1) + 0.1103611313171476425250639e0 * c(4) - 0.1290397544997518887000350e1 * c(5) - 0.6639605248735044787146222e0 * c(6) - 0.6615974464005206184151509e0 * c(7) -0.2893557395653431666593814e0 * c(1) - 0.2421320004064592721552708e0 * c(3) + 0.1187670255028031027693374e1 * c(5) + 0.3956598149904136332753521e0 * c(6) + 0.3860048921755800000681479e0 * c(7) 0.6712774475803763988977355e-1 * c(1) + 0.9147192682075630179962131e-2 * c(3) - 0.1872196143003808021730728e0 * c(4) - 0.1319358558853174530078498e0 * c(6) - 0.4871575736811911887376923e0 * c(5) - 0.1047516312275448138054418e0 * c(7) 0.2349927974590068869356781e-1 * c(1) + 0.7240905383565181316381731e-2 * c(3) + 0.1858378996391679448655070e-1 * c(4) - 0.9289616133938676174345208e-1 * c(5) + 0.1223513270418807666970488e0 * c(6) + 0.1113520320436295033894092e0 * c(7) -0.4834791406446907590553793e-2 * c(4) + 0.2310683832687820403062715e0 * c(5) - 0.1080774142196007991746827e0 * c(6) - 0.1181561776427343335410349e0 * c(7) -0.8368141434403455353724691e-1 * c(5) + 0.4093499466767054661591066e-1 * c(6) + 0.4274641967636400692133626e-1 * c(7) -0.3576545132696983143406173e-2 * c(6) + 0.7389399124121078682094445e-2 * c(5) - 0.3812853991424095538688273e-2 * c(7); 0.7075642937243715046279337e-1 * c(1) - 0.1845476106024151050283847e0 * c(2) - 0.4364163147111892346990101e-1 * c(4) + 0.2432367907207732460874765e0 * c(5) + 0.1582127073537215443965653e0 * c(6) + 0.1602348578364786307613271e0 * c(7) -0.9091410269992464604926176e-1 * c(1) + 0.1103611313171476425250639e0 * c(4) - 0.1290397544997518887000350e1 * c(5) - 0.6639605248735044787146222e0 * c(6) - 0.6615974464005206184151509e0 * c(7) 0.6327161147136873807796515e-2 * c(1) + 0.1147318200715868527529827e0 * c(2) + 0.1166740554279680007487795e0 * c(4) + 0.2766610808285444037240703e1 * c(5) + 0.1070920689960817104203947e1 * c(6) + 0.1013161391032973057171717e1 * c(7) 0.2013769413884797246646959e-1 * c(1) + 0.1033717994630886401730470e0 * c(2) - 0.2913221621151742724258117e1 * c(5) - 0.8755807343482262259774782e0 * c(6) - 0.6909957183488812426508351e0 * c(7) -0.4671751091575462868310238e-2 * c(1) - 0.2760353365637712827793337e-1 * c(2) - 0.1979290298620869974478871e0 * c(4) + 0.5402985338373433052255418e0 * c(6) + 0.1239177593031911077924537e1 * c(5) + 0.2628038050247358227280031e0 * c(7) -0.1635430866921887819487473e-2 * c(1) - 0.5952475275883259619711594e-2 * c(2) + 0.1964682777744275219350831e-1 * c(4) + 0.3236640012639046600590714e0 * c(5) - 0.4659516693228870973898560e0 * c(6) - 0.2217272720941736859420432e0 * c(7) -0.5111353189352474549563559e-2 * c(4) - 0.5355878163774754346032096e0 * c(5) + 0.3328335104489738933610597e0 * c(6) + 0.2078656591178540157917135e0 * c(7) 0.1824328174134289562208038e0 * c(5) - 0.1059816030196818445908057e0 * c(6) - 0.7645121439374711162999809e-1 * c(7) 0.9209089963443799485648361e-2 * c(6) - 0.1591502818872493167091475e-1 * c(5) + 0.6705938225281132185266388e-2 * c(7); 0.2251991532891353212689574e0 * c(1) - 0.1662748711097054895317080e0 * c(2) + 0.2710530961648671297733465e-1 * c(3) - 0.1916646185968439909125616e0 * c(5) - 0.7684117160199014594442072e-1 * c(6) - 0.8219586949831697575883635e-1 * c(7) -0.2893557395653431666593814e0 * c(1) - 0.2421320004064592721552708e0 * c(3) + 0.1187670255028031027693374e1 * c(5) + 0.3956598149904136332753521e0 * c(6) + 0.3860048921755800000681479e0 * c(7) 0.2013769413884797246646959e-1 * c(1) + 0.1033717994630886401730470e0 * c(2) - 0.2913221621151742724258117e1 * c(5) - 0.8755807343482262259774782e0 * c(6) - 0.6909957183488812426508351e0 * c(7) 0.6409299775987186986730499e-1 * c(1) + 0.9313657638804699948929701e-1 * c(2) + 0.2306367624634749229113646e0 * c(3) + 0.3689440308283716620260816e1 * c(5) + 0.1190550338687608873798462e1 * c(6) + 0.5912479546888856519443605e0 * c(7) -0.1486895819265604128572498e-1 * c(1) - 0.2487040599390160764166412e-1 * c(2) - 0.8712928907711754187084757e-2 * c(3) - 0.1263507837371824205693950e1 * c(6) - 0.3058317397843997326920898e0 * c(7) - 0.1470691926045802954795783e1 * c(5) -0.5205147429855955657625694e-2 * c(1) - 0.5363098747528542488971874e-2 * c(2) - 0.6897142765790609546343709e-2 * c(3) - 0.7857524521667450101721993e0 * c(5) + 0.2291148005423734600066709e0 * c(7) + 0.9977064356292750529201981e0 * c(6) 0.6697297488067662265210608e0 * c(5) - 0.5013247356072127938999311e0 * c(6) - 0.1795161243106645437322408e0 * c(7) -0.2022909060111751565150958e0 * c(5) + 0.1453421858063658498587377e0 * c(6) + 0.5694872020480930665635812e-1 * c(7) -0.1200429618441003833696998e-1 * c(6) - 0.4776915669385923841535432e-2 * c(7) + 0.1678121185379596217850541e-1 * c(5); -0.5224403464202056316702078e-1 * c(1) + 0.4440063948509876221050939e-1 * c(2) - 0.1023976547309387874453988e-2 * c(3) + 0.7403484645316174090533193e-1 * c(4) + 0.1241625568998496895352046e-1 * c(6) + 0.7188652847892601282652228e-1 * c(5) + 0.1379362997104735503447960e-1 * c(7) 0.6712774475803763988977355e-1 * c(1) + 0.9147192682075630179962131e-2 * c(3) - 0.1872196143003808021730728e0 * c(4) - 0.1319358558853174530078498e0 * c(6) - 0.4871575736811911887376923e0 * c(5) - 0.1047516312275448138054418e0 * c(7) -0.4671751091575462868310238e-2 * c(1) - 0.2760353365637712827793337e-1 * c(2) - 0.1979290298620869974478871e0 * c(4) + 0.5402985338373433052255418e0 * c(6) + 0.1239177593031911077924537e1 * c(5) + 0.2628038050247358227280031e0 * c(7) -0.1486895819265604128572498e-1 * c(1) - 0.2487040599390160764166412e-1 * c(2) - 0.8712928907711754187084757e-2 * c(3) - 0.1263507837371824205693950e1 * c(6) - 0.3058317397843997326920898e0 * c(7) - 0.1470691926045802954795783e1 * c(5) 0.3449455095910233625229891e-2 * c(1) + 0.6641183499427826101618457e-2 * c(2) + 0.3291545083271862858501887e-3 * c(3) + 0.3357721707576477199985656e0 * c(4) + 0.2096413329579026439044119e1 * c(6) + 0.2317323204183126854954203e0 * c(7) + 0.6107825764368264576481962e-2 * c(8) + 0.7109125850683376695640722e0 * c(5) 0.1207544072304193806052558e-2 * c(1) + 0.1432116665752147607469646e-2 * c(2) + 0.2605582646183255957264249e-3 * c(3) - 0.3332941113251635390801278e-1 * c(4) - 0.2808241697385532683612407e0 * c(7) - 0.2720908083525083608370563e-1 * c(8) + 0.1045865435682921987447929e0 * c(5) - 0.1348436986667115543203552e1 * c(6) 0.8671038084174692625075159e-2 * c(4) + 0.1736073411355428563685818e0 * c(6) + 0.5331362125287625412555844e-1 * c(8) - 0.2424935262404526301801157e0 * c(5) + 0.1569015257678588270609004e0 * c(7) -0.8631683980217122275970376e-1 * c(6) + 0.2698842360470999243492629e-1 * c(7) + 0.8098194147715651085292754e-1 * c(5) - 0.3276463639080639163926118e-1 * c(8) 0.7462059484530855073291365e-2 * c(6) - 0.8121640361668678949573496e-3 * c(7) + 0.5522702088127090209264064e-3 * c(8) - 0.7202165657176696199260422e-2 * c(5); -0.1828896813877197352675410e-1 * c(1) + 0.9574633163221758060736592e-2 * c(2) - 0.8105784530576404277872603e-3 * c(3) - 0.7348845587775519698437916e-2 * c(4) + 0.1063601949723906997026904e-1 * c(5) - 0.1315967038382618382356495e-1 * c(6) - 0.2117936478838753524581943e-1 * c(7) 0.2349927974590068869356781e-1 * c(1) + 0.7240905383565181316381731e-2 * c(3) + 0.1858378996391679448655070e-1 * c(4) - 0.9289616133938676174345208e-1 * c(5) + 0.1223513270418807666970488e0 * c(6) + 0.1113520320436295033894092e0 * c(7) -0.1635430866921887819487473e-2 * c(1) - 0.5952475275883259619711594e-2 * c(2) + 0.1964682777744275219350831e-1 * c(4) + 0.3236640012639046600590714e0 * c(5) - 0.4659516693228870973898560e0 * c(6) - 0.2217272720941736859420432e0 * c(7) -0.5205147429855955657625694e-2 * c(1) - 0.5363098747528542488971874e-2 * c(2) - 0.6897142765790609546343709e-2 * c(3) - 0.7857524521667450101721993e0 * c(5) + 0.2291148005423734600066709e0 * c(7) + 0.9977064356292750529201981e0 * c(6) 0.1207544072304193806052558e-2 * c(1) + 0.1432116665752147607469646e-2 * c(2) + 0.2605582646183255957264249e-3 * c(3) - 0.3332941113251635390801278e-1 * c(4) - 0.2808241697385532683612407e0 * c(7) - 0.2720908083525083608370563e-1 * c(8) + 0.1045865435682921987447929e0 * c(5) - 0.1348436986667115543203552e1 * c(6) 0.4227226173449345042468960e-3 * c(1) + 0.3088241944378964404772302e-3 * c(2) + 0.2062575706647430620228133e-3 * c(3) + 0.3308343404200968256656458e-2 * c(4) + 0.5828047016405001815804837e0 * c(5) + 0.8054174220366215473556835e0 * c(7) + 0.1338363233410033443348225e0 * c(8) + 0.5555555555555555555555556e-2 * c(9) + 0.1190362071861893051132274e1 * c(6) -0.8607044252686413302647675e-3 * c(4) - 0.1748074708673904989293256e0 * c(5) - 0.3132544850115050165022338e0 * c(8) - 0.2500000000000000000000000e-1 * c(9) - 0.3169166305310429271303167e0 * c(7) - 0.6691607091647929161078591e0 * c(6) 0.3354661791693352108660900e-1 * c(5) - 0.3343620022386971405018586e0 * c(7) + 0.5000000000000000000000000e-1 * c(9) + 0.2169790609807602750804271e0 * c(6) + 0.1838363233410033443348225e0 * c(8) 0.2912518476823004642951502e-1 * c(7) + 0.2279091916474916391629437e-1 * c(8) - 0.3068985997518740530511593e-1 * c(6) - 0.1781799513347360596249022e-2 * c(5) - 0.3055555555555555555555556e-1 * c(9); 0.1911888563316170927411831e-2 * c(4) - 0.4068130355529149936100229e-1 * c(5) + 0.1319674981073749167009902e-1 * c(6) + 0.2557266518123783676349144e-1 * c(7) -0.4834791406446907590553793e-2 * c(4) + 0.2310683832687820403062715e0 * c(5) - 0.1080774142196007991746827e0 * c(6) - 0.1181561776427343335410349e0 * c(7) -0.5111353189352474549563559e-2 * c(4) - 0.5355878163774754346032096e0 * c(5) + 0.3328335104489738933610597e0 * c(6) + 0.2078656591178540157917135e0 * c(7) 0.6697297488067662265210608e0 * c(5) - 0.5013247356072127938999311e0 * c(6) - 0.1795161243106645437322408e0 * c(7) 0.8671038084174692625075159e-2 * c(4) + 0.1736073411355428563685818e0 * c(6) + 0.5331362125287625412555844e-1 * c(8) - 0.2424935262404526301801157e0 * c(5) + 0.1569015257678588270609004e0 * c(7) -0.8607044252686413302647675e-3 * c(4) - 0.1748074708673904989293256e0 * c(5) - 0.3132544850115050165022338e0 * c(8) - 0.2500000000000000000000000e-1 * c(9) - 0.3169166305310429271303167e0 * c(7) - 0.6691607091647929161078591e0 * c(6) 0.2239223735771599178951297e-3 * c(4) + 0.1275437785430956673825710e0 * c(5) + 0.1011699483929608164601067e1 * c(6) + 0.9698817275172575247533506e0 * c(8) + 0.1250000000000000000000000e0 * c(9) + 0.5555555555555555555555556e-2 * c(10) + 0.4823177543031281500117826e0 * c(7) -0.3784113973033012949863031e-1 * c(5) - 0.2997556885134827361576001e0 * c(6) - 0.3000000000000000000000000e0 * c(9) - 0.2500000000000000000000000e-1 * c(10) - 0.3991486867446821178415359e0 * c(7) - 0.4382544850115050165022338e0 * c(8) 0.4698146218022683933926520e-1 * c(6) - 0.2966863787471237458744416e0 * c(8) + 0.5000000000000000000000000e-1 * c(10) + 0.1716355704146006481727960e0 * c(7) + 0.3069346152296258362380356e-2 * c(5) + 0.1750000000000000000000000e0 * c(9); 0.1559652871136785763960685e-1 * c(5) - 0.6486184157331537899459796e-2 * c(6) - 0.9110344554036319740147054e-2 * c(7) -0.8368141434403455353724691e-1 * c(5) + 0.4093499466767054661591066e-1 * c(6) + 0.4274641967636400692133626e-1 * c(7) 0.1824328174134289562208038e0 * c(5) - 0.1059816030196818445908057e0 * c(6) - 0.7645121439374711162999809e-1 * c(7) -0.2022909060111751565150958e0 * c(5) + 0.1453421858063658498587377e0 * c(6) + 0.5694872020480930665635812e-1 * c(7) -0.8631683980217122275970376e-1 * c(6) + 0.2698842360470999243492629e-1 * c(7) + 0.8098194147715651085292754e-1 * c(5) - 0.3276463639080639163926118e-1 * c(8) 0.3354661791693352108660900e-1 * c(5) - 0.3343620022386971405018586e0 * c(7) + 0.5000000000000000000000000e-1 * c(9) + 0.2169790609807602750804271e0 * c(6) + 0.1838363233410033443348225e0 * c(8) -0.3784113973033012949863031e-1 * c(5) - 0.2997556885134827361576001e0 * c(6) - 0.3000000000000000000000000e0 * c(9) - 0.2500000000000000000000000e-1 * c(10) - 0.3991486867446821178415359e0 * c(7) - 0.4382544850115050165022338e0 * c(8) 0.1230328942716804455358698e-1 * c(5) + 0.1183647529645898332481833e0 * c(6) + 0.9410511898227943334189628e0 * c(7) + 0.9500000000000000000000000e0 * c(9) + 0.1250000000000000000000000e0 * c(10) + 0.5555555555555555555555556e-2 * c(11) + 0.5699474344521144554459336e0 * c(8) -0.2308067892671916339568942e-1 * c(6) - 0.2986625053775149497180439e0 * c(7) - 0.3000000000000000000000000e0 * c(10) - 0.2500000000000000000000000e-1 * c(11) - 0.1047734860515050802561078e-2 * c(5) - 0.4272090808352508360837056e0 * c(8) - 0.4250000000000000000000000e0 * c(9); 0.5593983696629863059347067e-3 * c(6) - 0.1384822535100796372263822e-2 * c(5) + 0.8254241654378100663291154e-3 * c(7) -0.3576545132696983143406173e-2 * c(6) + 0.7389399124121078682094445e-2 * c(5) - 0.3812853991424095538688273e-2 * c(7) 0.9209089963443799485648361e-2 * c(6) - 0.1591502818872493167091475e-1 * c(5) + 0.6705938225281132185266388e-2 * c(7) -0.1200429618441003833696998e-1 * c(6) - 0.4776915669385923841535432e-2 * c(7) + 0.1678121185379596217850541e-1 * c(5) 0.7462059484530855073291365e-2 * c(6) - 0.8121640361668678949573496e-3 * c(7) + 0.5522702088127090209264064e-3 * c(8) - 0.7202165657176696199260422e-2 * c(5) 0.2912518476823004642951502e-1 * c(7) + 0.2279091916474916391629437e-1 * c(8) - 0.3068985997518740530511593e-1 * c(6) - 0.1781799513347360596249022e-2 * c(5) - 0.3055555555555555555555556e-1 * c(9) 0.4698146218022683933926520e-1 * c(6) - 0.2966863787471237458744416e0 * c(8) + 0.5000000000000000000000000e-1 * c(10) + 0.1716355704146006481727960e0 * c(7) + 0.3069346152296258362380356e-2 * c(5) + 0.1750000000000000000000000e0 * c(9) -0.2308067892671916339568942e-1 * c(6) - 0.2986625053775149497180439e0 * c(7) - 0.3000000000000000000000000e0 * c(10) - 0.2500000000000000000000000e-1 * c(11) - 0.1047734860515050802561078e-2 * c(5) - 0.4272090808352508360837056e0 * c(8) - 0.4250000000000000000000000e0 * c(9) 0.5139370221149109977041877e-2 * c(6) + 0.1247723215009422001393184e0 * c(7) + 0.9505522702088127090209264e0 * c(8) + 0.9500000000000000000000000e0 * c(10) + 0.1250000000000000000000000e0 * c(11) + 0.5555555555555555555555556e-2 * c(12) + 0.9159362465153641826887659e-4 * c(5) + 0.5611111111111111111111111e0 * c(9);];
-
-        M(m-8:m,m-8:m)=[0.5555555555555555555555556e-2 * c(m-11) + 0.1250000000000000000000000e0 * c(m-10) + 0.9500000000000000000000000e0 * c(m-9) + 0.9505522702088127090209264e0 * c(m-7) + 0.1247205076844361998744053e0 * c(m-6) + 0.5139370221149109977041877e-2 * c(m-5) + 0.5611111111111111111111111e0 * c(m-8) + 0.1434074411575366831819799e-3 * c(m-4) -0.2500000000000000000000000e-1 * c(m-10) - 0.3000000000000000000000000e0 * c(m-9) - 0.2980649679116425253322056e0 * c(m-6) - 0.2308067892671916339568942e-1 * c(m-5) - 0.4250000000000000000000000e0 * c(m-8) - 0.4272090808352508360837056e0 * c(m-7) - 0.1645272326387475188399322e-2 * c(m-4) 0.5000000000000000000000000e-1 * c(m-9) - 0.2966863787471237458744416e0 * c(m-7) + 0.4698146218022683933926520e-1 * c(m-5) + 0.1750000000000000000000000e0 * c(m-8) + 0.1700291833903489463825077e0 * c(m-6) + 0.4675733176547960152668626e-2 * c(m-4) 0.2279091916474916391629437e-1 * c(m-7) + 0.3097763128598982561225538e-1 * c(m-6) - 0.3055555555555555555555556e-1 * c(m-8) - 0.3068985997518740530511593e-1 * c(m-5) - 0.3634246031107139778989373e-2 * c(m-4) 0.5522702088127090209264064e-3 * c(m-7) - 0.3265435411305071914756373e-2 * c(m-6) + 0.7462059484530855073291365e-2 * c(m-5) - 0.4748894282038492179461399e-2 * c(m-4) 0.6272075574042975468177820e-3 * c(m-6) - 0.1200429618441003833696998e-1 * c(m-5) + 0.1137708862700574079015220e-1 * c(m-4) 0.9209089963443799485648361e-2 * c(m-5) - 0.3129629392354775191148163e-3 * c(m-6) - 0.8896127024208321966533544e-2 * c(m-4) -0.3576545132696983143406173e-2 * c(m-5) + 0.4335019854436220306755673e-3 * c(m-6) + 0.3143043147253361112730605e-2 * c(m-4) 0.5593983696629863059347067e-3 * c(m-5) - 0.1446656414398166805849327e-3 * c(m-6) - 0.4147327282231696253497740e-3 * c(m-4); -0.2500000000000000000000000e-1 * c(m-10) - 0.3000000000000000000000000e0 * c(m-9) - 0.2980649679116425253322056e0 * c(m-6) - 0.2308067892671916339568942e-1 * c(m-5) - 0.4250000000000000000000000e0 * c(m-8) - 0.4272090808352508360837056e0 * c(m-7) - 0.1645272326387475188399322e-2 * c(m-4) 0.5555555555555555555555556e-2 * c(m-10) + 0.1250000000000000000000000e0 * c(m-9) + 0.9500000000000000000000000e0 * c(m-8) + 0.9341601509609901526962449e0 * c(m-6) + 0.1183647529645898332481833e0 * c(m-5) + 0.1919432828897222527630486e-1 * c(m-4) + 0.5699474344521144554459336e0 * c(m-7) -0.2500000000000000000000000e-1 * c(m-9) - 0.3000000000000000000000000e0 * c(m-8) - 0.2997556885134827361576001e0 * c(m-5) - 0.5636663150858098975790317e-1 * c(m-4) - 0.4382544850115050165022338e0 * c(m-7) - 0.3806231949664312575822630e0 * c(m-6) 0.5000000000000000000000000e-1 * c(m-8) - 0.3557251496099816106154206e0 * c(m-6) + 0.5490976528821799120017102e-1 * c(m-4) + 0.1838363233410033443348225e0 * c(m-7) + 0.2169790609807602750804271e0 * c(m-5) 0.5528052133944605740009217e-1 * c(m-6) - 0.8631683980217122275970376e-1 * c(m-5) - 0.3276463639080639163926118e-1 * c(m-7) + 0.5268984374242044588776166e-1 * c(m-4) -0.5373770512016897565958305e-2 * c(m-6) + 0.1453421858063658498587377e0 * c(m-5) - 0.1399684152943489522927794e0 * c(m-4) -0.1059816030196818445908057e0 * c(m-5) + 0.1014880675788250237247178e0 * c(m-4) + 0.4493535440856820866087846e-2 * c(m-6) 0.4093499466767054661591066e-1 * c(m-5) - 0.3471075437892810033585296e-1 * c(m-4) - 0.6224240288742446280057699e-2 * c(m-6) -0.6486184157331537899459796e-2 * c(m-5) + 0.4409068609809831485979484e-2 * c(m-4) + 0.2077115547521706413480312e-2 * c(m-6); 0.5000000000000000000000000e-1 * c(m-9) - 0.2966863787471237458744416e0 * c(m-7) + 0.4698146218022683933926520e-1 * c(m-5) + 0.1750000000000000000000000e0 * c(m-8) + 0.1700291833903489463825077e0 * c(m-6) + 0.4675733176547960152668626e-2 * c(m-4) -0.2500000000000000000000000e-1 * c(m-9) - 0.3000000000000000000000000e0 * c(m-8) - 0.2997556885134827361576001e0 * c(m-5) - 0.5636663150858098975790317e-1 * c(m-4) - 0.4382544850115050165022338e0 * c(m-7) - 0.3806231949664312575822630e0 * c(m-6) 0.5555555555555555555555556e-2 * c(m-9) + 0.1250000000000000000000000e0 * c(m-8) + 0.9698817275172575247533506e0 * c(m-7) + 0.1011699483929608164601067e1 * c(m-5) + 0.1773466968705924819112984e0 * c(m-4) + 0.2239223735771599178951297e-3 * c(m-3) + 0.4325148359756313354830552e0 * c(m-6) -0.2500000000000000000000000e-1 * c(m-8) - 0.3132544850115050165022338e0 * c(m-7) - 0.2322389872063761557916742e0 * c(m-4) - 0.8607044252686413302647675e-3 * c(m-3) - 0.2594851141920572702679681e0 * c(m-6) - 0.6691607091647929161078591e0 * c(m-5) 0.5331362125287625412555844e-1 * c(m-7) + 0.1736073411355428563685818e0 * c(m-5) + 0.8671038084174692625075159e-2 * c(m-3) + 0.8084259844422177692569663e-1 * c(m-6) - 0.1664345989168155800449120e0 * c(m-4) -0.5013247356072127938999311e0 * c(m-5) + 0.5021853752328231128475915e0 * c(m-4) - 0.1197175073672143005877150e-1 * c(m-6) 0.3328335104489738933610597e0 * c(m-5) - 0.3179803804558436283847901e0 * c(m-4) - 0.5111353189352474549563559e-2 * c(m-3) - 0.9741776803777790426705996e-2 * c(m-6) -0.1080774142196007991746827e0 * c(m-5) + 0.9941834083648937298100811e-1 * c(m-4) - 0.4834791406446907590553793e-2 * c(m-3) + 0.1349386478955833378422842e-1 * c(m-6) 0.1319674981073749167009902e-1 * c(m-5) - 0.1060554802883657391328704e-1 * c(m-4) + 0.1911888563316170927411831e-2 * c(m-3) - 0.4503090345217088684223814e-2 * c(m-6); 0.2279091916474916391629437e-1 * c(m-7) + 0.3097763128598982561225538e-1 * c(m-6) - 0.3055555555555555555555556e-1 * c(m-8) - 0.3068985997518740530511593e-1 * c(m-5) - 0.3634246031107139778989373e-2 * c(m-4) 0.5000000000000000000000000e-1 * c(m-8) - 0.3557251496099816106154206e0 * c(m-6) + 0.5490976528821799120017102e-1 * c(m-4) + 0.1838363233410033443348225e0 * c(m-7) + 0.2169790609807602750804271e0 * c(m-5) -0.2500000000000000000000000e-1 * c(m-8) - 0.3132544850115050165022338e0 * c(m-7) - 0.2322389872063761557916742e0 * c(m-4) - 0.8607044252686413302647675e-3 * c(m-3) - 0.2594851141920572702679681e0 * c(m-6) - 0.6691607091647929161078591e0 * c(m-5) 0.5555555555555555555555556e-2 * c(m-8) + 0.1338363233410033443348225e0 * c(m-7) + 0.7391887916719206077121040e0 * c(m-6) + 0.6490333320052011212240632e0 * c(m-4) + 0.3308343404200968256656458e-2 * c(m-3) + 0.2062575706647430620228133e-3 * c(m-2) + 0.3088241944378964404772302e-3 * c(m-1) + 0.4227226173449345042468960e-3 * c(m) + 0.1190362071861893051132274e1 * c(m-5) -0.2720908083525083608370563e-1 * c(m-7) - 0.1931148612480615118957263e0 * c(m-6) - 0.3332941113251635390801278e-1 * c(m-3) + 0.2605582646183255957264249e-3 * c(m-2) + 0.1432116665752147607469646e-2 * c(m-1) + 0.1207544072304193806052558e-2 * c(m) - 0.1348436986667115543203552e1 * c(m-5) + 0.1687723507780044227927853e-1 * c(m-4) 0.3590669644811151307464697e-1 * c(m-6) - 0.5925443480724830632401754e0 * c(m-4) - 0.6897142765790609546343709e-2 * c(m-2) - 0.5363098747528542488971874e-2 * c(m-1) - 0.5205147429855955657625694e-2 * c(m) + 0.9977064356292750529201981e0 * c(m-5) 0.7272438906214475928744770e-1 * c(m-4) + 0.1964682777744275219350831e-1 * c(m-3) - 0.5952475275883259619711594e-2 * c(m-1) - 0.1635430866921887819487473e-2 * c(m) + 0.2921234010758621482958052e-1 * c(m-6) - 0.4659516693228870973898560e0 * c(m-5) 0.5891947149681041048896399e-1 * c(m-4) + 0.1858378996391679448655070e-1 * c(m-3) + 0.7240905383565181316381731e-2 * c(m-2) + 0.2349927974590068869356781e-1 * c(m) - 0.4046360079256766884300687e-1 * c(m-6) + 0.1223513270418807666970488e0 * c(m-5) -0.2404661162020836566908542e-1 * c(m-4) - 0.7348845587775519698437916e-2 * c(m-3) - 0.8105784530576404277872603e-3 * c(m-2) + 0.9574633163221758060736592e-2 * c(m-1) - 0.1828896813877197352675410e-1 * c(m) + 0.1350326632905990039353503e-1 * c(m-6) - 0.1315967038382618382356495e-1 * c(m-5); 0.5522702088127090209264064e-3 * c(m-7) - 0.3265435411305071914756373e-2 * c(m-6) + 0.7462059484530855073291365e-2 * c(m-5) - 0.4748894282038492179461399e-2 * c(m-4) 0.5528052133944605740009217e-1 * c(m-6) - 0.8631683980217122275970376e-1 * c(m-5) - 0.3276463639080639163926118e-1 * c(m-7) + 0.5268984374242044588776166e-1 * c(m-4) 0.5331362125287625412555844e-1 * c(m-7) + 0.1736073411355428563685818e0 * c(m-5) + 0.8671038084174692625075159e-2 * c(m-3) + 0.8084259844422177692569663e-1 * c(m-6) - 0.1664345989168155800449120e0 * c(m-4) -0.2720908083525083608370563e-1 * c(m-7) - 0.1931148612480615118957263e0 * c(m-6) - 0.3332941113251635390801278e-1 * c(m-3) + 0.2605582646183255957264249e-3 * c(m-2) + 0.1432116665752147607469646e-2 * c(m-1) + 0.1207544072304193806052558e-2 * c(m) - 0.1348436986667115543203552e1 * c(m-5) + 0.1687723507780044227927853e-1 * c(m-4) 0.6107825764368264576481962e-2 * c(m-7) + 0.1155752633643216628010304e0 * c(m-6) + 0.2096413329579026439044119e1 * c(m-5) + 0.3357721707576477199985656e0 * c(m-3) + 0.3291545083271862858501887e-3 * c(m-2) + 0.6641183499427826101618457e-2 * c(m-1) + 0.3449455095910233625229891e-2 * c(m) + 0.8270696421223286922584620e0 * c(m-4) -0.4995827370863505253765970e-1 * c(m-6) - 0.1263507837371824205693950e1 * c(m-5) - 0.8712928907711754187084757e-2 * c(m-2) - 0.2487040599390160764166412e-1 * c(m-1) - 0.1486895819265604128572498e-1 * c(m) - 0.1726565392121567634950213e1 * c(m-4) 0.5402985338373433052255418e0 * c(m-5) - 0.1979290298620869974478871e0 * c(m-3) - 0.2760353365637712827793337e-1 * c(m-1) - 0.4671751091575462868310238e-2 * c(m) - 0.6952587985456154591014641e-1 * c(m-6) + 0.1571507277911208446562686e1 * c(m-4) -0.1319358558853174530078498e0 * c(m-5) - 0.1872196143003808021730728e0 * c(m-3) + 0.9147192682075630179962131e-2 * c(m-2) + 0.6712774475803763988977355e-1 * c(m) + 0.9630407686703666967100804e-1 * c(m-6) - 0.6882132817757726722141421e0 * c(m-4) 0.1241625568998496895352046e-1 * c(m-5) + 0.7403484645316174090533193e-1 * c(m-3) - 0.1023976547309387874453988e-2 * c(m-2) + 0.4440063948509876221050939e-1 * c(m-1) - 0.5224403464202056316702078e-1 * c(m) - 0.3213800979246298453953842e-1 * c(m-6) + 0.1178181682424363524005403e0 * c(m-4); 0.6272075574042975468177820e-3 * c(m-6) - 0.1200429618441003833696998e-1 * c(m-5) + 0.1137708862700574079015220e-1 * c(m-4) -0.5373770512016897565958305e-2 * c(m-6) + 0.1453421858063658498587377e0 * c(m-5) - 0.1399684152943489522927794e0 * c(m-4) -0.5013247356072127938999311e0 * c(m-5) + 0.5021853752328231128475915e0 * c(m-4) - 0.1197175073672143005877150e-1 * c(m-6) 0.3590669644811151307464697e-1 * c(m-6) - 0.5925443480724830632401754e0 * c(m-4) - 0.6897142765790609546343709e-2 * c(m-2) - 0.5363098747528542488971874e-2 * c(m-1) - 0.5205147429855955657625694e-2 * c(m) + 0.9977064356292750529201981e0 * c(m-5) -0.4995827370863505253765970e-1 * c(m-6) - 0.1263507837371824205693950e1 * c(m-5) - 0.8712928907711754187084757e-2 * c(m-2) - 0.2487040599390160764166412e-1 * c(m-1) - 0.1486895819265604128572498e-1 * c(m) - 0.1726565392121567634950213e1 * c(m-4) 0.2760393423824887721078848e-1 * c(m-6) + 0.1190550338687608873798462e1 * c(m-5) + 0.4253084328734353394994388e1 * c(m-4) + 0.2306367624634749229113646e0 * c(m-2) + 0.9313657638804699948929701e-1 * c(m-1) + 0.6409299775987186986730499e-1 * c(m) -0.8755807343482262259774782e0 * c(m-5) - 0.3645285178085761821545207e1 * c(m-4) + 0.1033717994630886401730470e0 * c(m-1) + 0.2013769413884797246646959e-1 * c(m) + 0.4106783858513785463625543e-1 * c(m-6) 0.3956598149904136332753521e0 * c(m-5) + 0.1630560443616104907615866e1 * c(m-4) - 0.2421320004064592721552708e0 * c(m-2) - 0.2893557395653431666593814e0 * c(m) - 0.5688529641249387985434413e-1 * c(m-6) -0.7684117160199014594442072e-1 * c(m-5) - 0.2928439026361256842196229e0 * c(m-4) + 0.2710530961648671297733465e-1 * c(m-2) - 0.1662748711097054895317080e0 * c(m-1) + 0.2251991532891353212689574e0 * c(m) + 0.1898341454096471754822498e-1 * c(m-6); 0.9209089963443799485648361e-2 * c(m-5) - 0.3129629392354775191148163e-3 * c(m-6) - 0.8896127024208321966533544e-2 * c(m-4) -0.1059816030196818445908057e0 * c(m-5) + 0.1014880675788250237247178e0 * c(m-4) + 0.4493535440856820866087846e-2 * c(m-6) 0.3328335104489738933610597e0 * c(m-5) - 0.3179803804558436283847901e0 * c(m-4) - 0.5111353189352474549563559e-2 * c(m-3) - 0.9741776803777790426705996e-2 * c(m-6) 0.7272438906214475928744770e-1 * c(m-4) + 0.1964682777744275219350831e-1 * c(m-3) - 0.5952475275883259619711594e-2 * c(m-1) - 0.1635430866921887819487473e-2 * c(m) + 0.2921234010758621482958052e-1 * c(m-6) - 0.4659516693228870973898560e0 * c(m-5) 0.5402985338373433052255418e0 * c(m-5) - 0.1979290298620869974478871e0 * c(m-3) - 0.2760353365637712827793337e-1 * c(m-1) - 0.4671751091575462868310238e-2 * c(m) - 0.6952587985456154591014641e-1 * c(m-6) + 0.1571507277911208446562686e1 * c(m-4) -0.8755807343482262259774782e0 * c(m-5) - 0.3645285178085761821545207e1 * c(m-4) + 0.1033717994630886401730470e0 * c(m-1) + 0.2013769413884797246646959e-1 * c(m) + 0.4106783858513785463625543e-1 * c(m-6) 0.1070920689960817104203947e1 * c(m-5) + 0.3717418466925056542408153e1 * c(m-4) + 0.1166740554279680007487795e0 * c(m-3) + 0.1147318200715868527529827e0 * c(m-1) + 0.6327161147136873807796515e-2 * c(m) + 0.6235373239336055200426697e-1 * c(m-6) -0.6639605248735044787146222e0 * c(m-5) - 0.1865625445986772763641423e1 * c(m-4) + 0.1103611313171476425250639e0 * c(m-3) - 0.9091410269992464604926176e-1 * c(m) - 0.8636954541126674177407762e-1 * c(m-6) 0.1582127073537215443965653e0 * c(m-5) + 0.3746489300753517635549495e0 * c(m-4) - 0.4364163147111892346990101e-1 * c(m-3) - 0.1845476106024151050283847e0 * c(m-1) + 0.7075642937243715046279337e-1 * c(m) + 0.2882271848190011329385407e-1 * c(m-6); -0.3576545132696983143406173e-2 * c(m-5) + 0.4335019854436220306755673e-3 * c(m-6) + 0.3143043147253361112730605e-2 * c(m-4) 0.4093499466767054661591066e-1 * c(m-5) - 0.3471075437892810033585296e-1 * c(m-4) - 0.6224240288742446280057699e-2 * c(m-6) -0.1080774142196007991746827e0 * c(m-5) + 0.9941834083648937298100811e-1 * c(m-4) - 0.4834791406446907590553793e-2 * c(m-3) + 0.1349386478955833378422842e-1 * c(m-6) 0.5891947149681041048896399e-1 * c(m-4) + 0.1858378996391679448655070e-1 * c(m-3) + 0.7240905383565181316381731e-2 * c(m-2) + 0.2349927974590068869356781e-1 * c(m) - 0.4046360079256766884300687e-1 * c(m-6) + 0.1223513270418807666970488e0 * c(m-5) -0.1319358558853174530078498e0 * c(m-5) - 0.1872196143003808021730728e0 * c(m-3) + 0.9147192682075630179962131e-2 * c(m-2) + 0.6712774475803763988977355e-1 * c(m) + 0.9630407686703666967100804e-1 * c(m-6) - 0.6882132817757726722141421e0 * c(m-4) 0.3956598149904136332753521e0 * c(m-5) + 0.1630560443616104907615866e1 * c(m-4) - 0.2421320004064592721552708e0 * c(m-2) - 0.2893557395653431666593814e0 * c(m) - 0.5688529641249387985434413e-1 * c(m-6) -0.6639605248735044787146222e0 * c(m-5) - 0.1865625445986772763641423e1 * c(m-4) + 0.1103611313171476425250639e0 * c(m-3) - 0.9091410269992464604926176e-1 * c(m) - 0.8636954541126674177407762e-1 * c(m-6) 0.4681819359722749441073885e0 * c(m-5) + 0.1015239189167790053447110e1 * c(m-4) + 0.1043897828092562609502636e0 * c(m-3) + 0.2542001760457345743492403e0 * c(m-2) + 0.1306332157111667628555907e1 * c(m) + 0.1196351539550049336518187e0 * c(m-6) -0.1195777325611201766551392e0 * c(m-5) - 0.2187310061229745694542609e0 * c(m-4) - 0.4128029838349298819825156e-1 * c(m-3) - 0.2845627370491611369031341e-1 * c(m-2) - 0.1016689339350338144430605e1 * c(m) - 0.3992391469197282238624438e-1 * c(m-6); 0.5593983696629863059347067e-3 * c(m-5) - 0.1446656414398166805849327e-3 * c(m-6) - 0.4147327282231696253497740e-3 * c(m-4) -0.6486184157331537899459796e-2 * c(m-5) + 0.4409068609809831485979484e-2 * c(m-4) + 0.2077115547521706413480312e-2 * c(m-6) 0.1319674981073749167009902e-1 * c(m-5) - 0.1060554802883657391328704e-1 * c(m-4) + 0.1911888563316170927411831e-2 * c(m-3) - 0.4503090345217088684223814e-2 * c(m-6) -0.2404661162020836566908542e-1 * c(m-4) - 0.7348845587775519698437916e-2 * c(m-3) - 0.8105784530576404277872603e-3 * c(m-2) + 0.9574633163221758060736592e-2 * c(m-1) - 0.1828896813877197352675410e-1 * c(m) + 0.1350326632905990039353503e-1 * c(m-6) - 0.1315967038382618382356495e-1 * c(m-5) 0.1241625568998496895352046e-1 * c(m-5) + 0.7403484645316174090533193e-1 * c(m-3) - 0.1023976547309387874453988e-2 * c(m-2) + 0.4440063948509876221050939e-1 * c(m-1) - 0.5224403464202056316702078e-1 * c(m) - 0.3213800979246298453953842e-1 * c(m-6) + 0.1178181682424363524005403e0 * c(m-4) -0.7684117160199014594442072e-1 * c(m-5) - 0.2928439026361256842196229e0 * c(m-4) + 0.2710530961648671297733465e-1 * c(m-2) - 0.1662748711097054895317080e0 * c(m-1) + 0.2251991532891353212689574e0 * c(m) + 0.1898341454096471754822498e-1 * c(m-6) 0.1582127073537215443965653e0 * c(m-5) + 0.3746489300753517635549495e0 * c(m-4) - 0.4364163147111892346990101e-1 * c(m-3) - 0.1845476106024151050283847e0 * c(m-1) + 0.7075642937243715046279337e-1 * c(m) + 0.2882271848190011329385407e-1 * c(m-6) -0.1195777325611201766551392e0 * c(m-5) - 0.2187310061229745694542609e0 * c(m-4) - 0.4128029838349298819825156e-1 * c(m-3) - 0.2845627370491611369031341e-1 * c(m-2) - 0.1016689339350338144430605e1 * c(m) - 0.3992391469197282238624438e-1 * c(m-6) 0.3167964748016105299646518e-1 * c(m-5) + 0.4976563420877041544013670e-1 * c(m-4) + 0.1632404042590951953384672e-1 * c(m-3) + 0.3185519088796429015220016e-2 * c(m-2) + 0.2968472090638000742888467e0 * c(m-1) + 0.7912667594695582093926295e0 * c(m) + 0.1332316557164627464149716e-1 * c(m-6);];
-
-        M(5,10)=M(10,5);
-        M(m-4,m-9)=M(m-9,m-4);
-
-        M=M/h;
-
-        D2=HI*(-M-diag(c)*e_1*S_1'+diag(c)*e_m*S_m');
-    end
-    D2 = @D2_fun;
-
-    S2_U=[0.35e2 / 0.12e2 -0.26e2 / 0.3e1 0.19e2 / 0.2e1 -0.14e2 / 0.3e1 0.11e2 / 0.12e2;]/h^2;
-    S2_1=zeros(1,m);
-    S2_1(1:5)=S2_U;
-    S2_m=zeros(1,m);
-    S2_m(m-4:m)=fliplr(S2_U);
-    S2_1 = S2_1';
-    S2_m = S2_m';
-
-
-
-
-
-    % Fourth derivative, 1th order accurate at first 8 boundary points (still
-    % yield 5th order convergence if stable: for example u_tt=-u_xxxx
-
-    m4=7/240;m3=-2/5;m2=169/60;m1=-122/15;m0=91/8;
-    M4=m4*(diag(ones(m-4,1),4)+diag(ones(m-4,1),-4))+m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-
-    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
-
-    M4_U=[0.1394226315049e13 / 0.367201486080e12 -0.1137054563243e13 / 0.114750464400e12 0.16614189027367e14 / 0.1836007430400e13 -0.1104821700277e13 / 0.306001238400e12 0.1355771086763e13 / 0.1836007430400e13 -0.27818686453e11 / 0.459001857600e12 -0.40671054239e11 / 0.1836007430400e13 0.5442887371e10 / 0.306001238400e12; -0.1137054563243e13 / 0.114750464400e12 0.70616795535409e14 / 0.2570410402560e13 -0.173266854731041e15 / 0.6426026006400e13 0.28938615291031e14 / 0.2570410402560e13 -0.146167361863e12 / 0.71400288960e11 0.2793470836571e13 / 0.12852052012800e14 0.6219558097e10 / 0.428401733760e12 -0.7313844559e10 / 0.166909766400e12; 0.16614189027367e14 / 0.1836007430400e13 -0.173266854731041e15 / 0.6426026006400e13 0.378613061504779e15 / 0.12852052012800e14 -0.9117069604217e13 / 0.642602600640e12 0.632177582849e12 / 0.233673672960e12 -0.1057776382577e13 / 0.6426026006400e13 0.443019868399e12 / 0.4284017337600e13 -0.3707981e7 / 0.2318191200e10; -0.1104821700277e13 / 0.306001238400e12 0.28938615291031e14 / 0.2570410402560e13 -0.9117069604217e13 / 0.642602600640e12 0.5029150721885e13 / 0.514082080512e12 -0.5209119714341e13 / 0.1285205201280e13 0.12235427457469e14 / 0.12852052012800e14 -0.13731270505e11 / 0.64260260064e11 0.2933596129e10 / 0.40800165120e11; 0.1355771086763e13 / 0.1836007430400e13 -0.146167361863e12 / 0.71400288960e11 0.632177582849e12 / 0.233673672960e12 -0.5209119714341e13 / 0.1285205201280e13 0.14871726798559e14 / 0.2570410402560e13 -0.7504337615347e13 / 0.1606506501600e13 0.310830296467e12 / 0.171360693504e12 -0.55284274391e11 / 0.183600743040e12; -0.27818686453e11 / 0.459001857600e12 0.2793470836571e13 / 0.12852052012800e14 -0.1057776382577e13 / 0.6426026006400e13 0.12235427457469e14 / 0.12852052012800e14 -0.7504337615347e13 / 0.1606506501600e13 0.106318657014853e15 / 0.12852052012800e14 -0.14432772918527e14 / 0.2142008668800e13 0.58102695589e11 / 0.22666758400e11; -0.40671054239e11 / 0.1836007430400e13 0.6219558097e10 / 0.428401733760e12 0.443019868399e12 / 0.4284017337600e13 -0.13731270505e11 / 0.64260260064e11 0.310830296467e12 / 0.171360693504e12 -0.14432772918527e14 / 0.2142008668800e13 0.27102479467823e14 / 0.2570410402560e13 -0.1216032192203e13 / 0.153000619200e12; 0.5442887371e10 / 0.306001238400e12 -0.7313844559e10 / 0.166909766400e12 -0.3707981e7 / 0.2318191200e10 0.2933596129e10 / 0.40800165120e11 -0.55284274391e11 / 0.183600743040e12 0.58102695589e11 / 0.22666758400e11 -0.1216032192203e13 / 0.153000619200e12 0.20799922829107e14 / 0.1836007430400e13;];
-
-    M4(1:8,1:8)=M4_U;
-
-    M4(m-7:m,m-7:m)=flipud( fliplr( M4_U ) );
-    M4=M4/h^3;
-
-    S3_U=[-0.5e1 / 0.2e1 9 -12 7 -0.3e1 / 0.2e1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:5)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-4:m)=fliplr(-S3_U);
-    S3_1 = S3_1';
-    S3_m = S3_m';
-
-    D4=HI*(M4-e_1*S3_1'+e_m*S3_m'  + S_1*S2_1'-S_m*S2_m');
-
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/higher_compatible2.m
--- a/+sbp/higher_compatible2.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,143 +0,0 @@
-function [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher_compatible2(m,h)
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    %%% 4:de ordn. SBP Finita differens         %%%
-    %%% operatorer framtagna av Ken Mattsson    %%%
-    %%%                                         %%%
-    %%% 6 randpunkter, diagonal norm            %%%
-    %%%                                         %%%
-    %%% Datum: 2013-11-11                       %%%
-    %%%                                         %%%
-    %%%                                         %%%
-    %%% H           (Normen)                    %%%
-    %%% D1          (approx f?rsta derivatan)   %%%
-    %%% D2          (approx andra derivatan)    %%%
-    %%% D3          (approx tredje derivatan)   %%%
-    %%% D2          (approx fj?rde derivatan)   %%%
-    %%%                                         %%%
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-    % M?ste ange antal punkter (m) och stegl?ngd (h)
-    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
-    % vi har 3de och 4de derivator i v?r PDE
-    % I annat fall anv?nd de "traditionella" som har noggrannare
-    % randsplutningar f?r D1 och D2
-
-    % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
-    % vilket ?r n?dv?ndigt f?r stabilitet
-
-    H=diag(ones(m,1),0);H(1,1)=1/2;H(m,m)=1/2;
-
-
-    H=H*h;
-    HI=inv(H);
-
-
-    % First derivative SBP operator, 1st order accurate at first 6 boundary points
-
-    q1=1/2;
-    Q=q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
-
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-
-    D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Second derivative, 1st order accurate at first 6 boundary points
-    m1=-1;m0=2;
-    M=m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);M(1,1)=1;M(m,m)=1;
-    M=M/h;
-
-    S_U=[-1 1]/h;
-    S_1=zeros(1,m);
-    S_1(1:2)=S_U;
-    S_m=zeros(1,m);
-
-    S_m(m-1:m)=fliplr(-S_U);
-
-    D2=HI*(-M-e_1*S_1+e_m*S_m);
-
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Third derivative, 1st order accurate at first 6 boundary points
-
-    q2=1/2;q1=-1;
-    Q3=q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
-
-
-    Q3_U = [0 -0.2e1 / 0.5e1 0.3e1 / 0.10e2 0.1e1 / 0.10e2; 0.2e1 / 0.5e1 0 -0.7e1 / 0.10e2 0.3e1 / 0.10e2; -0.3e1 / 0.10e2 0.7e1 / 0.10e2 0 -0.9e1 / 0.10e2; -0.1e1 / 0.10e2 -0.3e1 / 0.10e2 0.9e1 / 0.10e2 0;];
-    Q3(1:4,1:4)=Q3_U;
-    Q3(m-3:m,m-3:m)=flipud( fliplr( -Q3_U ) );
-    Q3=Q3/h^2;
-
-
-
-    S2_U=[1 -2 1;]/h^2;
-    S2_1=zeros(1,m);
-    S2_1(1:3)=S2_U;
-    S2_m=zeros(1,m);
-    S2_m(m-2:m)=fliplr(S2_U);
-
-
-
-    D3=HI*(Q3 - e_1*S2_1 + e_m*S2_m +1/2*S_1'*S_1 -1/2*S_m'*S_m ) ;
-
-    % Fourth derivative, 0th order accurate at first 6 boundary points (still
-    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
-
-    m2=1;m1=-4;m0=6;
-    M4=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-
-    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
-
-    M4_U=[0.4e1 / 0.5e1 -0.7e1 / 0.5e1 0.2e1 / 0.5e1 0.1e1 / 0.5e1; -0.7e1 / 0.5e1 0.16e2 / 0.5e1 -0.11e2 / 0.5e1 0.2e1 / 0.5e1; 0.2e1 / 0.5e1 -0.11e2 / 0.5e1 0.21e2 / 0.5e1 -0.17e2 / 0.5e1; 0.1e1 / 0.5e1 0.2e1 / 0.5e1 -0.17e2 / 0.5e1 0.29e2 / 0.5e1;];
-
-    M4(1:4,1:4)=M4_U;
-
-    M4(m-3:m,m-3:m)=flipud( fliplr( M4_U ) );
-    M4=M4/h^3;
-
-    S3_U=[-1 3 -3 1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:4)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-3:m)=fliplr(-S3_U);
-
-    D4=HI*(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
-
-
-
-    S_1 = S_1';
-    S_m = S_m';
-    S2_1 = S2_1';
-    S2_m = S2_m';
-    S3_1 = S3_1';
-    S3_m = S3_m';
-
-
-
-
-    % L=h*(m-1);
-
-    % x1=linspace(0,L,m)';
-    % x2=x1.^2/fac(2);
-    % x3=x1.^3/fac(3);
-    % x4=x1.^4/fac(4);
-    % x5=x1.^5/fac(5);
-
-    % x0=x1.^0/fac(1);
-
-
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/higher_compatible4.m
--- a/+sbp/higher_compatible4.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-function [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher_compatible4(m,h)
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    %%% 4:de ordn. SBP Finita differens         %%%
-    %%% operatorer framtagna av Ken Mattsson    %%%
-    %%%                                         %%%
-    %%% 6 randpunkter, diagonal norm            %%%
-    %%%                                         %%%
-    %%% Datum: 2013-11-11                       %%%
-    %%%                                         %%%
-    %%%                                         %%%
-    %%% H           (Normen)                    %%%
-    %%% D1          (approx f?rsta derivatan)   %%%
-    %%% D2          (approx andra derivatan)    %%%
-    %%% D3          (approx tredje derivatan)   %%%
-    %%% D2          (approx fj?rde derivatan)   %%%
-    %%%                                         %%%
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-    % M?ste ange antal punkter (m) och stegl?ngd (h)
-    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
-    % vi har 3de och 4de derivator i v?r PDE
-    % I annat fall anv?nd de "traditionella" som har noggrannare
-    % randsplutningar f?r D1 och D2
-
-    % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
-    % vilket ?r n?dv?ndigt f?r stabilitet
-
-    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;];
-    H(1:6,1:6)=H_U;
-    H(m-5:m,m-5:m)=fliplr(flipud(H_U));
-    H=H*h;
-    HI=inv(H);
-
-
-    % First derivative SBP operator, 1st order accurate at first 6 boundary points
-
-    q2=-1/12;q1=8/12;
-    Q=q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
-
-    Q_U = [0 0.9e1 / 0.11e2 -0.9e1 / 0.22e2 0.1e1 / 0.11e2 0 0; -0.9e1 / 0.11e2 0 0.2595224893e10 / 0.2622009280e10 -0.151435707e9 / 0.327751160e9 0.1112665611e10 / 0.2622009280e10 -0.1290899e7 / 0.9639740e7; 0.9e1 / 0.22e2 -0.2595224893e10 / 0.2622009280e10 0 0.1468436423e10 / 0.983253480e9 -0.1194603401e10 / 0.983253480e9 0.72033031e8 / 0.238364480e9; -0.1e1 / 0.11e2 0.151435707e9 / 0.327751160e9 -0.1468436423e10 / 0.983253480e9 0 0.439819541e9 / 0.327751160e9 -0.215942641e9 / 0.983253480e9; 0 -0.1112665611e10 / 0.2622009280e10 0.1194603401e10 / 0.983253480e9 -0.439819541e9 / 0.327751160e9 0 0.1664113643e10 / 0.2622009280e10; 0 0.1290899e7 / 0.9639740e7 -0.72033031e8 / 0.238364480e9 0.215942641e9 / 0.983253480e9 -0.1664113643e10 / 0.2622009280e10 0;];
-    Q(1:6,1:6)=Q_U;
-    Q(m-5:m,m-5:m)=flipud( fliplr( -Q_U ) );
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-
-    D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % % Second derivative, 1st order accurate at first 6 boundary points
-    % m2=1/12;m1=-16/12;m0=30/12;
-    % M=m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-    % %M=(1/12*diag(ones(m-2,1),2)-16/12*diag(ones(m-1,1),1)-16/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2)+30/12*diag(ones(m,1),0));
-    % M_U=[0.2386127e7 / 0.2177280e7 -0.515449e6 / 0.453600e6 -0.10781e5 / 0.777600e6 0.61567e5 / 0.1360800e7 0.6817e4 / 0.403200e6 -0.1069e4 / 0.136080e6; -0.515449e6 / 0.453600e6 0.4756039e7 / 0.2177280e7 -0.1270009e7 / 0.1360800e7 -0.3751e4 / 0.28800e5 0.3067e4 / 0.680400e6 0.119459e6 / 0.10886400e8; -0.10781e5 / 0.777600e6 -0.1270009e7 / 0.1360800e7 0.111623e6 / 0.60480e5 -0.555587e6 / 0.680400e6 -0.551339e6 / 0.5443200e7 0.8789e4 / 0.453600e6; 0.61567e5 / 0.1360800e7 -0.3751e4 / 0.28800e5 -0.555587e6 / 0.680400e6 0.1025327e7 / 0.544320e6 -0.464003e6 / 0.453600e6 0.222133e6 / 0.5443200e7; 0.6817e4 / 0.403200e6 0.3067e4 / 0.680400e6 -0.551339e6 / 0.5443200e7 -0.464003e6 / 0.453600e6 0.5074159e7 / 0.2177280e7 -0.1784047e7 / 0.1360800e7; -0.1069e4 / 0.136080e6 0.119459e6 / 0.10886400e8 0.8789e4 / 0.453600e6 0.222133e6 / 0.5443200e7 -0.1784047e7 / 0.1360800e7 0.1812749e7 / 0.725760e6;];
-    %
-    % M(1:6,1:6)=M_U;
-    %
-    % M(m-5:m,m-5:m)=flipud( fliplr( M_U ) );
-    % M=M/h;
-    %
-     S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
-     S_1=zeros(1,m);
-     S_1(1:4)=S_U;
-     S_m=zeros(1,m);
-
-     S_m(m-3:m)=fliplr(-S_U);
-
-    % D2=HI*(-M-e_1*S_1+e_m*S_m);
-
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Third derivative, 1st order accurate at first 6 boundary points
-
-    % q3=-1/8;q2=1;q1=-13/8;
-    % Q3=q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-    %
-    % %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
-    %
-    %
-    % Q3_U = [0 -0.88471e5 / 0.67200e5 0.58139e5 / 0.33600e5 -0.1167e4 / 0.2800e4 -0.89e2 / 0.11200e5 0.7e1 / 0.640e3; 0.88471e5 / 0.67200e5 0 -0.43723e5 / 0.16800e5 0.46783e5 / 0.33600e5 -0.191e3 / 0.3200e4 -0.1567e4 / 0.33600e5; -0.58139e5 / 0.33600e5 0.43723e5 / 0.16800e5 0 -0.4049e4 / 0.2400e4 0.29083e5 / 0.33600e5 -0.71e2 / 0.1400e4; 0.1167e4 / 0.2800e4 -0.46783e5 / 0.33600e5 0.4049e4 / 0.2400e4 0 -0.8591e4 / 0.5600e4 0.10613e5 / 0.11200e5; 0.89e2 / 0.11200e5 0.191e3 / 0.3200e4 -0.29083e5 / 0.33600e5 0.8591e4 / 0.5600e4 0 -0.108271e6 / 0.67200e5; -0.7e1 / 0.640e3 0.1567e4 / 0.33600e5 0.71e2 / 0.1400e4 -0.10613e5 / 0.11200e5 0.108271e6 / 0.67200e5 0;];
-    %
-    % Q3(1:6,1:6)=Q3_U;
-    % Q3(m-5:m,m-5:m)=flipud( fliplr( -Q3_U ) );
-    % Q3=Q3/h^2;
-
-
-
-    S2_U=[2 -5 4 -1;]/h^2;
-    S2_1=zeros(1,m);
-    S2_1(1:4)=S2_U;
-    S2_m=zeros(1,m);
-    S2_m(m-3:m)=fliplr(S2_U);
-
-
-
-    %D3=HI*(Q3 - e_1*S2_1 + e_m*S2_m +1/2*S_1'*S_1 -1/2*S_m'*S_m ) ;
-
-    % Fourth derivative, 0th order accurate at first 6 boundary points (still
-    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
-
-    m3=-1/6;m2=2;m1=-13/2;m0=28/3;
-    M4=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-
-    %M4=(-1/6*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3) ) + 2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2)) -13/2*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)) + 28/3*diag(ones(m,1),0));
-
-    M4_U=[0.227176919517319e15 / 0.94899692875680e14 -0.15262605263734e14 / 0.2965615402365e13 0.20205404771243e14 / 0.6778549491120e13 -0.3998303664097e13 / 0.23724923218920e14 0.1088305091927e13 / 0.94899692875680e14 -0.1686077077693e13 / 0.23724923218920e14; -0.15262605263734e14 / 0.2965615402365e13 0.280494781164181e15 / 0.23724923218920e14 -0.46417445546261e14 / 0.5931230804730e13 0.1705307929429e13 / 0.1694637372780e13 -0.553547394061e12 / 0.5931230804730e13 0.5615721694973e13 / 0.23724923218920e14; 0.20205404771243e14 / 0.6778549491120e13 -0.46417445546261e14 / 0.5931230804730e13 0.4135802350237e13 / 0.551742400440e12 -0.4140981465247e13 / 0.1078405600860e13 0.75538453067437e14 / 0.47449846437840e14 -0.4778134936391e13 / 0.11862461609460e14; -0.3998303664097e13 / 0.23724923218920e14 0.1705307929429e13 / 0.1694637372780e13 -0.4140981465247e13 / 0.1078405600860e13 0.20760974175677e14 / 0.2965615402365e13 -0.138330689701889e15 / 0.23724923218920e14 0.23711317526909e14 / 0.11862461609460e14; 0.1088305091927e13 / 0.94899692875680e14 -0.553547394061e12 / 0.5931230804730e13 0.75538453067437e14 / 0.47449846437840e14 -0.138330689701889e15 / 0.23724923218920e14 0.120223780251937e15 / 0.13557098982240e14 -0.151383731537477e15 / 0.23724923218920e14; -0.1686077077693e13 / 0.23724923218920e14 0.5615721694973e13 / 0.23724923218920e14 -0.4778134936391e13 / 0.11862461609460e14 0.23711317526909e14 / 0.11862461609460e14 -0.151383731537477e15 / 0.23724923218920e14 0.220304030094121e15 / 0.23724923218920e14;];
-
-    M4(1:6,1:6)=M4_U;
-
-    M4(m-5:m,m-5:m)=flipud( fliplr( M4_U ) );
-    M4=M4/h^3;
-
-    S3_U=[-1 3 -3 1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:4)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-3:m)=fliplr(-S3_U);
-
-    D4=HI*(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
-
-    S_1 = S_1';
-    S_m = S_m';
-    S2_1 = S2_1';
-    S2_m = S2_m';
-    S3_1 = S3_1';
-    S3_m = S3_m';
-
-    % L=h*(m-1);
-    %
-    % x1=linspace(0,L,m)';
-    % x2=x1.^2/fac(2);
-    % x3=x1.^3/fac(3);
-    % x4=x1.^4/fac(4);
-    % x5=x1.^5/fac(5);
-    %
-    % x0=x1.^0/fac(1);
-
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/higher_compatible6.m
--- a/+sbp/higher_compatible6.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-function [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = higher_compatible6(m,h)
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-    %%% 4:de ordn. SBP Finita differens         %%%
-    %%% operatorer framtagna av Ken Mattsson    %%%
-    %%%                                         %%%
-    %%% 6 randpunkter, diagonal norm            %%%
-    %%%                                         %%%
-    %%% Datum: 2013-11-11                       %%%
-    %%%                                         %%%
-    %%%                                         %%%
-    %%% H           (Normen)                    %%%
-    %%% D1          (approx f?rsta derivatan)   %%%
-    %%% D2          (approx andra derivatan)    %%%
-    %%% D3          (approx tredje derivatan)   %%%
-    %%% D2          (approx fj?rde derivatan)   %%%
-    %%%                                         %%%
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-    % M?ste ange antal punkter (m) och stegl?ngd (h)
-    % Notera att dessa opetratorer ?r framtagna f?r att anv?ndas n?r
-    % vi har 3de och 4de derivator i v?r PDE
-    % I annat fall anv?nd de "traditionella" som har noggrannare
-    % randsplutningar f?r D1 och D2
-
-    % Vi b?rjar med normen. Notera att alla SBP operatorer delar samma norm,
-    % vilket ?r n?dv?ndigt f?r stabilitet
-
-    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;];
-
-    H(1:8,1:8)=H_U;
-    H(m-7:m,m-7:m)=fliplr(flipud(H_U));
-    H=H*h;
-    HI=inv(H);
-
-
-    % First derivative SBP operator, 3rd order accurate at first 8 boundary points
-
-    q3=1/60;q2=-3/20;q1=3/4;
-    Q=q3*(diag(ones(m-3,1),3) - diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2) - diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-
-    Q_U = [0 0.26431903e8 / 0.43545600e8 0.39791489e8 / 0.152409600e9 -0.12747751e8 / 0.16934400e8 0.76099447e8 / 0.152409600e9 -0.1397443e7 / 0.12192768e8 0 0; -0.26431903e8 / 0.43545600e8 0 -0.13847476213e11 / 0.19559232000e11 0.35844843977e11 / 0.11735539200e11 -0.63413503537e11 / 0.23471078400e11 0.4764412871e10 / 0.3911846400e10 -0.1668252557e10 / 0.5867769600e10 0.842644697e9 / 0.29338848000e11; -0.39791489e8 / 0.152409600e9 0.13847476213e11 / 0.19559232000e11 0 -0.73834802771e11 / 0.23471078400e11 0.1802732209e10 / 0.325987200e9 -0.65514173e8 / 0.16299360e8 0.79341409141e11 / 0.58677696000e11 -0.1282384321e10 / 0.7823692800e10; 0.12747751e8 / 0.16934400e8 -0.35844843977e11 / 0.11735539200e11 0.73834802771e11 / 0.23471078400e11 0 -0.5274106087e10 / 0.1173553920e10 0.33743985841e11 / 0.5867769600e10 -0.6482602549e10 / 0.2607897600e10 0.1506017269e10 / 0.3911846400e10; -0.76099447e8 / 0.152409600e9 0.63413503537e11 / 0.23471078400e11 -0.1802732209e10 / 0.325987200e9 0.5274106087e10 / 0.1173553920e10 0 -0.7165829063e10 / 0.2607897600e10 0.23903110999e11 / 0.11735539200e11 -0.5346675911e10 / 0.11735539200e11; 0.1397443e7 / 0.12192768e8 -0.4764412871e10 / 0.3911846400e10 0.65514173e8 / 0.16299360e8 -0.33743985841e11 / 0.5867769600e10 0.7165829063e10 / 0.2607897600e10 0 -0.1060918223e10 / 0.11735539200e11 0.628353989e9 / 0.3911846400e10; 0 0.1668252557e10 / 0.5867769600e10 -0.79341409141e11 / 0.58677696000e11 0.6482602549e10 / 0.2607897600e10 -0.23903110999e11 / 0.11735539200e11 0.1060918223e10 / 0.11735539200e11 0 0.25889988599e11 / 0.39118464000e11; 0 -0.842644697e9 / 0.29338848000e11 0.1282384321e10 / 0.7823692800e10 -0.1506017269e10 / 0.3911846400e10 0.5346675911e10 / 0.11735539200e11 -0.628353989e9 / 0.3911846400e10 -0.25889988599e11 / 0.39118464000e11 0;];
-
-    Q(1:8,1:8)=Q_U;
-    Q(m-7:m,m-7:m)=flipud( fliplr( -Q_U ) );
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-
-    D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Second derivative, 1st order accurate at first 6 boundary points
-    % m3=-1/90;m2=3/20;m1=-3/2;m0=49/18;
-    %
-    % M=m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-    % M_U=[0.4347276223e10 / 0.3736212480e10 -0.1534657609e10 / 0.1210809600e10 0.68879e5 / 0.3057600e7 0.1092927401e10 / 0.13076743680e11 0.18145423e8 / 0.968647680e9 -0.1143817e7 / 0.60540480e8 -0.355447739e9 / 0.65383718400e11 0.56081e5 / 0.16473600e8; -0.1534657609e10 / 0.1210809600e10 0.42416226217e11 / 0.18681062400e11 -0.228654119e9 / 0.345945600e9 -0.12245627e8 / 0.34594560e8 -0.2995295e7 / 0.46702656e8 0.52836503e8 / 0.691891200e9 0.119351e6 / 0.12812800e8 -0.634102039e9 / 0.65383718400e11; 0.68879e5 / 0.3057600e7 -0.228654119e9 / 0.345945600e9 0.5399287e7 / 0.4193280e7 -0.24739409e8 / 0.34594560e8 0.7878737e7 / 0.69189120e8 -0.1917829e7 / 0.31449600e8 0.39727e5 / 0.3660800e7 0.10259e5 / 0.4656960e7; 0.1092927401e10 / 0.13076743680e11 -0.12245627e8 / 0.34594560e8 -0.24739409e8 / 0.34594560e8 0.7780367599e10 / 0.3736212480e10 -0.70085363e8 / 0.69189120e8 -0.500209e6 / 0.6289920e7 -0.311543e6 / 0.17962560e8 0.278191e6 / 0.21525504e8; 0.18145423e8 / 0.968647680e9 -0.2995295e7 / 0.46702656e8 0.7878737e7 / 0.69189120e8 -0.70085363e8 / 0.69189120e8 0.7116321131e10 / 0.3736212480e10 -0.545081e6 / 0.532224e6 0.811631e6 / 0.11531520e8 -0.84101639e8 / 0.13076743680e11; -0.1143817e7 / 0.60540480e8 0.52836503e8 / 0.691891200e9 -0.1917829e7 / 0.31449600e8 -0.500209e6 / 0.6289920e7 -0.545081e6 / 0.532224e6 0.324760747e9 / 0.138378240e9 -0.65995697e8 / 0.49420800e8 0.1469203e7 / 0.13759200e8; -0.355447739e9 / 0.65383718400e11 0.119351e6 / 0.12812800e8 0.39727e5 / 0.3660800e7 -0.311543e6 / 0.17962560e8 0.811631e6 / 0.11531520e8 -0.65995697e8 / 0.49420800e8 0.48284442317e11 / 0.18681062400e11 -0.1762877569e10 / 0.1210809600e10; 0.56081e5 / 0.16473600e8 -0.634102039e9 / 0.65383718400e11 0.10259e5 / 0.4656960e7 0.278191e6 / 0.21525504e8 -0.84101639e8 / 0.13076743680e11 0.1469203e7 / 0.13759200e8 -0.1762877569e10 / 0.1210809600e10 0.10117212851e11 / 0.3736212480e10;];
-    %
-    % M(1:8,1:8)=M_U;
-    %
-    % M(m-7:m,m-7:m)=flipud( fliplr( M_U ) );
-    % M=M/h;
-
-    S_U=[-0.12700800e8 / 0.7493827e7 0.185023321e9 / 0.89925924e8 0.39791489e8 / 0.44962962e8 -0.38243253e8 / 0.14987654e8 0.76099447e8 / 0.44962962e8 -0.34936075e8 / 0.89925924e8;]/h;
-    S_1=zeros(1,m);
-    S_1(1:6)=S_U;
-    S_m=zeros(1,m);
-
-    S_m(m-5:m)=fliplr(-S_U);
-
-    %D2=HI*(-M-e_1*S_1+e_m*S_m);
-
-
-    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-    % Third derivative, 1st order accurate at first 6 boundary points
-
-    % q4=7/240;q3=-3/10;q2=169/120;q1=-61/30;
-    % Q3=q4*(diag(ones(m-4,1),4)-diag(ones(m-4,1),-4))+q3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+q2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+q1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
-    %
-    % %QQ3=(-1/8*diag(ones(m-3,1),3) + 1*diag(ones(m-2,1),2) - 13/8*diag(ones(m-1,1),1) +13/8*diag(ones(m-1,1),-1) -1*diag(ones(m-2,1),-2) + 1/8*diag(ones(m-3,1),-3));
-    %
-    %
-    % Q3_U = [0 -0.10882810591e11 / 0.5811886080e10 0.398713069e9 / 0.132088320e9 -0.1746657571e10 / 0.1162377216e10 0.56050639e8 / 0.145297152e9 -0.11473393e8 / 0.1162377216e10 -0.38062741e8 / 0.1452971520e10 0.30473e5 / 0.4392960e7; 0.10882810591e11 / 0.5811886080e10 0 -0.3720544343e10 / 0.830269440e9 0.767707019e9 / 0.207567360e9 -0.1047978301e10 / 0.830269440e9 0.1240729e7 / 0.14826240e8 0.6807397e7 / 0.55351296e8 -0.50022767e8 / 0.1452971520e10; -0.398713069e9 / 0.132088320e9 0.3720544343e10 / 0.830269440e9 0 -0.2870078009e10 / 0.830269440e9 0.74962049e8 / 0.29652480e8 -0.12944857e8 / 0.30750720e8 -0.17846623e8 / 0.103783680e9 0.68707591e8 / 0.1162377216e10; 0.1746657571e10 / 0.1162377216e10 -0.767707019e9 / 0.207567360e9 0.2870078009e10 / 0.830269440e9 0 -0.727867087e9 / 0.276756480e9 0.327603877e9 / 0.207567360e9 -0.175223717e9 / 0.830269440e9 0.1353613e7 / 0.726485760e9; -0.56050639e8 / 0.145297152e9 0.1047978301e10 / 0.830269440e9 -0.74962049e8 / 0.29652480e8 0.727867087e9 / 0.276756480e9 0 -0.1804641793e10 / 0.830269440e9 0.311038417e9 / 0.207567360e9 -0.1932566239e10 / 0.5811886080e10; 0.11473393e8 / 0.1162377216e10 -0.1240729e7 / 0.14826240e8 0.12944857e8 / 0.30750720e8 -0.327603877e9 / 0.207567360e9 0.1804641793e10 / 0.830269440e9 0 -0.1760949511e10 / 0.830269440e9 0.2105883973e10 / 0.1452971520e10; 0.38062741e8 / 0.1452971520e10 -0.6807397e7 / 0.55351296e8 0.17846623e8 / 0.103783680e9 0.175223717e9 / 0.830269440e9 -0.311038417e9 / 0.207567360e9 0.1760949511e10 / 0.830269440e9 0 -0.1081094773e10 / 0.528353280e9; -0.30473e5 / 0.4392960e7 0.50022767e8 / 0.1452971520e10 -0.68707591e8 / 0.1162377216e10 -0.1353613e7 / 0.726485760e9 0.1932566239e10 / 0.5811886080e10 -0.2105883973e10 / 0.1452971520e10 0.1081094773e10 / 0.528353280e9 0;];
-    %
-    % Q3(1:8,1:8)=Q3_U;
-    % Q3(m-7:m,m-7:m)=flipud( fliplr( -Q3_U ) );
-    % Q3=Q3/h^2;
-    %
-    %
-    %
-     S2_U=[0.35e2 / 0.12e2 -0.26e2 / 0.3e1 0.19e2 / 0.2e1 -0.14e2 / 0.3e1 0.11e2 / 0.12e2;]/h^2;
-     S2_1=zeros(1,m);
-     S2_1(1:5)=S2_U;
-     S2_m=zeros(1,m);
-     S2_m(m-4:m)=fliplr(S2_U);
-    %
-    %
-    %
-    % D3=HI*(Q3 - e_1*S2_1 + e_m*S2_m +1/2*S_1'*S_1 -1/2*S_m'*S_m ) ;
-
-    % Fourth derivative, 0th order accurate at first 6 boundary points (still
-    % yield 4th order convergence if stable: for example u_tt=-u_xxxx
-
-    m4=7/240;m3=-2/5;m2=169/60;m1=-122/15;m0=91/8;
-    M4=m4*(diag(ones(m-4,1),4)+diag(ones(m-4,1),-4))+m3*(diag(ones(m-3,1),3)+diag(ones(m-3,1),-3))+m2*(diag(ones(m-2,1),2)+diag(ones(m-2,1),-2))+m1*(diag(ones(m-1,1),1)+diag(ones(m-1,1),-1))+m0*diag(ones(m,1),0);
-
-
-
-    M4_U=[0.600485868980522851e18 / 0.274825314114120000e18 -0.1421010223681841e16 / 0.348984525859200e15 0.38908412970187e14 / 0.1586293299360000e16 0.10224077451922837e17 / 0.2243471951952000e16 -0.7577302712815639e16 / 0.1744922629296000e16 0.138091642084013e15 / 0.59351109840000e14 -0.3775041725375197e16 / 0.4486943903904000e16 0.9907210230881393e16 / 0.61072292025360000e17; -0.1421010223681841e16 / 0.348984525859200e15 0.3985852497808703e16 / 0.407903991264000e15 -0.90048788923861e14 / 0.15579666333000e14 -0.4312795866499e13 / 0.997098645312e12 0.4414634708891947e16 / 0.448694390390400e15 -0.886174803100459e15 / 0.99709864531200e14 0.4333e4 / 0.1000e4 -0.13800578064893047e17 / 0.15704303663664000e17; 0.38908412970187e14 / 0.1586293299360000e16 -0.90048788923861e14 / 0.15579666333000e14 0.2071682582321887e16 / 0.113306664240000e15 -0.769471337294003e15 / 0.41545776888000e14 0.112191585452033e15 / 0.166183107552000e15 0.7204491902193671e16 / 0.623186653320000e15 -0.24847093554379e14 / 0.3115933266600e13 0.943854037768721e15 / 0.545288321655000e15; 0.10224077451922837e17 / 0.2243471951952000e16 -0.4312795866499e13 / 0.997098645312e12 -0.769471337294003e15 / 0.41545776888000e14 0.3086874339649421e16 / 0.81580798252800e14 -0.396009005312111e15 / 0.16618310755200e14 0.348854811893087e15 / 0.249274661328000e15 0.895954627955053e15 / 0.224347195195200e15 -0.184881685054543e15 / 0.166183107552000e15; -0.7577302712815639e16 / 0.1744922629296000e16 0.4414634708891947e16 / 0.448694390390400e15 0.112191585452033e15 / 0.166183107552000e15 -0.396009005312111e15 / 0.16618310755200e14 0.3774861828677557e16 / 0.112173597597600e15 -0.5693689108983593e16 / 0.249274661328000e15 0.803944126167107e15 / 0.99709864531200e14 -0.19547569411550791e17 / 0.15704303663664000e17; 0.138091642084013e15 / 0.59351109840000e14 -0.886174803100459e15 / 0.99709864531200e14 0.7204491902193671e16 / 0.623186653320000e15 0.348854811893087e15 / 0.249274661328000e15 -0.5693689108983593e16 / 0.249274661328000e15 0.73965842628398389e17 / 0.2492746613280000e16 -0.2184472662036043e16 / 0.124637330664000e15 0.46667e5 / 0.10000e5; -0.3775041725375197e16 / 0.4486943903904000e16 0.4333e4 / 0.1000e4 -0.24847093554379e14 / 0.3115933266600e13 0.895954627955053e15 / 0.224347195195200e15 0.803944126167107e15 / 0.99709864531200e14 -0.2184472662036043e16 / 0.124637330664000e15 0.37593640125444199e17 / 0.2243471951952000e16 -0.37e2 / 0.4e1; 0.9907210230881393e16 / 0.61072292025360000e17 -0.13800578064893047e17 / 0.15704303663664000e17 0.943854037768721e15 / 0.545288321655000e15 -0.184881685054543e15 / 0.166183107552000e15 -0.19547569411550791e17 / 0.15704303663664000e17 0.46667e5 / 0.10000e5 -0.37e2 / 0.4e1 0.12766926490502478779e20 / 0.1099301256456480000e19;];
-
-    M4(1:8,1:8)=M4_U;
-
-    M4(m-7:m,m-7:m)=flipud( fliplr( M4_U ) );
-    M4=M4/h^3;
-
-    S3_U=[-0.5e1 / 0.2e1 9 -12 7 -0.3e1 / 0.2e1;]/h^3;
-    S3_1=zeros(1,m);
-    S3_1(1:5)=S3_U;
-    S3_m=zeros(1,m);
-    S3_m(m-4:m)=fliplr(-S3_U);
-
-    D4=HI*(M4-e_1*S3_1+e_m*S3_m  + S_1'*S2_1-S_m'*S2_m);
-
-    S_1 = S_1';
-    S_m = S_m';
-    S2_1 = S2_1';
-    S2_m = S2_m';
-    S3_1 = S3_1';
-    S3_m = S3_m';
-
-    % L=h*(m-1);
-
-    % x1=linspace(0,L,m)';
-    % x2=x1.^2/fac(2);
-    % x3=x1.^3/fac(3);
-    % x4=x1.^4/fac(4);
-    % x5=x1.^5/fac(5);
-
-    % x0=x1.^0/fac(1);
-
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/ordinary10.m
--- a/+sbp/ordinary10.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = ordinary10(m,h)
-
-    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);
-    H(1:11,1:11)=H_U;
-    H(m-10:m,m-10:m)=flipud( fliplr(H_U(1:11,1:11) ) );
-    H=H*h;
-    HI=inv(H);
-
-    Q=-(-1/1260*diag(ones(m-5,1),5)+5/504*diag(ones(m-4,1),4)-5/84*diag(ones(m-3,1),3)+5/21*diag(ones(m-2,1),2)-5/6*diag(ones(m-1,1),1)+5/6*diag(ones(m-1,1),-1)-5/21*diag(ones(m-2,1),-2)+5/84*diag(ones(m-3,1),-3)-5/504*diag(ones(m-4,1),-4)+1/1260*diag(ones(m-5,1),-5));
-
-    Q_U = [-0.1e1 / 0.2e1 0.2300876759589119e16 / 0.3395198177280000e16 -0.99808615498093e14 / 0.2263465451520000e16 -0.34957747037683e14 / 0.212199886080000e15 -0.709586095717e12 / 0.13473008640000e14 0.325330433051e12 / 0.6218311680000e13 0.27953548723573e14 / 0.485028311040000e15 0.2690678501e10 / 0.412439040000e12 -0.2397491025029e13 / 0.70733295360000e14 -0.9959492094287e13 / 0.1131732725760000e16 0.5242772857661e13 / 0.522338181120000e15; -0.2300876759589119e16 / 0.3395198177280000e16 0 0.3103439505511e13 / 0.16643128320000e14 0.2700334568377e13 / 0.5052378240000e13 0.50587599589937e14 / 0.242514155520000e15 -0.5570893587157e13 / 0.40419025920000e14 -0.1496329934863e13 / 0.8083805184000e13 -0.322512443237e12 / 0.12482346240000e14 0.2275340833763e13 / 0.23096586240000e14 0.22922115021893e14 / 0.848799544320000e15 -0.143e3 / 0.5000e4; 0.99808615498093e14 / 0.2263465451520000e16 -0.3103439505511e13 / 0.16643128320000e14 0 0.15053664233879e14 / 0.40419025920000e14 -0.9306441440587e13 / 0.32335220736000e14 -0.945459729233e12 / 0.13473008640000e14 0.956829267413e12 / 0.5774146560000e13 0.446866085903e12 / 0.56586636288000e14 -0.41109372242993e14 / 0.754488483840000e15 0.1e1 / 0.500e3 0.17e2 / 0.2500e4; 0.34957747037683e14 / 0.212199886080000e15 -0.2700334568377e13 / 0.5052378240000e13 -0.15053664233879e14 / 0.40419025920000e14 0 0.3899174751943e13 / 0.10104756480000e14 0.4691717443831e13 / 0.10104756480000e14 -0.58571891887e11 / 0.396264960000e12 0.100791910589e12 / 0.1040195520000e13 -0.425149181e9 / 0.29719872000e11 -0.2376515922259e13 / 0.30314269440000e14 0.36894656431e11 / 0.1036385280000e13; 0.709586095717e12 / 0.13473008640000e14 -0.50587599589937e14 / 0.242514155520000e15 0.9306441440587e13 / 0.32335220736000e14 -0.3899174751943e13 / 0.10104756480000e14 0 -0.4552305973e10 / 0.444165120000e12 0.4984940784247e13 / 0.11548293120000e14 -0.19410791e8 / 0.146764800e9 -0.2912773695913e13 / 0.40419025920000e14 0.127067639161e12 / 0.3233522073600e13 -0.89277540287e11 / 0.37309870080000e14; -0.325330433051e12 / 0.6218311680000e13 0.5570893587157e13 / 0.40419025920000e14 0.945459729233e12 / 0.13473008640000e14 -0.4691717443831e13 / 0.10104756480000e14 0.4552305973e10 / 0.444165120000e12 0 0.31722122083e11 / 0.84913920000e11 -0.887187251021e12 / 0.10104756480000e14 -0.1661755478749e13 / 0.26946017280000e14 0.1505713246249e13 / 0.13473008640000e14 -0.38859042469e11 / 0.1036385280000e13; -0.27953548723573e14 / 0.485028311040000e15 0.1496329934863e13 / 0.8083805184000e13 -0.956829267413e12 / 0.5774146560000e13 0.58571891887e11 / 0.396264960000e12 -0.4984940784247e13 / 0.11548293120000e14 -0.31722122083e11 / 0.84913920000e11 0 0.9357094407023e13 / 0.20209512960000e14 0.52602356173249e14 / 0.161676103680000e15 -0.1435252677707e13 / 0.17322439680000e14 -0.33048158431e11 / 0.3109155840000e13; -0.2690678501e10 / 0.412439040000e12 0.322512443237e12 / 0.12482346240000e14 -0.446866085903e12 / 0.56586636288000e14 -0.100791910589e12 / 0.1040195520000e13 0.19410791e8 / 0.146764800e9 0.887187251021e12 / 0.10104756480000e14 -0.9357094407023e13 / 0.20209512960000e14 0 0.70089734285659e14 / 0.141466590720000e15 -0.105938137621e12 / 0.471555302400e12 0.4358988450443e13 / 0.65292272640000e14; 0.2397491025029e13 / 0.70733295360000e14 -0.2275340833763e13 / 0.23096586240000e14 0.41109372242993e14 / 0.754488483840000e15 0.425149181e9 / 0.29719872000e11 0.2912773695913e13 / 0.40419025920000e14 0.1661755478749e13 / 0.26946017280000e14 -0.52602356173249e14 / 0.161676103680000e15 -0.70089734285659e14 / 0.141466590720000e15 0 0.314274398580227e15 / 0.377244241920000e15 -0.97822819709e11 / 0.487710720000e12; 0.9959492094287e13 / 0.1131732725760000e16 -0.22922115021893e14 / 0.848799544320000e15 -0.1e1 / 0.500e3 0.2376515922259e13 / 0.30314269440000e14 -0.127067639161e12 / 0.3233522073600e13 -0.1505713246249e13 / 0.13473008640000e14 0.1435252677707e13 / 0.17322439680000e14 0.105938137621e12 / 0.471555302400e12 -0.314274398580227e15 / 0.377244241920000e15 0 0.7519148725913e13 / 0.9327467520000e13; -0.5242772857661e13 / 0.522338181120000e15 0.143e3 / 0.5000e4 -0.17e2 / 0.2500e4 -0.36894656431e11 / 0.1036385280000e13 0.89277540287e11 / 0.37309870080000e14 0.38859042469e11 / 0.1036385280000e13 0.33048158431e11 / 0.3109155840000e13 -0.4358988450443e13 / 0.65292272640000e14 0.97822819709e11 / 0.487710720000e12 -0.7519148725913e13 / 0.9327467520000e13 0;];
-
-    Q(1:11,1:11)=Q_U;
-    Q(m-10:m,m-10:m)=flipud( fliplr(-Q_U ) );
-
-    D1=HI*Q;
-
-
-    s18=-1.000000000000000;   s19=0.195000000000000;     % alpha 0.0605
-    s18=    -0.475000000000000;   s19=0.110000000000000; % alpha 0.0350
-    %s18=0;s19=0;
-    DS=zeros(m,m);
-    DS(1,1:9)=[0.49e2 / 0.20e2 - s18 - (7 * s19) -0.6e1 + 0.7e1 * s18 + (48 * s19) 0.15e2 / 0.2e1 - 0.21e2 * s18 - (140 * s19) -0.20e2 / 0.3e1 + 0.35e2 * s18 + (224 * s19) 0.15e2 / 0.4e1 - 0.35e2 * s18 - (210 * s19) -0.6e1 / 0.5e1 + 0.21e2 * s18 + (112 * s19) 0.1e1 / 0.6e1 - 0.7e1 * s18 - (28 * s19) s18 s19;];
-    DS(m,m-8:m)=fliplr(DS(1,1:9));
-    DS=DS/h;
-
-    M_U = [0.12056593789671863908e1 -0.13378814169347239658e1 0.36847309286546532061e-2 0.15698288365600946515e0 -0.37472461482539197952e-2 -0.62491712449361657064e-2 -0.29164045872729581661e-1 0.54848184117832929161e-3 0.13613461413384884448e-1 -0.25059220258337808220e-2 -0.94113457993630916498e-3; -0.13378814169347239658e1 0.21749807117105597139e1 -0.12369059547124894597e0 -0.83712574037924152603e0 0.50065127254670973258e-1 0.81045853127317536361e-2 0.97405846039248226536e-1 -0.68942461520402214720e-3 -0.41326971493379188475e-1 0.75778529605774119402e-2 0.25800256160095691057e-2; 0.36847309286546532061e-2 -0.12369059547124894597e0 0.18361596652499065332e0 0.48289690013342693109e-1 -0.19719621435164680412e0 0.11406859029505842791e0 -0.29646295985488126964e-1 -0.16038463172861201306e-2 0.32879841528337653050e-2 -0.93242311589807387463e-3 0.12241332668787820533e-3; 0.15698288365600946515e0 -0.83712574037924152603e0 0.48289690013342693109e-1 0.12886524606662484673e1 -0.14403037739488789185e0 -0.44846291607489015475e0 -0.10598334599408054277e0 -0.15873275740355918053e-1 0.73988493386459608166e-1 -0.12508848749152899785e-1 -0.39290233894513005339e-2; -0.37472461482539197952e-2 0.50065127254670973258e-1 -0.19719621435164680412e0 -0.14403037739488789185e0 0.51482665719685186210e0 0.51199577887125103015e-1 -0.36233561810883077365e0 0.91356850268746392169e-1 0.24195916108052419451e-2 -0.18564214413731389338e-2 -0.70192677320704413827e-3; -0.62491712449361657064e-2 0.81045853127317536361e-2 0.11406859029505842791e0 -0.44846291607489015475e0 0.51199577887125103015e-1 0.68636003380365860083e0 -0.28358848290867614908e0 -0.13836006478253396528e0 0.76158070663111995297e-2 0.11447010307180005164e-1 -0.21349696610286552676e-2; -0.29164045872729581661e-1 0.97405846039248226536e-1 -0.29646295985488126964e-1 -0.10598334599408054277e0 -0.36233561810883077365e0 -0.28358848290867614908e0 0.15216081480839085990e1 -0.42653865162216293237e0 -0.42047484981879143123e0 0.19813359263872926304e-1 0.19221397241190103344e-1; 0.54848184117832929161e-3 -0.68942461520402214720e-3 -0.16038463172861201306e-2 -0.15873275740355918053e-1 0.91356850268746392169e-1 -0.13836006478253396528e0 -0.42653865162216293237e0 0.10656733504627815335e1 -0.66921872668484232217e0 0.12022033144141336599e0 -0.30157881394591483631e-1; 0.13613461413384884448e-1 -0.41326971493379188475e-1 0.32879841528337653050e-2 0.73988493386459608166e-1 0.24195916108052419451e-2 0.76158070663111995297e-2 -0.42047484981879143123e0 -0.66921872668484232217e0 0.24064247712949611684e1 -0.15150200315922263367e1 0.17373015320416595052e0; -0.25059220258337808220e-2 0.75778529605774119402e-2 -0.93242311589807387463e-3 -0.12508848749152899785e-1 -0.18564214413731389338e-2 0.11447010307180005164e-1 0.19813359263872926304e-1 0.12022033144141336599e0 -0.15150200315922263367e1 0.27682502485427255096e1 -0.15975407111468405444e1; -0.94113457993630916498e-3 0.25800256160095691057e-2 0.12241332668787820533e-3 -0.39290233894513005339e-2 -0.70192677320704413827e-3 -0.21349696610286552676e-2 0.19221397241190103344e-1 -0.30157881394591483631e-1 0.17373015320416595052e0 -0.15975407111468405444e1 0.29033627686681129471e1;];
-
-
-    M=-(1/3150)*diag(ones(m-5,1),5)+(5/1008)*diag(ones(m-4,1),4)-(5/126)*diag(ones(m-3,1),3)+(5/21)*diag(ones(m-2,1),2)-(5/3)*diag(ones(m-1,1),1)...
-      -(1/3150)*diag(ones(m-5,1),-5)+(5/1008)*diag(ones(m-4,1),-4)-(5/126)*diag(ones(m-3,1),-3)+(5/21)*diag(ones(m-2,1),-2)-(5/3)*diag(ones(m-1,1),-1)...
-        +(5269/1800)*diag(ones(m,1),0);
-
-    M(1:11,1:11)=M_U;
-    M(m-10:m,m-10:m)=flipud( fliplr(M_U(1:11,1:11) ) );
-
-    D2=HI*(-M/h+DS);
-
-    e_1 = zeros(m,1);
-    e_1(1)= 1;
-    e_m = zeros(m,1);
-    e_m(end)= 1;
-    S_1 = -DS(1,:)';
-    S_m =  DS(end,:)';
-
-    Q = H*D1-(-e_1*e_1' + e_m*e_m');
-    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/ordinary2.m
--- a/+sbp/ordinary2.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = ordinary2(m,h)
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    H=(eye(m,m));H(1,1)=0.5;H(m,m)=0.5;
-    H=h*H;
-    HI=inv(H);
-
-    D1=((.5*diag(ones(m-1,1),1)-.5*diag(ones(m-1,1),-1)));
-    D1(1,1)=-1;D1(1,2)=1;D1(m,m-1)=-1;D1(m,m)=1;
-    D1(m,m-1)=-1;D1(m,m)=1;
-    D1=D1/h;
-
-    Q=H*D1 + 1/2*e_1*e_1' - 1/2*e_m*e_m';
-
-    D2=((diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)-2*diag(ones(m,1),0)));
-    D2(1,1)=1;D2(1,2)=-2;D2(1,3)=1;
-    D2(m,m-2)=1;D2(m,m-1)=-2;D2(m,m)=1;
-    D2=D2/h^2;
-
-    S_U=[-3/2, 2, -1/2]/h;
-    S_1=zeros(1,m);
-    S_1(1:3)=S_U;
-    S_m=zeros(1,m);
-    S_m(m-2:m)=fliplr(-S_U);
-
-
-    M=-H*D2-e_1*S_1+e_m*S_m;
-    S_1 = S_1';
-    S_m = S_m';
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/ordinary4.m
--- a/+sbp/ordinary4.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,43 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = ordinary4(m,h)
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    e=ones(m,1);
-    H=spdiags(e,0,m,m);
-    %H=diag(ones(m,1),0);
-
-    H(1:4,1:4)=diag([17/48 59/48 43/48 49/48]);
-    H(m-3:m,m-3:m)=rot90(diag([17/48 59/48 43/48 49/48]),2);
-    H=H*h;
-    HI=inv(H);
-
-
-    Q=spdiags([e -8*e 0*e 8*e -e], -2:2, m, m)/12;
-    %Q=(-1/12*diag(ones(m-2,1),2)+8/12*diag(ones(m-1,1),1)-8/12*diag(ones(m-1,1),-1)+1/12*diag(ones(m-2,1),-2));
-    Q_U = [0 0.59e2 / 0.96e2 -0.1e1 / 0.12e2 -0.1e1 / 0.32e2; -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2; 0.1e1 / 0.32e2 0 -0.59e2 / 0.96e2 0;];
-    Q(1:4,1:4)=Q_U;
-    Q(m-3:m,m-3:m)=rot90( -Q_U(1:4,1:4) ,2 );
-
-    D1=HI*(Q-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    M=-spdiags([-e 16*e -30*e 16*e -e], -2:2, m, m)/12;
-
-    %M=-(-1/12*diag(ones(m-2,1),2)+16/12*diag(ones(m-1,1),1)+16/12*diag(ones(m-1,1),-1)-1/12*diag(ones(m-2,1),-2)-30/12*diag(ones(m,1),0));
-
-    M_U=[0.9e1 / 0.8e1 -0.59e2 / 0.48e2 0.1e1 / 0.12e2 0.1e1 / 0.48e2; -0.59e2 / 0.48e2 0.59e2 / 0.24e2 -0.59e2 / 0.48e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.48e2 0.55e2 / 0.24e2 -0.59e2 / 0.48e2; 0.1e1 / 0.48e2 0 -0.59e2 / 0.48e2 0.59e2 / 0.24e2;];
-    M(1:4,1:4)=M_U;
-
-    M(m-3:m,m-3:m)=rot90(  M_U ,2 );
-    M=M/h;
-
-    S_U=[-0.11e2 / 0.6e1 3 -0.3e1 / 0.2e1 0.1e1 / 0.3e1;]/h;
-    S_1=sparse(zeros(1,m));
-    S_1(1:4)=S_U;
-    S_m=sparse(zeros(1,m));
-    S_m(m-3:m)=fliplr(-S_U);
-
-
-    D2=HI*(-M-e_1*S_1+e_m*S_m);
-    S_1 = S_1';
-    S_m = S_m';
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/ordinary6.m
--- a/+sbp/ordinary6.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M,Q S_1, S_m] = ordinary6(m,h)
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    H=diag(ones(m,1),0);
-    H(1:6,1:6)=diag([13649/43200,12013/8640,2711/4320,5359/4320,7877/8640, ...
-             43801/43200]);
-    H(m-5:m,m-5:m)=rot90(diag([13649/43200,12013/8640, ...
-                2711/4320,5359/4320,7877/8640,43801/43200]),2);
-
-    H=H*h;
-    HI=inv(H);
-
-
-    % D1 har en fri parameter x1.
-    % Ett optimerat varde ger x1=0.70127127127127 = 331/472
-    x1=0.70127127127127;
-
-
-
-    D1=(1/60*diag(ones(m-3,1),3)-9/60*diag(ones(m-2,1),2)+45/60*diag(ones(m-1,1),1)-45/60*diag(ones(m-1,1),-1)+9/60*diag(ones(m-2,1),-2)-1/60*diag(ones(m-3,1),-3));
-
-
-
-    D1(1:6,1:9)=[-21600/13649, 43200/13649*x1-7624/40947, -172800/13649*x1+ ...
-             715489/81894, 259200/13649*x1-187917/13649, -172800/13649* ...
-             x1+735635/81894, 43200/13649*x1-89387/40947, 0, 0, 0; ...
-             -8640/12013*x1+7624/180195, 0, 86400/12013*x1-57139/12013, ...
-             -172800/12013*x1+745733/72078, 129600/12013*x1-91715/12013, ...
-             -34560/12013*x1+240569/120130, 0, 0, 0; 17280/2711*x1-715489/162660, -43200/2711*x1+57139/5422, 0, 86400/2711*x1-176839/8133, -86400/2711*x1+242111/10844, 25920/2711*x1-182261/27110, 0, 0, 0; -25920/5359*x1+187917/53590, 86400/5359*x1-745733/64308, -86400/5359*x1+176839/16077, 0, 43200/5359*x1-165041/32154, -17280/5359*x1+710473/321540, 72/5359, 0, 0; 34560/7877*x1-147127/47262, -129600/7877*x1+91715/7877, 172800/7877*x1-242111/15754, -86400/7877*x1+165041/23631, 0, 8640/7877*x1, -1296/7877, 144/7877, 0; -43200/43801*x1+89387/131403, 172800/43801*x1-240569/87602, -259200/43801*x1+182261/43801, 172800/43801*x1-710473/262806, -43200/43801*x1, 0, 32400/43801, -6480/43801, 720/43801];
-    D1(m-5:m,m-8:m)=rot90( -D1(1:6,1:9),2);
-    D1=D1/h;
-
-    Q=H*D1 + 1/2*e_1*e_1' - 1/2*e_m*e_m';
-
-    D2=(2*diag(ones(m-3,1),3)-27*diag(ones(m-2,1),2)+270*diag(ones(m-1,1),1)+270*diag(ones(m-1,1),-1)-27*diag(ones(m-2,1),-2)+2*diag(ones(m-3,1),-3)-490*diag(ones(m,1),0))/180;
-
-    D2(1:6,1:9)=[114170/40947, -438107/54596, 336409/40947, -276997/81894, 3747/13649, 21035/163788, 0, 0, 0;6173/5860, -2066/879, 3283/1758, -303/293, 2111/3516, -601/4395, 0, 0, 0;-52391/81330, 134603/32532, -21982/2711, 112915/16266, -46969/16266, 30409/54220, 0, 0, 0;68603/321540, -12423/10718, 112915/32154, -75934/16077, 53369/21436, -54899/160770, 48/5359, 0, 0;-7053/39385, 86551/94524, -46969/23631, 53369/15754, -87904/23631, 820271/472620, -1296/7877, 96/7877, 0;21035/525612, -24641/131403, 30409/87602, -54899/131403, 820271/525612, -117600/43801, 64800/43801, -6480/43801, 480/43801];
-    D2(m-5:m,m-8:m)=rot90( D2(1:6,1:9) ,2 );
-
-    D2=D2/h^2;
-
-    S_U=[-25/12, 4, -3, 4/3, -1/4]/h;
-    S_1=zeros(1,m);
-    S_1(1:5)=S_U;
-    S_m=zeros(1,m);
-    S_m(m-4:m)=fliplr(-S_U);
-
-
-    M=-H*D2-e_1*S_1+e_m*S_m;
-    S_1 = S_1';
-    S_m = S_m';
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/ordinary8.m
--- a/+sbp/ordinary8.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = ordinary8(m,h)
-    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])));
-
-    D1=-(1/280*diag(ones(m-4,1),4)-4/105*diag(ones(m-3,1),3)+1/5*diag(ones(m-2,1),2)-4/5*diag(ones(m-1,1),1)+4/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+4/105*diag(ones(m-3,1),-3)-1/280*diag(ones(m-4,1),-4));
-
-
-
-
-    %r68 = -1022551/30481920;
-    %r78 = 6445687/8709120;
-    %r67 = 1714837/4354560;
-
-    %r67=0.58;
-    %r68=-0.08;
-    %r78=0.75;
-
-    %r67=0.65;
-    %r68=-0.1;
-    %r78=0.75;
-
-    %r67=0.9250;
-    %r68=-0.2;
-    %r78=0.775;
-
-    %r67=0.65;
-    %r68=-0.105;
-    %r78=0.755;
-
-    %%r67=0.649;
-    %%r68=-0.104;
-    %%r78=0.755;
-
-    %r67=-0.48;
-    %r68=0.3;
-    %r78=0.67;
-
-    %r67=0.5600;
-    %r68=-0.0733;
-    %r78=0.7500;/scr0/home/ken/VERY_FINE
-
-    % min med 1/10 f?r D6
-    %r67=0.62;
-    %r68=-0.1040;
-    %r78=0.7640;
-
-    % Den nya optimerade, for att fungera i NS-dissipation
-
-    r67=0.69789473684211;
-    r68=-0.12052631578947;
-    r78=0.75868421052632;
-
-
-    D1(1:8,1:12)=[-2540160/1498139, -142642467/5992556+50803200/1498139*r78+5080320/1498139*r67+25401600/1498139*r68, 705710031/5992556-228614400/1498139*r78-25401600/1498139*r67-121927680/1498139*r68, -3577778591/17977668+381024000/1498139*r78+50803200/1498139*r67+228614400/1498139*r68, 203718909/1498139-254016000/1498139*r78-50803200/1498139*r67-203212800/1498139*r68, -32111205/5992556+25401600/1498139*r67+76204800/1498139*r68, -652789417/17977668+76204800/1498139*r78-5080320/1498139*r67, 74517981/5992556-25401600/1498139*r78-5080320/1498139*r68, 0, 0, 0, 0;142642467/31004596-7257600/1107307*r78-725760/1107307*r67-3628800/1107307*r68, 0, -141502371/2214614+91445760/1107307*r78+10886400/1107307*r67+50803200/1107307*r68, 159673719/1107307-203212800/1107307*r78-29030400/1107307*r67-127008000/1107307*r68, -1477714693/13287684+152409600/1107307*r78+32659200/1107307*r67+127008000/1107307*r68, 11652351/2214614-17418240/1107307*r67-50803200/1107307*r68, 36069450/1107307-50803200/1107307*r78+3628800/1107307*r67, -536324953/46506894+17418240/1107307*r78+3628800/1107307*r68, 0, 0, 0, 0;-18095129/134148+3628800/20761*r78+403200/20761*r67+1935360/20761*r68, 47167457/124566-10160640/20761*r78-1209600/20761*r67-5644800/20761*r68, 0, -120219461/124566+25401600/20761*r78+4032000/20761*r67+16934400/20761*r68, 249289259/249132-25401600/20761*r78-6048000/20761*r67-22579200/20761*r68, -2611503/41522+3628800/20761*r67+10160640/20761*r68, -7149666/20761+10160640/20761*r78-806400/20761*r67, 37199165/290654-3628800/20761*r78-806400/20761*r68, 0, 0, 0, 0;3577778591/109619916-54432000/1304999*r78-7257600/1304999*r67-32659200/1304999*r68, -159673719/1304999+203212800/1304999*r78+29030400/1304999*r67+127008000/1304999*r68, 360658383/2609998-228614400/1304999*r78-36288000/1304999*r67-152409600/1304999*r68, 0, -424854441/5219996+127008000/1304999*r78+36288000/1304999*r67+127008000/1304999*r68, 22885113/2609998-29030400/1304999*r67-76204800/1304999*r68, 158096578/3914997-76204800/1304999*r78+7257600/1304999*r67, -296462325/18269986+29030400/1304999*r78+7257600/1304999*r68, 0, 0, 0, 0;-203718909/2096689+36288000/299527*r78+7257600/299527*r67+29030400/299527*r68, 1477714693/3594324-152409600/299527*r78-32659200/299527*r67-127008000/299527*r68, -747867777/1198108+228614400/299527*r78+54432000/299527*r67+203212800/299527*r68, 424854441/1198108-127008000/299527*r78-36288000/299527*r67-127008000/299527*r68, 0, -17380335/1198108+10886400/299527*r67+25401600/299527*r68, -67080435/1198108+25401600/299527*r78-3628800/299527*r67, 657798011/25160268-10886400/299527*r78-3628800/299527*r68, -2592/299527, 0, 0, 0;1529105/1237164-403200/103097*r67-1209600/103097*r68, -3884117/618582+1935360/103097*r67+5644800/103097*r68, 2611503/206194-3628800/103097*r67-10160640/103097*r68, -7628371/618582+3225600/103097*r67+8467200/103097*r68, 5793445/1237164-1209600/103097*r67-2822400/103097*r68, 0, 80640/103097*r67, 80640/103097*r68, 3072/103097, -288/103097, 0, 0;93255631/8041092-10886400/670091*r78+725760/670091*r67, -36069450/670091+50803200/670091*r78-3628800/670091*r67, 64346994/670091-91445760/670091*r78+7257600/670091*r67, -158096578/2010273+76204800/670091*r78-7257600/670091*r67, 67080435/2680364-25401600/670091*r78+3628800/670091*r67, -725760/670091*r67, 0, 725760/670091*r78, -145152/670091, 27648/670091, -2592/670091, 0;-3921999/1079524+25401600/5127739*r78+5080320/5127739*r68, 536324953/30766434-121927680/5127739*r78-25401600/5127739*r68, -334792485/10255478+228614400/5127739*r78+50803200/5127739*r68, 296462325/10255478-203212800/5127739*r78-50803200/5127739*r68, -657798011/61532868+76204800/5127739*r78+25401600/5127739*r68, -5080320/5127739*r68, -5080320/5127739*r78, 0, 4064256/5127739, -1016064/5127739, 193536/5127739, -18144/5127739];
-
-
-    D1(m-7:m,m-11:m)=flipud( fliplr(-D1(1:8,1:12)));
-
-
-    D1=D1/h;
-
-    %DD=-(1/280*diag(ones(m-4,1),4)-4/105*diag(ones(m-3,1),3)+1/5*diag(ones(m-2,1),2)-4/5*diag(ones(m-1,1),1)+4/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+4/105*diag(ones(m-3,1),-3)-1/280*diag(ones(m-4,1),-4));
-    %DD(1:4,1:9)=1/280*[-761,2240,-3920,15680/3,-4900,3136,-3920/3,320,-35,
-    %                   -35,-446,980,-980,2450/3,-490,196,-140/3,5,
-    %                   5,-80,-266,560,-350,560/3,-70,16,-5/3,
-    %                   -5/3,20,-140,-126,350,-140,140/3,-10,1];
-    D(m-7:m,m-11:m)=flipud( fliplr(-D1(1:8,1:12)));
-
-    D2=(-1/560*diag(ones(m-4,1),4)+8/315*diag(ones(m-3,1),3)-1/5*diag(ones(m-2,1),2)+8/5*diag(ones(m-1,1),1)+8/5*diag(ones(m-1,1),-1)-1/5*diag(ones(m-2,1),-2)+8/315*diag(ones(m-3,1),-3)-1/560*diag(ones(m-4,1),-4)-205/72*diag(ones(m,1),0));
-
-    D2(1:8,1:12)=[4870382994799/1358976868290, -893640087518/75498714905,926594825119/60398971924, -1315109406200/135897686829,39126983272/15099742981, 12344491342/75498714905, -451560522577/2717953736580, 0, 0, 0, 0, 0;333806012194/390619153855, -154646272029/111605472530, 1168338040/33481641759, 82699112501/133926567036, -171562838/11160547253, -28244698346/167408208795, 11904122576/167408208795, -2598164715/312495323084, 0, 0, 0, 0;7838984095/52731029988, 1168338040/5649753213, -88747895/144865467, 423587231/627750357, -43205598281/22599012852, 4876378562/1883251071, -5124426509/3766502142, 10496900965/39548272491, 0, 0, 0, 0;-94978241528/828644350023, 82699112501/157837019052, 1270761693/13153084921, -167389605005/118377764289, 48242560214/39459254763, -31673996013/52612339684, 43556319241/118377764289, -44430275135/552429566682, 0, 0, 0, 0;1455067816/21132528431, -171562838/3018932633, -43205598281/36227191596, 48242560214/9056797899, -52276055645/6037865266, 57521587238/9056797899, -80321706377/36227191596, 8078087158/21132528431, -1296/299527, 0, 0, 0;10881504334/327321118845, -28244698346/140280479505, 4876378562/9352031967, -10557998671/12469375956, 57521587238/28056095901, -278531401019/93520319670, 73790130002/46760159835, -137529995233/785570685228, 2048/103097, -144/103097, 0, 0;-135555328849/8509847458140, 11904122576/101307707835, -5124426509/13507694378, 43556319241/60784624701, -80321706377/81046166268, 73790130002/33769235945, -950494905688/303923123505, 239073018673/141830790969, -145152/670091, 18432/670091, -1296/670091, 0;0, -2598164715/206729925524, 10496900965/155047444143, -44430275135/310094888286, 425162482/2720130599, -137529995233/620189776572, 239073018673/155047444143, -144648000000/51682481381, 8128512/5127739, -1016064/5127739, 129024/5127739, -9072/5127739];
-
-
-
-
-    D2(m-7:m,m-11:m)=flipud( fliplr(D2(1:8,1:12) ) );
-
-    D2=D2/h^2;
-
-    DS=zeros(m,m);
-    DS(1,1:7)=-[-4723/2100, 839/175, -157/35, 278/105, -103/140, -1/175, 6/175];
-
-    DS(m,m-6:m)=fliplr(-[-4723/2100, 839/175, -157/35, 278/105, -103/140, -1/175, 6/175]);
-    DS=DS/h;
-
-    H=h*H;
-    HI=inv(H);
-
-    %r1=D1*u-u_x;sqrt(r1'*r1)/m
-    %r2=D2*u-u_xx;sqrt(r2'*r2)/m
-
-    %te=eig(D1);
-    %tm=max(abs(te));
-    %plot(real(te),imag(te),'*');
-    %grid;
-    %xlabel('Real part');
-    %ylabel('Imaginary part');
-    %title('Spectrum, minimal spectral radius');
-    e_1 = zeros(m,1);
-    e_1(1)= 1;
-    e_m = zeros(m,1);
-    e_m(end)= 1;
-    S_1 = -DS(1,:)';
-    S_m =  DS(end,:)';
-
-    Q = H*D1-(-e_1*e_1' + e_m*e_m');
-    M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
-end
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/upwind2.m
--- a/+sbp/upwind2.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-function [H, HI, Dp, Dm, e_1, e_m] = upwind2(m,h)
-    Hv=ones(m,1);
-    Hv(1:2)=[0.1e1/0.4e1; 0.5e1/0.4e1;];
-    Hv(m-1:m)=rot90(Hv(1:2),2);
-    Hv = Hv*h;
-    H = spdiag(Hv,0);
-    HI = spdiag(1./Hv,0);
-
-    q_diags   = [0 1 2];
-    q_stencil = [-3/2 +2 -1/2];
-    Qp = stripeMatrix(q_stencil, q_diags,m);
-
-    Q_U = [
-        -0.1e1/0.4e1 0.5e1/0.4e1;
-        -0.1e1/0.4e1 -0.5e1/0.4e1;
-    ];
-
-    Qp(1:2,1:2)=Q_U;
-    Qp(m-1:m,m-1:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
-
-    Qm=-Qp';
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    Dp=HI*(Qp-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    Dm=HI*(Qm-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-end
-
-
-
-% KOLLA NAMN PÅ ALLA FUNKTIONER
-% TESTA ALLA FUNKTIONER
\ No newline at end of file
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/upwind3.m
--- a/+sbp/upwind3.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-function [H, HI, Dp, Dm, e_1, e_m] = upwind3(m,h)
-    Hv = ones(m,1);
-    Hv(1:3) = [3/8; 7/6; 23/24];
-    Hv(m-2:m) = rot90(Hv(1:3),2);
-    Hv = Hv*h;
-    H = spdiag(Hv,0);
-    HI = spdiag(1./Hv,0);
-
-    q_diags   = [-1, 0, 1, 2];
-    q_stencil = [-1/3 -1/2 1 -1/6];
-    Qp = stripeMatrix(q_stencil, q_diags,m);
-
-    Q_U = [
-         -1/24  17/24   -1/6;
-        -13/24   -1/4  23/24;
-          1/12 -11/24 -11/24;
-    ];
-    Qp(1:3,1:3)=Q_U;
-    Qp(m-2:m,m-2:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
-
-    Qm=-Qp';
-
-    e_1=sparse(m,1);
-    e_1(1)=1;
-    e_m=sparse(m,1);
-    e_m(m)=1;
-
-    Dp=HI*(Qp-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    Dm=HI*(Qm-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-end
-
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/upwind4.m
--- a/+sbp/upwind4.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-function [H, HI, Dp, Dm, e_1, e_m] = upwind4(m,h)
-
-    Hv=ones(m,1);
-    Hv(1:4)=[49/144 61/48 41/48 149/144];
-    Hv(m-3:m)=rot90(Hv(1:4),2);
-    Hv = Hv*h;
-    H = spdiag(Hv,0);
-    HI = spdiag(1./Hv,0);
-
-    q_diags   = [-1, 0, 1, 2 3];
-    q_stencil = [-1/4 -5/6 3/2 -1/2 1/12];
-    Qp = stripeMatrix(q_stencil, q_diags,m);
-
-    Q_U = [
-        -0.1e1/0.48e2    0.205e3/0.288e3 -0.29e2/0.144e3 0.1e1/0.96e2;
-        -0.169e3/0.288e3 -0.11e2/0.48e2  0.33e2/0.32e2   -0.43e2/0.144e3;
-        0.11e2/0.144e3   -0.13e2/0.32e2  -0.29e2/0.48e2  0.389e3/0.288e3;
-        0.1e1/0.32e2     -0.11e2/0.144e3 -0.65e2/0.288e3 -0.13e2/0.16e2;
-    ];
-
-    Qp(1:4,1:4)=Q_U;
-    Qp(m-3:m,m-3:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
-
-    Qm=-Qp';
-
-    e_1=sparse(m,1);e_1(1)=1;
-    e_m=sparse(m,1);e_m(m)=1;
-
-    Dp=HI*(Qp-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    Dm=HI*(Qm-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/upwind5.m
--- a/+sbp/upwind5.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,31 +0,0 @@
-function [H, HI, Dp, Dm, e_1, e_m] = upwind5(m,h)
-    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);
-    Hv = Hv*h;
-    H = spdiag(Hv,0);
-    HI = spdiag(1./Hv,0);
-
-    q_diags   = [-2 -1 0 1 2 3];
-    q_stencil = [1/20 -1/2 -1/3 +1 -1/4 +1/30];
-    Qp = stripeMatrix(q_stencil, q_diags,m);
-
-    Q_U = [
-        -0.1e1/0.120e3 0.941e3/0.1440e4 -0.47e2/0.360e3 -0.7e1/0.480e3;
-        -0.869e3/0.1440e4 -0.11e2/0.120e3 0.25e2/0.32e2 -0.43e2/0.360e3;
-        0.29e2/0.360e3 -0.17e2/0.32e2 -0.29e2/0.120e3 0.1309e4/0.1440e4;
-        0.1e1/0.32e2 -0.11e2/0.360e3 -0.661e3/0.1440e4 -0.13e2/0.40e2;
-    ];
-
-    Qp(1:4,1:4)=Q_U;
-    Qp(m-3:m,m-3:m)=flipud( fliplr(Q_U(1:4,1:4) ) )'; %%% This is different from standard SBP
-
-    Qm=-Qp';
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    Dp=HI*(Qp-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    Dm=HI*(Qm-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/upwind6.m
--- a/+sbp/upwind6.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,34 +0,0 @@
-function [H, HI, Dp, Dm, e_1, e_m] = upwind6(m,h)
-    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);
-    Hv = Hv*h;
-    H = spdiag(Hv,0);
-    HI = spdiag(1./Hv,0);
-
-    q_diags   = [-2 -1 0 1 2 3 4];
-    q_stencil = [1/30 -2/5 -7/12 4/3 -1/2 2/15 -1/60];
-    Qp = stripeMatrix(q_stencil, q_diags,m);
-
-    Q_U =[
-        -0.265e3/0.128688e6 0.1146190567e10/0.1737288000e10 -0.1596619e7/0.18384000e8 -0.55265831e8/0.579096000e9 0.26269819e8/0.3474576000e10 0.2464501e7/0.144774000e9;
-        -0.1116490567e10/0.1737288000e10 -0.8839e4/0.214480e6 0.190538869e9/0.347457600e9 0.102705469e9/0.694915200e9 0.413741e6/0.9651600e7 -0.191689861e9/0.3474576000e10;
-        0.1096619e7/0.18384000e8 -0.135385429e9/0.347457600e9 -0.61067e5/0.321720e6 0.45137333e8/0.57909600e8 -0.253641811e9/0.694915200e9 0.70665929e8/0.579096000e9;
-        0.66965831e8/0.579096000e9 -0.208765789e9/0.694915200e9 -0.17623253e8/0.57909600e8 -0.18269e5/0.45960e5 0.410905829e9/0.347457600e9 -0.477953317e9/0.1158192000e10;
-        -0.49219819e8/0.3474576000e10 0.293299e6/0.9651600e7 0.26422771e8/0.694915200e9 -0.141938309e9/0.347457600e9 -0.346583e6/0.643440e6 0.2217185207e10/0.1737288000e10;
-        -0.2374501e7/0.144774000e9 0.142906261e9/0.3474576000e10 -0.3137129e7/0.579096000e9 -0.29884283e8/0.1158192000e10 -0.630168407e9/0.1737288000e10 -0.3559e4/0.6128e4;
-    ];
-
-    Qp(1:6,1:6)=Q_U;
-    Qp(m-5:m,m-5:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
-
-    Qm=-Qp';
-
-    e_1=sparse(m,1);e_1(1)=1;
-    e_m=sparse(m,1);e_m(m)=1;
-
-    Dp=HI*(Qp-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    Dm=HI*(Qm-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/upwind7.m
--- a/+sbp/upwind7.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-function [H, HI, Dp, Dm, e_1, e_m] = upwind7(m,h)
-
-    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);
-    Hv = Hv*h;
-    H = spdiag(Hv,0);
-    HI = spdiag(1./Hv,0);
-
-    q_diags = [-3 -2 -1 0 1 2 3 4];
-    q_stencil = [-1/105 +1/10 -3/5 -1/4 +1 -3/10 +1/15 -1/140];
-    Qp = stripeMatrix(q_stencil, q_diags,m);
-
-    Q_U =[
-        -0.265e3/0.300272e6 0.1587945773e10/0.2432203200e10 -0.1926361e7/0.25737600e8 -0.84398989e8/0.810734400e9 0.48781961e8/0.4864406400e10 0.3429119e7/0.202683600e9;
-        -0.1570125773e10/0.2432203200e10 -0.26517e5/0.1501360e7 0.240029831e9/0.486440640e9 0.202934303e9/0.972881280e9 0.118207e6/0.13512240e8 -0.231357719e9/0.4864406400e10;
-        0.1626361e7/0.25737600e8 -0.206937767e9/0.486440640e9 -0.61067e5/0.750680e6 0.49602727e8/0.81073440e8 -0.43783933e8/0.194576256e9 0.51815011e8/0.810734400e9;
-        0.91418989e8/0.810734400e9 -0.53314099e8/0.194576256e9 -0.33094279e8/0.81073440e8 -0.18269e5/0.107240e6 0.440626231e9/0.486440640e9 -0.365711063e9/0.1621468800e10;
-        -0.62551961e8/0.4864406400e10 0.799e3/0.35280e5 0.82588241e8/0.972881280e9 -0.279245719e9/0.486440640e9 -0.346583e6/0.1501360e7 0.2312302333e10/0.2432203200e10;
-        -0.3375119e7/0.202683600e9 0.202087559e9/0.4864406400e10 -0.11297731e8/0.810734400e9 0.61008503e8/0.1621468800e10 -0.1360092253e10/0.2432203200e10 -0.10677e5/0.42896e5;
-    ];
-
-
-    Qp(1:6,1:6)=Q_U;
-    Qp(m-5:m,m-5:m)=rot90(Q_U,2)';
-
-    Qm=-Qp';
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    Dp=HI*(Qp-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    Dm=HI*(Qm-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/upwind8.m
--- a/+sbp/upwind8.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,37 +0,0 @@
-function [H, HI, Dp, Dm, e_1, e_m] = upwind8(m,h)
-    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);
-    Hv=Hv*h;
-
-    H = spdiag(Hv,0);
-    HI = spdiag(1./Hv,0);
-
-    q_diags   = [-3 -2 -1 0 1 2 3 4 5];
-    q_stencil = [-1/168 +1/14 -1/2 -9/20 +5/4 -1/2 +1/6 -1/28 +1/280];
-    Qp = stripeMatrix(q_stencil, q_diags,m);
-
-
-    Q_U =[
-        -0.16683e5/0.63018560e8 0.29345822969987e14/0.43354248537600e14 -0.2734625426591e13/0.40644608004000e14 -0.113480208109603e15/0.780376473676800e15 -0.830250230261e12/0.26012549122560e14 0.2500519492033e13/0.32515686403200e14 0.2235718279643e13/0.390188236838400e15 -0.388481888477e12/0.26543417472000e14;
-        -0.29227665839987e14/0.43354248537600e14 -0.493793e6/0.63018560e8 0.8302717120817e13/0.26543417472000e14 0.3739408501537e13/0.9290196115200e13 0.2684481534461e13/0.13935294172800e14 -0.4450185662513e13/0.18580392230400e14 -0.1221838279381e13/0.37160784460800e14 0.90595000956023e14/0.1950941184192000e16;
-        0.2505689537591e13/0.40644608004000e14 -0.7312922392817e13/0.26543417472000e14 -0.69332623e8/0.1323389760e10 0.10994933811709e14/0.18580392230400e14 -0.9270952411151e13/0.18580392230400e14 0.3191238635141e13/0.20644880256000e14 0.4442211176987e13/0.92901961152000e14 -0.940661365031e12/0.32515686403200e14;
-        0.118016946570403e15/0.780376473676800e15 -0.4173878828737e13/0.9290196115200e13 -0.7990503962509e13/0.18580392230400e14 -0.207799621e9/0.1323389760e10 0.2044021560341e13/0.2477385630720e13 0.511197701761e12/0.18580392230400e14 0.1237681717213e13/0.13935294172800e14 -0.7784834666617e13/0.130062745612800e15;
-        0.68609076271e11/0.2364777192960e13 -0.2235651762161e13/0.13935294172800e14 0.6527681584751e13/0.18580392230400e14 -0.1115980068821e13/0.2477385630720e13 -0.55386253e8/0.189055680e9 0.3208334350649e13/0.3716078446080e13 -0.407569013461e12/0.844563283200e12 0.136474842626653e15/0.780376473676800e15;
-        -0.2487637785013e13/0.32515686403200e14 0.4244231077313e13/0.18580392230400e14 -0.1550378843141e13/0.20644880256000e14 -0.5726967564961e13/0.18580392230400e14 -0.1017898941929e13/0.3716078446080e13 -0.526653889e9/0.1323389760e10 0.45241297077547e14/0.37160784460800e14 -0.2279608411897e13/0.5080576000500e13;
-        -0.2164019088443e13/0.390188236838400e15 0.1263196075861e13/0.37160784460800e14 -0.6600697610987e13/0.92901961152000e14 0.556610591687e12/0.13935294172800e14 0.926842346471e12/0.9290196115200e13 -0.18757693936747e14/0.37160784460800e14 -0.584765899e9/0.1323389760e10 0.204646287449e12/0.168431424000e12;
-        0.387091928477e12/0.26543417472000e14 -0.90231551688023e14/0.1950941184192000e16 0.1032404418251e13/0.32515686403200e14 0.3502353445417e13/0.130062745612800e15 -0.15385068876253e14/0.780376473676800e15 0.262499068919e12/0.10161152001000e14 -0.867004691939e12/0.1852745664000e13 -0.85017967e8/0.189055680e9;
-    ];
-
-    Qp(1:8,1:8)=Q_U;
-    Qp(m-7:m,m-7:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
-
-    Qm=-Qp';
-
-    e_1=sparse(m,1);e_1(1)=1;
-    e_m=sparse(m,1);e_m(m)=1;
-
-    Dp=HI*(Qp-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    Dm=HI*(Qm-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/upwind9.m
--- a/+sbp/upwind9.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-function [H, HI, Dp, Dm, e_1, e_m] = upwind9(m,h)
-
-    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);
-    Hv=Hv*h;
-
-    H = spdiag(Hv,0);
-    HI = spdiag(1./Hv,0);
-
-    q_diags   = [-4 -3 -2 -1 0 1 2 3 4 5];
-    q_stencil = [1/504 -1/42 +1/7 -2/3 -1/5 +1 -1/3 +2/21 -1/56 +1/630];
-    Qp = stripeMatrix(q_stencil, q_diags,m);
-
-    Q_U =[
-        -0.5561e4/0.47263920e8 0.4186300102421e13/0.6193464076800e13 -0.377895002003e12/0.5806372572000e13 -0.16485548951749e14/0.111482353382400e15 -0.113245973003e12/0.3716078446080e13 0.355360297339e12/0.4645098057600e13 0.321012170669e12/0.55741176691200e14 -0.388397049437e12/0.26543417472000e14;
-        -0.4178798062421e13/0.6193464076800e13 -0.493793e6/0.141791760e9 0.725405227507e12/0.2413037952000e13 0.3904159533697e13/0.9290196115200e13 0.2483046570341e13/0.13935294172800e14 -0.4336328670953e13/0.18580392230400e14 -0.1258688487061e13/0.37160784460800e14 0.12931584852209e14/0.278705883456000e15;
-        0.363359390003e12/0.5806372572000e13 -0.7539548734577e13/0.26543417472000e14 -0.69332623e8/0.2977626960e10 0.9994352248429e13/0.18580392230400e14 -0.8195655811631e13/0.18580392230400e14 0.7361486640463e13/0.61934640768000e14 0.5539855071347e13/0.92901961152000e14 -0.12898722943e11/0.422281641600e12;
-        0.16773595838149e14/0.111482353382400e15 -0.372477950627e12/0.844563283200e12 -0.8659050093229e13/0.18580392230400e14 -0.207799621e9/0.2977626960e10 0.1734921317461e13/0.2477385630720e13 0.2530020015841e13/0.18580392230400e14 0.441856623253e12/0.13935294172800e14 -0.115132773073e12/0.2654341747200e13;
-        0.108449122763e12/0.3716078446080e13 -0.2283566671541e13/0.13935294172800e14 0.6976424333231e13/0.18580392230400e14 -0.440819477447e12/0.825795210240e12 -0.55386253e8/0.425375280e9 0.2479572560009e13/0.3716078446080e13 -0.40258468963e11/0.120651897600e12 0.11808221047099e14/0.111482353382400e15;
-        -0.32231128289e11/0.422281641600e12 0.4244793299753e13/0.18580392230400e14 -0.5173673584463e13/0.61934640768000e14 -0.4848139955041e13/0.18580392230400e14 -0.1506045711689e13/0.3716078446080e13 -0.526653889e9/0.2977626960e10 0.36411368691307e14/0.37160784460800e14 -0.825434105779e12/0.2903186286000e13;
-        -0.316459841069e12/0.55741176691200e14 0.1277069729941e13/0.37160784460800e14 -0.6499182375347e13/0.92901961152000e14 0.355606625147e12/0.13935294172800e14 0.1519272420551e13/0.9290196115200e13 -0.2240079855137e13/0.3378253132800e13 -0.584765899e9/0.2977626960e10 0.2301241355533e13/0.2382101568000e13;
-        0.387779289437e12/0.26543417472000e14 -0.12908508708209e14/0.278705883456000e15 0.147710908133e12/0.4645098057600e13 0.534025841911e12/0.18580392230400e14 -0.4119981443899e13/0.111482353382400e15 0.279819152779e12/0.2903186286000e13 -0.1510324515533e13/0.2382101568000e13 -0.85017967e8/0.425375280e9;
-    ];
-
-
-    Qp(1:8,1:8)=Q_U;
-    Qp(m-7:m,m-7:m)=rot90(Q_U,2)'; %%% This is different from standard SBP
-
-    Qm=-Qp';
-
-    e_1=zeros(m,1);e_1(1)=1;
-    e_m=zeros(m,1);e_m(m)=1;
-
-    Dp=HI*(Qp-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-
-    Dm=HI*(Qm-1/2*e_1*e_1'+1/2*e_m*e_m') ;
-end
diff -r 18c023aaf3f7 -r dae8c3a56f5e +sbp/variable4.m
--- a/+sbp/variable4.m	Mon Sep 12 11:14:00 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-function [H, HI, D1, D2, e_l, e_r, d_l, d_r] = variable4(m,h)
-    N = m;
-
-    H = speye(N);
-    H(1,1) = 17/48; H(2,2) = 59/48; H(3,3) = 43/48; H(4,4) = 49/48;
-    H(N,N) = 17/48; H(N-1,N-1) = 59/48; H(N-2,N-2) = 43/48; H(N-3,N-3) = 49/48;
-    H = h*H;
-
-    HI = inv(H);
-
-    H = sparse(H);
-    HI = sparse(HI);
-
-
-    S = sparse(N,N);
-    S(1,1:4) = 1/h*[(-11/6);3;(-3/2);1/3];
-    S(N,N-3:N) = 1/h*[(-1/3);3/2;(-3);11/6];
-    S = sparse(S);
-
-    e_l = sparse(m,1);
-    e_l(1) = 1;
-
-    e_r = sparse(m,1);
-    e_r(end) = 1;
-
-    d_l = S(1,:)';
-    d_r = S(end,:)';
-
-    e=ones(m,1);
-    Q=spdiags([e -8*e 0*e 8*e -e], -2:2, m, m)/12;
-    Q_U = [0 0.59e2 / 0.96e2 -0.1e1 / 0.12e2 -0.1e1 / 0.32e2; -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2 0; 0.1e1 / 0.12e2 -0.59e2 / 0.96e2 0 0.59e2 / 0.96e2; 0.1e1 / 0.32e2 0 -0.59e2 / 0.96e2 0;];
-    Q(1:4,1:4)=Q_U;
-    Q(m-3:m,m-3:m)=rot90( -Q_U(1:4,1:4) ,2 );
-
-    D1=HI*(Q-1/2*e_l*e_l'+1/2*e_r*e_r') ;
-
-    function D2 = D2_fun(c)
-        M = 78+(N-12)*5;
-        %h = 1/(N-1);
-
-
-        U = [48/(17)*(0.12e2 / 0.17e2 * c(1) + 0.59e2 / 0.192e3 * c(2) + 0.27010400129e11 / 0.345067064608e12 * c(3) + 0.69462376031e11 / 0.2070402387648e13 * c(4)) 48/(17)*(-0.59e2 / 0.68e2 * c(1) - 0.6025413881e10 / 0.21126554976e11 * c(3) - 0.537416663e9 / 0.7042184992e10 * c(4)) 48/(17)*(0.2e1 / 0.17e2 * c(1) - 0.59e2 / 0.192e3 * c(2) + 0.213318005e9 / 0.16049630912e11 * c(4) + 0.2083938599e10 / 0.8024815456e10 * c(3)) 48/(17)*(0.3e1 / 0.68e2 * c(1) - 0.1244724001e10 / 0.21126554976e11 * c(3) + 0.752806667e9 / 0.21126554976e11 * c(4)) 48/(17)*(0.49579087e8 / 0.10149031312e11 * c(3) - 0.49579087e8 / 0.10149031312e11 * c(4)) 48/(17)*(-c(4) / 0.784e3 + c(3) / 0.784e3);...
-                48/(59)*(-0.59e2 / 0.68e2 * c(1) - 0.6025413881e10 / 0.21126554976e11 * c(3) - 0.537416663e9 / 0.7042184992e10 * c(4)) 48/(59)*(0.3481e4 / 0.3264e4 * c(1) + 0.9258282831623875e16 / 0.7669235228057664e16 * c(3) + 0.236024329996203e15 / 0.1278205871342944e16 * c(4)) 48/(59)*(-0.59e2 / 0.408e3 * c(1) - 0.29294615794607e14 / 0.29725717938208e14 * c(3) - 0.2944673881023e13 / 0.29725717938208e14 * c(4)) 48/(59)*(-0.59e2 / 0.1088e4 * c(1) + 0.260297319232891e15 / 0.2556411742685888e16 * c(3) - 0.60834186813841e14 / 0.1278205871342944e16 * c(4)) 48/(59)*(-0.1328188692663e13 / 0.37594290333616e14 * c(3) + 0.1328188692663e13 / 0.37594290333616e14 * c(4)) 48/(59)*(-0.8673e4 / 0.2904112e7 * c(3) + 0.8673e4 / 0.2904112e7 * c(4));...
-                48/(43)*(0.2e1 / 0.17e2 * c(1) - 0.59e2 / 0.192e3 * c(2) + 0.213318005e9 / 0.16049630912e11 * c(4) + 0.2083938599e10 / 0.8024815456e10 * c(3)) 48/(43)*(-0.59e2 / 0.408e3 * c(1) - 0.29294615794607e14 / 0.29725717938208e14 * c(3) - 0.2944673881023e13 / 0.29725717938208e14 * c(4)) 48/(43)*(c(1) / 0.51e2 + 0.59e2 / 0.192e3 * c(2) + 0.13777050223300597e17 / 0.26218083221499456e17 * c(4) + 0.564461e6 / 0.13384296e8 * c(5) + 0.378288882302546512209e21 / 0.270764341349677687456e21 * c(3)) 48/(43)*(c(1) / 0.136e3 - 0.125059e6 / 0.743572e6 * c(5) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(3) - 0.17220493277981e14 / 0.89177153814624e14 * c(4)) 48/(43)*(-0.10532412077335e14 / 0.42840005263888e14 * c(4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(3) + 0.564461e6 / 0.4461432e7 * c(5)) 48/(43)*(-0.960119e6 / 0.1280713392e10 * c(4) - 0.3391e4 / 0.6692148e7 * c(5) + 0.33235054191e11 / 0.26452850508784e14 * c(3));...
-                48/(49)*(0.3e1 / 0.68e2 * c(1) - 0.1244724001e10 / 0.21126554976e11 * c(3) + 0.752806667e9 / 0.21126554976e11 * c(4)) 48/(49)*(-0.59e2 / 0.1088e4 * c(1) + 0.260297319232891e15 / 0.2556411742685888e16 * c(3) - 0.60834186813841e14 / 0.1278205871342944e16 * c(4)) 48/(49)*(c(1) / 0.136e3 - 0.125059e6 / 0.743572e6 * c(5) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(3) - 0.17220493277981e14 / 0.89177153814624e14 * c(4)) 48/(49)*(0.3e1 / 0.1088e4 * c(1) + 0.507284006600757858213e21 / 0.475219048083107777984e21 * c(3) + 0.1869103e7 / 0.2230716e7 * c(5) + c(6) / 0.24e2 + 0.1950062198436997e16 / 0.3834617614028832e16 * c(4)) 48/(49)*(-0.4959271814984644613e19 / 0.20965546238960637264e20 * c(3) - c(6) / 0.6e1 - 0.15998714909649e14 / 0.37594290333616e14 * c(4) - 0.375177e6 / 0.743572e6 * c(5)) 48/(49)*(-0.368395e6 / 0.2230716e7 * c(5) + 0.752806667e9 / 0.539854092016e12 * c(3) + 0.1063649e7 / 0.8712336e7 * c(4) + c(6) / 0.8e1);...
-                0.49579087e8 / 0.10149031312e11 * c(3) - 0.49579087e8 / 0.10149031312e11 * c(4) -0.1328188692663e13 / 0.37594290333616e14 * c(3) + 0.1328188692663e13 / 0.37594290333616e14 * c(4) -0.10532412077335e14 / 0.42840005263888e14 * c(4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(3) + 0.564461e6 / 0.4461432e7 * c(5) -0.4959271814984644613e19 / 0.20965546238960637264e20 * c(3) - c(6) / 0.6e1 - 0.15998714909649e14 / 0.37594290333616e14 * c(4) - 0.375177e6 / 0.743572e6 * c(5) 0.8386761355510099813e19 / 0.128413970713633903242e21 * c(3) + 0.2224717261773437e16 / 0.2763180339520776e16 * c(4) + 0.5e1 / 0.6e1 * c(6) + c(7) / 0.24e2 + 0.280535e6 / 0.371786e6 * c(5) -0.35039615e8 / 0.213452232e9 * c(4) - c(7) / 0.6e1 - 0.13091810925e11 / 0.13226425254392e14 * c(3) - 0.1118749e7 / 0.2230716e7 * c(5) - c(6) / 0.2e1;...
-                -c(4) / 0.784e3 + c(3) / 0.784e3 -0.8673e4 / 0.2904112e7 * c(3) + 0.8673e4 / 0.2904112e7 * c(4) -0.960119e6 / 0.1280713392e10 * c(4) - 0.3391e4 / 0.6692148e7 * c(5) + 0.33235054191e11 / 0.26452850508784e14 * c(3) -0.368395e6 / 0.2230716e7 * c(5) + 0.752806667e9 / 0.539854092016e12 * c(3) + 0.1063649e7 / 0.8712336e7 * c(4) + c(6) / 0.8e1 -0.35039615e8 / 0.213452232e9 * c(4) - c(7) / 0.6e1 - 0.13091810925e11 / 0.13226425254392e14 * c(3) - 0.1118749e7 / 0.2230716e7 * c(5) - c(6) / 0.2e1 0.3290636e7 / 0.80044587e8 * c(4) + 0.5580181e7 / 0.6692148e7 * c(5) + 0.5e1 / 0.6e1 * c(7) + c(8) / 0.24e2 + 0.660204843e9 / 0.13226425254392e14 * c(3) + 0.3e1 / 0.4e1 * c(6)];
-
-
-        L = [c(N-7) / 0.24e2 + 0.5e1 / 0.6e1 * c(N-6) + 0.5580181e7 / 0.6692148e7 * c(N-4) + 0.4887707739997e13 / 0.119037827289528e15 * c(N-3) + 0.3e1 / 0.4e1 * c(N-5) + 0.660204843e9 / 0.13226425254392e14 * c(N-2) + 0.660204843e9 / 0.13226425254392e14 * c(N-1) -c(N-6) / 0.6e1 - 0.1618585929605e13 / 0.9919818940794e13 * c(N-3) - c(N-5) / 0.2e1 - 0.1118749e7 / 0.2230716e7 * c(N-4) - 0.13091810925e11 / 0.13226425254392e14 * c(N-2) - 0.13091810925e11 / 0.13226425254392e14 * c(N-1) -0.368395e6 / 0.2230716e7 * c(N-4) + c(N-5) / 0.8e1 + 0.48866620889e11 / 0.404890569012e12 * c(N-3) + 0.752806667e9 / 0.539854092016e12 * c(N-2) + 0.752806667e9 / 0.539854092016e12 * c(N-1) -0.3391e4 / 0.6692148e7 * c(N-4) - 0.238797444493e12 / 0.119037827289528e15 * c(N-3) + 0.33235054191e11 / 0.26452850508784e14 * c(N-2) + 0.33235054191e11 / 0.26452850508784e14 * c(N-1) -0.8673e4 / 0.2904112e7 * c(N-2) - 0.8673e4 / 0.2904112e7 * c(N-1) + 0.8673e4 / 0.1452056e7 * c(N-3) -c(N-3) / 0.392e3 + c(N-2) / 0.784e3 + c(N-1) / 0.784e3;...
-               -c(N-6) / 0.6e1 - 0.1618585929605e13 / 0.9919818940794e13 * c(N-3) - c(N-5) / 0.2e1 - 0.1118749e7 / 0.2230716e7 * c(N-4) - 0.13091810925e11 / 0.13226425254392e14 * c(N-2) - 0.13091810925e11 / 0.13226425254392e14 * c(N-1) c(N-6) / 0.24e2 + 0.5e1 / 0.6e1 * c(N-5) + 0.3896014498639e13 / 0.4959909470397e13 * c(N-3) + 0.8386761355510099813e19 / 0.128413970713633903242e21 * c(N-2) + 0.280535e6 / 0.371786e6 * c(N-4) + 0.3360696339136261875e19 / 0.171218627618178537656e21 * c(N-1) -c(N-5) / 0.6e1 - 0.4959271814984644613e19 / 0.20965546238960637264e20 * c(N-2) - 0.375177e6 / 0.743572e6 * c(N-4) - 0.13425842714e11 / 0.33740880751e11 * c(N-3) - 0.193247108773400725e18 / 0.6988515412986879088e19 * c(N-1) -0.365281640980e12 / 0.1653303156799e13 * c(N-3) + 0.564461e6 / 0.4461432e7 * c(N-4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(N-2) - 0.198407225513315475e18 / 0.7963657098519931984e19 * c(N-1) -0.1328188692663e13 / 0.37594290333616e14 * c(N-2) + 0.2226377963775e13 / 0.37594290333616e14 * c(N-1) - 0.8673e4 / 0.363014e6 * c(N-3) c(N-3) / 0.49e2 + 0.49579087e8 / 0.10149031312e11 * c(N-2) - 0.256702175e9 / 0.10149031312e11 * c(N-1);...
-               48/(49)*(-0.368395e6 / 0.2230716e7 * c(N-4) + c(N-5) / 0.8e1 + 0.48866620889e11 / 0.404890569012e12 * c(N-3) + 0.752806667e9 / 0.539854092016e12 * c(N-2) + 0.752806667e9 / 0.539854092016e12 * c(N-1)) 48/(49)*(-c(N-5) / 0.6e1 - 0.4959271814984644613e19 / 0.20965546238960637264e20 * c(N-2) - 0.375177e6 / 0.743572e6 * c(N-4) - 0.13425842714e11 / 0.33740880751e11 * c(N-3) - 0.193247108773400725e18 / 0.6988515412986879088e19 * c(N-1)) 48/(49)*(c(N-5) / 0.24e2 + 0.1869103e7 / 0.2230716e7 * c(N-4) + 0.507284006600757858213e21 / 0.475219048083107777984e21 * c(N-2) + 0.3e1 / 0.1088e4 * c(N) + 0.31688435395e11 / 0.67481761502e11 * c(N-3) + 0.27769176016102795561e20 / 0.712828572124661666976e21 * c(N-1)) 48/(49)*(-0.125059e6 / 0.743572e6 * c(N-4) + c(N) / 0.136e3 - 0.23099342648e11 / 0.101222642253e12 * c(N-3) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(N-2) + 0.193950157930938693e18 / 0.5525802884687299744e19 * c(N-1)) 48/(49)*(0.260297319232891e15 / 0.2556411742685888e16 * c(N-2) - 0.59e2 / 0.1088e4 * c(N) - 0.106641839640553e15 / 0.1278205871342944e16 * c(N-1) + 0.26019e5 / 0.726028e6 * c(N-3)) 48/(49)*(-0.1244724001e10 / 0.21126554976e11 * c(N-2) + 0.3e1 / 0.68e2 * c(N) + 0.752806667e9 / 0.21126554976e11 * c(N-1));...
-               48/(43)*(-0.3391e4 / 0.6692148e7 * c(N-4) - 0.238797444493e12 / 0.119037827289528e15 * c(N-3) + 0.33235054191e11 / 0.26452850508784e14 * c(N-2) + 0.33235054191e11 / 0.26452850508784e14 * c(N-1)) 48/(43)*(-0.365281640980e12 / 0.1653303156799e13 * c(N-3) + 0.564461e6 / 0.4461432e7 * c(N-4) + 0.1613976761032884305e19 / 0.7963657098519931984e19 * c(N-2) - 0.198407225513315475e18 / 0.7963657098519931984e19 * c(N-1)) 48/(43)*(-0.125059e6 / 0.743572e6 * c(N-4) + c(N) / 0.136e3 - 0.23099342648e11 / 0.101222642253e12 * c(N-3) - 0.4836340090442187227e19 / 0.5525802884687299744e19 * c(N-2) + 0.193950157930938693e18 / 0.5525802884687299744e19 * c(N-1)) 48/(43)*(0.564461e6 / 0.13384296e8 * c(N-4) + 0.470299699916357e15 / 0.952302618316224e15 * c(N-3) + 0.550597048646198778781e21 / 0.1624586048098066124736e22 * c(N-1) + c(N) / 0.51e2 + 0.378288882302546512209e21 / 0.270764341349677687456e21 * c(N-2)) 48/(43)*(-0.59e2 / 0.408e3 * c(N) - 0.29294615794607e14 / 0.29725717938208e14 * c(N-2) - 0.2234477713167e13 / 0.29725717938208e14 * c(N-1) - 0.8673e4 / 0.363014e6 * c(N-3)) 48/(43)*(-0.59e2 / 0.3136e4 * c(N-3) - 0.13249937023e11 / 0.48148892736e11 * c(N-1) + 0.2e1 / 0.17e2 * c(N) + 0.2083938599e10 / 0.8024815456e10 * c(N-2));...
-               48/(59)*(-0.8673e4 / 0.2904112e7 * c(N-2) - 0.8673e4 / 0.2904112e7 * c(N-1) + 0.8673e4 / 0.1452056e7 * c(N-3)) 48/(59)*(-0.1328188692663e13 / 0.37594290333616e14 * c(N-2) + 0.2226377963775e13 / 0.37594290333616e14 * c(N-1) - 0.8673e4 / 0.363014e6 * c(N-3)) 48/(59)*(0.260297319232891e15 / 0.2556411742685888e16 * c(N-2) - 0.59e2 / 0.1088e4 * c(N) - 0.106641839640553e15 / 0.1278205871342944e16 * c(N-1) + 0.26019e5 / 0.726028e6 * c(N-3)) 48/(59)*(-0.59e2 / 0.408e3 * c(N) - 0.29294615794607e14 / 0.29725717938208e14 * c(N-2) - 0.2234477713167e13 / 0.29725717938208e14 * c(N-1) - 0.8673e4 / 0.363014e6 * c(N-3)) 48/(59)*(0.9258282831623875e16 / 0.7669235228057664e16 * c(N-2) + 0.3481e4 / 0.3264e4 * c(N) + 0.228389721191751e15 / 0.1278205871342944e16 * c(N-1) + 0.8673e4 / 0.1452056e7 * c(N-3)) 48/(59)*(-0.6025413881e10 / 0.21126554976e11 * c(N-2) - 0.59e2 / 0.68e2 * c(N) - 0.537416663e9 / 0.7042184992e10 * c(N-1));...
-               48/(17)*(-c(N-3) / 0.392e3 + c(N-2) / 0.784e3 + c(N-1) / 0.784e3) 48/(17)*(c(N-3) / 0.49e2 + 0.49579087e8 / 0.10149031312e11 * c(N-2) - 0.256702175e9 / 0.10149031312e11 * c(N-1)) 48/(17)*(-0.1244724001e10 / 0.21126554976e11 * c(N-2) + 0.3e1 / 0.68e2 * c(N) + 0.752806667e9 / 0.21126554976e11 * c(N-1)) 48/(17)*(-0.59e2 / 0.3136e4 * c(N-3) - 0.13249937023e11 / 0.48148892736e11 * c(N-1) + 0.2e1 / 0.17e2 * c(N) + 0.2083938599e10 / 0.8024815456e10 * c(N-2)) 48/(17)*(-0.6025413881e10 / 0.21126554976e11 * c(N-2) - 0.59e2 / 0.68e2 * c(N) - 0.537416663e9 / 0.7042184992e10 * c(N-1)) 48/(17)*(0.3e1 / 0.3136e4 * c(N-3) + 0.27010400129e11 / 0.345067064608e12 * c(N-2) + 0.234566387291e12 / 0.690134129216e12 * c(N-1) + 0.12e2 / 0.17e2 * c(N))];
-
-
-
-        R = zeros(M,1);
-        R(1:24) = reshape(U(1:4,:)',24,1);
-        R(25:30) = U(5,:);
-        R(31) = -c(5+1) / 0.6e1 + c(5) / 0.8e1 + c(5+2) / 0.8e1;
-        R(32:37) = U(6,:);
-        R(38:39) = [-c(6-1) / 0.6e1 - c(6+2) / 0.6e1 - c(6) / 0.2e1 - c(6+1) / 0.2e1;...
-                                      -c(6+1) / 0.6e1 + c(6) / 0.8e1 + c(6+2) / 0.8e1];
-
-        R(M-38:M-37) = [-c(N-6) / 0.6e1 + c(N-7) / 0.8e1 + c(N-5) / 0.8e1;...
-                                              -c(N-7) / 0.6e1 - c(N-4) / 0.6e1 - c(N-6) / 0.2e1 - c(N-5) / 0.2e1];
-        R(M-36:M-31) = L(1,:);
-        R(M-30) = -c(N-5) / 0.6e1 + c(N-6) / 0.8e1 + c(N-4) / 0.8e1;
-        R(M-29:M-24) = L(2,:);
-        R(M-23:M) = reshape(L(3:6,:)',24,1);
-
-        for i=7:N-6
-            R(40+(i-7)*5:44+(i-7)*5) = [-c(i-1) / 0.6e1 + c(i-2) / 0.8e1 + c(i) / 0.8e1,...
-                                                                  -c(i-2) / 0.6e1 - c(i+1) / 0.6e1 - c(i-1) / 0.2e1 - c(i) / 0.2e1,...
-                                                                  c(i-2) / 0.24e2 + 0.5e1 / 0.6e1 * c(i-1) + 0.5e1 / 0.6e1 * c(i+1) + c(i+2) / 0.24e2 + 0.3e1 / 0.4e1 * c(i),...
-                                                                  -c(i-1) / 0.6e1 - c(i+2) / 0.6e1 - c(i) / 0.2e1 - c(i+1) / 0.2e1,...
-                                                                  -c(i+1) / 0.6e1 + c(i) / 0.8e1 + c(i+2) / 0.8e1];
-        end
-
-        R = R/h/h;
-        D2 = -R;
-        D2(1:4) = -48/17/h/h*[c(1)*(-11/6);c(1)*3;c(1)*(-3/2);c(1)*1/3] + D2(1:4);
-        D2(M-3:M) = -48/17/h/h*[c(N)*1/3;c(N)*(-3/2);c(N)*3;c(N)*(-11/6)] + D2(M-3:M);
-
-
-
-        BS = sparse(N,N);
-        BS(1,1:4) = -c(1)*1/h*[(-11/6);3;(-3/2);1/3];
-        BS(N,N-3:N) = c(N)*1/h*[(-1/3);3/2;(-3);11/6];
-        BS = sparse(BS);
-
-    % %%Row and column indices%%
-        M = 78+(N-12)*5;
-        rows = [kron([1;2;3;4],ones(6,1));...
-                    5*ones(7,1);...
-                    6*ones(8,1);...
-                    kron((7:N-6)',ones(5,1));...
-                    (N-5)*ones(8,1);...
-                    (N-4)*ones(7,1);...
-                    kron([N-3;N-2;N-1;N],ones(6,1))];
-
-        cols = zeros(M,1);
-        cols(1:24) = kron(ones(4,1),[1;2;3;4;5;6]);
-        cols(25:39) = [(1:7)';(1:8)'];
-        cols(M-23:M) = kron(ones(4,1),[N-5;N-4;N-3;N-2;N-1;N]);
-        cols(M-38:M-24) = [(N-7:N)';(N-6:N)'];
-        for i=7:N-6
-            cols(40+(i-7)*5:44+(i-7)*5) = [i-2;i-1;i;i+1;i+2];
-        end
-        D2 = sparse(rows,cols,D2);
-    end
-    D2 = @D2_fun;
-end
\ No newline at end of file