annotate +grid/equidistantCurvilinear.m @ 1037:2d7ba44340d0 feature/burgers1d

Pass scheme specific parameters as cell array. This will enabale constructDiffOps to be more general. In addition, allow for schemes returning function handles as diffOps, which is currently how non-linear schemes such as Burgers1d are implemented.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Fri, 18 Jan 2019 09:02:02 +0100
parents 9eff7b58c5f7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
1 % Creates a curvilinear grid of dimension length(m).
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
2 % over the logical domain xi_lim, eta_lim, ...
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
3 % If all limits are ommited they are set to {0,1}.
154
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 % Examples:
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
5 % g = grid.equidistantCurvilinear(mapping, [m_xi, m_eta])
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
6 % g = grid.equidistantCurvilinear(mapping, [m_xi, m_eta], xi_lim, eta_lim)
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
7 % g = grid.equidistantCurvilinear(mapping, [10, 15], {0,1}, {0,1})
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
8 function g = equidistantCurvilinear(mapping, m, varargin)
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
9 if isempty(varargin)
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
10 varargin = repmat({{0,1}}, [1 length(m)]);
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
11 end
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
12
154
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 if length(m) ~= length(varargin)
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 error('grid:equidistant:NonMatchingParameters','The number of provided dimensions do not match.')
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 end
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 for i = 1:length(m)
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 if ~iscell(varargin{i}) || numel(varargin{i}) ~= 2
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 error('grid:equidistant:InvalidLimits','The limits should be cell arrays with 2 elements.');
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 end
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 if varargin{i}{1} > varargin{i}{2}
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 error('grid:equidistant:InvalidLimits','The elements of the limit must be increasing.');
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 end
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 end
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27 X = {};
177
c3378418d49a Updated equidistant and equidistantCurve to set the scaling of grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
28 h = [];
154
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 for i = 1:length(m)
177
c3378418d49a Updated equidistant and equidistantCurve to set the scaling of grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
30 [X{i}, h(i)] = util.get_grid(varargin{i}{:},m(i));
154
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 end
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 154
diff changeset
33 g = grid.Curvilinear(mapping, X{:});
278
9eff7b58c5f7 Fixed bug with scaling.
Jonatan Werpers <jonatan@werpers.com>
parents: 177
diff changeset
34 g.logic.h = h;
154
c7b2f645101f Added classes and functions for Cartesian and equidistant grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35 end