Mercurial > repos > public > sbplib
annotate +multiblock/Grid.m @ 311:713b125038a3 feature/beams
Fixed function names in renamed files.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 23 Sep 2016 14:59:55 +0200 |
parents | b8ee5212f651 |
children | 819345fe7ff1 |
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 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
12 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
13 % grids -- cell array of N grids |
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
|
14 % connections -- NxN upper triangular cell matrix. connections{i,j} |
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
|
15 % specifies the connection between block i and j. If |
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
|
16 % it's empty there is no connection otherwise it's a 2 |
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
|
17 % -cell-vector with strings naming the boundaries to be |
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
|
18 % connected. (inverted coupling?) |
198
6fb354955c37
Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents:
189
diff
changeset
|
19 %% Should we have boundary groups at all? maybe it can be handled in a |
6fb354955c37
Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents:
189
diff
changeset
|
20 %% cleaner way outside of the class. |
6fb354955c37
Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents:
189
diff
changeset
|
21 function obj = Grid(grids, connections, boundaryGroups) |
183
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
22 obj.grids = grids; |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
23 obj.connections = connections; |
153
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 |
183
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
25 obj.nPoints = 0; |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
26 for i = 1:length(grids) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
27 obj.nPoints = obj.nPoints + grids{i}.N(); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
28 end |
198
6fb354955c37
Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents:
189
diff
changeset
|
29 |
6fb354955c37
Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents:
189
diff
changeset
|
30 % if iscell(boundaryGroups) |
183
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
31 end |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
32 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
33 function n = size(obj) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
34 n = length(obj.grids); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
35 end |
153
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 |
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
|
37 % 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
|
38 function o = N(obj) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
39 o = obj.nPoints; |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
40 end |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
41 |
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
|
42 % 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
|
43 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
|
44 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
|
45 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
|
46 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
|
47 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
|
48 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
|
49 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
|
50 |
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
|
51 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
|
52 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
|
53 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
|
54 |
183
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
55 % 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
|
56 function o = D(obj) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
57 o = obj.grids{1}.D(); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
58 end |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
59 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
60 % 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
|
61 function X = points(obj) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
62 X = []; |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
63 for i = 1:length(obj.grids) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
64 X = [X; obj.grids{i}.points]; |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
65 end |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
66 end |
160
c700b26ad304
Multiblock.m: Made methods lower case. Added a method.
Jonatan Werpers <jonatan@werpers.com>
parents:
155
diff
changeset
|
67 |
c700b26ad304
Multiblock.m: Made methods lower case. Added a method.
Jonatan Werpers <jonatan@werpers.com>
parents:
155
diff
changeset
|
68 % 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
|
69 function gfs = splitFunc(obj, gf) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
70 nComponents = length(gf)/obj.nPoints; |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
71 nBlocks = length(obj.grids); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
72 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
73 % 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
|
74 N = zeros(1,nBlocks); |
183
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
75 for i = 1:nBlocks |
216
8b10476b9bb7
multiblock: Fixed some problems in DiffOp and Grid.
Jonatan Werpers <jonatan@werpers.com>
parents:
198
diff
changeset
|
76 N(i) = obj.grids{i}.N(); |
183
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
77 end |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
78 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
79 gfs = mat2cell(gf, N, 1); |
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 % 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
|
83 function gf = restrictFunc(obj, gf, g) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
84 gfs = obj.splitFunc(gf); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
85 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
86 for i = 1:length(obj.grids) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
87 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
|
88 end |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
89 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
90 gf = cell2mat(gfs); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
91 end |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
92 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
93 % 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
|
94 function o = projectFunc(obj, gf, g) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
95 error('not implemented') |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
96 |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
97 p = g.points(); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
98 o = zeros(length(p),1); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
99 for i = 1:length(p) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
100 I = whatGrid(p(i)); |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
101 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
|
102 end |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
103 |
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 function I = whatGrid(p) |
3587cb106b54
Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents:
160
diff
changeset
|
106 % Find what grid a point lies on |
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 end |
189
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
110 |
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
111 function bs = getBoundaryNames(obj) |
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
112 bs = []; |
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
113 end |
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
114 |
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
115 % Return coordinates for the given boundary |
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
116 function b = getBoundary(obj, name) |
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
117 b = []; |
6054dcd3c8a9
Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents:
186
diff
changeset
|
118 end |
153
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
119 end |
155
cf748f33cd5b
Removed some extra lines, added some notes and comments. Fixed classname.
Jonatan Werpers <jonatan@werpers.com>
parents:
153
diff
changeset
|
120 end |