Mercurial > repos > public > sbplib
annotate +grid/Staggered1d.m @ 648:9e5dd0d3cf60 feature/d1_staggered
Bugfix right boundary in diracDiscr
author | Martin Almquist <malmquist@stanford.edu> |
---|---|
date | Tue, 14 Nov 2017 15:35:51 -0800 |
parents | 4046b046c1f7 |
children |
rev | line source |
---|---|
640
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
1 classdef Staggered1d < grid.Structured |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
2 properties |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
3 grids % Cell array of grids |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
4 Ngrids % Number of grids |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
5 h % Interior grid spacing |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
6 d % Number of dimensions |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
7 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
8 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
9 methods |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
10 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
11 % Accepts multiple grids and combines them into a staggered grid |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
12 function obj = Staggered1d(varargin) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
13 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
14 obj.d = 1; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
15 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
16 obj.Ngrids = length(varargin); |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
17 obj.grids = cell(obj.Ngrids, 1); |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
18 for i = 1:obj.Ngrids |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
19 obj.grids{i} = varargin{i}; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
20 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
21 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
22 obj.h = []; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
23 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
24 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
25 % N returns the total number of points |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
26 function o = N(obj) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
27 o = 0; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
28 for i=1:obj.Ngrids |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
29 o = o+obj.grids{i}.size(); |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
30 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
31 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
32 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
33 % D returns the spatial dimension of the grid |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
34 function o = D(obj) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
35 o = obj.d; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
36 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
37 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
38 % size returns the number of points on the primal grid |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
39 function m = size(obj) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
40 m = obj.grids{1}.size(); |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
41 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
42 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
43 % points returns an n x 1 vector containing the coordinates for all points. |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
44 function X = points(obj) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
45 X = []; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
46 for i = 1:obj.Ngrids |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
47 X = [X; obj.grids{i}.points()]; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
48 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
49 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
50 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
51 % matrices returns a cell array with coordinates in matrix form. |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
52 % For 2d case these will have to be transposed to work with plotting routines. |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
53 function X = matrices(obj) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
54 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
55 % There is no 1d matrix data type in matlab, handle special case |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
56 X{1} = reshape(obj.points(), [obj.m 1]); |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
57 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
58 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
59 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
60 function h = scaling(obj) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
61 if isempty(obj.h) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
62 error('grid:Staggered1d:NoScalingSet', 'No scaling set') |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
63 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
64 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
65 h = obj.h; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
66 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
67 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
68 % Restricts the grid function gf on obj to the subgrid g. |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
69 % Only works for even multiples |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
70 function gf = restrictFunc(obj, gf, g) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
71 error('grid:Staggered1d:NotImplemented','This method does not exist yet') |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
72 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
73 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
74 % Projects the grid function gf on obj to the grid g. |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
75 function gf = projectFunc(obj, gf, g) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
76 error('grid:Staggered1d:NotImplemented','This method does not exist yet') |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
77 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
78 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
79 % Return the names of all boundaries in this grid. |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
80 function bs = getBoundaryNames(obj) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
81 switch obj.D() |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
82 case 1 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
83 bs = {'l', 'r'}; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
84 case 2 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
85 bs = {'w', 'e', 's', 'n'}; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
86 case 3 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
87 bs = {'w', 'e', 's', 'n', 'd', 'u'}; |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
88 otherwise |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
89 error('not implemented'); |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
90 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
91 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
92 |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
93 % Return coordinates for the given boundary |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
94 function X = getBoundary(obj, name) |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
95 % Use boundaries of first grid |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
96 X = obj.grids{1}.getBoundary(name); |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
97 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
98 end |
4046b046c1f7
Add staggered grid class, Staggered<Structured.
Martin Almquist <malmquist@stanford.edu>
parents:
diff
changeset
|
99 end |