Mercurial > repos > public > sbplib
annotate +grid/Curvilinear.m @ 188:c5ca9bbfed41 feature/grids
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 04 Mar 2016 17:19:18 +0100 |
parents | f7bb2a94d291 |
children | 7c1d3fc33f90 |
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) |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
86 bs = []; |
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 |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
90 function b = getBoundary(obj, name) |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
91 b = []; |
c5ca9bbfed41
Added methods to hande boundaries to Grid. Added failing tests and method stubs.
Jonatan Werpers <jonatan@werpers.com>
parents:
173
diff
changeset
|
92 end |
153
7aee9eba3bb8
Added abstract classes for some different types of grids.
Jonatan Werpers <jonatan@werpers.com>
parents:
diff
changeset
|
93 end |
172
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
94 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
95 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
96 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
97 function coords = cellMappingToCoords(mapping, N, D, m) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
98 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
|
99 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
|
100 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
101 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
102 if isequal(size(mapping{1}),[N 1]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
103 coords = cell2mat(mapping); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
104 elseif isequal(size(mapping{1}), m) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
105 for i = 1:length(mapping) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
106 coords(:,i) = reshapeRowMaj(mapping{i}, [N 1]); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
107 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
108 else |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
109 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
|
110 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
111 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
112 |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
113 function coords = matrixMappingToCoords(mapping, N, D) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
114 if isequal(size(mapping), [N, D]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
115 coords = mapping; |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
116 elseif isequal(size(mapping), [N*D, 1]) |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
117 coords = reshapeRowMaj(mapping,[N D]); |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
118 else |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
119 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
|
120 end |
c3483685116a
Refactored input parsing in Curvilinear.
Jonatan Werpers <jonatan@werpers.com>
parents:
170
diff
changeset
|
121 end |