Mercurial > repos > public > sbplib
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 |
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 | 85 % TODO: Split op? |
86 % Should the method to split an operator be moved here instead of being in multiblock.DiffOp? | |
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 |