Mercurial > repos > public > sbplib_julia
changeset 686:27dcac8fb350 feature/boundary_quads
Fix type parameter for a 0-dimensional grid and update docs
author | Vidar Stiernström <vidar.stiernstrom@it.uu.se> |
---|---|
date | Tue, 09 Feb 2021 13:44:00 +0100 |
parents | bc2a9b8d2774 |
children | 5c229c889614 |
files | src/Grids/EquidistantGrid.jl test/testGrids.jl |
diffstat | 2 files changed, 19 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Grids/EquidistantGrid.jl Tue Feb 09 09:44:32 2021 +0100 +++ b/src/Grids/EquidistantGrid.jl Tue Feb 09 13:44:00 2021 +0100 @@ -1,11 +1,19 @@ """ - EquidistantGrid(size::NTuple{Dim, Int}, limit_lower::NTuple{Dim, T}, limit_upper::NTuple{Dim, T} + EquidistantGrid(size::NTuple{Dim, Int}, limit_lower::NTuple{Dim, T}, limit_upper::NTuple{Dim, T}) + EquidistantGrid{T}() + +`EquidistantGrid` is a grid with equidistant grid spacing per coordinat direction. -EquidistantGrid is a grid with equidistant grid spacing per coordinat direction. -The domain is defined through the two points P1 = x̄₁, P2 = x̄₂ by the exterior -product of the vectors obtained by projecting (x̄₂-x̄₁) onto the coordinate -directions. E.g for a 2D grid with x̄₁=(-1,0) and x̄₂=(1,2) the domain is defined -as (-1,1)x(0,2). The side lengths of the grid are not allowed to be negative +`EquidistantGrid(size, limit_lower, limit_upper)` construct the grid with the +domain defined by the two points P1, and P2 given by `limit_lower` and +`limit_upper`. The length of the domain sides are given by the components of +(P2-P1). E.g for a 2D grid with P1=(-1,0) and P2=(1,2) the domain is defined +as (-1,1)x(0,2). The side lengths of the grid are not allowed to be negative. +The number of equidistantly spaced points in each coordinate direction are given +by `size`. + +`EquidistantGrid{T}()` constructs a 0-dimensional grid. + """ struct EquidistantGrid{Dim,T<:Real} <: AbstractGrid size::NTuple{Dim, Int} @@ -23,12 +31,8 @@ return new{Dim,T}(size, limit_lower, limit_upper) end - # Special constructor for 0-dimensional grids. - function EquidistantGrid(size::Tuple{}, limit_lower::Tuple{}, limit_upper::Tuple{}) - #TODO: Need to specialize T. - # Is Float64 a good choice here? How to propage from arguments? - return new{0,Float64}(size, limit_lower, limit_upper) - end + # Specialized constructor for 0-dimensional grid + EquidistantGrid{T}() where T = new{0,T}((),(),()) end export EquidistantGrid @@ -130,4 +134,4 @@ return restrict(grid,orth_dims) end export boundary_grid -boundary_grid(::EquidistantGrid{1},::CartesianBoundary{1}) = EquidistantGrid((),(),()) +boundary_grid(::EquidistantGrid{1,T},::CartesianBoundary{1}) where T = EquidistantGrid{T}()
--- a/test/testGrids.jl Tue Feb 09 09:44:32 2021 +0100 +++ b/test/testGrids.jl Tue Feb 09 13:44:00 2021 +0100 @@ -68,8 +68,8 @@ @testset "1D" begin g = EquidistantGrid(5,0.0,2.0) (id_l, id_r) = boundary_identifiers(g) - @test boundary_grid(g,id_l) == EquidistantGrid((),(),()) - @test boundary_grid(g,id_r) == EquidistantGrid((),(),()) + @test boundary_grid(g,id_l) == EquidistantGrid{Float64}() + @test boundary_grid(g,id_r) == EquidistantGrid{Float64}() @test_throws DomainError boundary_grid(g,CartesianBoundary{2,Lower}()) @test_throws DomainError boundary_grid(g,CartesianBoundary{0,Lower}()) end