Mercurial > repos > public > sbplib
view +multiblock/Def.m @ 774:66eb4a2bbb72 feature/grids
Remove default scaling of the system.
The scaling doens't seem to help actual solutions. One example that fails in the flexural code.
With large timesteps the solutions seems to blow up. One particular example is profilePresentation
on the tdb_presentation_figures branch with k = 0.0005
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 18 Jul 2018 15:42:52 -0700 |
parents | edb1d60b0b77 |
children |
line wrap: on
line source
classdef Def properties nBlocks blockMaps % Maps from logical blocks to physical blocks build from transfinite interpolation blockNames connections % Cell array specifying connections between blocks boundaryGroups % Structure of boundaryGroups end methods % Defines a multiblock setup for transfinite interpolation blocks % TODO: How to bring in plotting of points? function obj = Def(blockMaps, connections, boundaryGroups, blockNames) default_arg('boundaryGroups', struct()); default_arg('blockNames',{}); nBlocks = length(blockMaps); obj.nBlocks = nBlocks; obj.blockMaps = blockMaps; assert(all(size(connections) == [nBlocks, nBlocks])); obj.connections = connections; if isempty(blockNames) obj.blockNames = cell(1, nBlocks); for i = 1:length(blockMaps) obj.blockNames{i} = sprintf('%d', i); end else assert(length(blockNames) == nBlocks); obj.blockNames = blockNames; end obj.boundaryGroups = boundaryGroups; end function g = getGrid(obj, varargin) ms = obj.getGridSizes(varargin{:}); grids = cell(1, obj.nBlocks); for i = 1:obj.nBlocks grids{i} = grid.equidistantCurvilinear(obj.blockMaps{i}.S, ms{i}); end g = multiblock.Grid(grids, obj.connections, obj.boundaryGroups); end function h = show(obj, label, gridLines, varargin) default_arg('label', 'name') default_arg('gridLines', false); h = []; if isempty('label') && ~gridLines for i = 1:obj.nBlocks h = [h, obj.blockMaps{i}.show(2,2)]; end axis equal return end if gridLines ms = obj.getGridSizes(varargin{:}); for i = 1:obj.nBlocks h = [h, obj.blockMaps{i}.show(ms{i}(1),ms{i}(2))]; end end switch label case 'name' labels = obj.blockNames; case 'id' labels = {}; for i = 1:obj.nBlocks labels{i} = num2str(i); end case 'none' axis equal return end for i = 1:obj.nBlocks parametrization.Ti.label(obj.blockMaps{i}, labels{i}); end axis equal end end methods (Abstract) % Returns the grid size of each block in a cell array % The input parameters are determined by the subclass ms = getGridSizes(obj, varargin) % end end end