annotate +multiblock/Grid.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 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