Mercurial > repos > public > sbplib
annotate +multiblock/Grid.m @ 1299:73e52c74baac feature/boundary_optimized_grids
Closed branch feature/boundary_optimized_grids
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Wed, 08 Jul 2020 18:20:57 +0200 |
parents | a55d3c1e1f83 |
children | 67228a10dfad |
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 | 86 % TODO: Split op? |
87 % Should the method to split an operator be moved here instead of being in multiblock.DiffOp? | |
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 |