comparison +sbp/D1Staggered.m @ 637:eead18a8964d feature/d1_staggered

Rename +- grids primal and dual grids
author Martin Almquist <malmquist@stanford.edu>
date Wed, 08 Nov 2017 10:56:09 -0800
parents 476b7e411ce3
children 17dffd56f2fe
comparison
equal deleted inserted replaced
636:476b7e411ce3 637:eead18a8964d
1 classdef D1Staggered < sbp.OpSet 1 classdef D1Staggered < sbp.OpSet
2 properties 2 properties
3 % xp: "plus" grid with m points 3 % x_primal: "primal" grid with m points. Equidistant. Called Plus grid in Ossian's paper.
4 % xm: "minus" grid with m+1 points 4 % x_dual: "dual" grid with m+1 points. Called Minus grid in Ossian's paper.
5 5
6 D1p % SBP operator approximating first derivative 6 D1_primal % SBP operator approximating first derivative
7 D1m % SBP operator approximating first derivative 7 D1_dual % SBP operator approximating first derivative
8 Hp % Norm matrix 8 H_primal % Norm matrix
9 Hm % Norm matrix 9 H_dual % Norm matrix
10 HpI % H^-1 10 H_primalI % H^-1
11 HmI % H^-1 11 H_dualI % H^-1
12 ep_l % Left boundary operator 12 e_primal_l % Left boundary operator
13 em_l % Left boundary operator 13 e_dual_l % Left boundary operator
14 ep_r % Right boundary operator 14 e_primal_r % Right boundary operator
15 em_r % Right boundary operator 15 e_dual_r % Right boundary operator
16 m % Number of grid points. 16 m % Number of grid points.
17 mp % Number of grid points. 17 m_primal % Number of grid points.
18 mm % Number of grid points. 18 m_dual % Number of grid points.
19 h % Step size 19 h % Step size
20 xp % grid 20 x_primal % grid
21 xm % grid 21 x_dual % grid
22 x 22 x
23 borrowing % Struct with borrowing limits for different norm matrices 23 borrowing % Struct with borrowing limits for different norm matrices
24 end 24 end
25 25
26 methods 26 methods
28 28
29 x_l = lim{1}; 29 x_l = lim{1};
30 x_r = lim{2}; 30 x_r = lim{2};
31 L = x_r-x_l; 31 L = x_r-x_l;
32 32
33 mp = m; 33 m_primal = m;
34 mm = m+1; 34 m_dual = m+1;
35 35
36 switch order 36 switch order
37 case 2 37 case 2
38 [xp, xm, Pp, Pm, Qp, Qm] = sbp.implementations.d1_staggered_2(m, L); 38 [x_primal, x_dual, Pp, Pm, Qp, Qm] = sbp.implementations.d1_staggered_2(m, L);
39 case 4 39 case 4
40 [xp, xm, Pp, Pm, Qp, Qm] = sbp.implementations.d1_staggered_4(m, L); 40 [x_primal, x_dual, Pp, Pm, Qp, Qm] = sbp.implementations.d1_staggered_4(m, L);
41 case 6 41 case 6
42 [xp, xm, Pp, Pm, Qp, Qm] = sbp.implementations.d1_staggered_6(m, L); 42 [x_primal, x_dual, Pp, Pm, Qp, Qm] = sbp.implementations.d1_staggered_6(m, L);
43 otherwise 43 otherwise
44 error('Invalid operator order %d.',order); 44 error('Invalid operator order %d.',order);
45 end 45 end
46 46
47 obj.m = m; 47 obj.m = m;
48 obj.mp = mp; 48 obj.m_primal = m_primal;
49 obj.mm = mm; 49 obj.m_dual = m_dual;
50 obj.xp = x_l + xp'; 50 obj.x_primal = x_l + x_primal';
51 obj.xm = x_l + xm'; 51 obj.x_dual = x_l + x_dual';
52 52
53 D1p = Pp\Qp; 53 D1_primal = Pp\Qp;
54 D1m = Pm\Qm; 54 D1_dual = Pm\Qm;
55 55
56 obj.D1p = D1p; 56 obj.D1_primal = D1_primal;
57 obj.D1m = D1m; 57 obj.D1_dual = D1_dual;
58 pbj.Hp = Pp; 58 pbj.H_primal = Pp;
59 obj.Hm = Pm; 59 obj.H_dual = Pm;
60 60
61 obj.ep_l = sparse(mp,1); 61 obj.e_primal_l = sparse(m_primal,1);
62 obj.ep_r = sparse(mp,1); 62 obj.e_primal_r = sparse(m_primal,1);
63 obj.ep_l(1) = 1; 63 obj.e_primal_l(1) = 1;
64 obj.ep_r(mp) = 1; 64 obj.e_primal_r(m_primal) = 1;
65 65
66 obj.em_l = sparse(mm,1); 66 obj.e_dual_l = sparse(m_dual,1);
67 obj.em_r = sparse(mm,1); 67 obj.e_dual_r = sparse(m_dual,1);
68 obj.em_l(1) = 1; 68 obj.e_dual_l(1) = 1;
69 obj.em_r(mm) = 1; 69 obj.e_dual_r(m_dual) = 1;
70 70
71 obj.HpI = inv(obj.Hp); 71 obj.H_primalI = inv(obj.H_primal);
72 obj.HmI = inv(obj.Hm); 72 obj.H_dualI = inv(obj.H_dual);
73 73
74 obj.borrowing = []; 74 obj.borrowing = [];
75 obj.x = []; 75 obj.x = [];
76 76
77 end 77 end