Mercurial > repos > public > sbplib
comparison +sbp/+implementations/d2_2.m @ 423:a2cb0d4f4a02 feature/grids
Merge in default.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 07 Feb 2017 15:47:51 +0100 |
parents | f7ac3cd6eeaa |
children | 8b8672134be8 |
comparison
equal
deleted
inserted
replaced
218:da058ce66876 | 423:a2cb0d4f4a02 |
---|---|
1 function [H, HI, D1, D2, e_1, e_m, M, Q, S_1, S_m] = d2_2(m,h) | |
2 | |
3 BP = 1; | |
4 if(m<2*BP) | |
5 error(['Operator requires at least ' num2str(2*BP) ' grid points']); | |
6 end | |
7 | |
8 e_1=sparse(m,1);e_1(1)=1; | |
9 e_m=sparse(m,1);e_m(m)=1; | |
10 | |
11 H=(speye(m,m));H(1,1)=0.5;H(m,m)=0.5; | |
12 H=h*H; | |
13 HI=inv(H); | |
14 | |
15 diags = -1:1; | |
16 stencil = [-1/2 0 1/2]; | |
17 D1 = stripeMatrix(stencil, diags, m); | |
18 | |
19 D1(1,1)=-1;D1(1,2)=1;D1(m,m-1)=-1;D1(m,m)=1; | |
20 D1(m,m-1)=-1;D1(m,m)=1; | |
21 D1=D1/h; | |
22 | |
23 Q=H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m'); | |
24 | |
25 diags = -1:1; | |
26 stencil = [1 -2 1]; | |
27 D2 = stripeMatrix(stencil, diags, m); | |
28 | |
29 D2(1,1)=1;D2(1,2)=-2;D2(1,3)=1; | |
30 D2(m,m-2)=1;D2(m,m-1)=-2;D2(m,m)=1; | |
31 D2=D2/h^2; | |
32 | |
33 S_U=[-3/2, 2, -1/2]/h; | |
34 S_1=sparse(1,m); | |
35 S_1(1:3)=S_U; | |
36 S_m=sparse(1,m); | |
37 S_m(m-2:m)=fliplr(-S_U); | |
38 | |
39 | |
40 M=-H*D2-e_1*S_1+e_m*S_m; | |
41 S_1 = S_1'; | |
42 S_m = S_m'; | |
43 end |