Mercurial > repos > public > sbplib
annotate +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 |
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 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
45 grids{i} = grid.equidistantCurvilienar(obj.blockMaps{i}.S, ms{i}); |
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) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
52 default_arg('label', true) |
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 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
55 if ~label && ~gridLines |
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 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
70 if label |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
71 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
|
72 parametrization.Ti.label(obj.blockMaps{i}, obj.blockNames{i}); |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
73 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
74 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
75 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
76 axis equal |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
77 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
78 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
79 |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
80 methods (Abstract) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
81 % 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
|
82 % 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
|
83 ms = getGridSizes(obj, varargin) |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
84 % end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
85 end |
6c6a3040a678
Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
86 |
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 |