annotate +multiblock/DefCurvilinear.m @ 1347:ac54767ae1fb feature/poroelastic tip

Add interface, not fully compatible.
author Martin Almquist <martin.almquist@it.uu.se>
date Tue, 30 Apr 2024 14:58:35 +0200
parents 8aa0909125a4
children 60c875c18de3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
3377bedf371f Fix typo
Jonatan Werpers <jonatan@werpers.com>
parents: 536
diff changeset
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
1274
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
51 function g = getLebedevGrid(obj, varargin)
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
52 ms = obj.getGridSizes(varargin{:});
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
53
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
54 grids = cell(1, obj.nBlocks);
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
55 for i = 1:obj.nBlocks
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
56 % grids{i} = grid.equidistantCurvilinear(obj.blockMaps{i}.S, ms{i});
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
57 grids{i} = grid.lebedev2dCurvilinear(obj.blockMaps{i}.S, ms{i});
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
58 end
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
59
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
60 g = multiblock.Grid(grids, obj.connections, obj.boundaryGroups);
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
61 end
8aa0909125a4 Add support for plotting and evaluating on curvilinear multiblock staggered grids
Martin Almquist <malmquist@stanford.edu>
parents: 780
diff changeset
62
773
edb1d60b0b77 Return line handles from show methods in Def and Ti
Jonatan Werpers <jonatan@werpers.com>
parents: 772
diff changeset
63 function h = show(obj, label, gridLines, varargin)
543
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
64 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
65 default_arg('gridLines', false);
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
66
773
edb1d60b0b77 Return line handles from show methods in Def and Ti
Jonatan Werpers <jonatan@werpers.com>
parents: 772
diff changeset
67 h = [];
543
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
68 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
69 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
70 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
71 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
72 axis equal
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
73 return
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 if gridLines
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
77 ms = obj.getGridSizes(varargin{:});
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
78 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
79 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
80 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
81 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
82
543
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
83
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
84 switch label
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
85 case 'name'
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
86 labels = obj.blockNames;
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
87 case 'id'
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
88 labels = {};
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
89 for i = 1:obj.nBlocks
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
90 labels{i} = num2str(i);
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
91 end
772
687756646aa9 Fix bug in +multiblock/Def
Jonatan Werpers <jonatan@werpers.com>
parents: 543
diff changeset
92 case 'none'
543
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
93 axis equal
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
94 return
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
95 end
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
96
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
97 for i = 1:obj.nBlocks
9924f1f8c906 Allow labels to be block ids
Jonatan Werpers <jonatan@werpers.com>
parents: 541
diff changeset
98 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
99 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
100
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
101 axis equal
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
102 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
103 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
104
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
105 methods (Abstract)
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
106 % 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
107 % 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
108 ms = getGridSizes(obj, varargin)
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
109 % end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
110 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
111
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
112 end
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
113
6c6a3040a678 Add an abstrac class as help when defining transfinite multiblock grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
114