Mercurial > repos > public > sbplib
annotate +multiblock/Def.m @ 772:687756646aa9 feature/grids
Fix bug in +multiblock/Def
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 18 Jul 2018 11:26:10 -0700 |
parents | 9924f1f8c906 |
children | edb1d60b0b77 |
rev | line source |
---|---|
536
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
1 classdef Def |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
2 properties |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
3 nBlocks |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
4 blockMaps % Maps from logical blocks to physical blocks build from transfinite interpolation |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
5 blockNames |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
6 connections % Cell array specifying connections between blocks |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
7 boundaryGroups % Structure of boundaryGroups |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
8 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
9 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
10 methods |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
11 % Defines a multiblock setup for transfinite interpolation blocks |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
12 % TODO: How to bring in plotting of points? |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
13 function obj = Def(blockMaps, connections, boundaryGroups, blockNames) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
14 default_arg('boundaryGroups', struct()); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
15 default_arg('blockNames',{}); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
16 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
17 nBlocks = length(blockMaps); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
18 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
19 obj.nBlocks = nBlocks; |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
20 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
21 obj.blockMaps = blockMaps; |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
22 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
23 assert(all(size(connections) == [nBlocks, nBlocks])); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
24 obj.connections = connections; |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
25 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
26 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
27 if isempty(blockNames) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
28 obj.blockNames = cell(1, nBlocks); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
29 for i = 1:length(blockMaps) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
30 obj.blockNames{i} = sprintf('%d', i); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
31 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
32 else |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
33 assert(length(blockNames) == nBlocks); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
34 obj.blockNames = blockNames; |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
35 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
36 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
37 obj.boundaryGroups = boundaryGroups; |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
38 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
39 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
40 function g = getGrid(obj, varargin) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
41 ms = obj.getGridSizes(varargin{:}); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
42 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
43 grids = cell(1, obj.nBlocks); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
44 for i = 1:obj.nBlocks |
541 | 45 grids{i} = grid.equidistantCurvilinear(obj.blockMaps{i}.S, ms{i}); |
536
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 g = multiblock.Grid(grids, obj.connections, obj.boundaryGroups); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
49 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
50 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
51 function show(obj, label, gridLines, varargin) |
543
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
52 default_arg('label', 'name') |
536
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
53 default_arg('gridLines', false); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
54 |
543
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
55 if isempty('label') && ~gridLines |
536
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
56 for i = 1:obj.nBlocks |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
57 obj.blockMaps{i}.show(2,2); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
58 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
59 axis equal |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
60 return |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
61 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
62 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
63 if gridLines |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
64 ms = obj.getGridSizes(varargin{:}); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
65 for i = 1:obj.nBlocks |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
66 obj.blockMaps{i}.show(ms{i}(1),ms{i}(2)); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
67 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
68 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
69 |
543
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
70 |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
71 switch label |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
72 case 'name' |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
73 labels = obj.blockNames; |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
74 case 'id' |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
75 labels = {}; |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
76 for i = 1:obj.nBlocks |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
77 labels{i} = num2str(i); |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
78 end |
772
687756646aa9
Fix bug in +multiblock/Def
Jonatan Werpers <jonatan@werpers.com>
parents:
543
diff
changeset
|
79 case 'none' |
543
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
80 axis equal |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
81 return |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
82 end |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
83 |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
84 for i = 1:obj.nBlocks |
9924f1f8c906
Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents:
541
diff
changeset
|
85 parametrization.Ti.label(obj.blockMaps{i}, labels{i}); |
536
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
87 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
88 axis equal |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
89 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
90 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
91 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
92 methods (Abstract) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 % Returns the grid size of each block in a cell array |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
94 % The input parameters are determined by the subclass |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
95 ms = getGridSizes(obj, varargin) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
96 % end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
97 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
98 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
99 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
100 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
101 |