annotate +grid/Curvilinear.m @ 1031:2ef20d00b386 feature/advectionRV

For easier comparison, return both the first order and residual viscosity when evaluating the residual. Add the first order and residual viscosity to the state of the RungekuttaRV time steppers
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 17 Jan 2019 10:25:06 +0100
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