comparison grid.jl @ 19:af8469bc1cb3

Implement function returning points of grid
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Mon, 17 Dec 2018 15:59:21 +0100
parents c61af27cb67a
children 2dbdd00eaea0 aff8ea85ca70
comparison
equal deleted inserted replaced
16:c61af27cb67a 19:af8469bc1cb3
16 16
17 abstract type BoundaryId end 17 abstract type BoundaryId end
18 18
19 # Move to seperate file. 19 # Move to seperate file.
20 struct EquidistantGrid <: Grid 20 struct EquidistantGrid <: Grid
21 numberOfDimensions::UInt 21 nPointsPerDim::Vector{Int}
22 numberOfPoints::Vector{UInt}
23 limits::Vector{Pair{Real, Real}} 22 limits::Vector{Pair{Real, Real}}
24 function EquidistantGrid(nDims, nPoints, lims) 23 function EquidistantGrid(nPointsPerDim, lims)
25 @assert nDims == size(nPoints) 24 @assert length(lims) == length(nPointsPerDim)
26 return new(nDims, nPoints, lims) 25 return new(nPointsPerDim, lims)
27 end 26 end
28 end 27 end
29 28
30 function numberOfDimensions(grid::EquidistantGrid) 29 function numberOfDimensions(grid::EquidistantGrid)
31 return grid.numberOfDimensions 30 return length(grid.nPointsPerDim)
32 end 31 end
33 32
34 function numberOfPoints(grid::EquidistantGrid) 33 function numberOfPoints(grid::EquidistantGrid)
35 return grid.numberOfPoints 34 numberOfPoints = grid.nPointsPerDim[1];
35 for i = 2:length(grid.nPointsPerDim);
36 numberOfPoints = numberOfPoints*grid.nPointsPerDim[i]
37 end
38 return numberOfPoints
36 end 39 end
37 40
38 function points(grid::EquidistantGrid) 41 function points(grid::EquidistantGrid)
39 points::Matrix{Real,3}(undef, numberOfPoints(grid)) 42 points = Vector{Real}(undef, numberOfPoints(grid))
43 for i = 1:numberOfDimensions(grid)
44 lims = limitsForDimension(grid,i)
45 points = range(lims.first, stop=lims.second, length=grid.nPointsPerDim[i])
46 end
40 return points 47 return points
41 end 48 end
42 49
43 function limitsForDimension(grid::EquidistantGrid, dim::UInt) 50 function limitsForDimension(grid::EquidistantGrid, dim::Int)
44 return grid.limits(dim) 51 return grid.limits[dim]
45 end 52 end
46 53
47 end 54 end