Mercurial > repos > public > sbplib
comparison +grid/equidistantCurvilinear.m @ 170:62b5f3c34bcb feature/grids
Implemented Curvilinear and equdistantCurvilinear.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Thu, 25 Feb 2016 11:10:25 +0100 |
parents | +grid/equidistant.m@c7b2f645101f |
children | c3378418d49a |
comparison
equal
deleted
inserted
replaced
169:ba8adcaf4681 | 170:62b5f3c34bcb |
---|---|
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 for i = 1:length(m) | |
29 X{i} = util.get_grid(varargin{i}{:},m(i)); | |
30 end | |
31 | |
32 g = grid.Curvilinear(mapping, X{:}); | |
33 end |