comparison Grids/src/EquidistantGrid.jl @ 268:f67ce2eb6019 boundary_conditions

Remove property spacing in EquidistantGrid, due to redundancy.
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Thu, 05 Dec 2019 09:44:34 +0100
parents 01017d2b46b0
children 12b738f260a0
comparison
equal deleted inserted replaced
267:634453a4e1d8 268:f67ce2eb6019
8 8
9 struct EquidistantGrid{Dim,T<:Real} <: AbstractGrid 9 struct EquidistantGrid{Dim,T<:Real} <: AbstractGrid
10 size::NTuple{Dim, Int} # First coordinate direction stored first 10 size::NTuple{Dim, Int} # First coordinate direction stored first
11 limit_lower::NTuple{Dim, T} 11 limit_lower::NTuple{Dim, T}
12 limit_upper::NTuple{Dim, T} 12 limit_upper::NTuple{Dim, T}
13 spacing::NTuple{Dim, T} # Grid spacing
14 inverse_spacing::NTuple{Dim, T} # Reciprocal of grid spacing 13 inverse_spacing::NTuple{Dim, T} # Reciprocal of grid spacing
15 14
16 # General constructor 15 # General constructor
17 function EquidistantGrid(size::NTuple{Dim, Int}, limit_lower::NTuple{Dim, T}, limit_upper::NTuple{Dim, T}) where Dim where T 16 function EquidistantGrid(size::NTuple{Dim, Int}, limit_lower::NTuple{Dim, T}, limit_upper::NTuple{Dim, T}) where Dim where T
18 @assert all(size.>0) 17 @assert all(size.>0)
19 @assert all(limit_upper.-limit_lower .!= 0) 18 @assert all(limit_upper.-limit_lower .!= 0)
20 spacing = abs.(limit_upper.-limit_lower)./(size.-1) 19 inverse_spacing = (size.-1)./ abs.(limit_upper.-limit_lower)
21 inverse_spacing = 1.0./spacing 20 return new{Dim,T}(size, limit_lower, limit_upper, inverse_spacing)
22 return new{Dim,T}(size, limit_lower, limit_upper, spacing, inverse_spacing)
23 end 21 end
24 end 22 end
25 23
26 function Base.eachindex(grid::EquidistantGrid) 24 function Base.eachindex(grid::EquidistantGrid)
27 CartesianIndices(grid.size) 25 CartesianIndices(grid.size)
35 # @Return: dimension - The dimension of the grid 33 # @Return: dimension - The dimension of the grid
36 function dimension(grid::EquidistantGrid) 34 function dimension(grid::EquidistantGrid)
37 return length(grid.size) 35 return length(grid.size)
38 end 36 end
39 37
40 # TODO: Keep the below functions or just use properties?
41 # Returns the reciprocal of the spacing of the grid 38 # Returns the reciprocal of the spacing of the grid
42 # 39 #
43 function inverse_spacing(grid::EquidistantGrid) 40 function inverse_spacing(grid::EquidistantGrid)
44 return grid.inverse_spacing 41 return grid.inverse_spacing
45 end 42 end
46 export inverse_spacing 43 export inverse_spacing
47 44
48 # Returns the reciprocal of the spacing of the grid 45 # Returns the reciprocal of the spacing of the grid
49 # 46 #
50 function spacing(grid::EquidistantGrid) 47 function spacing(grid::EquidistantGrid)
51 return grid.spacing 48 return 1.0./grid.inverse_spacing
52 end 49 end
53 export spacing 50 export spacing
54 51
55 # Computes the points of an EquidistantGrid as an array of tuples with 52 # Computes the points of an EquidistantGrid as an array of tuples with
56 # the same dimension as the grid. 53 # the same dimension as the grid.