Mercurial > repos > public > sbplib
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 |
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 |