comparison +multiblock/DefCurvilinear.m @ 1336:0666629aa183 feature/D2_boundary_opt

Add methods for creating grids with different grid point distributions for each coordinate direction, and also supports constructing periodic grids
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 13 May 2022 13:26:16 +0200
parents 60c875c18de3
children
comparison
equal deleted inserted replaced
1335:8d9fc7981796 1336:0666629aa183
50 % Additional arguments: order, stencil option 50 % Additional arguments: order, stencil option
51 function g = getGrid(obj, ms, varargin) 51 function g = getGrid(obj, ms, varargin)
52 % If a scalar is passed, defer to getGridSizes implemented by subclass 52 % If a scalar is passed, defer to getGridSizes implemented by subclass
53 % TODO: This forces the interface of subclasses. 53 % TODO: This forces the interface of subclasses.
54 % Should ms be included in varargin? Figure out bow to do it properly 54 % Should ms be included in varargin? Figure out bow to do it properly
55 if length(ms) == 1 55 if ~iscell(ms) && length(ms) == 1
56 ms = obj.getGridSizes(ms); 56 ms = obj.getGridSizes(ms);
57 end 57 end
58
59 if isempty(varargin) || strcmp(varargin{1},'equidist') 58 if isempty(varargin) || strcmp(varargin{1},'equidist')
60 gridgenerator = @(blockMap,m) grid.equidistantCurvilinear(blockMap, m); 59 gridgenerator = @(blockMap,m) grid.equidistantCurvilinear(blockMap, m);
61 elseif strcmp(varargin{1},'boundaryopt') 60 elseif strcmp(varargin{1},'boundaryopt')
62 order = varargin{2}; 61 order = varargin{2};
63 stenciloption = varargin{3}; 62 stenciloption = varargin{3};
64 gridgenerator = @(blockMap,m) grid.boundaryOptimizedCurvilinear(blockMap,m,{0,1},{0,1},... 63 gridgenerator = @(blockMap,m) grid.boundaryOptimizedCurvilinear(blockMap,m,{0,1},{0,1},...
65 order,stenciloption); 64 order,stenciloption);
66 else 65 elseif strcmp(varargin{1},'general')
67 error('No grid type supplied!'); 66 gridgenerator = @(blockMap,m) grid.generalCurvilinear(blockMap,m,{0,1},{0,1},varargin{2:end});
68 end 67 else
69 grids = cell(1, obj.nBlocks); 68 error('No grid type supplied!');
70 for i = 1:obj.nBlocks 69 end
70 grids = cell(1, obj.nBlocks);
71 for i = 1:obj.nBlocks
71 grids{i} = gridgenerator(obj.blockMaps{i}.S, ms{i}); 72 grids{i} = gridgenerator(obj.blockMaps{i}.S, ms{i});
72 end 73 end
73 74
74 g = multiblock.Grid(grids, obj.connections, obj.boundaryGroups); 75 g = multiblock.Grid(grids, obj.connections, obj.boundaryGroups);
75 end 76 end
76 77
77 function g = getLebedevGrid(obj, varargin) 78 function g = getLebedevGrid(obj, varargin)