Mercurial > repos > public > sbplib_julia
annotate grid.jl @ 38:2dce28c59429
Fix 1d version of plotgridfunction
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Thu, 10 Jan 2019 14:55:57 +0100 |
parents | 32a53cbee6c5 |
children | 5ec57ec148ef |
rev | line source |
---|---|
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
1 module grid |
38
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
2 using PyPlot |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
3 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
4 abstract type Grid end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
5 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
6 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
|
7 error("Not implemented for abstact type Grid") |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
8 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
9 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
10 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
|
11 error("Not implemented for abstact type Grid") |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
12 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
13 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
14 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
|
15 error("Not implemented for abstact type Grid") |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
16 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
17 |
22 | 18 # TODO: Should this be here? |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
19 abstract type BoundaryId end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
20 |
23
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
21 # 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
|
22 # 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
|
23 # 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
|
24 # 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
|
25 # 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
|
26 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
|
27 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
|
28 # 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
|
29 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
|
30 # 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
|
31 # (-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
|
32 |
2dbdd00eaea0
Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
19
diff
changeset
|
33 # General constructor |
2dbdd00eaea0
Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
19
diff
changeset
|
34 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
|
35 @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
|
36 @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
|
37 @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
|
38 @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
|
39 # 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
|
40 # 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
|
41 return new(nPointsPerDim, lims) |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
42 end |
23
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
43 # 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
|
44 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
|
45 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
|
46 end |
2dbdd00eaea0
Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
19
diff
changeset
|
47 |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
48 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
49 |
23
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
50 # 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
|
51 # |
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
52 # @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
|
53 # @Return: numberOfPoints - The number of dimensions |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
54 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
|
55 return length(grid.numberOfPointsPerDim) |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
56 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
57 |
23
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
58 # 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
|
59 # |
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
60 # @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
|
61 # @Return: numberOfPoints - The total number of points |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
62 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
|
63 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
|
64 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
|
65 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
|
66 end |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
67 return numberOfPoints |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
68 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
69 |
23
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
70 # 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
|
71 # 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
|
72 # |
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
73 # @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
|
74 # @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
|
75 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
|
76 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
|
77 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
|
78 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
|
79 end |
23
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
80 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
|
81 end |
2dbdd00eaea0
Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
19
diff
changeset
|
82 |
23
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
83 # 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
|
84 # 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
|
85 # 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
|
86 # |
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
87 # @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
|
88 # @Return: points - the points of the grid. |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
89 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
|
90 # 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
|
91 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
|
92 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
|
93 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
|
94 end |
9031fe054f2c
Return the unsigned distances from grid.spacings(). Add comments
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
22
diff
changeset
|
95 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
|
96 |
38
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
97 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
|
98 # 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
|
99 # grid spacings |
21
2dbdd00eaea0
Implement function returing the points of a EquidistantGrid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
19
diff
changeset
|
100 cartesianIndices = CartesianIndices(grid.numberOfPointsPerDim) |
38
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
101 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
|
102 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
|
103 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
|
104 end |
38
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
105 # 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
|
106 if numberOfDimensions(grid) == 1 |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
107 points = broadcast(x -> x[1], points) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
108 end |
16
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
109 return points |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
110 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
111 |
38
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
112 function pointsalongdim(grid::EquidistantGrid, dim::Integer) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
113 @assert dim<=numberOfDimensions(grid) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
114 @assert dim>0 |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
115 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
|
116 end |
27 | 117 |
38
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
118 function plotgridfunction(grid::EquidistantGrid, gridfunction) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
119 if numberOfDimensions(grid) == 1 |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
120 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
|
121 elseif numberOfDimensions(grid) == 2 |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
122 x = pointsalongdim(grid,1) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
123 X = repeat(x,1,grid.numberOfPointsPerDim[2]) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
124 y = pointsalongdim(grid,2) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
125 Y = repeat(y,1,grid.numberOfPointsPerDim[1])' |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
126 elseif numberOfDimensions(grid) == 3 |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
127 x = pointsalongdim(grid,1) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
128 X = repeat(x,1,grid.numberOfPointsPerDim[2]) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
129 y = pointsalongdim(grid,2) |
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
130 Y = repeat(y,1,grid.numberOfPointsPerDim[1])' |
27 | 131 else |
38
2dce28c59429
Fix 1d version of plotgridfunction
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
28
diff
changeset
|
132 error(string("Plot not implemented for dimension =", string(dim))) |
27 | 133 end |
16
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
134 end |
27 | 135 |
136 end |