comparison +sbp/+implementations/d4_lonely_4_min_boundary_points.m @ 325:72468bc9b63f feature/beams

Renamed some operator implementations.
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 26 Sep 2016 09:55:16 +0200
parents +sbp/+implementations/d4_variable_4_min_boundary_points.m@c0cbffcf6513
children b19e142fcae1
comparison
equal deleted inserted replaced
324:c0cbffcf6513 325:72468bc9b63f
1 function [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = d4_variable_4_min_boundary_points(m,h)
2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3 %%% 4:de ordn. SBP Finita differens %%%
4 %%% operatorer framtagna av Mark Carpenter %%%
5 %%% %%%
6 %%% H (Normen) %%%
7 %%% D1=H^(-1)Q (approx f?rsta derivatan) %%%
8 %%% D2 (approx andra derivatan) %%%
9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 %H?r med endast 4 randpunkter
11
12
13 BP = 4;
14 if(m<2*BP)
15 error(['Operator requires at least ' num2str(2*BP) ' grid points']);
16 end
17
18
19 % Norm
20 Hv = ones(m,1);
21 Hv(1:4) = [17/48 59/48 43/48 49/48];
22 Hv(m-3:m) = rot90(Hv(1:4),2);
23 Hv = h*Hv;
24 H = spdiag(Hv, 0);
25 HI = spdiag(1./Hv, 0);
26
27
28 % Boundary operators
29 e_l = sparse(m,1);
30 e_l(1) = 1;
31 e_r = rot90(e_l, 2);
32
33 d1_l = sparse(m,1);
34 d1_l(1:4) = 1/h*[-11/6 3 -3/2 1/3];
35 d1_r = -rot90(d1_l);
36
37 d2_l = sparse(m,1);
38 d2_l(1:4) = 1/h^2*[2 -5 4 -1];
39 d2_r = rot90(d2_l, 2);
40
41 d3_l = sparse(m,1);
42 d3_l(1:4) = 1/h^3*[-1 3 -3 1];
43 d3_r = -rot90(d3_l, 2);
44
45
46 % First derivative
47 stencil = [1/12 -2/3 0 2/3 -1/12];
48 diags = [-1 0 1];
49
50 Q_U = [
51 0 0.59e2/0.96e2 -0.1e1/0.12e2 -0.1e1/0.32e2;
52 -0.59e2/0.96e2 0 0.59e2/0.96e2 0;
53 0.1e1/0.12e2 -0.59e2/0.96e2 0 0.59e2/0.96e2;
54 0.1e1/0.32e2 0 -0.59e2/0.96e2 0;
55 ];
56
57 Q = stripeMatrix(stencil, diags, m);
58 Q(1:4,1:4)=Q_U;
59 Q(m-3:m,m-3:m) = -rot90(Q_U, 2);
60
61 D1 = HI*(Q - 1/2*e_l*e_l' + 1/2*e_r*e_r');
62
63 % Fourth derivative
64 stencil = [-1/6, 2, -13/2, 28/3, -13/2, 2, -1/6];
65 diags = -3:3;
66 M4 = stripeMatrix(stencil, diags, m);
67
68 M4_U=[
69 0.8e1/0.3e1 -0.37e2/0.6e1 0.13e2/0.3e1 -0.5e1/0.6e1;
70 -0.37e2/0.6e1 0.47e2/0.3e1 -13 0.11e2/0.3e1;
71 0.13e2/0.3e1 -13 0.44e2/0.3e1 -0.47e2/0.6e1;
72 -0.5e1/0.6e1 0.11e2/0.3e1 -0.47e2/0.6e1 0.29e2/0.3e1;
73 ];
74
75
76 M4(1:4,1:4) = M4_U;
77 M4(m-3:m,m-3:m) = rot90(M4_U, 2);
78 M4 = 1/h^3*M4;
79
80 D4=HI*(M4 - e_l*d3_l'+e_r*d3_r' + d1_l*d2_l'-d1_r*d2_r');
81 end