annotate +grid/Curvilinear.m @ 221:3e1d8051e68e feature/beams

Fixed typo.
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 28 Jun 2016 13:19:45 +0200
parents 7c1d3fc33f90
children 30321dc180e1
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: 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