annotate +multiblock/DefCurvilinear.m @ 1223:9fddc8749445 rv_diffOp_test

Closing branch
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Mon, 05 Aug 2019 10:48:37 +0200
parents e7a6744499fa
children 8aa0909125a4 7df63b17e078
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
587
25fdc7a625b6 Add abstract class for multiblock definitions
Jonatan Werpers <jonatan@werpers.com>
parents: 543
diff changeset
1 classdef DefCurvilinear < multiblock.Definition
536
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?
587
25fdc7a625b6 Add abstract class for multiblock definitions
Jonatan Werpers <jonatan@werpers.com>
parents: 543
diff changeset
13 function obj = DefCurvilinear(blockMaps, connections, boundaryGroups, blockNames)
536
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
773
edb1d60b0b77 Return line handles from show methods in Def and Ti
Jonatan Werpers <jonatan@werpers.com>
parents: 772
diff changeset
51 function h = 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
773
edb1d60b0b77 Return line handles from show methods in Def and Ti
Jonatan Werpers <jonatan@werpers.com>
parents: 772
diff changeset
55 h = [];
543
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
56 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
57 for i = 1:obj.nBlocks
773
edb1d60b0b77 Return line handles from show methods in Def and Ti
Jonatan Werpers <jonatan@werpers.com>
parents: 772
diff changeset
58 h = [h, obj.blockMaps{i}.show(2,2)];
536
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
59 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
60 axis equal
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
61 return
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
62 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
63
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
64 if gridLines
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
65 ms = obj.getGridSizes(varargin{:});
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66 for i = 1:obj.nBlocks
773
edb1d60b0b77 Return line handles from show methods in Def and Ti
Jonatan Werpers <jonatan@werpers.com>
parents: 772
diff changeset
67 h = [h, obj.blockMaps{i}.show(ms{i}(1),ms{i}(2))];
536
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 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
70
543
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
71
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
72 switch label
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
73 case 'name'
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
74 labels = obj.blockNames;
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
75 case 'id'
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
76 labels = {};
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
77 for i = 1:obj.nBlocks
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
78 labels{i} = num2str(i);
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
79 end
772
687756646aa9 Fix bug in +multiblock/Def
Jonatan Werpers <jonatan@werpers.com>
parents: 543
diff changeset
80 case 'none'
543
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
81 axis equal
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
82 return
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
83 end
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
84
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
85 for i = 1:obj.nBlocks
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
86 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
87 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
88
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
89 axis equal
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 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
92
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
93 methods (Abstract)
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
94 % 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
95 % 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
96 ms = getGridSizes(obj, varargin)
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 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
99
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
100 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
101
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
102