Mercurial > repos > public > sbplib
annotate +sbp/+implementations/d2_noneq_variable_6.m @ 1332:8e9df030a0a5 feature/D2_boundary_opt
Clarify comments
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 04 May 2022 08:42:13 +0200 |
parents | 855871e0b852 |
children | bcdb14b05d03 |
rev | line source |
---|---|
1325
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
1 function [H, HI, D1, D2, DI] = d2_noneq_variable_6(N, h, options) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
2 % N: Number of grid points |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
3 % h: grid spacing |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
4 % options: struct containing options for constructing the operator |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
5 % current options are: |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
6 % options.stencil_type ('minimal','nonminimal','wide') |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
7 % options.AD ('upwind', 'op') |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
8 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
9 % BP: Number of boundary points |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
10 % order: Accuracy of interior stencil |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
11 BP = 6; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
12 order = 6; |
1330
855871e0b852
Add size checks to the operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1325
diff
changeset
|
13 if(N<2*BP) |
855871e0b852
Add size checks to the operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1325
diff
changeset
|
14 error(['Operator requires at least ' num2str(2*BP) ' grid points']); |
855871e0b852
Add size checks to the operators
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1325
diff
changeset
|
15 end |
1325
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
16 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
17 %%%% Norm matrix %%%%%%%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
18 P = zeros(BP, 1); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
19 P0 = 1.3030223027124e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
20 P1 = 6.8851501587715e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
21 P2 = 9.5166202564389e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
22 P3 = 9.9103890475697e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
23 P4 = 1.0028757074552e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
24 P5 = 9.9950151111941e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
25 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
26 for i = 0:BP - 1 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
27 P(i + 1) = eval(['P' num2str(i)]); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
28 end |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
29 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
30 Hv = ones(N, 1); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
31 Hv(1:BP) = P; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
32 Hv(end - BP + 1:end) = flip(P); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
33 Hv = h * Hv; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
34 H = spdiags(Hv, 0, N, N); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
35 HI = spdiags(1 ./ Hv, 0, N, N); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
36 %%%%%%%%%%%%%%%%%%%%%%%%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
37 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
38 %%%% Q matrix %%%%%%%%%%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
39 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
40 % interior stencil |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
41 d = [-1/60, 3/20, -3/4, 0, 3/4, -3/20, 1/60]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
42 d = repmat(d, N, 1); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
43 Q = spdiags(d, -order / 2:order / 2, N, N); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
44 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
45 % Boundaries |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
46 Q0_0 = -5.0000000000000e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
47 Q0_1 = 6.6042071945824e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
48 Q0_2 = -2.2104152954203e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
49 Q0_3 = 7.6243679810093e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
50 Q0_4 = -1.7298206716724e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
51 Q0_5 = 1.6753369904210e-03; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
52 Q0_6 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
53 Q0_7 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
54 Q0_8 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
55 Q1_0 = -6.6042071945824e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
56 Q1_1 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
57 Q1_2 = 8.7352798702787e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
58 Q1_3 = -2.6581719253084e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
59 Q1_4 = 5.7458484948314e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
60 Q1_5 = -4.7485599871040e-03; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
61 Q1_6 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
62 Q1_7 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
63 Q1_8 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
64 Q2_0 = 2.2104152954203e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
65 Q2_1 = -8.7352798702787e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
66 Q2_2 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
67 Q2_3 = 8.1707122038457e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
68 Q2_4 = -1.8881125503769e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
69 Q2_5 = 2.4226492138960e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
70 Q2_6 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
71 Q2_7 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
72 Q2_8 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
73 Q3_0 = -7.6243679810093e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
74 Q3_1 = 2.6581719253084e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
75 Q3_2 = -8.1707122038457e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
76 Q3_3 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
77 Q3_4 = 7.6798636652679e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
78 Q3_5 = -1.5715532552963e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
79 Q3_6 = 1.6666666666667e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
80 Q3_7 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
81 Q3_8 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
82 Q4_0 = 1.7298206716724e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
83 Q4_1 = -5.7458484948314e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
84 Q4_2 = 1.8881125503769e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
85 Q4_3 = -7.6798636652679e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
86 Q4_4 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
87 Q4_5 = 7.5266872305402e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
88 Q4_6 = -1.5000000000000e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
89 Q4_7 = 1.6666666666667e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
90 Q4_8 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
91 Q5_0 = -1.6753369904210e-03; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
92 Q5_1 = 4.7485599871040e-03; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
93 Q5_2 = -2.4226492138960e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
94 Q5_3 = 1.5715532552963e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
95 Q5_4 = -7.5266872305402e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
96 Q5_5 = 0.0000000000000e+00; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
97 Q5_6 = 7.5000000000000e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
98 Q5_7 = -1.5000000000000e-01; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
99 Q5_8 = 1.6666666666667e-02; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
100 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
101 for i = 1:BP |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
102 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
103 for j = 1:BP |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
104 Q(i, j) = eval(['Q' num2str(i - 1) '_' num2str(j - 1)]); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
105 Q(N + 1 - i, N + 1 - j) = -eval(['Q' num2str(i - 1) '_' num2str(j - 1)]); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
106 end |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
107 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
108 end |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
109 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
110 %%%%%%%%%%%%%%%%%%%%%%%%%%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
111 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
112 %%% Undivided difference operators %%%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
113 % Closed with zeros at the first boundary nodes. |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
114 m = N; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
115 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
116 DD_3 = (-diag(ones(m - 2, 1), -2) + 3 * diag(ones(m - 1, 1), -1) - 3 * diag(ones(m, 1), 0) + diag(ones(m - 1, 1), 1)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
117 DD_3(1:5, 1:6) = [0 0 0 0 0 0; 0 0 0 0 0 0; -0.46757024540266021836e1 0.88373748766984018738e1 -0.56477423503490435435e1 0.14860699276772438533e1 0 0; 0 -0.13802450758054908946e1 0.36701915175801340778e1 -0.33643068661005748879e1 0.10743604243259317047e1 0; 0 0 -0.10409288946349185618e1 0.30665535320781497878e1 -0.30329117010471766032e1 0.10072870636039453772e1; ]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
118 DD_3(m - 3:m, m - 5:m) = [-0.10072870636039453772e1 0.30329117010471766032e1 -0.30665535320781497878e1 0.10409288946349185618e1 0 0; 0 -0.10743604243259317047e1 0.33643068661005748879e1 -0.36701915175801340778e1 0.13802450758054908946e1 0; 0 0 -0.14860699276772438533e1 0.56477423503490435435e1 -0.88373748766984018738e1 0.46757024540266021836e1; 0 0 0 0 0 0; ]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
119 DD_3 = sparse(DD_3); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
120 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
121 DD_4 = (diag(ones(m - 2, 1), 2) - 4 * diag(ones(m - 1, 1), 1) + 6 * diag(ones(m, 1), 0) - 4 * diag(ones(m - 1, 1), -1) + diag(ones(m - 2, 1), -2)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
122 DD_4(1:5, 1:7) = [0 0 0 0 0 0 0; 0 0 0 0 0 0 0; 0.57302111593550648941e1 -0.12521994384708052700e2 0.11419402572582197931e2 -0.59442797107089754133e1 0.13166603634797652881e1 0 0; 0 0.14441513881249918393e1 -0.49292485821432017638e1 0.67286137322011497757e1 -0.42974416973037268190e1 0.10539251591207869677e1 0; 0 0 0.10466075357769140419e1 -0.40887380427708663837e1 0.60658234020943532065e1 -0.40291482544157815088e1 0.10054553593153806442e1; ]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
123 DD_4(m - 4:m, m - 6:m) = [0.10054553593153806442e1 -0.40291482544157815088e1 0.60658234020943532065e1 -0.40887380427708663837e1 0.10466075357769140419e1 0 0; 0 0.10539251591207869677e1 -0.42974416973037268190e1 0.67286137322011497757e1 -0.49292485821432017638e1 0.14441513881249918393e1 0; 0 0 0.13166603634797652881e1 -0.59442797107089754133e1 0.11419402572582197931e2 -0.12521994384708052700e2 0.57302111593550648941e1; 0 0 0 0 0 0 0; 0 0 0 0 0 0 0; ]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
124 DD_4 = sparse(DD_4); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
125 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
126 DD_5 = (-diag(ones(m - 3, 1), -3) + 5 * diag(ones(m - 2, 1), -2) - 10 * diag(ones(m - 1, 1), -1) + 10 * diag(ones(m, 1), 0) - 5 * diag(ones(m - 1, 1), 1) + diag(ones(m - 2, 1), 2)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
127 DD_5(1:6, 1:8) = [0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; -0.67194556014531368457e1 0.16377214352871472626e2 -0.19171027475746103125e2 0.14860699276772438533e2 -0.65833018173988264407e1 0.12358712649541552519e1 0 0; 0 -0.14971527633959360324e1 0.61951742553920293904e1 -0.11214356220335249626e2 0.10743604243259317047e2 -0.52696257956039348385e1 0.10423562806837740594e1 0; 0 0 -0.10511702536596915242e1 0.51109225534635829797e1 -0.10109705670157255344e2 0.10072870636039453772e2 -0.50272767965769032212e1 0.10043595308908133377e1; ]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
128 DD_5(m - 4:m, m - 7:m) = [-0.10043595308908133377e1 0.50272767965769032212e1 -0.10072870636039453772e2 0.10109705670157255344e2 -0.51109225534635829797e1 0.10511702536596915242e1 0 0; 0 -0.10423562806837740594e1 0.52696257956039348385e1 -0.10743604243259317047e2 0.11214356220335249626e2 -0.61951742553920293904e1 0.14971527633959360324e1 0; 0 0 -0.12358712649541552519e1 0.65833018173988264407e1 -0.14860699276772438533e2 0.19171027475746103125e2 -0.16377214352871472626e2 0.67194556014531368457e1; 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0; ]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
129 DD_5 = sparse(DD_5); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
130 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
131 DD_6 = (diag(ones(m - 3, 1), 3) - 6 * diag(ones(m - 2, 1), 2) + 15 * diag(ones(m - 1, 1), 1) - 20 * diag(ones(m, 1), 0) + 15 * diag(ones(m - 1, 1), -1) - 6 * diag(ones(m - 2, 1), -2) + diag(ones(m - 3, 1), -3)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
132 DD_6(1:6, 1:9) = [0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0; 0.76591061528436941127e1 -0.20373923615000091397e2 0.28913418478606999359e2 -0.29721398553544877066e2 0.19749905452196479322e2 -0.74152275897249315116e1 0.11881196746227271813e1 0 0; 0 0.15426631885693469226e1 -0.74666187707188589528e1 0.16821534330502874439e2 -0.21487208486518634095e2 0.15808877386811804515e2 -0.62541376841026443562e1 0.10348900354561115264e1 0; 0 0 0.10549863219420430611e1 -0.61331070641562995756e1 0.15164558505235883016e2 -0.20145741272078907544e2 0.15081830389730709664e2 -0.60261571853448800265e1 0.10036303046714514054e1; ]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
133 DD_6(m - 5:m, m - 8:m) = [0.10036303046714514054e1 -0.60261571853448800265e1 0.15081830389730709664e2 -0.20145741272078907544e2 0.15164558505235883016e2 -0.61331070641562995756e1 0.10549863219420430611e1 0 0; 0 0.10348900354561115264e1 -0.62541376841026443562e1 0.15808877386811804515e2 -0.21487208486518634095e2 0.16821534330502874439e2 -0.74666187707188589528e1 0.15426631885693469226e1 0; 0 0 0.11881196746227271813e1 -0.74152275897249315116e1 0.19749905452196479322e2 -0.29721398553544877066e2 0.28913418478606999359e2 -0.20373923615000091397e2 0.76591061528436941127e1; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0; ]; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
134 DD_6 = sparse(DD_6); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
135 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
136 %%%% Difference operators %%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
137 D1 = H \ Q; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
138 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
139 % Helper functions for constructing D2(c) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
140 % TODO: Consider changing sparse(diag(...)) to spdiags(....) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
141 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
142 % Minimal 7 point stencil width |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
143 function D2 = D2_fun_minimal(c) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
144 % Here we add variable diffusion |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
145 C1 = sparse(diag(c)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
146 C2 = 1/2 * diag(ones(m - 1, 1), -1) + 1/2 * diag(ones(m, 1), 0); C2(1, 2) = 1/2; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
147 C3 = 1/3 * diag(ones(m - 1, 1), -1) + 1/3 * diag(ones(m - 1, 1), 1) + 1/3 * diag(ones(m, 1), 0); C3(1, 3) = 1/3; C3(m, m - 2) = 1/3; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
148 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
149 C2 = sparse(diag(C2 * c)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
150 C3 = sparse(diag(C3 * c)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
151 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
152 % Remainder term added to wide second derivative operator |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
153 R = (1/3600 / h) * transpose(DD_6) * C1 * DD_6 + (1/600 / h) * transpose(DD_5) * C2 * DD_5 + (1/80 / h) * transpose(DD_4) * C3 * DD_4; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
154 D2 = D1 * C1 * D1 - H \ R; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
155 end |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
156 |
1332
8e9df030a0a5
Clarify comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1330
diff
changeset
|
157 % Non-minimal 9 point stencil width |
1325
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
158 function D2 = D2_fun_nonminimal(c) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
159 % Here we add variable diffusion |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
160 C1 = sparse(diag(c)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
161 C2 = 1/2 * diag(ones(m - 1, 1), -1) + 1/2 * diag(ones(m, 1), 0); C2(1, 2) = 1/2; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
162 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
163 C2 = sparse(diag(C2 * c)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
164 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
165 % Remainder term added to wide second derivative operator |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
166 R = (1/3600 / h) * transpose(DD_6) * C1 * DD_6 + (1/600 / h) * transpose(DD_5) * C2 * DD_5; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
167 D2 = D1 * C1 * D1 - H \ R; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
168 end |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
169 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
170 % Wide stencil |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
171 function D2 = D2_fun_wide(c) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
172 % Here we add variable diffusion |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
173 C1 = sparse(diag(c)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
174 D2 = D1 * C1 * D1; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
175 end |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
176 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
177 switch options.stencil_width |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
178 case 'minimal' |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
179 D2 = @D2_fun_minimal; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
180 case 'nonminimal' |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
181 D2 = @D2_fun_nonminimal; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
182 case 'wide' |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
183 D2 = @D2_fun_wide; |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
184 otherwise |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
185 error('No option %s for stencil width', options.stencil_width) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
186 end |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
187 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
188 %%%%%%%%%%%%%%%%%%%%%%%%%%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
189 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
190 %%%% Artificial dissipation operator %%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
191 switch options.AD |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
192 case 'upwind' |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
193 % This is the choice that yield 3rd order Upwind |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
194 DI = H \ (transpose(DD_3) * DD_3) * (-1/60); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
195 case 'op' |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
196 % This choice will preserve the order of the underlying |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
197 % Non-dissipative D1 SBP operator |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
198 DI = H \ (transpose(DD_4) * DD_4) * (-1 / (5 * 60)); |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
199 % Notice that you can use any negative number instead of (-1/(5*60)) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
200 otherwise |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
201 error("Artificial dissipation options '%s' not implemented.", option.AD) |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
202 end |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
203 |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
204 %%%%%%%%%%%%%%%%%%%%%%%%%%% |
1b0f2415237f
Add variable coefficient boundary-optimized second derivatives.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
diff
changeset
|
205 end |