annotate +sbp/D1Nonequidistant.m @ 1301:8978521b0f06 default

Fix incorrect package name.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Wed, 08 Jul 2020 19:11:04 +0200
parents 38653d26225c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
1 classdef D1Nonequidistant < sbp.OpSet
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
2 properties
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
3 D1 % SBP operator approximating first derivative
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
4 H % Norm matrix
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
5 HI % H^-1
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
6 Q % Skew-symmetric matrix
268
4b9310edcdf8 Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents: 264
diff changeset
7 e_l % Left boundary operator
4b9310edcdf8 Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents: 264
diff changeset
8 e_r % Right boundary operator
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
9 m % Number of grid points.
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
10 h % Step size
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
11 x % grid
259
a94bb3d92aba Added empty borrowing property to nonequidstant class.
Martin Almquist <martin.almquist@it.uu.se>
parents: 258
diff changeset
12 borrowing % Struct with borrowing limits for different norm matrices
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
13 end
396
3fdfad20037e Remove whitespace.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
14
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
15 methods
264
8a625c5a3633 Changed input parameter L (domain length) to lim (cell with domain boundaries)
Martin Almquist <martin.almquist@it.uu.se>
parents: 262
diff changeset
16 function obj = D1Nonequidistant(m,lim,order,option)
396
3fdfad20037e Remove whitespace.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
17
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
18 default_arg('option','Accurate');
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
19 % 'Accurate' operators are optimized for accuracy
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
20 % 'Minimal' operators have the smallest possible boundary
259
a94bb3d92aba Added empty borrowing property to nonequidstant class.
Martin Almquist <martin.almquist@it.uu.se>
parents: 258
diff changeset
21 % closure
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
22 switch option
396
3fdfad20037e Remove whitespace.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
23
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
24 case {'Accurate','accurate','A'}
1301
8978521b0f06 Fix incorrect package name.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1287
diff changeset
25 [x,h] = sbp.grid.accurateBoundaryOptimizedGrid(lim,m,order);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
26 if order == 4
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
27 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
28 sbp.implementations.d1_noneq_4(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
29 elseif order == 6
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
30 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
31 sbp.implementations.d1_noneq_6(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
32 elseif order == 8
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
33 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
34 sbp.implementations.d1_noneq_8(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
35 elseif order == 10
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
36 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
37 sbp.implementations.d1_noneq_10(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
38 elseif order == 12
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
39 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
40 sbp.implementations.d1_noneq_12(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
41 else
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
42 error('Invalid operator order %d.',order);
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
43 end
396
3fdfad20037e Remove whitespace.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
44
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
45 case {'Minimal','minimal','M'}
1301
8978521b0f06 Fix incorrect package name.
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1287
diff changeset
46 [x,h] = sbp.grid.minimalBoundaryOptimizedGrid(lim,m,order);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
47 if order == 4
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
48 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
49 sbp.implementations.d1_noneq_minimal_4(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
50 elseif order == 6
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
51 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
52 sbp.implementations.d1_noneq_minimal_6(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
53 elseif order == 8
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
54 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
55 sbp.implementations.d1_noneq_minimal_8(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
56 elseif order == 10
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
57 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
58 sbp.implementations.d1_noneq_minimal_10(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
59 elseif order == 12
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
60 [obj.D1,obj.H] = ...
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
61 sbp.implementations.d1_noneq_minimal_12(m,h);
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
62 else
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
63 error('Invalid operator order %d.',order);
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
64 end
396
3fdfad20037e Remove whitespace.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
65
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
66 end
1286
4cb627c7fb90 Make D1Nonequidistant use the grid generation functions accurate/minimalBoundaryOptimizedGrid and remove grid generation from +implementations
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 402
diff changeset
67 obj.h = h;
1287
38653d26225c Make accurate/minimalBoundaryOptimizedGrid take the domain limits as input
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1286
diff changeset
68 obj.x = x;
396
3fdfad20037e Remove whitespace.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
69
268
4b9310edcdf8 Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents: 264
diff changeset
70 obj.e_l = sparse(m,1);
4b9310edcdf8 Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents: 264
diff changeset
71 obj.e_r = sparse(m,1);
4b9310edcdf8 Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents: 264
diff changeset
72 obj.e_l(1) = 1;
4b9310edcdf8 Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents: 264
diff changeset
73 obj.e_r(m) = 1;
396
3fdfad20037e Remove whitespace.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
74
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
75 obj.HI = inv(obj.H);
268
4b9310edcdf8 Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents: 264
diff changeset
76 obj.Q = obj.H*obj.D1 - obj.e_r*obj.e_r' + obj.e_l*obj.e_l';
396
3fdfad20037e Remove whitespace.
Jonatan Werpers <jonatan@werpers.com>
parents: 268
diff changeset
77
259
a94bb3d92aba Added empty borrowing property to nonequidstant class.
Martin Almquist <martin.almquist@it.uu.se>
parents: 258
diff changeset
78 obj.borrowing = [];
402
bc78157c89cb Add string methods to some sbp classes.
Jonatan Werpers <jonatan@werpers.com>
parents: 397
diff changeset
79
bc78157c89cb Add string methods to some sbp classes.
Jonatan Werpers <jonatan@werpers.com>
parents: 397
diff changeset
80 end
bc78157c89cb Add string methods to some sbp classes.
Jonatan Werpers <jonatan@werpers.com>
parents: 397
diff changeset
81
bc78157c89cb Add string methods to some sbp classes.
Jonatan Werpers <jonatan@werpers.com>
parents: 397
diff changeset
82 function str = string(obj)
bc78157c89cb Add string methods to some sbp classes.
Jonatan Werpers <jonatan@werpers.com>
parents: 397
diff changeset
83 str = [class(obj) '_' num2str(obj.order)];
258
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
84 end
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
85 end
a8d89688ba01 Merged nonequidistant into one class and cleaned up.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff changeset
86 end