comparison +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
comparison
equal deleted inserted replaced
266:bfa130b7abf6 267:f7ac3cd6eeaa
5 BP = 15; 5 BP = 15;
6 if(m<2*BP) 6 if(m<2*BP)
7 error(['Operator requires at least ' num2str(2*BP) ' grid points']); 7 error(['Operator requires at least ' num2str(2*BP) ' grid points']);
8 end 8 end
9 9
10 H=diag(ones(m,1),0); 10 H=speye(m,m);
11 H(1:15,1:15)=diag([2.880607858916397e-01,... 11 H(1:15,1:15)=diag([2.880607858916397e-01,...
12 1.560376162339675e+00,... 12 1.560376162339675e+00,...
13 2.403139445479289e-01,... 13 2.403139445479289e-01,...
14 1.531292896754208e+00,... 14 1.531292896754208e+00,...
15 1.245107365551116e+00,... 15 1.245107365551116e+00,...
27 H(m-14:m,m-14:m)=rot90(H(1:15,1:15),2); 27 H(m-14:m,m-14:m)=rot90(H(1:15,1:15),2);
28 28
29 H=H*h; 29 H=H*h;
30 HI = inv(H); 30 HI = inv(H);
31 31
32 a1 = 6/7; a2 = -15/56; a3 = 5/63; a4 = -1/56; a5 = 1/385; a6 = -1/5544; 32 diags = -6:6;
33 33 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];
34 D1=a6*(diag(ones(m-6,1),6)-diag(ones(m-6,1),-6))+... 34 D1 = stripeMatrix(stencil, diags, m);
35 a5*(diag(ones(m-5,1),5)-diag(ones(m-5,1),-5))+...
36 a4*(diag(ones(m-4,1),4)-diag(ones(m-4,1),-4))+...
37 a3*(diag(ones(m-3,1),3)-diag(ones(m-3,1),-3))+...
38 a2*(diag(ones(m-2,1),2)-diag(ones(m-2,1),-2))+...
39 a1*(diag(ones(m-1,1),1)-diag(ones(m-1,1),-1));
40 35
41 36
42 D1(1, 1)= -1.735744761135539e+00; 37 D1(1, 1)= -1.735744761135539e+00;
43 D1(1 , 2 )= 2.307154400697361e+00; 38 D1(1 , 2 )= 2.307154400697361e+00;
44 D1(1, 3)= -8.049541548921420e-02; 39 D1(1, 3)= -8.049541548921420e-02;
279 274
280 % Wide 2nd derivative 275 % Wide 2nd derivative
281 276
282 D2=D1*D1; 277 D2=D1*D1;
283 278
284 e_1 = zeros(m,1); 279 e_1 = sparse(m,1);
285 e_1(1)= 1; 280 e_1(1)= 1;
286 e_m = zeros(m,1); 281 e_m = sparse(m,1);
287 e_m(end)= 1; 282 e_m(end)= 1;
288 283
289 S_1 = (e_1'*D1)'; 284 S_1 = (e_1'*D1)';
290 S_m = (e_m'*D1)'; 285 S_m = (e_m'*D1)';
291 286
292 Q = H*D1-(-e_1*e_1' + e_m*e_m'); 287 Q = H*D1-(-(e_1*e_1') + (e_m*e_m'));
293 M = -(H*D2-(-e_1*S_1' + e_m*S_m')); 288 M = -(H*D2-(-e_1*S_1' + e_m*S_m'));
294 end 289 end