annotate +multiblock/Grid.m @ 201:38f203f00f3a feature/grids

Exeendend tests of multiblock.DiffOp.
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 14 Jun 2016 15:07:34 +0200
parents 6fb354955c37
children 8b10476b9bb7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
186
1fc2eeb4f4e6 Moved multiblock grid to the multiblock package. Continued implementation. Added multiblock diffOp and removed some functions no longer needed.
Jonatan Werpers <jonatan@werpers.com>
parents: 183
diff changeset
1 classdef Grid < grid.Grid
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
2 properties
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
3 grids
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
4 connections
198
6fb354955c37 Paused work on boundaryGroups and getBoundaryNames. Are they really needed?
Jonatan Werpers <jonatan@werpers.com>
parents: 189
diff changeset
5 boundaryGroups
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
6
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
7 nPoints
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
8 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
9
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 % General multiblock grid
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
11 methods
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
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
37 % n returns the number of points in the grid
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
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
42 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
43 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
44 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
45
183
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
46 % 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
47 function o = D(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
48 o = obj.grids{1}.D();
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
49 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
50
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
51 % 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
52 function X = points(obj)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
53 X = [];
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
54 for i = 1:length(obj.grids)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
55 X = [X; obj.grids{i}.points];
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
56 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
57 end
160
c700b26ad304 Multiblock.m: Made methods lower case. Added a method.
Jonatan Werpers <jonatan@werpers.com>
parents: 155
diff changeset
58
c700b26ad304 Multiblock.m: Made methods lower case. Added a method.
Jonatan Werpers <jonatan@werpers.com>
parents: 155
diff changeset
59 % 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
60 function gfs = splitFunc(obj, gf)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
61 nComponents = length(gf)/obj.nPoints;
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
62 nBlocks = length(obj.grids);
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 % Collect number of points in each block
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
65 N = cell(1,nBlocks);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
66 for i = 1:nBlocks
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
67 N{i} = obj.grids{i}.N();
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
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
70 gfs = mat2cell(gf, N, 1);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
71 end
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 % 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
74 function gf = restrictFunc(obj, gf, g)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
75 gfs = obj.splitFunc(gf);
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 for i = 1:length(obj.grids)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
78 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
79 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
80
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
81 gf = cell2mat(gfs);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
82 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
83
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
84 % 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
85 function o = projectFunc(obj, gf, g)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
86 error('not implemented')
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
87
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
88 p = g.points();
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
89 o = zeros(length(p),1);
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
90 for i = 1:length(p)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
91 I = whatGrid(p(i));
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
92 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
93 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
94
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
95
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
96 function I = whatGrid(p)
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
97 % Find what grid a point lies on
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
98 end
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
99
3587cb106b54 Made Multiblock a concrete class. Started implementation.
Jonatan Werpers <jonatan@werpers.com>
parents: 160
diff changeset
100 end
189
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
101
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
102 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
103 bs = [];
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
104 end
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
105
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
106 % 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
107 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
108 b = [];
6054dcd3c8a9 Added a class for boundary groups. Added methods stubs and failing tests.
Jonatan Werpers <jonatan@werpers.com>
parents: 186
diff changeset
109 end
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
110 end
155
cf748f33cd5b Removed some extra lines, added some notes and comments. Fixed classname.
Jonatan Werpers <jonatan@werpers.com>
parents: 153
diff changeset
111 end