Mercurial > repos > public > sbplib
annotate +sbp/D4Variable.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 | 42c89b5eedc0 |
children |
rev | line source |
---|---|
324
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
1 classdef D4Variable < sbp.OpSet |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
2 properties |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
3 m % Number of grid points. |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
4 h % Step size |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
5 x % grid |
328
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
6 H % Norm matrix |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
7 HI % H^-1 |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
8 D1 % SBP operator approximating first derivative |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
9 D2 % SBP operator for second derivative |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
10 D4 % SBP operator for fourth derivative |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
11 Q % Skew-symmetric matrix |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
12 M % Norm matrix, second derivative |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
13 M4 % Norm matrix, fourth derivative |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
14 e_l, e_r % Left and right boundary operator |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
15 d1_l, d1_r % Left and right boundary first derivative |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
16 d2_l, d2_r % Left and right boundary second derivative |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
17 d3_l, d3_r % Left and right boundary third derivative |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
18 borrowing % Struct with borrowing limits for different norm matrices |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
19 order |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
20 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
21 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
22 methods |
324
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
23 function obj = D4Variable(m, lim, order) |
264
8a625c5a3633
Changed input parameter L (domain length) to lim (cell with domain boundaries)
Martin Almquist <martin.almquist@it.uu.se>
parents:
263
diff
changeset
|
24 x_l = lim{1}; |
8a625c5a3633
Changed input parameter L (domain length) to lim (cell with domain boundaries)
Martin Almquist <martin.almquist@it.uu.se>
parents:
263
diff
changeset
|
25 x_r = lim{2}; |
8a625c5a3633
Changed input parameter L (domain length) to lim (cell with domain boundaries)
Martin Almquist <martin.almquist@it.uu.se>
parents:
263
diff
changeset
|
26 L = x_r-x_l; |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
27 obj.h = L/(m-1); |
307 | 28 obj.x = linspace(x_l, x_r,m)'; |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
29 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
30 if order == 2 |
312 | 31 [H, HI, D1, D2, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
310
ffa5d557942b
Moved operator implementations and fixed some naming.
Jonatan Werpers <jonatan@werpers.com>
parents:
309
diff
changeset
|
32 sbp.implementations.d4_variable_2(m, obj.h); |
389
42c89b5eedc0
Add borrowing constants for D2 operators in D4Variable
Jonatan Werpers <jonatan@werpers.com>
parents:
330
diff
changeset
|
33 obj.borrowing.M.d1 = 0.4000; |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
34 obj.borrowing.N.S2 = 1.2500; |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
35 obj.borrowing.N.S3 = 0.4000; |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
36 elseif order == 4 |
324
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
37 [H, HI, D1, D2, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
38 sbp.implementations.d4_variable_4(m, obj.h); |
389
42c89b5eedc0
Add borrowing constants for D2 operators in D4Variable
Jonatan Werpers <jonatan@werpers.com>
parents:
330
diff
changeset
|
39 obj.borrowing.M.d1 = 0.2508; |
324
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
40 obj.borrowing.N.S2 = 0.5055; |
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
41 obj.borrowing.N.S3 = 0.9290; |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
42 elseif order == 6 |
324
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
43 [H, HI, D1, D2, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
44 sbp.implementations.d4_variable_6(m, obj.h); |
389
42c89b5eedc0
Add borrowing constants for D2 operators in D4Variable
Jonatan Werpers <jonatan@werpers.com>
parents:
330
diff
changeset
|
45 obj.borrowing.M.d1 = 0.1878; |
324
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
46 obj.borrowing.N.S2 = 0.3259; |
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
47 obj.borrowing.N.S3 = 0.1580; |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
48 else |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
49 error('Invalid operator order.'); |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
50 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
51 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
52 obj.m = m; |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
53 obj.order = order; |
307 | 54 |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
55 obj.H = H; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
56 obj.HI = HI; |
324
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
57 obj.D1 = D1; |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
58 obj.D2 = D2; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
59 obj.D4 = D4; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
60 obj.M4 = M4; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
61 obj.e_l = e_l; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
62 obj.e_r = e_r; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
63 obj.d1_l = d1_l; |
312 | 64 obj.d1_r = d1_r; |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
65 obj.d2_l = d2_l; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
66 obj.d2_r = d2_r; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
67 obj.d3_l = d3_l; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
68 obj.d3_r = d3_r; |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
69 end |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
70 |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
71 function str = string(obj) |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
72 str = [class(obj) '_' num2str(obj.order)]; |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
73 end |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
74 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
75 end |