diff +sbp/+implementations/d2_12.m @ 267:f7ac3cd6eeaa operator_remake

Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
author Martin Almquist <martin.almquist@it.uu.se>
date Fri, 09 Sep 2016 14:53:41 +0200
parents bfa130b7abf6
children
line wrap: on
line diff
--- a/+sbp/+implementations/d2_12.m	Fri Sep 09 11:03:13 2016 +0200
+++ b/+sbp/+implementations/d2_12.m	Fri Sep 09 14:53:41 2016 +0200
@@ -7,7 +7,7 @@
     error(['Operator requires at least ' num2str(2*BP) ' grid points']);
 end
 
-H=diag(ones(m,1),0);
+H=speye(m,m);
 H(1:15,1:15)=diag([2.880607858916397e-01,...
     1.560376162339675e+00,...
     2.403139445479289e-01,...
@@ -29,14 +29,9 @@
 H=H*h;
 HI = inv(H);
 
-a1 = 6/7; a2 = -15/56; a3 = 5/63; a4 = -1/56; a5 = 1/385; a6 = -1/5544;
-
-D1=a6*(diag(ones(m-6,1),6)-diag(ones(m-6,1),-6))+...
-    a5*(diag(ones(m-5,1),5)-diag(ones(m-5,1),-5))+...
-    a4*(diag(ones(m-4,1),4)-diag(ones(m-4,1),-4))+...
-    a3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+...
-    a2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+...
-    a1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
+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;
@@ -281,14 +276,14 @@
 
 D2=D1*D1;
 
-e_1 = zeros(m,1);
+e_1 = sparse(m,1);
 e_1(1)= 1;
-e_m = zeros(m,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');
+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