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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
3377bedf371f Fix typo
Jonatan Werpers <jonatan@werpers.com>
parents: 536
diff changeset
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