Mercurial > repos > public > sbplib_julia
annotate 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 |
rev | line source |
---|---|
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
1 module grid |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
2 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
3 abstract type Grid end |
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 function numberOfDimensions(grid::Grid) |
16
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
6 error("Not yet implemented") |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
7 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
8 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
9 function numberOfPoints(grid::Grid) |
16
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
10 error("Not yet implemented") |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
11 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
12 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
13 function points(grid::Grid) |
16
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
14 error("Not yet implemented") |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
15 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
16 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
17 abstract type BoundaryId end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
18 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
19 # Move to seperate file. |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
20 struct EquidistantGrid <: Grid |
19
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
21 nPointsPerDim::Vector{Int} |
16
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
22 limits::Vector{Pair{Real, Real}} |
19
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
23 function EquidistantGrid(nPointsPerDim, lims) |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
24 @assert length(lims) == length(nPointsPerDim) |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
25 return new(nPointsPerDim, lims) |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
26 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
27 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
28 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
29 function numberOfDimensions(grid::EquidistantGrid) |
19
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
30 return length(grid.nPointsPerDim) |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
31 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
32 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
33 function numberOfPoints(grid::EquidistantGrid) |
19
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
34 numberOfPoints = grid.nPointsPerDim[1]; |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
35 for i = 2:length(grid.nPointsPerDim); |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
36 numberOfPoints = numberOfPoints*grid.nPointsPerDim[i] |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
37 end |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
38 return numberOfPoints |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
39 end |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
40 |
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
41 function points(grid::EquidistantGrid) |
19
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
42 points = Vector{Real}(undef, numberOfPoints(grid)) |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
43 for i = 1:numberOfDimensions(grid) |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
44 lims = limitsForDimension(grid,i) |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
45 points = range(lims.first, stop=lims.second, length=grid.nPointsPerDim[i]) |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
46 end |
16
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
47 return points |
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 |
19
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
50 function limitsForDimension(grid::EquidistantGrid, dim::Int) |
af8469bc1cb3
Implement function returning points of grid
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
16
diff
changeset
|
51 return grid.limits[dim] |
14
b11b67c02d1a
Started implementing grids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
0
diff
changeset
|
52 end |
16
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
53 |
c61af27cb67a
Fix compile errors
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents:
15
diff
changeset
|
54 end |