Mercurial > repos > public > sbplib
annotate +sbp/D4Lonely.m @ 577:e45c9b56d50d feature/grids
Add an Empty grid class
The need turned up for the flexural code when we may or may not have a grid for the open water and want to plot that solution.
In case there is no open water we need an empty grid to plot the empty gridfunction against to avoid errors.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 07 Sep 2017 09:16:12 +0200 |
parents | 25b01643e438 |
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 D4Lonely < sbp.OpSet |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
2 properties |
328
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
327
diff
changeset
|
3 m % Number of grid points. |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
327
diff
changeset
|
4 h % Step size |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
327
diff
changeset
|
5 x % grid |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
6 H % Norm matrix |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
7 HI % H^-1 |
328
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
327
diff
changeset
|
8 D4 % SBP operator for fourth derivative |
31d6698c1edf
Clean up and fixing of new operators
Jonatan Werpers <jonatan@werpers.com>
parents:
327
diff
changeset
|
9 M4 % Norm matrix, fourth derivative |
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
|
10 e_l, e_r % Left and right boundary operator |
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
11 d1_l, d1_r % Left and right boundary first derivative |
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
12 d2_l, d2_r % Left and right boundary second derivative |
c0cbffcf6513
Created new operator class for lonely D4 operators. Removed some output parameters of implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
312
diff
changeset
|
13 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
|
14 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
|
15 opt |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
16 order |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
17 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
18 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
19 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
|
20 function obj = D4Lonely(m, lim, order, opt) |
307 | 21 default_arg('opt', '') |
22 | |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
23 obj.opt = opt; |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
24 obj.order = order; |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
25 |
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
|
26 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
|
27 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
|
28 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
|
29 obj.h = L/(m-1); |
307 | 30 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
|
31 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
32 if order == 2 |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
33 switch opt |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
34 case '' |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
35 [H, HI, D1, D2, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
36 sbp.implementations.d4_variable_2(m, obj.h); |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
37 obj.borrowing.N.S2 = 1.2500; |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
38 obj.borrowing.N.S3 = 0.4000; |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
39 otherwise |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
40 error('Invalid operator option.'); |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
41 end |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
42 |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
43 elseif order == 4 |
307 | 44 switch opt |
45 case 'min_boundary_points' | |
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 [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
325
72468bc9b63f
Renamed some operator implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
47 sbp.implementations.d4_lonely_4_min_boundary_points(m, obj.h); |
327
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
48 obj.borrowing.N.S2 = 0.6244; |
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
49 obj.borrowing.N.S3 = 1.3961; |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
50 case '' |
312 | 51 [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
|
52 sbp.implementations.d4_variable_4(m, obj.h); |
307 | 53 obj.borrowing.N.S2 = 0.5055; |
54 obj.borrowing.N.S3 = 0.9290; | |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
55 otherwise |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
56 error('Invalid operator option.'); |
307 | 57 end |
58 | |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
59 elseif order == 6 |
307 | 60 switch opt |
61 case '2' | |
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
|
62 [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
325
72468bc9b63f
Renamed some operator implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
63 sbp.implementations.d4_lonely_6_2(m, obj.h); |
327
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
64 obj.borrowing.N.S2 = 0.2931; |
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
65 obj.borrowing.N.S3 = 0.0807; |
307 | 66 case '3' |
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
|
67 [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
325
72468bc9b63f
Renamed some operator implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
68 sbp.implementations.d4_lonely_6_3(m, obj.h); |
327
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
69 obj.borrowing.N.S2 = 0.2842; |
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
70 obj.borrowing.N.S3 = 0.0709; |
307 | 71 case 'min_boundary_points' |
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
|
72 [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
325
72468bc9b63f
Renamed some operator implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
73 sbp.implementations.d4_lonely_6_min_boundary_points(m, obj.h); |
327
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
74 obj.borrowing.N.S2 = 0.3569; |
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
75 obj.borrowing.N.S3 = 0.1908; |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
76 case '' |
312 | 77 [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
|
78 sbp.implementations.d4_variable_6(m, obj.h); |
307 | 79 obj.borrowing.N.S2 = 0.3259; |
80 obj.borrowing.N.S3 = 0.1580; | |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
81 otherwise |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
82 error('Invalid operator option.'); |
307 | 83 end |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
84 |
307 | 85 elseif order == 8 |
86 switch opt | |
87 case 'min_boundary_points' | |
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
|
88 [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
325
72468bc9b63f
Renamed some operator implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
89 sbp.implementations.d4_lonely_8_min_boundary_points(m, obj.h); |
327
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
90 obj.borrowing.N.S2 = 0.2804; |
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
91 obj.borrowing.N.S3 = 0.0740; |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
92 case '' |
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
|
93 [H, HI, D4, e_l, e_r, M4, d2_l, d2_r, d3_l, d3_r, d1_l, d1_r] = ... |
325
72468bc9b63f
Renamed some operator implementations.
Jonatan Werpers <jonatan@werpers.com>
parents:
324
diff
changeset
|
94 sbp.implementations.d4_lonely_8_higher_boundary_order(m, obj.h); |
327
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
95 obj.borrowing.N.S2 = 0.2475; |
d24869abc7cd
Calculated borrowin for D4Lonely.
Jonatan Werpers <jonatan@werpers.com>
parents:
325
diff
changeset
|
96 obj.borrowing.N.S3 = 0.0401; |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
97 otherwise |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
98 error('Invalid operator option.'); |
307 | 99 end |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
100 else |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
101 error('Invalid operator order.'); |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
102 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
103 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
104 obj.m = m; |
307 | 105 |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
106 obj.H = H; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
107 obj.HI = HI; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
108 obj.D4 = D4; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
109 obj.M4 = M4; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
110 obj.e_l = e_l; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
111 obj.e_r = e_r; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
112 obj.d1_l = d1_l; |
312 | 113 obj.d1_r = d1_r; |
308
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
114 obj.d2_l = d2_l; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
115 obj.d2_r = d2_r; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
116 obj.d3_l = d3_l; |
067fd13ba320
Improved form of D4CompatibleVariable.
Jonatan Werpers <jonatan@werpers.com>
parents:
307
diff
changeset
|
117 obj.d3_r = d3_r; |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
118 end |
330
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
119 |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
120 function str = string(obj) |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
121 str = [class(obj) '_' num2str(obj.order) '_' obj.opt]; |
25b01643e438
Added a string method to OpSet.
Jonatan Werpers <jonatan@werpers.com>
parents:
328
diff
changeset
|
122 end |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
123 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
124 end |