Mercurial > repos > public > sbplib
annotate +multiblock/DefCurvilinear.m @ 1037:2d7ba44340d0 feature/burgers1d
Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 18 Jan 2019 09:02:02 +0100 |
parents | e7a6744499fa |
children | 8aa0909125a4 7df63b17e078 |
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 | 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 |