annotate +grid/Curvilinear.m @ 1344:b4e5e45bd239 feature/D2_boundary_opt

Remove round off zeros from D2Nonequidistant operators
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Sat, 15 Oct 2022 15:48:20 +0200
parents 692bf61385c0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 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')
448
692bf61385c0 Better error message
Jonatan Werpers <jonatan@werpers.com>
parents: 386
diff changeset
22 if nargin(mapping) ~= length(varargin)
692bf61385c0 Better error message
Jonatan Werpers <jonatan@werpers.com>
parents: 386
diff changeset
23 error('The dimension of the mapping does not match the dimension of the logical coordinates')
692bf61385c0 Better error message
Jonatan Werpers <jonatan@werpers.com>
parents: 386
diff changeset
24 end
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
25 mapping = grid.evalOn(obj.logic, mapping);
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
26 end
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 D = obj.logic.D();
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
29 N = obj.logic.N();
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
30
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
31 obj.coords = zeros(N,D);
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
32
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
33 if iscell(mapping)
172
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
34 obj.coords = cellMappingToCoords(mapping, N, D, obj.logic.m);
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
35 elseif isnumeric(mapping)
173
f7bb2a94d291 Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 172
diff changeset
36 obj.coords = matrixMappingToCoords(mapping, N, D);
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
37 else
381
d32c749408cb Better error message.
Jonatan Werpers <jonatan@werpers.com>
parents: 276
diff changeset
38 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
39 end
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 function m = size(obj)
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
43 m = obj.logic.size();
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
44 end
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
45
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
46 % logicalGrid returns the domain grid of the mapping.
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
47 function g = logicalGrid(obj)
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
48 g = obj.logic;
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
49 end
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
50
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
51 % mapping returns the mapped coordinates as a grid.Function
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
52 function m = mapping(obj);
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
53 m = obj.coords;
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
54 end
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
55
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
56 % n returns the number of points in the grid
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
57 function o = N(obj)
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
58 o = obj.logic.N();
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
59 end
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
60
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
61 % d returns the spatial dimension of the grid
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
62 function o = D(obj)
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
63 o = obj.logic.D();
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
64 end
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
65
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
66 % 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
67 function X = points(obj)
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
68 X = obj.coords;
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
69 end
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
70
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
71 % 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
72 function gf = restrictFunc(obj, gf, g)
386
4f935415700e Fixed bug in curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 381
diff changeset
73 gf = obj.logic.restrictFunc(gf, g.logic);
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
74 end
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
75
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
76 % 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
77 function gf = projectFunc(obj, gf, g)
386
4f935415700e Fixed bug in curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 381
diff changeset
78 gf = obj.logic.projectFunc(gf,g.logic);
170
62b5f3c34bcb Implemented Curvilinear and equdistantCurvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 159
diff changeset
79 end
173
f7bb2a94d291 Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 172
diff changeset
80
f7bb2a94d291 Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 172
diff changeset
81 function h = scaling(obj)
f7bb2a94d291 Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 172
diff changeset
82 if isempty(obj.logic.h)
f7bb2a94d291 Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 172
diff changeset
83 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
84 end
f7bb2a94d291 Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 172
diff changeset
85 h = obj.logic.h;
f7bb2a94d291 Added functionallity for storing grid scaling on structured grids.
Jonatan Werpers <jonatan@werpers.com>
parents: 172
diff changeset
86 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
87
c5ca9bbfed41 Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents: 173
diff changeset
88 % 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
89 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
90 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
91 end
c5ca9bbfed41 Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents: 173
diff changeset
92
c5ca9bbfed41 Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents: 173
diff changeset
93 % 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
94 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
95 % 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
96 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
97 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
98 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
99 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
100 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
101 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
102 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
103 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
104 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
105 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
106
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 % 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
108 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
109 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
110 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
111 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
112 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
113 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
114 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
115 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
116
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
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
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 = 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
120 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
121 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
122 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
123 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
124 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
125 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
126 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
127
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 % 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
129 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
130 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
131 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
132
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 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
134
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 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
136 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
137 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
138 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
139
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 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
141 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
142 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
143 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
144 end
153
7aee9eba3bb8 Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
145 end
172
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
146 end
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
147
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
148
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
149 function coords = cellMappingToCoords(mapping, N, D, m)
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
150 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
151 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
152 end
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
153
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
154 if isequal(size(mapping{1}),[N 1])
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
155 coords = cell2mat(mapping);
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
156 elseif isequal(size(mapping{1}), m)
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
157 for i = 1:length(mapping)
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
158 coords(:,i) = reshapeRowMaj(mapping{i}, [N 1]);
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 else
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
161 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
162 end
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
163 end
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
164
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
165 function coords = matrixMappingToCoords(mapping, N, D)
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
166 if isequal(size(mapping), [N, D])
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
167 coords = mapping;
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
168 elseif isequal(size(mapping), [N*D, 1])
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
169 coords = reshapeRowMaj(mapping,[N D]);
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
170 else
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
171 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
172 end
c3483685116a Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents: 170
diff changeset
173 end