changeset 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 d1ac68092138
files grid.jl
diffstat 1 files changed, 17 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/grid.jl	Mon Dec 17 15:05:45 2018 +0100
+++ b/grid.jl	Mon Dec 17 15:59:21 2018 +0100
@@ -18,30 +18,37 @@
 
 # Move to seperate file.
 struct EquidistantGrid <: Grid
-    numberOfDimensions::UInt
-    numberOfPoints::Vector{UInt}
+    nPointsPerDim::Vector{Int}
     limits::Vector{Pair{Real, Real}}
-    function EquidistantGrid(nDims, nPoints, lims)
-        @assert nDims == size(nPoints)
-        return new(nDims, nPoints, lims)
+    function EquidistantGrid(nPointsPerDim, lims)
+        @assert length(lims) == length(nPointsPerDim)
+        return new(nPointsPerDim, lims)
     end
 end
 
 function numberOfDimensions(grid::EquidistantGrid)
-    return grid.numberOfDimensions
+    return length(grid.nPointsPerDim)
 end
 
 function numberOfPoints(grid::EquidistantGrid)
-    return grid.numberOfPoints
+    numberOfPoints = grid.nPointsPerDim[1];
+    for i = 2:length(grid.nPointsPerDim);
+        numberOfPoints = numberOfPoints*grid.nPointsPerDim[i]
+    end
+    return numberOfPoints
 end
 
 function points(grid::EquidistantGrid)
-    points::Matrix{Real,3}(undef, numberOfPoints(grid))
+    points = Vector{Real}(undef, numberOfPoints(grid))
+    for i = 1:numberOfDimensions(grid)
+        lims = limitsForDimension(grid,i)
+        points = range(lims.first, stop=lims.second, length=grid.nPointsPerDim[i])
+    end
     return points
 end
 
-function limitsForDimension(grid::EquidistantGrid, dim::UInt)
-    return grid.limits(dim)
+function limitsForDimension(grid::EquidistantGrid, dim::Int)
+    return grid.limits[dim]
 end
 
 end