Mercurial > repos > public > sbplib
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 |
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 | 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 | 33 |
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 | 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 | 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 | 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 | 68 |
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 | 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 | 98 |
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 | 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 | 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 | 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 |