comparison +multiblock/Def.m @ 536:6c6a3040a678 feature/grids

Add an abstrac class as help when defining transfinite multiblock grids
author Jonatan Werpers <jonatan@werpers.com>
date Mon, 07 Aug 2017 09:57:03 +0200
parents
children 3377bedf371f
comparison
equal deleted inserted replaced
535:b52ea450f4c3 536:6c6a3040a678
1 classdef Def
2 properties
3 nBlocks
4 blockMaps % Maps from logical blocks to physical blocks build from transfinite interpolation
5 blockNames
6 connections % Cell array specifying connections between blocks
7 boundaryGroups % Structure of boundaryGroups
8 end
9
10 methods
11 % Defines a multiblock setup for transfinite interpolation blocks
12 % TODO: How to bring in plotting of points?
13 function obj = Def(blockMaps, connections, boundaryGroups, blockNames)
14 default_arg('boundaryGroups', struct());
15 default_arg('blockNames',{});
16
17 nBlocks = length(blockMaps);
18
19 obj.nBlocks = nBlocks;
20
21 obj.blockMaps = blockMaps;
22
23 assert(all(size(connections) == [nBlocks, nBlocks]));
24 obj.connections = connections;
25
26
27 if isempty(blockNames)
28 obj.blockNames = cell(1, nBlocks);
29 for i = 1:length(blockMaps)
30 obj.blockNames{i} = sprintf('%d', i);
31 end
32 else
33 assert(length(blockNames) == nBlocks);
34 obj.blockNames = blockNames;
35 end
36
37 obj.boundaryGroups = boundaryGroups;
38 end
39
40 function g = getGrid(obj, varargin)
41 ms = obj.getGridSizes(varargin{:});
42
43 grids = cell(1, obj.nBlocks);
44 for i = 1:obj.nBlocks
45 grids{i} = grid.equidistantCurvilienar(obj.blockMaps{i}.S, ms{i});
46 end
47
48 g = multiblock.Grid(grids, obj.connections, obj.boundaryGroups);
49 end
50
51 function show(obj, label, gridLines, varargin)
52 default_arg('label', true)
53 default_arg('gridLines', false);
54
55 if ~label && ~gridLines
56 for i = 1:obj.nBlocks
57 obj.blockMaps{i}.show(2,2);
58 end
59 axis equal
60 return
61 end
62
63 if gridLines
64 ms = obj.getGridSizes(varargin{:});
65 for i = 1:obj.nBlocks
66 obj.blockMaps{i}.show(ms{i}(1),ms{i}(2));
67 end
68 end
69
70 if label
71 for i = 1:obj.nBlocks
72 parametrization.Ti.label(obj.blockMaps{i}, obj.blockNames{i});
73 end
74 end
75
76 axis equal
77 end
78 end
79
80 methods (Abstract)
81 % Returns the grid size of each block in a cell array
82 % The input parameters are determined by the subclass
83 ms = getGridSizes(obj, varargin)
84 % end
85 end
86
87 end
88
89