Mercurial > repos > public > sbplib
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 |