Mercurial > repos > public > sbplib
annotate +grid/Curvilinear.m @ 389:42c89b5eedc0 feature/beams
Add borrowing constants for D2 operators in D4Variable
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 10 Jan 2017 17:31:28 +0100 |
parents | 4f935415700e |
children | 692bf61385c0 |
rev | line source |
---|---|
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
1 classdef Curvilinear < grid.Structured & grid.Mapped |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
2 properties |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
3 logic % Grid of Logical domain |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
4 coords % N x D matrix with coordinates of each point in the physical domain |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
5 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
6 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
7 methods |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
8 % Creates a curvilinear grid. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
9 % Ex: grid.Curvilinear(mapping, xi, eta, ...) |
276
30321dc180e1
Fixed documentation for Curvilinear and evalOn.
Jonatan Werpers <jonatan@werpers.com>
parents:
191
diff
changeset
|
10 % mapping -- either a function handle, a matrix or a cell array with physical coordinates. |
30321dc180e1
Fixed documentation for Curvilinear and evalOn.
Jonatan Werpers <jonatan@werpers.com>
parents:
191
diff
changeset
|
11 % A function handle should be a vector valued function of the coordinate mapping. |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
12 % A matrix should be a grid function (N*D x 1 vector) or a N x D |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
13 % A cell array should be a 1 x D cell array with either N x 1 vectors |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
14 % or matrices of the same dimesions as the logical grid. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
15 % xi, eta, ... -- are the coordinate positions of the cartesian logical grid. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
16 function obj = Curvilinear(mapping, varargin) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
17 xi = varargin; |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
18 obj.logic = grid.Cartesian(xi{:}); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
19 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
20 % If mapping is a function evaluate it |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
21 if isa(mapping, 'function_handle') |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
22 mapping = grid.evalOn(obj.logic, mapping); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
23 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
24 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
25 D = obj.logic.D(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
26 N = obj.logic.N(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
27 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
28 obj.coords = zeros(N,D); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
29 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
30 if iscell(mapping) |
172
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
31 obj.coords = cellMappingToCoords(mapping, N, D, obj.logic.m); |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
32 elseif isnumeric(mapping) |
173
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
33 obj.coords = matrixMappingToCoords(mapping, N, D); |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
34 else |
381
d32c749408cb
Better error message.
Jonatan Werpers <jonatan@werpers.com>
parents:
276
diff
changeset
|
35 error('grid:Curvilinear:Curvilinear','mapping must be a function handle, a matrix or a cell array.'); |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
36 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
37 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
38 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
39 function m = size(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
40 m = obj.logic.size(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
41 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
42 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
43 % logicalGrid returns the domain grid of the mapping. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
44 function g = logicalGrid(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
45 g = obj.logic; |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
46 end |
153
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 |
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
48 % mapping returns the mapped coordinates as a grid.Function |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
49 function m = mapping(obj); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
50 m = obj.coords; |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
51 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
52 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
53 % n returns the number of points in the grid |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
54 function o = N(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
55 o = obj.logic.N(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
56 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
57 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
58 % d returns the spatial dimension of the grid |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
59 function o = D(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
60 o = obj.logic.D(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
61 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
62 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
63 % points returns a n x d matrix containing the coordinates for all points. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
64 function X = points(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
65 X = obj.coords; |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
66 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
67 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
68 % Restricts the grid function gf on obj to the subgrid g. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
69 function gf = restrictFunc(obj, gf, g) |
386
4f935415700e
Fixed bug in curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
381
diff
changeset
|
70 gf = obj.logic.restrictFunc(gf, g.logic); |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
71 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
72 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
73 % Projects the grid function gf on obj to the grid g. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
74 function gf = projectFunc(obj, gf, g) |
386
4f935415700e
Fixed bug in curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
381
diff
changeset
|
75 gf = obj.logic.projectFunc(gf,g.logic); |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
76 end |
173
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
77 |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
78 function h = scaling(obj) |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
79 if isempty(obj.logic.h) |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
80 error('grid:Curvilinear:NoScalingSet','No scaling set'); |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
81 end |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
82 h = obj.logic.h; |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
83 end |
188
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
84 |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
85 % Return the names of all boundaries in this grid. |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
86 function bs = getBoundaryNames(obj) |
191
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
87 bs = obj.logic.getBoundaryNames(); |
188
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
88 end |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
89 |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
90 % Return coordinates for the given boundary |
191
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
91 function X = getBoundary(obj, name) |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
92 % In what dimension is the boundary? |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
93 switch name |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
94 case {'l', 'r', 'w', 'e'} |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
95 D = 1; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
96 case {'s', 'n'} |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
97 D = 2; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
98 case {'d', 'u'} |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
99 D = 3; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
100 otherwise |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
101 error('not implemented'); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
102 end |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
103 |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
104 % At what index is the boundary? |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
105 switch name |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
106 case {'l', 'w', 's', 'd'} |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
107 index = 1; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
108 case {'r', 'e', 'n', 'u'} |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
109 index = obj.logic.m(D); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
110 otherwise |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
111 error('not implemented'); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
112 end |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
113 |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
114 |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
115 |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
116 I = cell(1, obj.D); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
117 for i = 1:obj.D |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
118 if i == D |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
119 I{i} = index; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
120 else |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
121 I{i} = ':'; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
122 end |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
123 end |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
124 |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
125 % Calculate size of result: |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
126 m = obj.logic.m; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
127 m(D) = []; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
128 N = prod(m); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
129 |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
130 X = zeros(N, obj.D); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
131 |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
132 p = obj.points; |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
133 for i = 1:obj.D() |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
134 coordMat{i} = reshapeRowMaj(p(:,i), obj.logic.m); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
135 end |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
136 |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
137 for i = 1:length(coordMat) |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
138 Xtemp = coordMat{i}(I{:}); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
139 X(:,i) = reshapeRowMaj(Xtemp, [N,1]); |
7c1d3fc33f90
Added methods for returning boundary names and boundary coordinates from Cartesian and Curvilinear grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
188
diff
changeset
|
140 end |
188
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
141 end |
153
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
142 end |
172
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
143 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
144 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
145 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
146 function coords = cellMappingToCoords(mapping, N, D, m) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
147 if ~isequal(size(mapping),[1 D]) |
173
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
148 error('grid:Curvilinear:Curvilinear','The cell array must be a 1xD array.'); |
172
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
149 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
150 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
151 if isequal(size(mapping{1}),[N 1]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
152 coords = cell2mat(mapping); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
153 elseif isequal(size(mapping{1}), m) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
154 for i = 1:length(mapping) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
155 coords(:,i) = reshapeRowMaj(mapping{i}, [N 1]); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
156 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
157 else |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
158 error('grid:Curvilinear:Curvilinear','The matrix must have size [N 1] or the same dimension as the grid. Actual: %s', toString(m)); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
159 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
160 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
161 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
162 function coords = matrixMappingToCoords(mapping, N, D) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
163 if isequal(size(mapping), [N, D]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
164 coords = mapping; |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
165 elseif isequal(size(mapping), [N*D, 1]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
166 coords = reshapeRowMaj(mapping,[N D]); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
167 else |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
168 error('grid:Curvilinear:Curvilinear','A matrix mapping must be of size [N D] or [N*D 1].'); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
169 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
170 end |