Mercurial > repos > public > sbplib
annotate +sbp/D1Upwind.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 | e1d11b6a68d8 |
children | 111fcbcff2e9 |
rev | line source |
---|---|
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
1 classdef D1Upwind < sbp.OpSet |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
2 properties |
302
f39f98b59f61
Fixes in Upwind operators and Euler1D scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
268
diff
changeset
|
3 Dp, Dm % SBP operator approximating first derivative |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
4 H % Norm matrix |
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
5 HI % H^-1 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
6 e_l % Left boundary operator |
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
7 e_r % Right boundary operator |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
8 m % Number of grid points. |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
9 h % Step size |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
10 x % grid |
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
11 borrowing % Struct with borrowing limits for different norm matrices |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
12 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
13 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
14 methods |
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
|
15 function obj = D1Upwind(m,lim,order) |
302
f39f98b59f61
Fixes in Upwind operators and Euler1D scheme.
Jonatan Werpers <jonatan@werpers.com>
parents:
268
diff
changeset
|
16 |
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
|
17 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
|
18 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
|
19 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
|
20 obj.h = L/(m-1); |
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
|
21 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
|
22 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
23 switch order |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
24 case 2 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
25 [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ... |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
26 sbp.implementations.d1_upwind_2(m,obj.h); |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
27 case 3 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
28 [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ... |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
29 sbp.implementations.d1_upwind_3(m,obj.h); |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
30 case 4 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
31 [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ... |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
32 sbp.implementations.d1_upwind_4(m,obj.h); |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
33 case 5 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
34 [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ... |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
35 sbp.implementations.d1_upwind_5(m,obj.h); |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
36 case 6 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
37 [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ... |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
38 sbp.implementations.d1_upwind_6(m,obj.h); |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
39 case 7 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
40 [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ... |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
41 sbp.implementations.d1_upwind_7(m,obj.h); |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
42 case 8 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
43 [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ... |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
44 sbp.implementations.d1_upwind_8(m,obj.h); |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
45 case 9 |
268
4b9310edcdf8
Renamned boundary operators!
Martin Almquist <martin.almquist@it.uu.se>
parents:
264
diff
changeset
|
46 [obj.H, obj.HI, obj.Dp, obj.Dm, obj.e_l, obj.e_r] = ... |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
47 sbp.implementations.d1_upwind_9(m,obj.h); |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
48 otherwise |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
49 error('Invalid operator order %d.',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; |
263
21a180acbd49
Renamed standard class to D2Standard etc, Rewrote class properties.
Martin Almquist <martin.almquist@it.uu.se>
parents:
262
diff
changeset
|
53 obj.borrowing = []; |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
54 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
55 end |
441
e1d11b6a68d8
Add string methods to OpSets that are missing them
Jonatan Werpers <jonatan@werpers.com>
parents:
302
diff
changeset
|
56 |
e1d11b6a68d8
Add string methods to OpSets that are missing them
Jonatan Werpers <jonatan@werpers.com>
parents:
302
diff
changeset
|
57 function str = string(obj) |
e1d11b6a68d8
Add string methods to OpSets that are missing them
Jonatan Werpers <jonatan@werpers.com>
parents:
302
diff
changeset
|
58 str = [class(obj) '_' num2str(obj.order)]; |
e1d11b6a68d8
Add string methods to OpSets that are missing them
Jonatan Werpers <jonatan@werpers.com>
parents:
302
diff
changeset
|
59 end |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
60 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
61 |
262
23051a86faa4
Removed static method smallestGrid
Martin Almquist <martin.almquist@it.uu.se>
parents:
261
diff
changeset
|
62 |
252
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
63 end |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
64 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
65 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
66 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
67 |
07fa0d6a05bb
Renamned class files and added nonequidistant operators.
Martin Almquist <martin.almquist@it.uu.se>
parents:
diff
changeset
|
68 |