annotate +multiblock/Grid.m @ 1037:2d7ba44340d0 feature/burgers1d

Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 18 Jan 2019 09:02:02 +0100
parents a55d3c1e1f83
children 67228a10dfad
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
186
1fc2eeb4f4e6 Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents: 183
diff changeset
1 classdef Grid < grid.Grid
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
2 properties
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
3 grids
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
4 connections
198
6fb354955c37 Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents: 189
diff changeset
5 boundaryGroups
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
6
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
7 nPoints
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
8 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
9
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 % General multiblock grid
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
11 methods
529
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
12 % grids -- cell array of N grids
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
13 % connections -- NxN upper triangular cell matrix. connections{i,j}
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
14 % specifies the connection between block i and j. If
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
15 % it's empty there is no connection otherwise it's a 2
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
16 % -cell-vector with strings naming the boundaries to be
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
17 % connected. (inverted coupling?)
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
18 % boundaryGroups -- A struct of BoundaryGroups. The field names of the
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
19 % struct are the names of each boundary group.
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
20 % The boundary groups can be used to collect block
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
21 % boundaries into physical boundaries to simplify
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
22 % getting boundary operators and setting boundary conditions
198
6fb354955c37 Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents: 189
diff changeset
23 function obj = Grid(grids, connections, boundaryGroups)
529
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
24 default_arg('boundaryGroups', struct());
578
1fe16b34f114 Add a type check for the grids cell array and a note regarding missplaced method
Jonatan Werpers <jonatan@werpers.com>
parents: 539
diff changeset
25 assertType(grids, 'cell')
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
26 obj.grids = grids;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
27 obj.connections = connections;
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
29 obj.nPoints = 0;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
30 for i = 1:length(grids)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
31 obj.nPoints = obj.nPoints + grids{i}.N();
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
32 end
198
6fb354955c37 Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents: 189
diff changeset
33
529
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
34 obj.boundaryGroups = boundaryGroups;
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
35 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
36
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
37 function n = size(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
38 n = length(obj.grids);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
39 end
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40
233
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
41 % N returns the number of points in the grid
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
42 function o = N(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
43 o = obj.nPoints;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
44 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
45
233
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
46 % Ns returns the number of points in each sub grid as a vector
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
47 function o = Ns(obj)
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
48 ns = zeros(1,obj.nBlocks);
584
b0386d2c180d In case of empty grids, make grid functions with the correct dimensions
Jonatan Werpers <jonatan@werpers.com>
parents: 578
diff changeset
49 for i = 1:obj.nBlocks
233
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
50 ns(i) = obj.grids{i}.N();
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
51 end
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
52 o = ns;
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
53 end
b8ee5212f651 multiblock: Added a function to return number of points in each block for a mbGrid. Fixed a bug in DiffOp.
Jonatan Werpers <jonatan@werpers.com>
parents: 216
diff changeset
54
186
1fc2eeb4f4e6 Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents: 183
diff changeset
55 function n = nBlocks(obj)
1fc2eeb4f4e6 Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents: 183
diff changeset
56 n = length(obj.grids);
1fc2eeb4f4e6 Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents: 183
diff changeset
57 end
1fc2eeb4f4e6 Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents: 183
diff changeset
58
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
59 % d returns the spatial dimension of the grid
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
60 function o = D(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
61 o = obj.grids{1}.D();
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
62 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
63
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
64 % points returns a n x d matrix containing the coordinates for all points.
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
65 function X = points(obj)
584
b0386d2c180d In case of empty grids, make grid functions with the correct dimensions
Jonatan Werpers <jonatan@werpers.com>
parents: 578
diff changeset
66 X = sparse(0,obj.D());
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
67 for i = 1:length(obj.grids)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
68 X = [X; obj.grids{i}.points];
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
69 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
70 end
160
c700b26ad304 Multiblock.m: Made methods lower case. Added a method.
Jonatan Werpers <jonatan@werpers.com>
parents: 155
diff changeset
71
c700b26ad304 Multiblock.m: Made methods lower case. Added a method.
Jonatan Werpers <jonatan@werpers.com>
parents: 155
diff changeset
72 % Split a grid function on obj to a cell array of grid function on each block
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
73 function gfs = splitFunc(obj, gf)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
74 nComponents = length(gf)/obj.nPoints;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
75 nBlocks = length(obj.grids);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
76
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
77 % Collect number of points in each block
216
8b10476b9bb7 multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents: 198
diff changeset
78 N = zeros(1,nBlocks);
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
79 for i = 1:nBlocks
733
a55d3c1e1f83 Bugfix in multiblock.Grid.splitFunc, didnt work for vector-valued functions.
Martin Almquist <malmquist@stanford.edu>
parents: 584
diff changeset
80 N(i) = obj.grids{i}.N()*nComponents;
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
81 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
82
584
b0386d2c180d In case of empty grids, make grid functions with the correct dimensions
Jonatan Werpers <jonatan@werpers.com>
parents: 578
diff changeset
83 gfs = blockmatrix.fromMatrix(gf, {N,1});
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
84 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
85
539
08b6281ba2a9 Add some todos
Jonatan Werpers <jonatan@werpers.com>
parents: 531
diff changeset
86 % TODO: Split op?
08b6281ba2a9 Add some todos
Jonatan Werpers <jonatan@werpers.com>
parents: 531
diff changeset
87 % Should the method to split an operator be moved here instead of being in multiblock.DiffOp?
08b6281ba2a9 Add some todos
Jonatan Werpers <jonatan@werpers.com>
parents: 531
diff changeset
88
453
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
89 % Converts a gridfunction to a set of plot matrices
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
90 % Takes a grid function and and a structured grid.
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
91 function F = funcToPlotMatrices(obj, gf)
578
1fe16b34f114 Add a type check for the grids cell array and a note regarding missplaced method
Jonatan Werpers <jonatan@werpers.com>
parents: 539
diff changeset
92 % TODO: This method should problably not be here.
1fe16b34f114 Add a type check for the grids cell array and a note regarding missplaced method
Jonatan Werpers <jonatan@werpers.com>
parents: 539
diff changeset
93 % The funcToPlotMatrix uses .size poperty of the grids
1fe16b34f114 Add a type check for the grids cell array and a note regarding missplaced method
Jonatan Werpers <jonatan@werpers.com>
parents: 539
diff changeset
94 % Which doesn't always exist for all types of grids.
1fe16b34f114 Add a type check for the grids cell array and a note regarding missplaced method
Jonatan Werpers <jonatan@werpers.com>
parents: 539
diff changeset
95 % It's only valid for structured grids
453
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
96 gfs = obj.splitFunc(gf);
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
97
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
98 F = cell(1, obj.nBlocks());
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
99
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
100 for i = 1:obj.nBlocks()
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
101 F{i} = grid.funcToPlotMatrix(obj.grids{i}, gfs{i});
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
102 end
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
103 end
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
104
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
105
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
106 % Restricts the grid function gf on obj to the subgrid g.
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
107 function gf = restrictFunc(obj, gf, g)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
108 gfs = obj.splitFunc(gf);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
109
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
110 for i = 1:length(obj.grids)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
111 gfs{i} = obj.grids{i}.restrictFunc(gfs{i}, g.grids{i});
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
112 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
113
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
114 gf = cell2mat(gfs);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
115 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
116
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
117 % Projects the grid function gf on obj to the grid g.
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
118 function o = projectFunc(obj, gf, g)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
119 error('not implemented')
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
120
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
121 p = g.points();
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
122 o = zeros(length(p),1);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
123 for i = 1:length(p)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
124 I = whatGrid(p(i));
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
125 o(i) = obj.grids{I}.projectFunc(gf, p(i));
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
126 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
127
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
128
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
129 function I = whatGrid(p)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
130 % Find what grid a point lies on
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
131 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
132
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
133 end
189
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
134
529
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
135 % Find all non interface boundaries of all blocks.
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
136 % Return their grid.boundaryIdentifiers in a cell array.
189
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
137 function bs = getBoundaryNames(obj)
531
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
138 bs = {};
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
139 for i = 1:obj.nBlocks()
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
140 candidates = obj.grids{i}.getBoundaryNames();
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
141 for j = 1:obj.nBlocks()
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
142 if ~isempty(obj.connections{i,j})
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
143 candidates = setdiff(candidates, obj.connections{i,j}{1});
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
144 end
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
145
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
146 if ~isempty(obj.connections{j,i})
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
147 candidates = setdiff(candidates, obj.connections{j,i}{2});
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
148 end
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
149 end
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
150
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
151 for k = 1:length(candidates)
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
152 bs{end+1} = {i, candidates{k}};
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
153 end
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
154 end
189
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
155 end
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
156
529
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
157 % Return coordinates for the given boundary/boundaryGroup
530
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
158 function b = getBoundary(obj, boundary)
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
159 switch class(boundary)
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
160 case 'cell'
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
161 I = boundary{1};
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
162 name = boundary{2};
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
163 b = obj.grids{I}.getBoundary(name);
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
164 case 'multiblock.BoundaryGroup'
584
b0386d2c180d In case of empty grids, make grid functions with the correct dimensions
Jonatan Werpers <jonatan@werpers.com>
parents: 578
diff changeset
165 b = sparse(0,obj.D());
530
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
166 for i = 1:length(boundary)
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
167 b = [b; obj.getBoundary(boundary{i})];
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
168 end
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
169 otherwise
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
170 error('Unknown boundary indentifier')
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
171 end
189
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
172 end
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
173 end
155
cf748f33cd5b Removed some extra lines, added some notes and comments. Fixed classname.
Jonatan Werpers <jonatan@werpers.com>
parents: 153
diff changeset
174 end