Mercurial > repos > public > sbplib
diff +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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/+grid/equidistantCurvilinear.m Thu Nov 15 16:36:21 2018 -0800 @@ -0,0 +1,35 @@ +% Creates a curvilinear grid of dimension length(m). +% over the logical domain xi_lim, eta_lim, ... +% If all limits are ommited they are set to {0,1}. +% Examples: +% g = grid.equidistantCurvilinear(mapping, [m_xi, m_eta]) +% g = grid.equidistantCurvilinear(mapping, [m_xi, m_eta], xi_lim, eta_lim) +% g = grid.equidistantCurvilinear(mapping, [10, 15], {0,1}, {0,1}) +function g = equidistantCurvilinear(mapping, m, varargin) + if isempty(varargin) + varargin = repmat({{0,1}}, [1 length(m)]); + end + + if length(m) ~= length(varargin) + error('grid:equidistant:NonMatchingParameters','The number of provided dimensions do not match.') + end + + for i = 1:length(m) + if ~iscell(varargin{i}) || numel(varargin{i}) ~= 2 + error('grid:equidistant:InvalidLimits','The limits should be cell arrays with 2 elements.'); + end + + if varargin{i}{1} > varargin{i}{2} + error('grid:equidistant:InvalidLimits','The elements of the limit must be increasing.'); + end + end + + X = {}; + h = []; + for i = 1:length(m) + [X{i}, h(i)] = util.get_grid(varargin{i}{:},m(i)); + end + + g = grid.Curvilinear(mapping, X{:}); + g.logic.h = h; +end \ No newline at end of file