comparison +sbp/D2Standard.m @ 307:fefb2f9884f7 feature/beams

Merge with default.
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 23 Sep 2016 10:40:12 +0200
parents 479194747f9c
children 3fdfad20037e a39fe3bcbd95
comparison
equal deleted inserted replaced
306:8368beb0d1b3 307:fefb2f9884f7
1 classdef D2Standard < sbp.OpSet
2 properties
3 D1 % SBP operator approximating first derivative
4 H % Norm matrix
5 HI % H^-1
6 Q % Skew-symmetric matrix
7 e_l % Left boundary operator
8 e_r % Right boundary operator
9 D2 % SBP operator for second derivative
10 M % Norm matrix, second derivative
11 d1_l % Left boundary first derivative
12 d1_r % Right boundary first derivative
13 m % Number of grid points.
14 h % Step size
15 x % grid
16 borrowing % Struct with borrowing limits for different norm matrices
17
18 end
19
20 methods
21 function obj = D2Standard(m,lim,order)
22
23 x_l = lim{1};
24 x_r = lim{2};
25 L = x_r-x_l;
26 obj.h = L/(m-1);
27 obj.x = linspace(x_l,x_r,m)';
28
29 if order == 2
30 [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
31 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
32 sbp.implementations.d2_2(m,obj.h);
33 obj.borrowing.M.S = 0.4000;
34 elseif order == 4
35 [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
36 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
37 sbp.implementations.d2_4(m,obj.h);
38 obj.borrowing.M.S = 0.2508;
39 elseif order == 6
40 [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
41 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
42 sbp.implementations.d2_6(m,obj.h);
43 obj.borrowing.M.S = 0.1878;
44 elseif order == 8
45 [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
46 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
47 sbp.implementations.d2_8(m,obj.h);
48 obj.borrowing.M.S = 0.0015;
49 elseif order == 10
50 [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
51 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
52 sbp.implementations.d2_10(m,obj.h);
53 obj.borrowing.M.S = 0.0351;
54 elseif order == 12
55 [obj.H, obj.HI, obj.D1, obj.D2, obj.e_l,...
56 obj.e_r, obj.M, obj.Q, obj.d1_l, obj.d1_r] =...
57 sbp.implementations.d2_12(m,obj.h);
58 obj.borrowing.M.S = []; % Need to compute!
59 warning('D2=D1*D1 (wide stencil).');
60 warning('The borrowing constant has not been computed.')
61 else
62 error('Invalid operator order %d.',order);
63 end
64
65 obj.m = m;
66
67 end
68 end
69
70
71 end
72
73
74
75
76