annotate +util/calc_borrowing.m @ 1031:2ef20d00b386 feature/advectionRV

For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 17 Jan 2019 10:25:06 +0100
parents d24869abc7cd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
1 function calc_borrowing(m, h)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
2 default_arg('m',100);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
3 default_arg('h',1);
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
5 operators = {
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
6 {
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
7 'd4_lonely', getM4_lonely, {
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
8 {4, 'min_boundary_points'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
9 {6, 'min_boundary_points'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
10 {6, '2'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
11 {6, '3'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
12 {8, 'min_boundary_points'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
13 {8, 'higher_boundary_order'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
14 }
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
15 }, {
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
16 'd4_variable', {
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
17 {2},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
18 {4},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
19 {6},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
20 }
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
21 }
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
22 % BORKEN BAD IDEA
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
23 }
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
24
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
25
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
26 for i = 1:operators
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
27 baseName = operators{i}{1};
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
28 postFixes = operators{i}{2};
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
29 for pf = postFixes
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
30 [a2, a3] = borrowFromD4(m, h, l{:});
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
31 end
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
32 end
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
35
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
36 lonely = {
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
37 {4, 'min_boundary_points'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
38 {6, 'min_boundary_points'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
39 {6, '2'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
40 {6, '3'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
41 {8, 'min_boundary_points'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
42 {8, 'higher_boundary_order'},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
43 };
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
44
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
45 for i = 1:length(lonely)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
46 l = lonely{i};
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
47 [a2, a3] = d4_lonely(m, h, l{:});
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
48 fprintf('d4_lonely %d %s\n', l{:})
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
49 fprintf('\t alpha_II = %f\n', a2)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
50 fprintf('\t alpha_III = %f\n', a3)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
51 fprintf('\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
52 end
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
53
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
54 variable = {
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
55 {2},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
56 {4},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
57 {6},
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
58 };
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
60 for i = 1:length(variable)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
61 l = variable{i};
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
62 [a2, a3] = d4_variable(m, h, l{:});
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
63 fprintf('d4_variable %d\n', l{:})
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
64 fprintf('\t alpha_II = %f\n', a2)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
65 fprintf('\t alpha_III = %f\n', a3)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
66 fprintf('\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
67 end
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
68
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
69
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
70 %% 4th order non-compatible
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
71 [H, HI, D1, D2, D3, D4, e_1, e_m, M, M4,Q, Q3, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher4(m,h);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
72 S1 = S_1*S_1' + S_m*S_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
73 S2 = S2_1*S2_1' + S2_m*S2_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
74 S3 = S3_1*S3_1' + S3_m*S3_m';
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
75
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
76 alpha_I = util.matrixborrow(M4, h^-1*S1 );
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
77 alpha_II = util.matrixborrow(M4, h*S2 );
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
78 alpha_III = util.matrixborrow(M4, h^3*S3);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
79 fprintf('4th order non-compatible\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
80 fprintf('alpha_I1: %.10f\n',alpha_I)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
81 fprintf('alpha_II: %.10f\n',alpha_II)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
82 fprintf('alpha_III: %.10f\n',alpha_III)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
83 fprintf('\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
84
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
85
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
86 %% 6th order non-compatible
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
87 [H, HI, D1, D2, D3, D4, e_1, e_m, M, M4,Q, Q3, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher6(m,h);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
88 S1 = S_1*S_1' + S_m*S_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
89 S2 = S2_1*S2_1' + S2_m*S2_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
90 S3 = S3_1*S3_1' + S3_m*S3_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
91
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
92 alpha_II = util.matrixborrow(M4, h*S2 );
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
93 alpha_III = util.matrixborrow(M4, h^3*S3);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
94 fprintf('6th order non-compatible\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
95 fprintf('alpha_II: %.10f\n',alpha_II)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
96 fprintf('alpha_III: %.10f\n',alpha_III)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
97 fprintf('\n')
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
98
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
99
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
100 %% 2nd order compatible
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
101 [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher_compatible2(m,h);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
102 S1 = S_1*S_1' + S_m*S_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
103 S2 = S2_1*S2_1' + S2_m*S2_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
104 S3 = S3_1*S3_1' + S3_m*S3_m';
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
106 alpha_II = util.matrixborrow(M4, h*S2 );
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
107 alpha_III = util.matrixborrow(M4, h^3*S3);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
108 fprintf('2nd order compatible\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
109 fprintf('alpha_II: %.10f\n',alpha_II)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
110 fprintf('alpha_III: %.10f\n',alpha_III)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
111 fprintf('\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
112
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
113
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
114 %% 4th order compatible
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
115 [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher_compatible4(m,h);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
116 S1 = S_1*S_1' + S_m*S_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
117 S2 = S2_1*S2_1' + S2_m*S2_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
118 S3 = S3_1*S3_1' + S3_m*S3_m';
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
119
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
120 alpha_II = util.matrixborrow(M4, h*S2 );
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
121 alpha_III = util.matrixborrow(M4, h^3*S3);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
122 fprintf('4th order compatible\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
123 fprintf('alpha_II: %.10f\n',alpha_II)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
124 fprintf('alpha_III: %.10f\n',alpha_III)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
125 fprintf('\n')
0
48b6fb693025 Initial commit.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
126
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
127 %% 6th order compatible
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
128 [H, HI, D1, D4, e_1, e_m, M4, Q, S2_1, S2_m, S3_1, S3_m, S_1, S_m] = sbp.higher_compatible6(m,h);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
129 S1 = S_1*S_1' + S_m*S_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
130 S2 = S2_1*S2_1' + S2_m*S2_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
131 S3 = S3_1*S3_1' + S3_m*S3_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
132
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
133 alpha_II = util.matrixborrow(M4, h*S2 );
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
134 alpha_III = util.matrixborrow(M4, h^3*S3);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
135 fprintf('6th order compatible\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
136 fprintf('alpha_II: %.10f\n',alpha_II)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
137 fprintf('alpha_III: %.10f\n',alpha_III)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
138 fprintf('\n')
147
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
139
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
140
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
141
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
142
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
143
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
144 % Ordinary
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
145
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
146 for order = [2 4 6 8 10]
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
147 op = sbp.Ordinary(m,h, order);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
148
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
149 S_1 = op.boundary.S_1;
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
150 S_m = op.boundary.S_m;
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
151
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
152 M = op.norms.M;
147
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
153
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
154 S1 = S_1*S_1' + S_m*S_m';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
155 alpha = util.matrixborrow(M, h*S1);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
156 fprintf('%dth order Ordinary\n', order)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
157 fprintf('alpha: %.10f\n', alpha)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
158 fprintf('\n')
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
159 end
147
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
160
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
161
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
162
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
163
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
164 end
147
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
165
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
166 function [alpha_II, alpha_III] = d4_lonely(m, h, order, modifier)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
167 default_arg('modifier', [])
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
168 func = sprintf('sbp.implementations.d4_lonely_%d', order);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
169 if ~isempty(modifier)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
170 func = sprintf('%s_%s', func, modifier);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
171 end
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
172 funcCall = sprintf('%s(%s,%s)', func, toString(m), toString(h));
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
173 [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = eval(funcCall);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
174
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
175 d2d2 = d2_l*d2_l' + d2_r*d2_r';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
176 alpha_II = util.matrixborrow(M4, h*d2d2);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
177
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
178 d3d3 = d3_l*d3_l' + d3_r*d3_r';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
179 alpha_III = util.matrixborrow(M4, h^3*d3d3);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
180 end
147
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
181
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
182 function [alpha_II, alpha_III] = d4_variable(m, h, order)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
183 default_arg('modifier', [])
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
184 func = sprintf('sbp.implementations.d4_variable_%d', order);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
185
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
186 funcCall = sprintf('%s(%s,%s)', func, toString(m), toString(h));
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
187 [H, HI, D1, D2, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = eval(funcCall);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
188
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
189 d2d2 = d2_l*d2_l' + d2_r*d2_r';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
190 alpha_II = util.matrixborrow(M4, h*d2d2);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
191
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
192 d3d3 = d3_l*d3_l' + d3_r*d3_r';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
193 alpha_III = util.matrixborrow(M4, h^3*d3d3);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
194 end
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
195
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
196 function [d2_l, d2_r, d3_l, d3_r, M4] = getM4_lonely(m, h, order, modifier)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
197 fStr = getFunctionCallStr('d4_lonely', {order, modifier}, {m ,h});
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
198 [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = eval(funcCall);
147
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
199 end
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
200
03151dd46534 Fixed function name bug in calc_borrowing and added ordinary operators.
Jonatan Werpers <jonatan@werpers.com>
parents: 0
diff changeset
201
327
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
202 % Calculates the borrowing constants for a D4 operator.
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
203 % getM4 is a function handle on the form
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
204 % [d2_l, d2_r, d3_l, d3_r, M4] = getM4(m,h)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
205 function [a2, a3] = borrowFromD4(m, h, getM4)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
206 [d2_l, d2_r, d3_l, d3_r, M4] = getM4(m, h);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
207
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
208 d2d2 = d2_l*d2_l' + d2_r*d2_r';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
209 a2 = util.matrixborrow(M4, h*d2d2);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
210
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
211 d3d3 = d3_l*d3_l' + d3_r*d3_r';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
212 a3 = util.matrixborrow(M4, h^3*d3d3);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
213 end
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
214
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
215
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
216 function funcCallStr = getFunctionCallStr(baseName, postFix, parameters)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
217 default_arg('postFix', [])
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
218 default_arg('parameters', [])
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
219
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
220 funcCallStr = sprintf('sbp.implementations.%s', baseName);
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
221
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
222 for i = 1:length(postFix)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
223 if ischar(postFix{i})
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
224 funcCallStr = [funcCallStr '_' postFix{i}];
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
225 else
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
226 funcCallStr = [funcCallStr '_' toString(postFix{i})];
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
227 end
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
228 end
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
229
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
230 if isempty(parameters)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
231 return
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
232 end
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
233
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
234 funcCallStr = [funcCallStr '(' toString(parameters{1})];
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
235
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
236 for i = 2:length(parameters)
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
237 funcCallStr = [funcCallStr ', ' toString(parameters{i})];
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
238 end
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
239
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
240 funcCallStr = [funcCallStr ')';
d24869abc7cd Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents: 212
diff changeset
241 end