Mercurial > repos > public > sbplib
annotate +multiblock/DefCurvilinear.m @ 1031:2ef20d00b386 feature/advectionRV
For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Thu, 17 Jan 2019 10:25:06 +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 |