annotate grid.jl @ 46:50c6c252d954

Fix issue in plotgridfunction in 2d. Remove 3d case. Will be added later
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 10 Jan 2019 17:39:42 +0100
parents 3d8bfb695497
children 614b56a017b9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
1 module grid
41
3d8bfb695497 Fix plotting issues in 2d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 39
diff changeset
2 using Plots
3d8bfb695497 Fix plotting issues in 2d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 39
diff changeset
3 pyplot()
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
4
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
5 abstract type Grid end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
6
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
7 function numberOfDimensions(grid::Grid)
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
8 error("Not implemented for abstact type Grid")
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
9 end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
10
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
11 function numberOfPoints(grid::Grid)
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
12 error("Not implemented for abstact type Grid")
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
13 end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
15 function points(grid::Grid)
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
16 error("Not implemented for abstact type Grid")
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
17 end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
18
22
f2dc3e09fffc Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 21
diff changeset
19 # TODO: Should this be here?
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
20 abstract type BoundaryId end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
21
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
22 # EquidistantGrid is a grid with equidisant grid spacing per coordinat
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
23 # direction. The domain is defined through the two points P1 = x̄₁, P2 = x̄₂
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
24 # by the exterior product of the vectors obtained by projecting (x̄₂-x̄₁) onto
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
25 # the coordinate directions. E.g for a 2D grid with x̄₁=(-1,0) and x̄₂=(1,2)
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
26 # the domain is defined as (-1,1)x(0,2).
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
27 struct EquidistantGrid <: Grid
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
28 numberOfPointsPerDim::Tuple # First coordinate direction stored first, then
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
29 # second, then third.
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
30 limits::NTuple{2,Tuple} # Stores the two points which defines the range of
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
31 # the e.g (-1,0) and (1,2) for a domain of size
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
32 # (-1,1)x(0,2)
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
33
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
34 # General constructor
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
35 function EquidistantGrid(nPointsPerDim::Tuple, lims::NTuple{2,Tuple})
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
36 @assert length(nPointsPerDim) > 0
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
37 @assert count(x -> x > 0, nPointsPerDim) == length(nPointsPerDim)
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
38 @assert length(lims[1]) == length(nPointsPerDim)
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
39 @assert length(lims[2]) == length(nPointsPerDim)
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
40 # TODO: Assert that the same values are not passed in both lims[1] and lims[2]
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
41 # i.e the domain length is positive for all dimensions
19
af8469bc1cb3 Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 16
diff changeset
42 return new(nPointsPerDim, lims)
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
43 end
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
44 # 1D constructor which can be called as EquidistantGrid(m, (xl,xr))
38
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
45 function EquidistantGrid(nPointsPerDim::Integer, lims::NTuple{2,Real})
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
46 return EquidistantGrid((nPointsPerDim,), ((lims[1],),(lims[2],)))
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
47 end
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
48
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
49 end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
50
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
51 # Returns the number of dimensions of an EquidistantGrid.
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
52 #
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
53 # @Input: grid - an EquidistantGrid
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
54 # @Return: numberOfPoints - The number of dimensions
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
55 function numberOfDimensions(grid::EquidistantGrid)
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
56 return length(grid.numberOfPointsPerDim)
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
57 end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
58
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
59 # Computes the total number of points of an EquidistantGrid.
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
60 #
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
61 # @Input: grid - an EquidistantGrid
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
62 # @Return: numberOfPoints - The total number of points
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
63 function numberOfPoints(grid::EquidistantGrid)
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
64 numberOfPoints = grid.numberOfPointsPerDim[1];
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
65 for i = 2:length(grid.numberOfPointsPerDim);
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
66 numberOfPoints = numberOfPoints*grid.numberOfPointsPerDim[i]
19
af8469bc1cb3 Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 16
diff changeset
67 end
af8469bc1cb3 Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 16
diff changeset
68 return numberOfPoints
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
69 end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
70
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
71 # Computes the grid spacing of an EquidistantGrid, i.e the unsigned distance
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
72 # between two points for each coordinate direction.
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
73 #
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
74 # @Input: grid - an EquidistantGrid
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
75 # @Return: h̄ - Grid spacing for each coordinate direction stored in a tuple.
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
76 function spacings(grid::EquidistantGrid)
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
77 h̄ = Vector{Real}(undef, numberOfDimensions(grid))
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
78 for i ∈ eachindex(h̄)
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
79 h̄[i] = abs(grid.limits[2][i]-grid.limits[1][i])/(grid.numberOfPointsPerDim[i]-1)
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
80 end
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
81 return Tuple(h̄)
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
82 end
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
83
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
84 # Computes the points of an EquidistantGrid as a vector of tuples. The vector is ordered
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
85 # such that points in the first coordinate direction varies first, then the second
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
86 # and lastely the third (if applicable)
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
87 #
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
88 # @Input: grid - an EquidistantGrid
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
89 # @Return: points - the points of the grid.
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
90 function points(grid::EquidistantGrid)
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
91 # Compute signed grid spacings
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
92 dx̄ = Vector{Real}(undef, numberOfDimensions(grid))
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
93 for i ∈ eachindex(dx̄)
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
94 dx̄[i] = (grid.limits[2][i]-grid.limits[1][i])/(grid.numberOfPointsPerDim[i]-1)
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
95 end
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
96 dx̄ = Tuple(dx̄)
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
97
38
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
98 points = Vector{NTuple{numberOfDimensions(grid),Real}}(undef, numberOfPoints(grid))
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
99 # Compute the points based on their Cartesian indices and the signed
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
100 # grid spacings
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
101 cartesianIndices = CartesianIndices(grid.numberOfPointsPerDim)
38
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
102 for i ∈ 1:numberOfPoints(grid)
21
2dbdd00eaea0 Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 19
diff changeset
103 ci = Tuple(cartesianIndices[i]) .-1
23
9031fe054f2c Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 22
diff changeset
104 points[i] = grid.limits[1] .+ dx̄.*ci
19
af8469bc1cb3 Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 16
diff changeset
105 end
38
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
106 # TBD: Keep? this? How do we want to represent points in 1D?
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
107 if numberOfDimensions(grid) == 1
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
108 points = broadcast(x -> x[1], points)
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
109 end
16
c61af27cb67a Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 15
diff changeset
110 return points
14
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
111 end
b11b67c02d1a Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 0
diff changeset
112
38
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
113 function pointsalongdim(grid::EquidistantGrid, dim::Integer)
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
114 @assert dim<=numberOfDimensions(grid)
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
115 @assert dim>0
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
116 points = range(grid.limits[1][dim],stop=grid.limits[2][dim],length=grid.numberOfPointsPerDim[dim])
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
117 end
27
aff8ea85ca70 Add plotOnGrid to grid
Ylva Rydin <ylva.rydin@telia.com>
parents: 19
diff changeset
118
38
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
119 function plotgridfunction(grid::EquidistantGrid, gridfunction)
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
120 if numberOfDimensions(grid) == 1
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
121 plot(pointsalongdim(grid,1), gridfunction, linewidth=2.0)
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
122 elseif numberOfDimensions(grid) == 2
46
50c6c252d954 Fix issue in plotgridfunction in 2d. Remove 3d case. Will be added later
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 41
diff changeset
123 mx = grid.numberOfPointsPerDim[1];
50c6c252d954 Fix issue in plotgridfunction in 2d. Remove 3d case. Will be added later
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 41
diff changeset
124 my = grid.numberOfPointsPerDim[2];
38
2dce28c59429 Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 28
diff changeset
125 x = pointsalongdim(grid,1)
46
50c6c252d954 Fix issue in plotgridfunction in 2d. Remove 3d case. Will be added later
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 41
diff changeset
126 X = repeat(x,1,my)
41
3d8bfb695497 Fix plotting issues in 2d
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 39
diff changeset
127 y = pointsalongdim(grid,2)
46
50c6c252d954 Fix issue in plotgridfunction in 2d. Remove 3d case. Will be added later
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 41
diff changeset
128 Y = repeat(y,1,mx)'
50c6c252d954 Fix issue in plotgridfunction in 2d. Remove 3d case. Will be added later
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 41
diff changeset
129 surface(X,Y,reshape(gridfunction,mx,my))
27
aff8ea85ca70 Add plotOnGrid to grid
Ylva Rydin <ylva.rydin@telia.com>
parents: 19
diff changeset
130 else
46
50c6c252d954 Fix issue in plotgridfunction in 2d. Remove 3d case. Will be added later
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 41
diff changeset
131 error(string("Plot not implemented for dimension ", string(numberOfDimensions(grid))))
27
aff8ea85ca70 Add plotOnGrid to grid
Ylva Rydin <ylva.rydin@telia.com>
parents: 19
diff changeset
132 end
16
c61af27cb67a Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 15
diff changeset
133 end
27
aff8ea85ca70 Add plotOnGrid to grid
Ylva Rydin <ylva.rydin@telia.com>
parents: 19
diff changeset
134
30
e86c65958aa1 Add function for evaluating functions on grids
Jonatan Werpers <jonatan@werpers.com>
parents: 28
diff changeset
135 # Evaluate function f on the grid g
e86c65958aa1 Add function for evaluating functions on grids
Jonatan Werpers <jonatan@werpers.com>
parents: 28
diff changeset
136 function evalOn(g::Grid, f::Function)
e86c65958aa1 Add function for evaluating functions on grids
Jonatan Werpers <jonatan@werpers.com>
parents: 28
diff changeset
137 F(x) = f(x...)
e86c65958aa1 Add function for evaluating functions on grids
Jonatan Werpers <jonatan@werpers.com>
parents: 28
diff changeset
138 return F.(points(g))
27
aff8ea85ca70 Add plotOnGrid to grid
Ylva Rydin <ylva.rydin@telia.com>
parents: 19
diff changeset
139 end
30
e86c65958aa1 Add function for evaluating functions on grids
Jonatan Werpers <jonatan@werpers.com>
parents: 28
diff changeset
140
e86c65958aa1 Add function for evaluating functions on grids
Jonatan Werpers <jonatan@werpers.com>
parents: 28
diff changeset
141 end