comparison +sbp/+implementations/d2_2.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 8b8672134be8
comparison
equal deleted inserted replaced
266:bfa130b7abf6 267:f7ac3cd6eeaa
3 BP = 1; 3 BP = 1;
4 if(m<2*BP) 4 if(m<2*BP)
5 error(['Operator requires at least ' num2str(2*BP) ' grid points']); 5 error(['Operator requires at least ' num2str(2*BP) ' grid points']);
6 end 6 end
7 7
8 e_1=zeros(m,1);e_1(1)=1; 8 e_1=sparse(m,1);e_1(1)=1;
9 e_m=zeros(m,1);e_m(m)=1; 9 e_m=sparse(m,1);e_m(m)=1;
10 10
11 H=(eye(m,m));H(1,1)=0.5;H(m,m)=0.5; 11 H=(speye(m,m));H(1,1)=0.5;H(m,m)=0.5;
12 H=h*H; 12 H=h*H;
13 HI=inv(H); 13 HI=inv(H);
14 14
15 D1=((.5*diag(ones(m-1,1),1)-.5*diag(ones(m-1,1),-1))); 15 diags = -1:1;
16 stencil = [-1/2 0 1/2];
17 D1 = stripeMatrix(stencil, diags, m);
18
16 D1(1,1)=-1;D1(1,2)=1;D1(m,m-1)=-1;D1(m,m)=1; 19 D1(1,1)=-1;D1(1,2)=1;D1(m,m-1)=-1;D1(m,m)=1;
17 D1(m,m-1)=-1;D1(m,m)=1; 20 D1(m,m-1)=-1;D1(m,m)=1;
18 D1=D1/h; 21 D1=D1/h;
19 22
20 Q=H*D1 + 1/2*e_1*e_1' - 1/2*e_m*e_m'; 23 Q=H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m');
21 24
22 D2=((diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)-2*diag(ones(m,1),0))); 25 diags = -1:1;
26 stencil = [1 -2 1];
27 D2 = stripeMatrix(stencil, diags, m);
28
23 D2(1,1)=1;D2(1,2)=-2;D2(1,3)=1; 29 D2(1,1)=1;D2(1,2)=-2;D2(1,3)=1;
24 D2(m,m-2)=1;D2(m,m-1)=-2;D2(m,m)=1; 30 D2(m,m-2)=1;D2(m,m-1)=-2;D2(m,m)=1;
25 D2=D2/h^2; 31 D2=D2/h^2;
26 32
27 S_U=[-3/2, 2, -1/2]/h; 33 S_U=[-3/2, 2, -1/2]/h;
28 S_1=zeros(1,m); 34 S_1=sparse(1,m);
29 S_1(1:3)=S_U; 35 S_1(1:3)=S_U;
30 S_m=zeros(1,m); 36 S_m=sparse(1,m);
31 S_m(m-2:m)=fliplr(-S_U); 37 S_m(m-2:m)=fliplr(-S_U);
32 38
33 39
34 M=-H*D2-e_1*S_1+e_m*S_m; 40 M=-H*D2-e_1*S_1+e_m*S_m;
35 S_1 = S_1'; 41 S_1 = S_1';