Mercurial > repos > public > sbplib_julia
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 |