Mercurial > repos > public > sbplib
annotate +grid/Curvilinear.m @ 201:38f203f00f3a feature/grids
Exeendend tests of multiblock.DiffOp.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 14 Jun 2016 15:07:34 +0200 |
parents | 7c1d3fc33f90 |
children | 30321dc180e1 |
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, ...) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
10 % mapping -- either a matrix or a cell array with physical coordinates. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
11 % 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
|
12 % 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
|
13 % or matrices of the same dimesions as the logical grid. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
14 % 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
|
15 function obj = Curvilinear(mapping, varargin) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
16 xi = varargin; |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
17 obj.logic = grid.Cartesian(xi{:}); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
18 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
19 % If mapping is a function evaluate it |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
20 if isa(mapping, 'function_handle') |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
21 mapping = grid.evalOn(obj.logic, mapping); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
22 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
23 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
24 D = obj.logic.D(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
25 N = obj.logic.N(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
26 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
27 obj.coords = zeros(N,D); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
28 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
29 if iscell(mapping) |
172
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
30 obj.coords = cellMappingToCoords(mapping, N, D, obj.logic.m); |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
31 elseif isnumeric(mapping) |
173
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
32 obj.coords = matrixMappingToCoords(mapping, N, D); |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
33 else |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
34 error('grid:Curvilinear:Curvilinear','mapping must be a matrix or a cell array.'); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
35 end |
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 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
38 function m = size(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
39 m = obj.logic.size(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
40 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
41 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
42 % logicalGrid returns the domain grid of the mapping. |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
43 function g = logicalGrid(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
44 g = obj.logic; |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
45 end |
153
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
46 |
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
47 % mapping returns the mapped coordinates as a grid.Function |
170
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
48 function m = mapping(obj); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
49 m = obj.coords; |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
50 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
51 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
52 % n returns the number of points in the grid |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
53 function o = N(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
54 o = obj.logic.N(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
55 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
56 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
57 % d returns the spatial dimension of the grid |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
58 function o = D(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
59 o = obj.logic.D(); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
60 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
61 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
62 % 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
|
63 function X = points(obj) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
64 X = obj.coords; |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
65 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
66 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
67 % 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
|
68 function gf = restrictFunc(obj, gf, g) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
69 gf = obj.logic.restrictFunc(gf, g.baseGrid()); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
70 end |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
71 |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
72 % 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
|
73 function gf = projectFunc(obj, gf, g) |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
74 gf = obj.logic.projectFunc(gf,g.baseGrid()); |
62b5f3c34bcb
Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
159
diff
changeset
|
75 end |
173
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
76 |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
77 function h = scaling(obj) |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
78 if isempty(obj.logic.h) |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
79 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
|
80 end |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
81 h = obj.logic.h; |
f7bb2a94d291
Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
172
diff
changeset
|
82 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
|
83 |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
84 % 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
|
85 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
|
86 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
|
87 end |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
88 |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
89 % 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
|
90 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
|
91 % 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
|
92 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
|
93 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
|
94 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
|
95 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
|
96 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
|
97 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
|
98 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
|
99 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
|
100 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
|
101 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
|
102 |
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 % 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
|
104 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
|
105 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
|
106 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
|
107 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
|
108 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
|
109 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
|
110 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
|
111 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
|
112 |
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 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
|
116 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
|
117 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
|
118 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
|
119 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
|
120 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
|
121 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
|
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 |
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 % 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
|
125 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
|
126 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
|
127 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
|
128 |
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 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
|
130 |
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 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
|
132 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
|
133 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
|
134 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
|
135 |
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 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
|
137 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
|
138 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
|
139 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
|
140 end |
153
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
141 end |
172
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
142 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
143 |
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 function coords = cellMappingToCoords(mapping, N, D, m) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
146 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
|
147 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
|
148 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
149 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
150 if isequal(size(mapping{1}),[N 1]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
151 coords = cell2mat(mapping); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
152 elseif isequal(size(mapping{1}), m) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
153 for i = 1:length(mapping) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
154 coords(:,i) = reshapeRowMaj(mapping{i}, [N 1]); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
155 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
156 else |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
157 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
|
158 end |
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 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
161 function coords = matrixMappingToCoords(mapping, N, D) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
162 if isequal(size(mapping), [N, D]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
163 coords = mapping; |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
164 elseif isequal(size(mapping), [N*D, 1]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
165 coords = reshapeRowMaj(mapping,[N D]); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
166 else |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
167 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
|
168 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
169 end |