comparison +grid/equidistantCurvilinear.m @ 886:8894e9c49e40 feature/timesteppers

Merge with default for latest changes
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 15 Nov 2018 16:36:21 -0800
parents 9eff7b58c5f7
children
comparison
equal deleted inserted replaced
816:b5e5b195da1e 886:8894e9c49e40
1 % Creates a curvilinear grid of dimension length(m).
2 % over the logical domain xi_lim, eta_lim, ...
3 % If all limits are ommited they are set to {0,1}.
4 % Examples:
5 % g = grid.equidistantCurvilinear(mapping, [m_xi, m_eta])
6 % g = grid.equidistantCurvilinear(mapping, [m_xi, m_eta], xi_lim, eta_lim)
7 % g = grid.equidistantCurvilinear(mapping, [10, 15], {0,1}, {0,1})
8 function g = equidistantCurvilinear(mapping, m, varargin)
9 if isempty(varargin)
10 varargin = repmat({{0,1}}, [1 length(m)]);
11 end
12
13 if length(m) ~= length(varargin)
14 error('grid:equidistant:NonMatchingParameters','The number of provided dimensions do not match.')
15 end
16
17 for i = 1:length(m)
18 if ~iscell(varargin{i}) || numel(varargin{i}) ~= 2
19 error('grid:equidistant:InvalidLimits','The limits should be cell arrays with 2 elements.');
20 end
21
22 if varargin{i}{1} > varargin{i}{2}
23 error('grid:equidistant:InvalidLimits','The elements of the limit must be increasing.');
24 end
25 end
26
27 X = {};
28 h = [];
29 for i = 1:length(m)
30 [X{i}, h(i)] = util.get_grid(varargin{i}{:},m(i));
31 end
32
33 g = grid.Curvilinear(mapping, X{:});
34 g.logic.h = h;
35 end