Mercurial > repos > public > sbplib
annotate +multiblock/Grid.m @ 1037:2d7ba44340d0 feature/burgers1d
Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 18 Jan 2019 09:02:02 +0100 |
parents | a55d3c1e1f83 |
children | 67228a10dfad |
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 |