Mercurial > repos > public > sbplib_julia
changeset 1502:a2dc80396808 feature/grids/curvilinear
Add functions `curvilinear_grid`
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Fri, 16 Feb 2024 10:58:17 +0100 |
parents | 553111a15506 |
children | 704a84eef8b6 |
files | src/Grids/Grids.jl src/Grids/curvilinear_grid.jl test/Grids/curvilinear_grid_test.jl |
diffstat | 3 files changed, 24 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/Grids/Grids.jl Fri Feb 16 10:28:02 2024 +0100 +++ b/src/Grids/Grids.jl Fri Feb 16 10:58:17 2024 +0100 @@ -37,6 +37,7 @@ export CurvilinearGrid export jacobian export logicalgrid +export curvilinear_grid abstract type BoundaryIdentifier end
--- a/src/Grids/curvilinear_grid.jl Fri Feb 16 10:28:02 2024 +0100 +++ b/src/Grids/curvilinear_grid.jl Fri Feb 16 10:58:17 2024 +0100 @@ -42,3 +42,12 @@ # creating the logical grid, evaluating functions and possibly calculating the # entries in the jacobian. +function curvilinear_grid(x, J, size...) + D = length(size) + lg = equidistant_grid(size, ntuple(i->0., D), ntuple(i->1., D)) + return CurvilinearGrid( + lg, + map(x,lg), + map(J,lg), + ) +end
--- a/test/Grids/curvilinear_grid_test.jl Fri Feb 16 10:28:02 2024 +0100 +++ b/test/Grids/curvilinear_grid_test.jl Fri Feb 16 10:58:17 2024 +0100 @@ -143,3 +143,17 @@ @test_broken false # @test_throws DomainError(3, "Size minus 1 must be divisible by the ratio.") coarsen(cg, 3) end end + +@testset "curvilinear_grid" begin + x̄((ξ, η)) = @SVector[ξ, η*(1+ξ*(ξ-1))] + J((ξ, η)) = @SMatrix[ + 1 0; + 2ξ-1 1+ξ*(ξ-1); + ] + cg = curvilinear_grid(x̄, J, 10, 11) + @test cg isa CurvilinearGrid{SVector{2,Float64}, 2} + + lg = equidistant_grid((10,11), (0,0), (1,1)) + @test logicalgrid(cg) == lg + @test collect(cg) == map(x̄, lg) +end