annotate +multiblock/Def.m @ 577:e45c9b56d50d feature/grids

Add an Empty grid class The need turned up for the flexural code when we may or may not have a grid for the open water and want to plot that solution. In case there is no open water we need an empty grid to plot the empty gridfunction against to avoid errors.
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 07 Sep 2017 09:16:12 +0200
parents 9924f1f8c906
children 687756646aa9
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
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
79 otherwise
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