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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
fefb2f9884f7 Merge with default.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
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
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
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
fefb2f9884f7 Merge with default.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
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
9230c056a574 Fixed formatting.
Jonatan Werpers <jonatan@werpers.com>
parents: 310
diff changeset
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