Mercurial > repos > public > sbplib
annotate +multiblock/+domain/Rectangle.m @ 1340:ee3d694f2340 feature/D2_boundary_opt
Allow passing number of gridlines for each block
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Fri, 22 Jul 2022 16:34:50 +0200 |
parents | e53b1e25970a |
children |
rev | line source |
---|---|
590 | 1 classdef Rectangle < multiblock.Definition |
2 properties | |
3 | |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
4 blockTi % Transfinite interpolation objects used for plotting |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
5 xlims |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
6 ylims |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
7 blockNames % Cell array of block labels |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
8 nBlocks |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
9 connections % Cell array specifying connections between blocks |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
10 boundaryGroups % Structure of boundaryGroups |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
11 |
590 | 12 end |
13 | |
14 | |
15 methods | |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
16 % Creates a divided rectangle |
590 | 17 % x and y are vectors of boundary and interface positions. |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
18 % blockNames: cell array of labels. The id is default. |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
19 function obj = Rectangle(x,y,blockNames) |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
20 default_arg('blockNames',[]); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
21 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
22 n = length(y)-1; % number of blocks in the y direction. |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
23 m = length(x)-1; % number of blocks in the x direction. |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
24 N = n*m; % number of blocks |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
25 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
26 if ~issorted(x) |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
27 error('The elements of x seem to be in the wrong order'); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
28 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
29 if ~issorted(flip(y)) |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
30 error('The elements of y seem to be in the wrong order'); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
31 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
32 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
33 % Dimensions of blocks and number of points |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
34 blockTi = cell(N,1); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
35 xlims = cell(N,1); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
36 ylims = cell(N,1); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
37 for i = 1:n |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
38 for j = 1:m |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
39 p1 = [x(j), y(i+1)]; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
40 p2 = [x(j+1), y(i)]; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
41 I = flat_index(m,j,i); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
42 blockTi{I} = parametrization.Ti.rectangle(p1,p2); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
43 xlims{I} = {x(j), x(j+1)}; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
44 ylims{I} = {y(i+1), y(i)}; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
45 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
46 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
47 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
48 % Interface couplings |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
49 conn = cell(N,N); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
50 for i = 1:n |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
51 for j = 1:m |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
52 I = flat_index(m,j,i); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
53 if i < n |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
54 J = flat_index(m,j,i+1); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
55 conn{I,J} = {'s','n'}; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
56 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
57 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
58 if j < m |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
59 J = flat_index(m,j+1,i); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
60 conn{I,J} = {'e','w'}; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
61 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
62 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
63 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
64 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
65 % Block names (id number as default) |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
66 if isempty(blockNames) |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
67 obj.blockNames = cell(1, N); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
68 for i = 1:N |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
69 obj.blockNames{i} = sprintf('%d', i); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
70 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
71 else |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
72 assert(length(blockNames) == N); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
73 obj.blockNames = blockNames; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
74 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
75 nBlocks = N; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
76 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
77 % Boundary groups |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
78 boundaryGroups = struct(); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
79 nx = m; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
80 ny = n; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
81 E = cell(1,ny); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
82 W = cell(1,ny); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
83 S = cell(1,nx); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
84 N = cell(1,nx); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
85 for i = 1:ny |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
86 E_id = flat_index(m,nx,i); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
87 W_id = flat_index(m,1,i); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
88 E{i} = {E_id,'e'}; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
89 W{i} = {W_id,'w'}; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
90 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
91 for j = 1:nx |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
92 S_id = flat_index(m,j,ny); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
93 N_id = flat_index(m,j,1); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
94 S{j} = {S_id,'s'}; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
95 N{j} = {N_id,'n'}; |
1296
2853b655c172
Fix typos in comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1290
diff
changeset
|
96 end |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
97 boundaryGroups.E = multiblock.BoundaryGroup(E); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
98 boundaryGroups.W = multiblock.BoundaryGroup(W); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
99 boundaryGroups.S = multiblock.BoundaryGroup(S); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
100 boundaryGroups.N = multiblock.BoundaryGroup(N); |
596
4bb298faa8dc
Add more boundary groups in Rectangle. Bugfix in boundaryGroups.all.
Martin Almquist <malmquist@stanford.edu>
parents:
593
diff
changeset
|
101 boundaryGroups.all = multiblock.BoundaryGroup([E,W,S,N]); |
4bb298faa8dc
Add more boundary groups in Rectangle. Bugfix in boundaryGroups.all.
Martin Almquist <malmquist@stanford.edu>
parents:
593
diff
changeset
|
102 boundaryGroups.WS = multiblock.BoundaryGroup([W,S]); |
4bb298faa8dc
Add more boundary groups in Rectangle. Bugfix in boundaryGroups.all.
Martin Almquist <malmquist@stanford.edu>
parents:
593
diff
changeset
|
103 boundaryGroups.WN = multiblock.BoundaryGroup([W,N]); |
4bb298faa8dc
Add more boundary groups in Rectangle. Bugfix in boundaryGroups.all.
Martin Almquist <malmquist@stanford.edu>
parents:
593
diff
changeset
|
104 boundaryGroups.ES = multiblock.BoundaryGroup([E,S]); |
4bb298faa8dc
Add more boundary groups in Rectangle. Bugfix in boundaryGroups.all.
Martin Almquist <malmquist@stanford.edu>
parents:
593
diff
changeset
|
105 boundaryGroups.EN = multiblock.BoundaryGroup([E,N]); |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
106 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
107 obj.connections = conn; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
108 obj.nBlocks = nBlocks; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
109 obj.boundaryGroups = boundaryGroups; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
110 obj.blockTi = blockTi; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
111 obj.xlims = xlims; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
112 obj.ylims = ylims; |
590 | 113 |
114 end | |
115 | |
116 | |
117 % Returns a multiblock.Grid given some parameters | |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
118 % ms: cell array of [mx, my] vectors |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
119 % For same [mx, my] in every block, just input one vector. |
1296
2853b655c172
Fix typos in comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1290
diff
changeset
|
120 % Currently defaults to equidistant grid if varargin is empty. |
2853b655c172
Fix typos in comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1290
diff
changeset
|
121 % If varargin is non-empty, the first argument should supply the grid type, followed by |
1290
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
122 % additional arguments required to construct the grid. |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
123 % Grid types: |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
124 % 'equidist' - equidistant grid |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
125 % Additional argumets: none |
1296
2853b655c172
Fix typos in comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1290
diff
changeset
|
126 % 'boundaryopt' - boundary optimized grid based on boundary |
1290
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
127 % optimized SBP operators |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
128 % Additional arguments: order, stencil option |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
129 % Example: g = getGrid() - the local blocks are 21x21 equidistant grids. |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
130 % g = getGrid(ms,) - block i is an equidistant grid with size given by ms{i}. |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
131 % g = getGrid(ms,'equidist') - block i is an equidistant grid with size given by ms{i}. |
1296
2853b655c172
Fix typos in comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1290
diff
changeset
|
132 % g = getGrid(ms,'boundaryopt',4,'minimal') - block i is a Cartesian grid with size given by ms{i} |
1290
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
133 % and nodes placed according to the boundary optimized minimal 4th order SBP operator. |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
134 function g = getGrid(obj, ms, varargin) |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
135 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
136 default_arg('ms',[21,21]) |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
137 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
138 % Extend ms if input is a single vector |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
139 if (numel(ms) == 2) && ~iscell(ms) |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
140 m = ms; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
141 ms = cell(1,obj.nBlocks); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
142 for i = 1:obj.nBlocks |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
143 ms{i} = m; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
144 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
145 end |
1290
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
146 if isempty(varargin) || strcmp(varargin{1},'equidist') |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
147 gridgenerator = @(m,xlim,ylim)grid.equidistant(m,xlim,ylim); |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
148 elseif strcmp(varargin{1},'boundaryopt') |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
149 order = varargin{2}; |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
150 stenciloption = varargin{3}; |
1297
e53b1e25970a
Change +sbp/+util/ to +sbp/+grid and change function names to camel case
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1296
diff
changeset
|
151 gridgenerator = @(m,xlim,ylim)grid.boundaryOptimized(m,xlim,ylim,... |
1290
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
152 order,stenciloption); |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
153 else |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
154 error('No grid type supplied!'); |
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
155 end |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
156 grids = cell(1, obj.nBlocks); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
157 for i = 1:obj.nBlocks |
1290
b0208b130880
Add option to pass a boundary optimized grid to Rectangle.getGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
596
diff
changeset
|
158 grids{i} = gridgenerator(ms{i}, obj.xlims{i}, obj.ylims{i}); |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
159 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
160 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
161 g = multiblock.Grid(grids, obj.connections, obj.boundaryGroups); |
590 | 162 end |
163 | |
164 % label is the type of label used for plotting, | |
165 % default is block name, 'id' show the index for each block. | |
166 function show(obj, label, gridLines, varargin) | |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
167 default_arg('label', 'name') |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
168 default_arg('gridLines', false); |
590 | 169 |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
170 if isempty('label') && ~gridLines |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
171 for i = 1:obj.nBlocks |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
172 obj.blockTi{i}.show(2,2); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
173 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
174 axis equal |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
175 return |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
176 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
177 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
178 if gridLines |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
179 for i = 1:obj.nBlocks |
1340
ee3d694f2340
Allow passing number of gridlines for each block
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1297
diff
changeset
|
180 if isempty(varargin) |
ee3d694f2340
Allow passing number of gridlines for each block
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1297
diff
changeset
|
181 m = 10; |
ee3d694f2340
Allow passing number of gridlines for each block
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1297
diff
changeset
|
182 else |
ee3d694f2340
Allow passing number of gridlines for each block
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1297
diff
changeset
|
183 m = varargin{i}; |
ee3d694f2340
Allow passing number of gridlines for each block
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
1297
diff
changeset
|
184 end |
593
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
185 obj.blockTi{i}.show(m,m); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
186 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
187 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
188 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
189 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
190 switch label |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
191 case 'name' |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
192 labels = obj.blockNames; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
193 case 'id' |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
194 labels = {}; |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
195 for i = 1:obj.nBlocks |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
196 labels{i} = num2str(i); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
197 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
198 otherwise |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
199 axis equal |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
200 return |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
201 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
202 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
203 for i = 1:obj.nBlocks |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
204 parametrization.Ti.label(obj.blockTi{i}, labels{i}); |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
205 end |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
206 |
37948bfe9d79
Complete Rectangle definition
Martin Almquist <malmquist@stanford.edu>
parents:
590
diff
changeset
|
207 axis equal |
590 | 208 end |
209 | |
210 % Returns the grid size of each block in a cell array | |
211 % The input parameters are determined by the subclass | |
212 function ms = getGridSizes(obj, varargin) | |
213 end | |
214 end | |
215 end |