annotate +multiblock/Grid.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 08b6281ba2a9
children 1fe16b34f114
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());
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
25 obj.grids = grids;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
26 obj.connections = connections;
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
28 obj.nPoints = 0;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
29 for i = 1:length(grids)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
30 obj.nPoints = obj.nPoints + grids{i}.N();
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
31 end
198
6fb354955c37 Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents: 189
diff changeset
32
529
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
33 obj.boundaryGroups = boundaryGroups;
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
34 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
35
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
36 function n = size(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
37 n = length(obj.grids);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
38 end
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39
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
40 % 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
41 function o = N(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
42 o = obj.nPoints;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
43 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
44
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
45 % 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
46 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
47 ns = zeros(1,obj.nBlocks);
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 for i = 1:obj.nBlocks;
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
49 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
50 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
51 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
52 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
53
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
54 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
55 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
56 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
57
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
58 % 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
59 function o = D(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
60 o = obj.grids{1}.D();
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
61 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
62
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
63 % 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
64 function X = points(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
65 X = [];
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
66 for i = 1:length(obj.grids)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
67 X = [X; obj.grids{i}.points];
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
68 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
69 end
160
c700b26ad304 Multiblock.m: Made methods lower case. Added a method.
Jonatan Werpers <jonatan@werpers.com>
parents: 155
diff changeset
70
c700b26ad304 Multiblock.m: Made methods lower case. Added a method.
Jonatan Werpers <jonatan@werpers.com>
parents: 155
diff changeset
71 % 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
72 function gfs = splitFunc(obj, gf)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
73 nComponents = length(gf)/obj.nPoints;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
74 nBlocks = length(obj.grids);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
75
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
76 % 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
77 N = zeros(1,nBlocks);
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
78 for i = 1:nBlocks
216
8b10476b9bb7 multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents: 198
diff changeset
79 N(i) = obj.grids{i}.N();
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
80 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
81
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
82 gfs = mat2cell(gf, N, 1);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
83 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
84
539
08b6281ba2a9 Add some todos
Jonatan Werpers <jonatan@werpers.com>
parents: 531
diff changeset
85 % TODO: Split op?
08b6281ba2a9 Add some todos
Jonatan Werpers <jonatan@werpers.com>
parents: 531
diff changeset
86 % 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
87
453
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
88 % 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
89 % 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
90 function F = funcToPlotMatrices(obj, gf)
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
91 gfs = obj.splitFunc(gf);
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
92
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
93 F = cell(1, obj.nBlocks());
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
94
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
95 for i = 1:obj.nBlocks()
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
96 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
97 end
819345fe7ff1 Add function to multiblock.Grid for getting plot matrices
Jonatan Werpers <jonatan@werpers.com>
parents: 233
diff changeset
98 end
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
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
101 % 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
102 function gf = restrictFunc(obj, gf, g)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
103 gfs = obj.splitFunc(gf);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
104
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
105 for i = 1:length(obj.grids)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
106 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
107 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
108
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
109 gf = cell2mat(gfs);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
110 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
111
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
112 % 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
113 function o = projectFunc(obj, gf, g)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
114 error('not implemented')
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
115
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
116 p = g.points();
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
117 o = zeros(length(p),1);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
118 for i = 1:length(p)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
119 I = whatGrid(p(i));
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
120 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
121 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
122
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
123
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
124 function I = whatGrid(p)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
125 % Find what grid a point lies on
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 end
189
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
129
529
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
130 % 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
131 % 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
132 function bs = getBoundaryNames(obj)
531
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
133 bs = {};
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
134 for i = 1:obj.nBlocks()
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
135 candidates = obj.grids{i}.getBoundaryNames();
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
136 for j = 1:obj.nBlocks()
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
137 if ~isempty(obj.connections{i,j})
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
138 candidates = setdiff(candidates, obj.connections{i,j}{1});
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
139 end
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
140
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
141 if ~isempty(obj.connections{j,i})
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
142 candidates = setdiff(candidates, obj.connections{j,i}{2});
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
143 end
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 for k = 1:length(candidates)
d5bc51537a8c Implement getBoundaryNames in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 530
diff changeset
147 bs{end+1} = {i, candidates{k}};
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
189
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
150 end
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
151
529
2ec8080027ab Add some documentation and decide on public function signatures
Jonatan Werpers <jonatan@werpers.com>
parents: 457
diff changeset
152 % Return coordinates for the given boundary/boundaryGroup
530
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
153 function b = getBoundary(obj, boundary)
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
154 switch class(boundary)
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
155 case 'cell'
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
156 I = boundary{1};
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
157 name = boundary{2};
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
158 b = obj.grids{I}.getBoundary(name);
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
159 case 'multiblock.BoundaryGroup'
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
160 b = [];
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
161 for i = 1:length(boundary)
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
162 b = [b; obj.getBoundary(boundary{i})];
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
163 end
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
164 otherwise
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
165 error('Unknown boundary indentifier')
0cd7b8128e04 Implement getBoundary in multiblock.Grid
Jonatan Werpers <jonatan@werpers.com>
parents: 529
diff changeset
166 end
189
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
167 end
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
168 end
155
cf748f33cd5b Removed some extra lines, added some notes and comments. Fixed classname.
Jonatan Werpers <jonatan@werpers.com>
parents: 153
diff changeset
169 end